Bạn hãy tham khảo code này! Code nháy 8 LED đơn giản! Cần gì dùng timer cho phiền ra! để đó còn ùng cái khác!
Code:
/*
CHUONG TRINH NHAY LED DON - DSPIC30F4011
+ Phan cung : Dung LED don noi vao RB0 - RB7 ----------------------
+ Yeu cau : Nhay tu 0 den 7 va 7 ve 0 . Sau do nhap nhay linh tinh
*/
#include <p30F4011.h> // Thu vien chuan
#include <libpic30.h> // Thu vien ham delay
//-------------ConFig cho DsPic-------------------
_FOSC(CSW_FSCM_OFF & FRC_PLL4);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF & MCLR_EN & PWMxL_ACT_HI & PWMxH_ACT_HI);
_FGS(CODE_PROT_OFF);
unsigned char LED[8] = {0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f}; // Ham sang cac LED tu RB0 den RB7
void INTPORT()
{
TRISB = 0xff00; // Cho cac cong tu RB0 den RB7 la chan out
PORTB=0xffff;
}
void LED_K1()
{
unsigned int n,m;
for(n=0;n<8;n++)
{
PORTB=LED[n];
__delay32(500000); // Chu ki tre la 0.5s
}
for(m=0;m<8;m++)
{
PORTB=LED[7-m];
__delay32(500000);
}
}
void LED_K2()
{
unsigned int a,b;
for(b=0;b<20;b++) // cho toi 50 cho no dep
{
for(a=0;a<7;a++)
{
PORTB=LED[a];
__delay32(500000);
if(a=0) {PORTB=LED[4];__delay32(500000);}
if(a=1) {PORTB=LED[7];__delay32(500000);}
if(a=2) {PORTB=LED[5];__delay32(500000);}
if(a=3) {PORTB=LED[6];__delay32(500000);}
if(a=4) {PORTB=LED[1];__delay32(500000);}
if(a=5) {PORTB=LED[3];__delay32(500000);}
if(a=6) {PORTB=LED[2];__delay32(500000);}
if(a=7) {PORTB=LED[4];__delay32(500000);}
}
}
}
int main()
{
INTPORT();
while(1)
{
LED_K1();
LED_K2();
}
}