完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
单片机串口通信的数据缓冲器SBUF是8位的。
想在电脑输入0~65526的数据,然后通过串口传输到单片机。 再用数码管显示。 输入的数据大于8位没有问题,小于8位显示异常, 主要是串口中断函数怎么去判断呢。 #include #include #define uint unsigned int #define uchar unsigned char uchar num,t,temp; ***it fm=P2^3; ***it dula=P2^6; ***it wela=P2^7; int shu,shu1,shu2,wan ,qian,bai,shi,ge,i; uchar code table[]={ //数码管编码 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delay(uint z) //延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void display(); void main() { TMOD=0x20; //定时器1工作在方式2,自动填充初值 TH1=0xfd; TL1=0xfd; EA=1; ES=1; SM1=1; SM0=0; REN=1; TR1=1; shu=0x00; fm=1; t=0; num=1; while(1) { shu=0x00ff&shu2; //低位数据 shu=_lrol_(shu1,8)|shu; //高位数据左移8位 wan=shu/10000; //求 个 十 百 千 万的值 分别用数码管显示 qian=shu%10000/1000; bai=shu%10000%1000/100; shi=shu%10000%1000%100/10; ge=shu%10; display(); P1=shu2; delay(10); } } void display() //数码管动态扫描函数 { dula=1; P0=table[wan]; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(1); dula=1; P0=table[qian]; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(1); dula=1; P0=table[bai]; dula=0; P0=0xff; wela=1; P0=0xfb; wela=0; delay(1); dula=1; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay(1); dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0xef; wela=0; delay(1); } void time() interrupt 4 //串口中断函数 { RI=0; i++; if(i==3) i=1; if(i==1) shu1=SBUF; //高位 else shu2=SBUF; //低位 } |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之网络socket程序编程
492 浏览 0 评论
飞凌嵌入式-ELFBOARD-RGB LCD屏接口的PCB设计要点
755 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
848 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第三十七章 image图像对比实验
814 浏览 0 评论
1056 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11697 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-14 14:14 , Processed in 0.608893 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号