C程序如下:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit CLK=P1^3;
void UART_Init(void)
{
ES=0;
TMOD &= 0x0F;
SCON=0x40;
PCON &= 0x7F;
TMOD|=0x21;
TH0=0x00;
TL0=0x3c;
TR0=1;
ET0=1;
TH1=0xFD;
TL1=0xFD;
TR1=1;
REN=1;
ET1=1;
EA=1;
}
void SendCh(uchar c)
{
EA=0;
TI=0;
SBUF=c;
while(TI==0);
TI=0;
EA=1;
}
void main()
{
UART_Init();
EA=1;
i=0;
while(1)
{
SendCh(1);
}
}
void timer0() interrupt 1
{
TH0=0x00;
TL0=0x3c;
CLK=~CLK;
}
问题:T1作为波特率发生器,此程序中T0定时中断无效。也就是CLK不会变化。求解答。
另外,如果把串口初始化以及定时器写成如下程序:
void UART_Init(void)
{
SCON=0x40;
PCON = 0x00;
TMOD=0x21;
TH0=0x00;
TL0=0x3c;
TR0=1;
ET0=1;
TH1=0xFD;
TL1=0xFD;
TR1=1;
REN=1;
ET1=1;
EA=1;
}
两个串口初始化有何不同。
单片机只发不收。我用多个STC89C52单片机