第2个回答 2011-09-22
//这个程序用1602显示PC发过来的字符。
/********************************************************************************************
串口初始化程序:波特率4800,(终端设置:4800,8,无,1,无)
/********************************************************************************************/
void Init_COM(void){
TMOD = 0x20; //定时器工作方式设置,定时器1方式2
SCON = 0x50; //串口工作方式1,允许串口接收
TH1 = 0xF3; //定时器初值高8位设置
TL1 = 0xF3; //定时器初值低8位设置
PCON = 0x80; //波特率倍频
TR1 = 1; //定时器启动
}
/********************************************************************************************
主程序:实现接收数据并把接收到的数据发送出去
/********************************************************************************************/
void main(){
unsigned char dat,li=0x80;
Init_COM(); //串口初始化
LCM2402_Init(); //LCM2402初始化
print(0x80," HELLO! "); //在第一行打印LOGO字符
print(0x40,"Input your words"); //在第二行打印LOGO字符
while(1){
if (RI == 1){ //接收中断标志位为1时
dat = SBUF; //接收数据 SBUF 为单片机的接收发送缓冲寄存器
RI = 0; //令接收中断标志位为0(软件清零)
SBUF = dat; //将接收的数据发送回PC
while(TI == 0);
TI = 0;
print2(li,dat); //在第一行显示串口字符串
li++;
if(li > 0x8f){
li = 0x40;
}
if(li > 0x4f && li < 0x80){
li = 0x80;
}
}
}
}
/********************************************************************************************/