硬汉嵌入式论坛

 找回密码
 立即注册
查看: 408|回复: 7
收起左侧

[有问必答] 中断问题

[复制链接]

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2023-7-29 14:36:55 | 显示全部楼层 |阅读模式
中断问题 为什么在中断中的if语句,当在执中断函数时并不执行?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-7-29 14:46:31 | 显示全部楼层
方便的话,贴点代码看下
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-7-29 14:50:33 | 显示全部楼层
#include <REGX52.H>

void Timer0_Init(void)                //1毫秒@11.0592MHz
{
        TMOD &= 0xF0;                        //设置定时器模式
        TMOD |= 0x01;                        //设置定时器模式
        TL0 = 0x66;                                //设置定时初始值
        TH0 = 0xFC;                                //设置定时初始值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
        ET0=1;
        EA=1;
        PT0=0;
}


void main()
{
        Timer0_Init();
        while(1)
        {
               
        }
}


void Timer0_Rountine(void) interrupt 1
{
        static unsigned char T0Count=0;
        Timer0_Init();       
        TH0 = 0xFC;       
   TL0 = 0x66;               
   T0Count++;
        if(T0Count==1000)
        {
                T0Count=0;
                P2_4=~P2_4;
        }       
       
}
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-7-29 14:50:54 | 显示全部楼层
eric2013 发表于 2023-7-29 14:46
方便的话,贴点代码看下

#include <REGX52.H>

void Timer0_Init(void)                //1毫秒@11.0592MHz
{
        TMOD &= 0xF0;                        //设置定时器模式
        TMOD |= 0x01;                        //设置定时器模式
        TL0 = 0x66;                                //设置定时初始值
        TH0 = 0xFC;                                //设置定时初始值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
        ET0=1;
        EA=1;
        PT0=0;
}


void main()
{
        Timer0_Init();
        while(1)
        {
               
        }
}


void Timer0_Rountine(void) interrupt 1
{
        static unsigned char T0Count=0;
        Timer0_Init();       
        TH0 = 0xFC;       
   TL0 = 0x66;               
   T0Count++;
        if(T0Count==1000)
        {
                T0Count=0;
                P2_4=~P2_4;
        }       
       
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-7-29 15:30:42 | 显示全部楼层
LiuY 发表于 2023-7-29 14:50
#include

void Timer0_Init(void)                //1毫秒@11.0592MHz

static unsigned char T0Count最大值255。你判断1000超了
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-7-29 16:17:55 | 显示全部楼层
eric2013 发表于 2023-7-29 15:30
static unsigned char T0Count最大值255。你判断1000超了

因为我刚开始学这个,能麻烦帮我改一下吗
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2023-7-29 16:19:17 | 显示全部楼层
eric2013 发表于 2023-7-29 15:30
static unsigned char T0Count最大值255。你判断1000超了

这个代码,我是跟着b站视频敲得,我也试过视频博主的代码,也可以运行
回复

使用道具 举报

0

主题

124

回帖

124

积分

初级会员

积分
124
发表于 2023-7-30 13:40:04 | 显示全部楼层
LiuY 发表于 2023-7-29 14:50
#include

void Timer0_Init(void)                //1毫秒@11.0592MHz

把 static unsigned char T0Count=0;
改为 static unsigned int T0Count=0;
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-28 11:33 , Processed in 0.487439 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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