完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include #include #define uint unsigned int unsigned char flag_uart,flag_time,flag_on,a,i,t0_num,ad_val,a,s; float ad_vo; void init() { TMOD|= 0x20; //定时器1工作方式2 PCON|= 0x80; TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位8、停止位1。效验位无 (12M) TL1 = 0xF3; TR1 = 1; ET0=1; SM0=0; SM1=1; REN=1; EA = 1; // 开总中断 ES = 1; //开串口中断 } void main() { while(1) { init(); if(flag_uart==1) { flag_uart=0; ES=0; TI=1; switch(flag_on) { case 2: puts("Turn on ad!n"); //TR0=1; break; case 0: printf("Turn off ad!n"); //TR0=0; break; case 1: puts("Error!n"); break; } while(!TI); TI=0; ES=1; } } } void ser() interrupt 4 { if(RI==1) { RI=0; //先是收到电脑发送过来的数据,数据放在在SBUF中 a=SBUF; } s=a; flag_uart=1; if(s==1) flag_on=0; else flag_on=1; } //为什么中断服务程序中的s 与a始终为0,导致始终执行的是 case 0中的语句? |
|
相关推荐
5个回答
|
|
因为串口始终收到0或者根本就没有接收到串口数据,解决方法:先看是否能进入串口中断服务程序,若能进入,则看波特率设置是否正确
|
|
|
|
我学这个学了很久!!
|
|
|
|
谢谢了!我的问题已经解决!能进入中断服务程序波特率设置也没错,是串口调试助手设置的问题SBUF中的数据应为十六进制,发送数据故应以十六进制发送
|
|
|
|
|
|
顶,不错不错,值得学习
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
364 浏览 0 评论
356 浏览 0 评论
嵌入式学习-搭建自己的ubuntu系统之ubuntu网络设置
526 浏览 0 评论
龙芯中科胡伟武:3B6600 八核桌面 CPU 性能将达到英特尔中高端酷睿 12~13 代水平
574 浏览 0 评论
树莓派Pico 2发布,搭载RP2350双核RISC-V和Arm Cortex-M33微控制器!
542 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10701 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 19:16 , Processed in 0.849911 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号