欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 求助!單片機中斷計數的問題 [打印本頁]

作者: asyxl    時間: 2017-8-30 11:46
標題: 求助!單片機中斷計數的問題
利用兩個按鍵模擬傳感器計數為a和b,當a大于b是亮一個燈,a等于b時亮另一個燈。
道理我懂,但是為什么程序寫出來后仿真卻不計數呢?請各位大神幫忙看一下應該怎么改

  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit out1=P1^0;
  5. sbit out2=P1^1;
  6. uint a=0,b=0;
  7. void delay(uchar c)
  8. {
  9. uchar i;
  10. while(c--)for(i=0;i<120;i++);
  11. }
  12. void t0isr() interrupt 1
  13. {
  14. a++;
  15. }
  16. void t1isr() interrupt 3
  17. {
  18. b++;
  19. }
  20. main()
  21. {
  22. TMOD=0x66;
  23. ET0=1;
  24. ET1=1;
  25. TR1=1;
  26. TR0=1;
  27. EA=1;
  28. OUT=1;
  29. while(1)
  30. {
  31. if(a>b)out1=0;
  32. if(a==b)
  33. {
  34. delay(200);
  35. out2=0;
  36. }
  37. }}
復制代碼



作者: jubaolun    時間: 2017-8-30 11:46
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit out1=P1^0;
sbit out2=P1^1;
uint a=0,b=0;
void delay(uchar c)
{
uchar i;
while(c--)for(i=0;i<120;i++);
}
void int0() interrupt 0
{
a++;
}
void int1() interrupt 2
{
b++;
}
main()
{

EX0=1;
EX1=1;
IT1=1;
IT0=1;
EA=1;

while(1)
{
if(a>b)out1=0;
if(a==b)
{
delay(200);
out2=0;
}
}}
作者: a330300029    時間: 2017-8-30 14:40
我也沒測試過呀具體不太懂
作者: jubaolun    時間: 2017-8-30 16:11
上面我改了外部中斷的語句:
EX0=1;
EX1=1;
IT1=1;
IT0=1;
作者: ahshmj    時間: 2017-8-30 16:16
定時器工作模式設置不對。“TMOD=0x66”,計數器也沒有設置初值,即便你的程序其他地方沒問題,你按按鍵也要按65536次才能產生中斷,a或b才會加1。
大概你是想每按一次按鍵“a”或“b”增加“1”,你可以不用中斷,如:a=TL0 和b=TL1 。

程序還有許多問題,你自己實踐中提高吧。
作者: zl2168    時間: 2017-8-30 16:23
應先學些基礎理論,才能事半功倍。
作者: asyxl    時間: 2017-8-30 16:45
太感謝了
作者: Q624353765    時間: 2017-8-30 22:11
看看3333




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1