单片机定时器0执行按键扫描时与串口通信无法同时进行,求大神讲解
9ood. 2019-02-25 01:15:56 我是一名大一刚入门单片机的菜鸟,在做单片机程序的时候发现,单片机定时器0执行按键扫描时与串口通信无法同时进行,求大神们指导。
#include<reg52.h>
void main()
{
EA = 1;
ENLED = 0;
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
ConfigTimer0(1); //设置1ms中断,中断进行按键扫描
ConfigUART();
while(1)
{
KeyDriver(); //执行按键扫描结果,具体内容我就不写出来了,这部分程序我调试了是没问题的
}
}
void ConfigTimer0(unsigned int ms)
{
unsigned long tmp;
tmp = 11059200 / 12;
tmp = (tmp * ms) / 1000;
tmp = 65536 - tmp;
T0RH = (unsigned char)(tmp>>8); T0RL = (unsigned char)tmp;
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = T0RH;
TL0 = T0RL;
ET0 = 1;
TR0 = 1;
}
void InterruptTimer0() interrupt 1
{
static char k=0;
TH0 = T0RH;
TL0 = T0RL;
KeyScan();
tmr300ms++;
if (tmr300ms >= 150) //这个请忽略 我后来用来定时300ms用的
{
tmr300ms = 0;
flag300ms = 1;
}
void ConfigUART()
{
RCAP2L=0xDC;
RCAP2H=0xFF;
T2CON=0x34;
SCON=0xD0;
SM1=1;
REN = 1;
RI=0x00;
TI=0x00;
IE=0x90;
ES = 1;
}
void InterruptUART() interrupt 4
{
if (RI)
{
RI = 0;
SBUF =SBUF+1;
}
if (TI) TI = 0;
}