现在想要用定时器0进行定时操作,定时器1作为串口中断进行串口打印,把定时器0屏蔽掉后可以正常串口打印,两个同时用就不行了,串口不输出了。
void SendData(char dat)
{
SBUF = dat;
while(TI ==0);
TI = 0;
}
void UartInit(void) //115200bps @11.0592MHz
{
PCON = 0x80; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR = 0x40; //串口1选择定时器1为波特率发生器,定时器1时钟为1T;定时器0时钟12T模式
TMOD = 0x21; //设定定时器1为8位自动重装方式,定时器0位16位
TL1 = 0xFD; //设定定时1初值
TH1 = 0xFD; //设定定时器1重装值
TR1 = 1; //启动定时器1
Timer0Init();
ES = 1;//开启串口中断
PS = 1;//设计串口中断优先级
ET0 = 1;
EA = 1;//开启总中断
}
void Timer0Init(void) //10毫秒@11.0592MHz
{
TL0 = 0x00; //设置定时0初始值
TH0 = 0xDC; //设置定时0初始值
TR0 = 1; //定时器0开始计时
}
void main()
{
UartInit();
while(1)
{
if(timer0_count ==200){
timer0_count=0;
Data_Process();
}
}
}
void RSINTR() interrupt 4
{
if(RI)
{
RI = 0;
dat = SBUF;
}
}
void Timer0() interrupt 1
{
TL0 = 0x00; //设置定时初始值
TH0 = 0x4C; //设置定时初始值
timer0_count++;
}
|