完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
void Sleep(unsigned int mm) { int i,j; for(i = 0;i for(j = 0;j<600;j++) { } } } void Send(unsigned char a) { SBUF = a; while(ti == 0); TI = 0; } void main() { unsigned char i; TMOD = 0x20; SCON = 0x50; TH1 = TL1 = 0xF3; PCON = 0x80; TR1 = 1; while(1) { for(i = 0;i<0x10;i++) { Send(i); Sleep(1000); } } } 单片机每秒发送一次数据到串口。 但是串口助手收到的信息是 00 00 80 00 00 00 80 00 00 00 80 00 为什么会这样呢? 按理说收到的信息应该是从0x0到0x10才对啊。 |
|
相关推荐
5个回答
|
|
查看一下串口助手的波特率等参数设置是否正确,单片机是否有用到倍频等改变工作频率的功能
|
|
|
|
stc的定时器是和一般的不一样,是可以选择时钟源的,你按官方给的例子烧写个程序看看。
|
|
|
|
STC12c2052AD串口如下设置
//9600bps@11.0592MHz PCON &= 0x7F; //波特率不倍速 SCON = 0x50; //8位数据,可变波特率 AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T AUXR &= 0xFE; //串口1选择定时器1为波特率发生器 TMOD &= 0x0F; //清除定时器1模式位 TMOD |= 0x20; //设定定时器1为8位自动重装方式 TL1 = 0xFD; //设定定时初值 TH1 = 0xFD; //设定定时器重装值 ET1 = 0; //禁止定时器1中断 TR1 = 1; //启动定时器1 你这程序只能发送·0x00~0x0f,到了0x10即退出循环。 |
|
|
|
一般都是波特率的问题,晶振使用的是内部晶振还是外部晶振? 设置初值用的时钟频率对不对? 如果使用内部晶振,在下载的时候要选择正确的时钟频率
|
|
|
|
果然是波特率的问题,谢谢各位大神的指点
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
846 浏览 0 评论
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
879 浏览 0 评论
2714 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2332 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1721 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5904 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-27 12:46 , Processed in 0.409876 second(s), Total 73, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号