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);
}
}
没官方回复 自己顶 用仿真功能,深入进去观察
仿真教学视频,STC单片机硬件仿真演示视频 合集 - 仿真/ISP下载/做自己的ISP/编译器/头文件 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
定时器0的中断时间太短了,改长一些 21cnxin 发表于 2023-11-10 16:30
定时器0的中断时间太短了,改长一些
2ms还短吗 , 工欲善其事必先利其器 确实 有仿真调试器更好 你的P3PU &=~0x18,这是把P3.3和P3.4设置成了不上拉,其他的P3口都是上拉 解决了吗楼主,我使用串口和定时器中断后定时器进不去定时器中断 IFthen 发表于 2024-11-22 17:44
解决了吗楼主,我使用串口和定时器中断后定时器进不去定时器中断
挖的够深的,具体情况具体分析,代码的世界,任何小细节出错都会有预料之外的结果。
页:
[1]
2