| 
 
| 单片机发没问题。就是接收上有问题,接收的时候IR能置位就是SBUF没有任何数据,看了几遍手册也没发现哪里有问题,代码用的论坛上的一段代码。大家帮忙看下哪里的问题。#include<sh88f54.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include<delay.h>
 
 unsigned char Data[8] = {0};
 bit Flag;
 
 /*------------------------------------------------
 串口初始化
 ------------------------------------------------*/
 void InitUART  (void)
 {
 
 SCON  = 0x50;                        // SCON: 模式 1, 8-bit UART, 使能接收
 TMOD |= 0x20;                        // TMOD: timer 1, mode 2, 8-bit 重装
 TH1   = 0xF7;                        // TH1:  重装值 4800 波特率 晶振 16.6MHz
 TL1   = TH1;
 TR1   = 1;                           // TR1:  timer 1 打开
 PCON  = 0X80;                        // 倍频  得到波特率为9600
 IEN0  = 0x90;                         // 打开串口中断
 
 
 }
 /*------------------------------------------------
 主函数
 ------------------------------------------------*/
 void main (void)
 {
 
 unsigned char i;
 unsigned char wei;
 wei = 1;
 
 P0M0 = 0X00;
 P0M1 = 0XFF;//推挽输出
 P1M0 = 0X00;
 P1M1 = 0XFF;//推挽输出
 P2M0 = 0X00;
 P2M1 = 0XFF;//推挽输出
 P3M0 = 0X01;
 P3M1 = 0XFE;//推挽输出
 P4M0 = 0X00;
 P4M1 = 0XFF;//推挽输出
 
 P3_0  = 1;
 P3_1  = 1;
 
 InitUART();
 
 
 while(wei)
 {
 if(Flag)
 {
 Flag  = 0;
 for(i=0;i<8;i++)
 {
 SBUF  = Data[i];
 while(!TI);
 TI = 0;
 }
 if(i==8)
 {
 i       = 0;
 wei     = 0;
 }
 }
 }
 
 
 }
 
 
 /*------------------------------------------------
 串口中断程序
 ------------------------------------------------*/
 void UART_SER (void) interrupt 4 //串行中断服务程序
 {
 
 static unsigned char Count;
 
 if(RI)                       //判断是接收中断产生
 {
 RI=0;                                                 //标志位清零
 Data[Count] = SBUF;
 Count++;
 }
 if(Count==8)
 {
 
 Count = 0;
 Flag  =        1;
 
 }
 | 
 |