em mới học lập trình pic cho con 16f887,và gặp các vấn đề khi khai báo i/o như sau:
chương trình nó chạy 1 hoặc không chạy đến cái khai báo innit() khi không viết thêm cho nó vào 1 chương trình ngắt mặc dù không khai báo chương trình ngắt làm.
Rồi các chương trình con khi viết thêm thì nó không chạy,tức là khi em sử dụng lệnh if rồi cho nó thực hiện 2 chương trình con thì có 1 chương trình không thực hiện,và khi xóa chương trình không thực hiện đó thì khi chạy lại chương trình khác cũng không thực hiên.
Ai giải thích dùm em được không:
chương trình nó chạy 1 hoặc không chạy đến cái khai báo innit() khi không viết thêm cho nó vào 1 chương trình ngắt mặc dù không khai báo chương trình ngắt làm.
Rồi các chương trình con khi viết thêm thì nó không chạy,tức là khi em sử dụng lệnh if rồi cho nó thực hiện 2 chương trình con thì có 1 chương trình không thực hiện,và khi xóa chương trình không thực hiện đó thì khi chạy lại chương trình khác cũng không thực hiên.
Ai giải thích dùm em được không:
PHP Code:
#include <htc.h>
__CONFIG(INTIO & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT
& BORDIS & FCMDIS & IESODIS & LVPDIS & FCMDIS);
void quayphai();void quaytrai();void chaythang();void tienphai();void tientrai();void luiphai();void luitrai();void chaylui();void delay(unsigned char counter);
void init();
void main()
{
init();
unsigned int bien;
while(1)
{
while(PORTB!=bien) bien=PORTB;
switch (bien)
{
case 3://cham dâu
chaylui();
delay(30);
quayphai();
delay(30);
break;
case 5://cham ben trai
tienphai();
delay(30);
break;
case 7://cham dâu trai
chaylui();
delay(30);
tienphai();
delay(55);
break;
case 10://cham ben phai
tientrai();
delay(30);
break;
case 11://cham dau phai
chaylui();
delay(30);
quaytrai();
delay(55);
break;
case 12://cham duoi
quaytrai();
delay(30);
break;
case 13://cham duoi trai
quayphai();
delay(30);
break;
case 14://cham duoi trai;
quaytrai();
delay(30);
break;
default:
chaythang();
}
}
}
void interrupt isr()
{
RBIF=0;
}
void init()
{
ANSEL=0x00;ANSELH=0x00;
ANS0=0;ANS1=ANS2=ANS3=0;
TRISA0=0;TRISA1=0;TRISA2=0;TRISA3=0;
RA0=0;RA1=0;RA2=0;RA0=0;
TRISB=0Xff;
}
void delay(unsigned char counter)
{
unsigned char value=0;
while(counter>value)
{
value++;
_delay(100000);
}
}
void chaythang()
{
RA0=1;RA2=1;RA1=0;RA3=0;
}
void chaylui()
{
RA0=1;RA2=1;RA1=1;RA3=1;
}
void tienphai()
{
RA0=1;RA2=0;RA1=0;RA3=0;
}
void tientrai()
{
RA2=1;RA0=0;RA1=0;RA3=0;
}
void luiphai()
{
RA0=0;RA2=1;RA1=0;RA3=1;
}
void luitrai()
{
RA0=1;RA1=1;RA2=0;RA3=0;
}
void quaytrai()
{
RA0=1;RA1=1;RA2=1;RA3=0;
}
void quayphai()
{
RA0=1;RA1=0;RA2=1;RA3=1;
}
Comment