单片机源程序如下:
- #include <STC12C5A60S2.H>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- /********************************************
- 全局变量和初始定义
- ********************************************/
- uchar R_buf = 0;
- uchar S_buf = 0;
- uchar sflag = 0;
- /*******************************************
- 串口1 初始化 定时器1
- *******************************************/
- void Uart1Init(void) //9600bps@11.0592MHz
- {
- SCON = 0x50; //8位数据,可变波特率
- AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
- AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
- TMOD &= 0x0F; //设定定时器1为16位自动重装方式
- TL1 = 0xE8; //设定定时初值
- TH1 = 0xFF; //设定定时初值
- ET1 = 0; //禁止定时器1中断
- TR1 = 1; //启动定时器1
- ES = 1;
- EA = 1;
- }
- /***********************************
- 延时函数
- ***********************************/
- void Delay10us() //@11.0592MHz
- {
- unsigned char i;
- _nop_();
- i = 25;
- while (--i);
- }
- /******************************************
- 串口 1 的中断服务函数
- ******************************************/
- void Uart1_Interrupt ( void ) interrupt 4 using 1
- {
- if ( RI == 1)
- {
- R_buf = SBUF;
- RI = 0;
- sflag = 1;
- // ES = 0;
- }
- }
- /*******************************************
- 主函数 *
- *******************************************/
- void main ( void )
- {
- Uart1Init();
- while (1)
- {
- Delay10us();
- if ( sflag == 1)
- {
- sflag = 0;
- REN = 0;
- S_buf = R_buf;
- SBUF = S_buf;
- while( !TI );
- TI = 0;
- REN = 1;
- // ES = 1;
- }
- }
- }
复制代码 各位大神帮忙看一下。问题出在哪儿?
|