|
求助,philips 的P89C51RA2BN 的串口输出问题
[复制链接]
#include
#include
sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P1_2 = P1^2;
sbit P1_3 = P1^3;
void InitUart(void) //初始化串口
{
//设置UART传输模式,mode2 ,enable UART,SM2 = 1
SCON = 0x50;
//电源控制寄存器,SMOD1 SMOD0 = 00
PCON = 0x80;
//定时器模式寄存器,mode 2,GATE = 0
TMOD = 0x20;
//运行T1
TR1 = 1;
//设置重装载值,baud = 4.8k
TH1 = 0XF4;
//开串口中断
IE = 0x90;
//设置发送中断标志位,1:发送完
T1 = 1;
}
void Putch(char c) //输出
{
while(T1 == 0);
T1 = 0;
SBUF = c;
}
void main(void)
{
char string[10] = {'a','b','c','d','e','f','g','h','i','j'};
int i = 0;
InitUart();
for(i = 0;i <9;i++)
{
Putch(string);
}
}
这个程序只能发一个字符‘a’,然后就停在while(T1 == 0);这个语句了,发完‘a’以后,发送中断标志为T1竟然为 0,也就是说执行SBUF = c;以后T1 = 0;数据手册上说发送完后,T1硬件置1,软件清0
请问这是为什么呢?
|
|