| /*-------------------------------------- 芯片    :STC12C5A60S2
 晶振    :11.0592MHZ
 开发平台:KEIL
 功能    :串口一收发8位数据。(采用中断方式,T1产生波特率)
 波特率  :9600BPS
 日期    :11.5.19
 其他    :采用查询方式发送稳定,但是接收数据极不稳定由于
 官方资料使用的是中断方式,所以建议使用中断方式收发数据。
 
 注意    :下载完程序后请复位系统后运行!(切记!!)
 
 --------------------------------------*/
 
 #include "STC12C5A60S2.h"
 #define uchar unsigned char
 #define uint unsigned int
 
 uchar tab[]={"STC12C5A60S2!"};
 
 uchar dat=0;
 /*--------------------------------------
 延时函数
 --------------------------------------*/
 void delay ( uchar t )
 {
 uchar i,j;
 
 for( i=0; i<t; i++)
 
 for( j=0; j<250; j++);
 }
 
 /*--------------------------------------
 串口初始化
 --------------------------------------*/
 
 void init(void)
 {
 
 TMOD = 0x20;                                  //定时器1产生波特率
 
 SCON = 0x50;                                 //方式2,8位数据,波特率可变
 
 PCON = 0x00;                                 //不倍增波特率
 
 AUXR = 0x00;                                 //1T工作方式,不使用波特率发生器
 
 IP   = 0x00;                                 //优先级默认
 
 TH1  = TL1 = 0xfd;                         //波特率 9600
 
 TR1  = 1;                                 //启动定时器产生波特率
 
 EA   = 1; ES = 1;                         //开总中断,开串口中断
 }
 
 /*--------------------------------------
 发送一个字符
 --------------------------------------*/
 
 void  txd_c(uchar x)
 {
 SBUF = x;
 }
 
 /*--------------------------------------
 发送接收中断函数
 --------------------------------------*/
 
 void uart_isr()  interrupt 4
 {
 if( RI ) RI = 0;
 
 dat = SBUF;
 
 if( TI ) TI = 0;
 }
 
 /*--------------------------------------
 主函数
 --------------------------------------*/
 
 void main()
 {
 uchar x;
 
 init();
 
 for( x=0;x<14;x++ ){
 
 txd_c(tab[x]);
 
 delay(200);
 }
 
 while(1) P0 = dat;
 
 }
 
 
 
 
 
 |