找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2244|回复: 6
收起左侧

关于单片机中断问题,为什么灯不闪烁

[复制链接]
ID:421426 发表于 2019-1-23 10:41 | 显示全部楼层 |阅读模式
为什么灯不闪烁
程序:#include<reg52.h>
#define uchar unsigned char
uchar num;
sbit led2=P1^1;
void main()
{
        TMOD=1;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;
        while(1)
                {
                        led2=0;                        
                }
}                        
void exter0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        num++;
                if(num==20)
                        {
                                num=0;
                                led2=~led2;
                        }         
}
回复

使用道具 举报

ID:258542 发表于 2019-1-23 11:19 | 显示全部楼层
TMOD=1; 这句代码对了吗?
回复

使用道具 举报

ID:94031 发表于 2019-1-23 11:32 | 显示全部楼层
while(1)里的led2=0;  不能要,要屏蔽掉。

评分

参与人数 1黑币 +5 收起 理由
坐在分头调戏鬼 + 5

查看全部评分

回复

使用道具 举报

ID:461260 发表于 2019-1-23 11:46 | 显示全部楼层
while(1)里面led2=0; 会一直执行下去。所以,去掉led2=0;或直接 while(1);或者在while(1);前面就设置led2=0;

评分

参与人数 1黑币 +5 收起 理由
坐在分头调戏鬼 + 5

查看全部评分

回复

使用道具 举报

ID:421426 发表于 2019-1-23 20:15 | 显示全部楼层
中断是否可以打断循环啊
回复

使用道具 举报

ID:421426 发表于 2019-1-24 15:07 | 显示全部楼层
绊脚石13 发表于 2019-1-23 11:19
TMOD=1; 这句代码对了吗?

对的   和0x01是一个含义
回复

使用道具 举报

ID:299617 发表于 2019-1-24 16:28 | 显示全部楼层
void main()
{
        TMOD=0x01;
        TH0=(65536-50000)/256;//50ms
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;
        led2=0;
        while(1);
}                        
void time0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        num++;
                if(num==20)
                        {
                                num=0;
                                led2=~led2;
                        }         
}

评分

参与人数 1黑币 +1 收起 理由
坐在分头调戏鬼 + 1 淡定

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表