中易网

单片机外部中断让led亮,但反应太快根本看不到,怎么办,怎么改

答案:3  悬赏:30  
解决时间 2021-11-24 15:21
这是原程序
#include
sbit LED1=p1^1;
sbit LED2=p1^2;
void main()
{
EA=1;
EX0=1;
IT0=0;
while(1)
{
LED1=1;LED2=0;
}
void int_0() interrupt 0
{
LED1=0;LED2=1;
}
}
最佳答案
外部中断里写一个位操作:bit LED_SET=0;
void int_0() interrupt 0
{
LED_SET=1;
}
while(1)
{
LED1=1;LED2=0;
if(LED_SET)
{
EX0=0;//关外部中断
LED1=0;LED2=1;
delay();//加延时
LED_SET=0;
EX0=1;
}
}
全部回答
电脑上,你是用什么软件发送数据的?用串口调试助手就行,网上到处可以下载。也好用。关键问题是在电脑上发送的0,1,是以什么数据格式发送的,通常以字符格式发送的,即是ascii码。所以,单片机接收时,也要按字符格式发才行。而你的程序是按十六进制数的格式判断的,也就是二进制数,所以,发送和接收格式不统一,单片机就不能正常接收控制led0,也就不能正常返回数据。 if(sbuf==0) //这是按二进制数接收的 if(sbuf==1) //这也是按二进制数接收的 这样写程序,要求电脑上,要按二进制数即十六进制数发送才行。 还是按字符格式收发比较好。 这样,程序改一下就行了。 if(sbuf==‘0’) //这就是按字符接收的 if(sbuf==‘1’) //这也是按字符接收的 其它行不用动。 这样,收发比较可靠。
清楚原理就ok!因为你的外部中断是接按键的,按键按下是最少有20毫秒左右,也就是20毫秒中是总是在响应中断的!你的灯就会一直处在未定的状态中!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有谁知道自动挡的车,一键启动怎么消除仪表上
如何报考国家认证的职业规划师?
日丰管的水管和电线管能踩破吗?
大房子村委会地址有知道的么?有点事想过去!
EBC5网络电台丰帆讲的鬼故事,哪下载
中驷的意思是什么啊?请解释下!
有没有人知道家里挂风铃好吗
北京语言大学转专业和汉语言文学就业前景
大便太粗,把马桶堵死了怎么办
红土湾村委会地址在什么地方,想过去办事
我的喉咙在吞口水是总有腐臭的气味,要怎样
青白江摘草莓和樱桃的地方
为什么「主叫有智能的中了自己的诡计」呢?
二元海村委会地址在什么地方,想过去办事
控阋的意思是什么啊?请解释下!
推荐资讯
想出产品符合有关指令/法规的环保检测报告以
自学PS可以成为第二职业吗或者学习别的当第二
我得上遗传性白发能治吗?...
comeonfish什么意思
榆林市子州县卫生局地址有知道的么?有点事想
未来之战里什么是最佳状态
电饭锅内的电线是铁丝,能用铜的代替吗?
侈骄的意思是什么啊?请解释下!
杜屯村村委会地址在什么地方,想过去办事
阳旱的意思是什么?阳旱的释义是什么啊?
为什么在船开过后会在水面留下水纹?
便利店装修三大原则
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?