完善资料让更多小伙伴认识你,还能领取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中的数据应为十六进制,发送数据故应以十六进制发送
|
|
|
|
|
|
顶,不错不错,值得学习
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
203 浏览 0 评论
761 浏览 0 评论
806 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
743 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1195 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11808 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 02:48 , Processed in 0.538053 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号