完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我的程序目的是51单片机的按键1按下时单片机就往外发送56 0036 01 00这几个十六进制数,按键不按就不发送。问题在于按键按下,在串口助手接收区接的是00 56 00 36 01 00,不知道这是为什么? 串口助手的HEX显示打钩了。哪位高手帮忙看看程序哪里的问题.谢谢
#include #include #include unsigned char ch; bit flag=0; ***it K1=P3^1; ***it K2=P3^2; ***it LED=P1^0; unsigned char start_photo_cmd[]={0x56,0x00,0x36,0x01,0x00}; void delay(unsigned char xms) { unsigned int i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void init() { SCON=0x50; TMOD=0x20; PCON=0x80;// TH1=0xfd; //晶振11.0592MHZ,SMOD=1,波特率19200bps 如果晶振为22.1184NHZ时,波特率为38400 IE|=0x90; TR1=1; // } void uart_sendbuf(unsigned char *buf,unsigned char n) { unsigned char i; ES=0; for(i=0;i SBUF=buf[i]; while(ti==0); TI=0; } ES=1; } void ser() interrupt 4 using 3 { RI=0; ch=SBUF; flag=1; } main() { init(); while(1) { if(K1==0) { delay(10); if(K1==0) { while(K1==0); uart_sendbuf(start_photo_cmd,5); } } } } |
|
相关推荐
9个回答
|
|
不是按键的问题。。。按键接在通信口上也可以,只要不在按键按下去的时候通信就是了,但如果IO口富裕的话最好还是别接在通信上。。。
把uart_sendbuf(start_photo_cmd,5);改为uart_sendbuf(start_photo_cmd,4);试试 |
|
|
|
|
|
|
|
{:16:}
|
|
|
|
TXD,RXD无数据时是高电平。注意到书上说的起始位了吗?是不是一个低电平的脉冲?
当你按下按键后,TXD引脚变低,于是相当于发送了一个起始位,于是就有了最开始的数据0。至于为何是0x00而不是其他值,我希望你自己找找原因。 那么为什么又只有一个数据0x00呢,而不是多个呢?停止位在这里起了作用。 你做个实验: 把发送程序去掉,每当你按一次按键,你的串口调试助手就会接收到一个数。试试吧。 |
|
|
|
顶、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
|
|
|
|
|
|
|
|
{:5:}{:5:}
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
386 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1670 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1123 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1005 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1229 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12013 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 09:13 , Processed in 0.879536 second(s), Total 101, Slave 80 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号