永发信息网

19、某单片机系统电路连接如下图,当按键S1闭合时,LED以1S为周期闪烁(亮500ms,灭500

答案:2  悬赏:0  手机版
解决时间 2021-03-17 14:55
19、某单片机系统电路连接如下图,当按键S1闭合时,LED以1S为周期闪烁(亮500ms,灭500
最佳答案
按键S1 按一下就会进入一次外部中断0 ,这时候你在执行的是 P1^0 取反,就是小灯亮了,然后是延时,然后让小灯灭, 问题就出在延时上, 延时i<500 因为 i 是 unsigned char 的,所以最大只有255,不会达到500 ,程序到这里就停住了, 所以一直亮,

因为你设置外部中断1 最高优先,所以 不妨碍 S2 控制灯灭,

把i改成 unsigned int 的就可以修改一直亮的问题,但是因为你程序问题,会出现,按一下S1 小灯闪烁一次,按一下,小灯闪烁一次, 不会出现周期性闪烁,就是说不会一直闪烁,因为你只是在中断函数里执行的 亮灭 退出中断就不会再执行了
你可以按键S1按下 flag = 1;S2按下flag = 0;
在主循环里 判断flag
if(flag)
{
P1_0 = 0;
延时

P1_0 = 1;

延时

}
else
{
P1_0 = 1;

}
这样写应该是可以达到 周期性闪烁的,
全部回答
中断里不要干太多事情,取反延时都在主程序里
#include
sbit P1_0=P1^0;
unsigned char i;
unsigned char j;
unsigned char flag;
void main()
{
EA=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
PX0=0;
PX1=1;
while(1)
{
if(flag==1)
{
for(i=0;i<500;i++)
for(j=0;j<125;j++);
P1_0=!P1_0;
}
else P1_0=1;
}
}

void int_0() interrupt 0
{
flag=1;
}
void int_1() interrupt 2
{
flag=0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
儿子7岁,学了一年多钢琴,想让他改学笛子,
1999年面值五元的一刀全新纸币现在市场价格是
全大线/S201(路口)在哪里啊,我有事要去这个
MacBook 有没有必要装腾讯电脑管家之类的软件
照样子写词语(写两个) 例句:名著如同一幅意
老包青天为什么在百度上点第一级,打开却是第
和这种差不多的露出一点额头的发型叫什么,
硫磷对碳钢的性能有什么影响
变色龙 形容不高兴不振作的成语
AE特效怎么能变透明?
心狂似野霸天下威武不屈就属它动物是什么动物
形容色彩鲜艳,花样繁多
说说《茶馆》是如何埋葬三个朝代的,其效果如
天堂牌防紫外线伞,如何辩别真伪?
丰利路/戏楼街(路口)地址有知道的么?有点事
推荐资讯
怎么我的 EWSA 跑包这么慢??
蒸食物时锅里的水温与碗里水温哪个高
求amtlib.dll破解补丁
西安到华县距离
在限速70至80公里的公路上,经过村庄路口车时
正举五交化地址在哪,我要去那里办事
已知log4(x-3)=0,则x=_
hsa pb-da-2y系列应变式指针压力变送器能用什
谁有旅顺到庄河快轨时间表,麻烦告诉我一下!
平安少儿平安福满期后如果没有发生任何意外生
关于牵挂的名人事例
何唐庄在哪里啊,我有事要去这个地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?