本人写了一个串口程序,输出结果一直是00,对照各种书籍实在找不出问题,求大牛指点。波特率,初始化,中断各种原因都找过。最后还按照老师的方法自发自收做了一遍,都正常。可就是输出结果不对。。。
#include <STC89C5xRC.H>
#include <stdio.h>
sbit staus=P3^5;
void systerm_init(void);
void Delay20ms(void);
void send(unsigned char x);
unsigned char buf[12]="hello world";
void main()
{
unsigned char flag=0x01;
//unsigned char i;
systerm_init();
while(1)
{
if(staus==0){
Delay20ms();
if(staus==0)
{
/* for(i=0;i<12;i++)
send(buf[i]);
*/
send(0x8e); //test
}
}
}
}
void systerm_init(void)
{
P0=0xFF;P1=0xFF;
P2=0xFF;P3=0xFF;
PCON=0x00; //smod=0
TCON=0x20; //T1工作方式2
TL1=0xFD; //波特率为9600bps
TH1=0xFD;
TR1=1;
SCON=0x50; //方式1
EA=1;
ES=1;
}
void Delay20ms(void) //@11.0592MHz
{
unsigned char i, j;
i = 36;
j = 217;
do
{
while (--j);
} while (--i);
}
void send(unsigned char x)
{
ES=0;
SBUF=x;
P2=x;
while(!TI);
TI=0;//软件清零
ES=1;
}
void UART_R(void) interrupt 4
{
RI=0;
P1=SBUF;
}
|