| /*-------------------------------------- 芯片    :STC12C5A60S2
 晶振    :11.0592MHZ
 开发平台:KEIL
 功能    :串口二收发8位数据。(采用中断方式,波特率发生器产生波特率)
 波特率  :9600BPS
 日期    :11.5.19
 注意    :下载完程序后请复位系统!!(切记!)
 --------------------------------------*/
 
 #include "STC12C5A60S2.h"
 #define uchar unsigned char
 #define uint unsigned int
 
 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)
 {
 
 S2CON = 0x50;                                      //方式1,八位数据,可变波特率
 
 AUXR1 = 0x00;                                          //1T工作方式
 
 PCON  = 0x00;                                         //不倍增波特率
 
 IP2   = 0x00;                                         //优先级默认
 
 BRT   = 0XFD;                                          //设置波特率9600
 
 AUXR  = 0x10;                                         //启动波特率发生器
 
 EA    = 1;                                          //开总中断
 
 IE2   = 0x01;                                         //开串口2中断
 
 }
 
 /*--------------------------------------
 发送一个字符
 --------------------------------------*/
 void  txd_c(uchar x)
 {
 S2BUF = x;
 }
 
 /*--------------------------------------
 发送接收中断函数
 --------------------------------------*/
 void uart2_isr()  interrupt 8
 {
 if( S2CON & 0x01 ){
 
 S2CON &= ~0x01;
 
 dat    = S2BUF;
 
 }
 
 if( S2CON & 0x02 ){
 
 S2CON &= ~0x02;
 
 }
 
 }
 
 /*--------------------------------------
 主函数
 --------------------------------------*/
 void main()
 {
 uchar tab[]={"liguangyang!!"};
 
 uchar *p;
 
 uchar x;
 
 init();
 
 p=tab;
 
 for( x=0;x<14;x++ ){
 
 txd_c(p[x]);
 
 delay(200);
 }
 
 while(1) P0 = dat;
 
 }
 
 
 
 
 
 
 |