标题:
求助!单片机中断计数的问题
[打印本页]
作者:
asyxl
时间:
2017-8-30 11:46
标题:
求助!单片机中断计数的问题
利用两个按键模拟传感器计数为a和b,当a大于b是亮一个灯,a等于b时亮另一个灯。
道理我懂,但是为什么程序写出来后仿真却不计数呢?请各位大神帮忙看一下应该怎么改
捕获.PNG
(69.8 KB, 下载次数: 77)
下载附件
2017-8-30 11:47 上传
#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 t0isr() interrupt 1
{
a++;
}
void t1isr() interrupt 3
{
b++;
}
main()
{
TMOD=0x66;
ET0=1;
ET1=1;
TR1=1;
TR0=1;
EA=1;
OUT=1;
while(1)
{
if(a>b)out1=0;
if(a==b)
{
delay(200);
out2=0;
}
}}
复制代码
作者:
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.51hei.com/bbs/)
Powered by Discuz! X3.1