关于是使用89C52的T2计时器的问题
时间:10-02
整理:3721RD
点击:
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80;
//TH1 = 0xFD; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)
TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //开串口中断
EX0 = 1;
EA = 1; // 开总中断
void UA() interrupt 4 using 3
{
if(RI)
{
EA=0;
RI = 0;
read = SBUF;
i++;
if(i>34)i=0;
EA=1;
}
}
改为用T2实现如下
T2MOD=0x00;
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
T2CON|= 0x00; //定时器工作方式2
PCON|= 0x80;
RCAP2H=0xF3;
RCAP2L=0xF3;
TH2 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL2 = 0xF3;
TR2 = 1;
ES = 1; //开串口中断
EX0 = 1;
EA = 1; // 开总中断
void Init(void)
{ T2MOD=0x00;
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
T2CON|= 0x00; //定时器工作方式2
PCON|= 0x80;
/ baud*2 /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)
RCAP2H=0xF3;
RCAP2L=0xF3;
TH2 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL2 = 0xF3;
TR2 = 1;
ES = 1; //开串口中断
EX0 = 1;
EA = 1; // 开总中断
// IE = 0x0;
}
void UA() interrupt 4 using 3
{ TF2=0;
if(RI)
{
EA=0;
RI = 0;
read = SBUF;
i++;
if(i>34)i=0;
EA=1;
}
}
改完后下到片子里不好使,求各位老师指教!
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80;
//TH1 = 0xFD; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)
TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //开串口中断
EX0 = 1;
EA = 1; // 开总中断
void UA() interrupt 4 using 3
{
if(RI)
{
EA=0;
RI = 0;
read = SBUF;
i++;
if(i>34)i=0;
EA=1;
}
}
改为用T2实现如下
T2MOD=0x00;
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
T2CON|= 0x00; //定时器工作方式2
PCON|= 0x80;
RCAP2H=0xF3;
RCAP2L=0xF3;
TH2 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL2 = 0xF3;
TR2 = 1;
ES = 1; //开串口中断
EX0 = 1;
EA = 1; // 开总中断
void Init(void)
{ T2MOD=0x00;
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
T2CON|= 0x00; //定时器工作方式2
PCON|= 0x80;
/ baud*2 /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)
RCAP2H=0xF3;
RCAP2L=0xF3;
TH2 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M)
TL2 = 0xF3;
TR2 = 1;
ES = 1; //开串口中断
EX0 = 1;
EA = 1; // 开总中断
// IE = 0x0;
}
void UA() interrupt 4 using 3
{ TF2=0;
if(RI)
{
EA=0;
RI = 0;
read = SBUF;
i++;
if(i>34)i=0;
EA=1;
}
}
改完后下到片子里不好使,求各位老师指教!