| /*-------------------------------------- 芯片    :STC12C5A60S2
 晶振    :11.0592MHZ
 开发平台:KEIL
 功能    :串口一,串口二,同步发送接收数据(采用中断方式,波特率发生器产生波特率)
 波特率  :9600BPS
 日期    :11.5.19
 注意    :下载完程序后请复位系统!!(切记!)
 --------------------------------------*/
 
 #include "STC12C5A60S2.h"
 #define  uchar unsigned char
 #define  uint  unsigned int
 
 uchar dat1=0,dat2=0;
 
 
 void init ()
 {
 
 TMOD = 0x20;                                  //定时器1产生波特率
 
 SCON = 0x50;                                 //方式1,8位数据,波特率可变
 
 TH1  = TL1 = 0xfd;                         //波特率 9600
 
 S2CON = 0x50;                                 //方式1,八位数据,可变波特率
 
 BRT   = 0XFD;                                  //设置波特率9600
 
 TR1  = 1;                                          //启动定时器产生波特率
 
 AUXR  = 0x10;                                 //启动波特率发生器
 
 IP   = 0x00;                                 //优先级默认
 
 EA    = 1;                                  //开总中断
 
 ES = 1;                                         //开串口1中断
 
 IE2   = 0x01;                                 //开串口2中断
 
 }
 
 /*--------------------------------------
 串口一 发送一个字符
 --------------------------------------*/
 
 void  uart1_txd(uchar x)
 {
 SBUF = x;
 }
 
 /*--------------------------------------
 串口一 发送接收中断函数
 --------------------------------------*/
 
 void uart_isr()  interrupt 4
 {
 if( RI ) RI = 0;
 
 dat1 = SBUF;
 
 if( TI ) TI = 0;
 }
 
 /*--------------------------------------
 串口二   发送一个字符
 --------------------------------------*/
 void  uart2_txd(uchar x)
 {
 S2BUF = x;
 }
 
 /*--------------------------------------
 串口二    发送接收中断函数
 --------------------------------------*/
 void uart2_isr()  interrupt 8
 {
 if( S2CON & 0x01 ){
 
 S2CON &= ~0x01;
 
 dat2    = S2BUF;
 
 }
 
 if( S2CON & 0x02 ){
 
 S2CON &= ~0x02;
 
 }
 
 }
 
 /*--------------------------------------
 延时函数
 --------------------------------------*/
 void delay ( uint t )
 {
 uint i,j;
 
 for( i=0; i<t; i++)
 
 for( j=0; j<250; j++);
 }
 
 
 /*--------------------------------------
 主函数
 --------------------------------------*/
 void main()
 {
 uchar tab[]={"liguangyang!"};
 
 uchar i,j=12;
 
 uchar *p;
 
 init();
 
 p=tab;
 
 for(i=0;i<13;i++){
 
 j--;
 
 uart1_txd(p[j]);
 
 uart2_txd(p);
 
 delay(150);          }
 
 
 while(1){
 
 P0=dat1;
 
 delay(500);
 
 P0=dat2;
 
 delay(500);
 
 }
 
 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 |