lonnychen 发表于 2023-11-10 09:22:23

STC8H单片机串口中断和定时器中断同时使用不工作

本帖最后由 lonnychen 于 2023-11-10 09:26 编辑

同时使用 串口2 和定时器0中断 ,结果pritnf 一直打印sw1_cnt= 0;

void TM0_Isr() interrupt 1 //定时器0模式0
{                              
            sw1_cnt = sw1_cnt + 1;
}      

void Timer0_Init(void)                //2毫秒@11.0592MHz
{
      AUXR |= 0x80;                        //定时器时钟1T模式
      TMOD &= 0xF0;                        //设置定时器模式
      TL0 = 0x9A;                              //设置定时初始值
      TH0 = 0xA9;                              //设置定时初始值
      TF0 = 0;                              //清除TF0标志
      TR0 = 1;                              //定时器0开始计时
}
long sw1_cnt = 0;

void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
   P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;
P3M0 &= ~0x18; P3M1 &= ~0x18;

P3PU &= ~0x18;   //P3.3 P3.4上拉
    Uart2Init();
Timer0_Init();
    IE2 = 0x01;//允许串口2中断
ET0 = 1;                                    //使能定时器中断
TR0=1 ;
    EA = 1;
    Uart2SendStr("Uart Test !\r\n");
while()
{
    printf("sw1_cnt = %d \r\n",sw1_cnt);
}
}

lonnychen 发表于 2023-11-10 14:24:17

没官方回复 自己顶

神农鼎 发表于 2023-11-10 14:55:05

用仿真功能,深入进去观察




仿真教学视频,STC单片机硬件仿真演示视频 合集 - 仿真/ISP下载/做自己的ISP/编译器/头文件 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

21cnxin 发表于 2023-11-10 16:30:26

定时器0的中断时间太短了,改长一些

lonnychen 发表于 2023-11-10 17:11:57

21cnxin 发表于 2023-11-10 16:30
定时器0的中断时间太短了,改长一些

2ms还短吗 ,

神农鼎 发表于 2023-11-10 18:31:32

工欲善其事必先利其器

jkernet 发表于 2023-11-11 10:52:37

确实 有仿真调试器更好

rengran 发表于 2023-11-24 17:36:09

你的P3PU &=~0x18,这是把P3.3和P3.4设置成了不上拉,其他的P3口都是上拉

IFthen 发表于 2024-11-22 17:44:11

解决了吗楼主,我使用串口和定时器中断后定时器进不去定时器中断

晓飛飛 发表于 2024-11-22 21:25:37

IFthen 发表于 2024-11-22 17:44
解决了吗楼主,我使用串口和定时器中断后定时器进不去定时器中断

挖的够深的,具体情况具体分析,代码的世界,任何小细节出错都会有预料之外的结果。
页: [1] 2
查看完整版本: STC8H单片机串口中断和定时器中断同时使用不工作