找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1357|回复: 5
打印 上一主题 下一主题
收起左侧

为什么我这个检查单片机中断能否执行的程序会出现无加>无法检查的问题

[复制链接]
跳转到指定楼层
楼主
ID:1089508 发表于 2023-8-11 15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//本单片机代码能正常运行,红色字代码在尾部
//为什么写上if(T0Count>=1000)等会亮1s 再暗1s 重复循环 。而只写上  if(T0Count=1000) 时 却只能把灯一直点亮而无法熄灭
#include <REGX52.H>

        void Timer0Init(void)                //1毫秒@11.0592MHz     定时计算自动生成代码注意事项:1.新A2板采用的是11.0592MS晶振 注意采用的的是12T模式 注意STC89C52并没有16位自动重载
{
        //AUXR &= 0x7F;                //定时器时钟12T模式   //系统已设定定时器1T模式 无需再次手动设定
        TMOD &= 0xF0;                //设置定时器模式
        TMOD |= 0x01;                //设置定时器模式
        TL0 = 0x18;                //设置定时初值
        TH0 = 0xFC;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;        //定时器0开始计时
  ET0=1;EA=1;
        PT0=0;
}


void main()
{    Timer0Init();
       while(1)
      {

      }

}


void Timer0_Routine() interrupt 1
{   
       static  unsigned int T0Count;
       TL0 = 0x18;                //设置定时初值
        TH0 = 0xFC;        
        T0Count++;
        if(T0Count>=1000)  //没有加大于号 为什么就不闪烁了     难道计数时间太快吗?
        {
                T0Count=0;
                P2_0=~P2_0;  //位取反可行
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2023-8-11 15:41 | 只看该作者
,这是个最基本人类理解导致的语法错误,但是符合c语言语法,不会报错。以后你一定要这么写,编译器才会告诉你写错了:

if(T0Count=1000)
改成
if(1000=T0Count)
才是合理的书写习惯,不然出错了你都找不到哪里出的错。
回复

使用道具 举报

板凳
ID:41656 发表于 2023-8-11 16:05 | 只看该作者
语法错误了  if(T0Count=1000) 中 T0Count=1000 是赋值,如果判断相等 需要输入 T0Count==1000
回复

使用道具 举报

地板
ID:1088185 发表于 2023-8-11 20:34 | 只看该作者
static  unsigned int T0Count=0;
回复

使用道具 举报

5#
ID:123289 发表于 2023-8-12 09:18 | 只看该作者
板凳说的是。
回复

使用道具 举报

6#
ID:1010435 发表于 2023-8-12 21:49 | 只看该作者
如果写成if(T0Count=1000),keil不会报错,但是会报警告。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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