8-bit reload*/
TH1 = 0xFD; /* TH1:
reload value for 9600 baud @ 11.0592MHz
*/
TR1 = 1; /* TR1:
timer 1 run
*/
EA = 1;
/*
打开总中断
*/
ES = 1;
/*
打开串口中断
*/
while (1)
/*
主循环不做任何动作
*/
{
}
}
void UART_SER (void) interrupt 4 //
串行中断服务程序
{
unsigned char Temp;
//
定义临时变量
if(RI)
//
判断是接收中断产生
{
RI=0;
//
标志位清零
Temp=SBUF;
//
读入缓冲区的值
P1=Temp;
//
把值输出到
P1
口,用于观察
SBUF=Temp;
//
把接收到的值再发回电脑端
}
if(TI)
//
如果是发送标志位,清零
TI=0;
}
2.
51
单片机与电脑串口通信的
C
程序
,
最好是中断方式的
#include
#include
unsigned char ch;
bit read_flag= 0 ;
void init_serialcom( void ) //
串口通信初始设定
{
SCON = 0x50 ; //UART
为模式
1
,
8
位数据,
允许接收
TMOD |= 0x20 ; //
定时器
1
为模式
2,8
位自动重装
PCON |= 0x80 ; //SMOD=1;
TH1 = 0xFD ; //Baud:19200 fosc="11".0592MHz
IE |= 0x90 ; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run