微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 串口程序总错,为什么?

串口程序总错,为什么?

时间:10-02 整理:3721RD 点击:

  1. #include <STC15f2k60s2.h>

  2. void PZDK();

  3. BYTE idata UART_Num[8]={
  4. 0x00,0x55,0x03,0xe8,0x00,0x02,0xea,0xaa};

  5. BYTE idata UART_Data[16];
  6. BYTE JOK,JPK;
  7. void Delay3000ms()                //@11.0592MHz
  8. {
  9.         unsigned char i, j, k;

  10.         _nop_();
  11.         _nop_();
  12.         i = 127;
  13.         j = 18;
  14.         k = 107;
  15.         do
  16.         {
  17.                 do
  18.                 {
  19.                         while (--k);
  20.                 } while (--j);
  21.         } while (--i);
  22. }
  23. void main()
  24. {
  25.         PZDK();
  26.         JOK=0;
  27.         JPK=8;
  28.         Delay3000ms();
  29.         S2BUF = UART_Num[0];
  30.         while(1)
  31.         {
  32.                
  33.         }
  34. }

  35. void Uart2() interrupt 8
  36. {
  37.         BYTE com;
  38.     if (S2CON & S2RI)
  39.     {
  40.                 S2CON &= ~S2RI;         //清除S2RI位
  41.                 com = S2BUF;                                 
  42.     }
  43.         if (S2CON & S2TI)
  44.         {
  45.                 S2CON &= ~S2TI;
  46.                 JOK++;
  47.                 if(JOK<JPK)
  48.                 {
  49.                         S2BUF = UART_Num[JOK];        
  50.                 }
  51.         }        
  52. }

  53. void PZDK()
  54. {

  55. //        P_SW2 &= ~S2_S0;            //S2_S0=0 (P1.0/RxD2, P1.1/TxD2)
  56.         P_SW2 |= S2_S0;             //S2_S0=1 (P4.6/RxD2_2, P4.7/TxD2_2)
  57.         S2CON = 0x50;                //8位数据,可变波特率
  58.         AUXR &= 0xFB;                //定时器2时钟为Fosc/12,即12T
  59.         T2L = 0xE8;                //设定定时初值
  60.         T2H = 0xFF;                //设定定时初值
  61.         AUXR |= 0x10;                //启动定时器2

  62.         IE2=0X01;           
  63.     ES = 1;                     //使能串口1中断
  64.     EA = 1;
  65. }

复制代码

Z这是个触摸屏串口通信的测试程序
触摸屏收到0x00,0x55,0x03,0xe8,0x00,0x02,0xea,0xaa就会切换界面
在串口助手上发送这个,触摸屏正确执行,可到了单片机,为什么就没反应了!

单片机串口的波特率正常了?不妨用单片机的串口连接一个串口的模块,在串口助手那里查看你单片机输出的数据正常不正常

很急!

你的串口程序不全啊,只有接收,没有发射程序?你的发送程序都没有,看我截的图


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top