单片机/MCUwilliam hill官网
直播中

黎岩

7年用户 20经验值
擅长:嵌入式技术
私信 关注
[问答]

请问外部中断服务程序中是否可以直接操作IO口?

各位大虾好!
    我用P3.2口作为外部中断触发,外部接了按键,想实现按键触发,使P3.5口的Led灯亮1秒后灭,发现触发中断服务程序后,灯是亮了,可是不灭,是什么问题?
下面是我中断0服务程序

void Int0() interrupt 0        //外部中断0(INT0)服务程序
{
        EX0 = 0; //关闭外部中断


        ***LedStatus = 1;//灯亮


   DelaySecond(60);//灯亮1分钟


   ***LedStatus = 0;//灯灭
         EX0 = 1;开中断
}

延时程序和主程序都比较简单,延时程序直接采用for循环,主程序直接while(1)空跑,就是想看看外部中断服务程序执行情况
***it  ***LedStatus = P3^5
int main()
{
     EA = 1;
     IT0 = 0;//低电平触发
     EX0 = 1;
     while(1);


}

回帖(2)

黎岩

2018-8-16 20:19:33

RE: 外部中断服务程序中,是否可以直接操作IO口?

补充说明:
    定时计数器采用T0,预值初值为TH0=(65536-50000)/256;TL0=(65536-50000)%256;
    for循环是跑20个中断次数,刚好是1000毫秒,也就是1秒
举报

黎岩

2018-8-16 20:58:19
各位大虾,不好意思,找到问题了,是延时程序溢出问题,看来得重新写延时程序了。谢谢
举报

更多回帖

发帖
×
20
完善资料,
赚取积分