完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 hoddescle 于 2016-1-27 11:44 编辑
目的:使用中断方式读取串口收到的数据,并将数据传递到主函数中 硬件:STC12C5A60S2 12M晶振 软件:keil V2 示范例,主函数中有参数a进行运算,当串口有中断时,将串口收到的数据(暂定为b)加到a上 代码如下,现象:参数从串口中断中得到的b传递不到主函数中,运行时候主函数的b一直是0.求解
|
|
相关推荐
10个回答
|
|
接收完成会置RI=1,你这if(!RI),接收完了也进不去呀!
|
|
|
|
unchar counter=0;
unchar buffer[200]; void ser_inter() interrupt 4//串口中断 { counter++; buffer[counter]=SBUF; if(counter>=200) counter=0; } |
|
|
|
jinyi7016 发表于 2016-1-27 13:19 您的意思是定义一个全局变量,然后串口数据改变全局变量的值? |
|
|
|
|
|
|
|
|
|
|
|
我试了,全局变量不太管用,依旧调不出来
|
|
|
|
#include
#define uchar unsigned uchar #define uint unsigned uint char over; void send(char receive) { SBUF=receive; while(TI==0); TI=0; } void main() { char a; TMOD=0X20; //TI定时方式 TH1=TL1=0Xfd; //波特率9600 PCON=0; //波特率不加倍 SCON=0x50; //串口通信方式1,TIRI清零,允许接收 TR1=1; //启动T1 EA=1; ES=1; a=0x01; P2=a+receive; } /*************************************************** 函数名称:ser()interrupt 4 函数功能:中断程序 输入参数:无 输出参数:无 ***************************************************/ void ser()interrupt 4 { static unsigned char i;//串口接收计数的变量 over=0; RI=0;//手动清某个寄存器,大家都懂的 receive=SBUF; send(receive); ES=0; } 我就是这么做的,依旧白扯 |
|
|
|
请问拿到这个问题解决了吗
|
|
|
|
可不可以讲解一下 |
|
|
|
好像主程序没循环,执行了一遍,然后就是等着中断了,中断之后就没了。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-TF卡烧录流程之烧写过程
1187 浏览 0 评论
2086 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写原理
1552 浏览 0 评论
请问SPH0641LU4H这款麦克风如何在不使用I2S的情况下,单纯通过GPIO来进行驱动且正常读取数据呢
1161 浏览 1 评论
698 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12109 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-5 10:06 , Processed in 0.539275 second(s), Total 56, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号