本帖最后由 hoddescle 于 2016-1-27 11:44 编辑
目的:使用中断方式读取串口收到的数据,并将数据传递到主函数中
硬件:STC12C5A60S2 12M晶振
软件:keil V2
示范例,主函数中有参数a进行运算,当串口有中断时,将串口收到的数据(暂定为b)加到a上
代码如下,现象:参数从串口中断中得到的b传递不到主函数中,运行时候主函数的b一直是0.求解
- #include<STC12C5A60S2.H>
- #define unchar unsigned char
- /*串口初始化函数
- 无参数
- 无返回值
- */
- void ser_ini()
- { TMOD=0x20;//设置定时器1工作方式2
- TH1=0xfd;//定时器初值
- TL1=0xfd;
- TR1=1;//打开定时器
- SM0=0;//设置串口工作方式
- SM1=1;//设置串口工作方式
- REN=1;//串口允许接受打开
- }
- /*主函数
- 无参数
- 无返回值
- */
- void main()
- {
- unchar a=0;
- unchar b=0;
- EA=1;//打开总中断
- ES=1;//打开串口中断
- ser_ini();//串口初始化
- if(!RI){
- RI=0;
- a=a+b;
- }
- }
- /*串口中断函数
- 无参数
- 返回值不知道如何搞
- */
- void ser_inter() interrupt 4//串口中断
- {
- unchar b;
- b=SBUF;
- }
复制代码
这样最简单,当然也可以用指针。
一周热门 更多>