- /**********************TF-51实验开发板例程************************
- * 平台:TF-51开发板 + Keil V4 + STC89C52RC单片机
- * 功能:串口初始化和收发测试程序,接收使用中断。
- * 晶振:11.0592MHZ
- * 设计:天府电子
- ******************************************************************/
- #include <reg52.h>
- unsigned char string[]={" uart test for TF-51 board\r\n"}; //要发送的字符串
- void send_string(unsigned char str[]) ; //函数申明
- void main(void)
- {
- SCON = 0x50; //串口方式1,允许接收
- TMOD = 0x20; //定时器1定时方式2,初值自动重装
- TH1 = 0xfd; //波特率9600bps @ 11,0592M
- TL1 = 0xfd;
- TR1 = 1; //启动定时器
- IE =0X90 ; //使能总中断和UART中断 10010000
- // EA=1;
- // ES=1;
- TI=0; //清TI
- SBUF='A'; //发送一个字符A
- while(!TI); //查询字符A是否已经发送完,TI=0时没有发送完,发送完后TI将自动被置1
- TI=0; //清TI
- SBUF=0X30; //发送一个数字0x30
- while(!TI); //查询数字0x30是否已经发送完,TI=0时没有发送完,发送完后TI将自动被置1
- send_string(string); //发送字符串
- while(1)
- {
- }
-
- }
- void uart() interrupt 4
- {
- unsigned char dat;
- if(RI)
- {
- dat = SBUF; //接收到的数据暂存在dat中
- SBUF = dat+1; //接收到的数据发送给PC机
- while(TI==0) ; //等待发送完成,发送使用的查询方式
- TI = 0; //清除发送结束标志
- RI = 0; //清除接收中断标志
- }
- }
- void send_string(unsigned char str[])
- {
- unsigned char i;
- for(i=0;str[i]!='\0';i++) //若数组str没有结束,则继续发送直到遇到'\0'
- {
- SBUF = str[i]; //发送字符
- while(!TI); //空语句判断字符是否发完 (等价while(TI==0); )
- TI=0; //清TI
- }
- }
复制代码 |