写了一个开关的程序。可是串口通信的中断加入后有问题
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit S=P2^0;
u16 count=0;
u16 time0=1000;
u16 time1=0;
u8 temp[2];
u8 number=0;
void init_Timer0(void);
void main()
{
init_Timer0(); //定时器T0初始化
PCON=0; //波特率不加倍
REN=1; //串行口接收允许
SM0=0; //
SM1=1; //工作模式2(10位异步收发器)
ES=1; //打开串口中断允许
TH1=253;
TL1=253; //赋初值,波特率9600
TR1=1; //定时器1开始计时
while(1)
{
S=0;
}
}
void init_Timer0(void)
{
TMOD=0x21;
EA=1;
ET0=1;
TH0=0xFC;
TL0=0x6e;
}
void Timer0_Interrupt(void) interrupt 1
{
TH0 = 0xFC;
TL0 = 0x6e;
count++; //count每毫秒加一
}
void C_interrupt(void) interrupt 4
{
temp[number]=SBUF;
number++;
RI=0;
if(number==2)
{
time1=temp[1]*256+temp[0];
number=0; TR0=1;
while(count<time1)
{
S=1;
}
count=0;
TR0=0;
}
}
串口通信中断不可能执行完,因为你的计时器中断又开始计时了。