求助,如何使用单片机串口中断,读取串口数据并传递到主函数

2019-07-15 15:03发布

本帖最后由 hoddescle 于 2016-1-27 11:44 编辑

目的:使用中断方式读取串口收到的数据,并将数据传递到主函数中
硬件:STC12C5A60S2 12M晶振
软件:keil V2

示范例,主函数中有参数a进行运算,当串口有中断时,将串口收到的数据(暂定为b)加到a上
代码如下,现象:参数从串口中断中得到的b传递不到主函数中,运行时候主函数的b一直是0.求解
  1. #include<STC12C5A60S2.H>
  2. #define unchar unsigned char

  3. /*串口初始化函数
  4. 无参数
  5. 无返回值
  6. */
  7. void ser_ini()
  8. {        TMOD=0x20;//设置定时器1工作方式2
  9.         TH1=0xfd;//定时器初值
  10.         TL1=0xfd;
  11.         TR1=1;//打开定时器
  12.         SM0=0;//设置串口工作方式
  13.         SM1=1;//设置串口工作方式
  14.         REN=1;//串口允许接受打开
  15. }



  16. /*主函数
  17. 无参数
  18. 无返回值
  19. */
  20. void main()
  21. {
  22. unchar a=0;
  23. unchar b=0;
  24. EA=1;//打开总中断
  25. ES=1;//打开串口中断
  26.    ser_ini();//串口初始化
  27.         if(!RI){
  28.         RI=0;
  29.         a=a+b;
  30.                 }
  31. }

  32. /*串口中断函数
  33. 无参数
  34. 返回值不知道如何搞
  35. */
  36. void ser_inter() interrupt 4//串口中断
  37. {
  38. unchar b;
  39. b=SBUF;
  40. }
复制代码





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。