完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
程序在51单片机上测试没有问题,现在我想在另一个板子(stc15w408as)上测试一下串口,程序做了相应的修改,这个板子是自己做的,程序下载都没有问题。
问题是这样:直接用USB转TTL模块测试串口,将模块的u***口用数据线连到电脑,模块上的收发引脚直接和单片机的下载口直连,晶振啥的都没有问题,就是串口助手上收不到数据,也找不出原因,很纳闷。 希望大家帮忙分析一下原因,不胜感激! |
|
相关推荐
7个回答
|
|
好的,谢谢。问题已经解决,问题处在定时器的初始化部分。
|
|
|
|
我用了stc15F2k61s2的开发板,串口通信只能用原装的数据线,其它的数据线都下载不了程序,波特率要调好,接收数据是文本模式的。
|
|
|
|
51的开发板和15的开发板不一样,15的开发板运算速度更快,适当调一下波特率试一下。
例程: /*------------------------------------- UART1测试:使用波特率9600发送到单片机上 单片机将收到的程序发回PC。 可采用STC下载软件自带串口调试助手观察 ---------------------------------------*/ #include "STC15F2K.h" #include typedef unsigned char uchar; typedef unsigned int uint; bit busy; bit Flag; uchar GetC; void InitUART(void); void SendData(uchar dat); void SendString(uchar *s); void main() { P2=0x01; InitUART(); SendString("IAP15F2K61S2rnUart Test !rn"); while(1) { if(Flag) { SendString("IAP15F2K61S2rnUart Test !rn"); SendData(GetC); Flag=0; } } } /*---------------------------- UART1初始化 -----------------------------*/ void InitUART(void) { SCON = 0x50; //8位可变波特率 AUXR1= AUXR1 & 0x3F; AUXR = 0x40; //定时器1为1T模式 TMOD = 0x20; //定时器1为模式2(8位自动重载) TL1 = 0xDC; //设置波特率重装值 TH1 = 0xDC; TR1 = 1; //定时器1开始工作 ES = 1; //使能串口中断 EA = 1; } /*---------------------------- UART 中断服务程序 -----------------------------*/ void Uart() interrupt 4 using 1 { if (RI) { RI = 0; //清除RI位 GetC = SBUF; //P0显示串口数据 Flag=1; } if (TI) { TI = 0; //清除TI位 busy = 0; //清忙标志 } } /*---------------------------- 发送串口数据 ----------------------------*/ void SendData(uchar dat) { while (busy); //等待前面的数据发送完成 busy = 1; SBUF = dat; //写数据到UART数据寄存器 } /*---------------------------- 发送字符串 ----------------------------*/ void SendString(uchar *s) { while (*s) //检测字符串结束标志 { SendData(*s++); //发送当前字符 } } |
|
|
|
帮顶....
|
|
|
|
好的,谢谢。问题已经解决,问题处在定时器的初始化部分。
|
|
|
|
不知道该如何感谢您,看了您的代码,困扰了我好久的问题今天终于解决了,串口终于能够接收数据了,我谨代表我自己向您致以诚致的感谢,正是有你们这些愿意分享的人,我们这些菜鸟才少走了好多弯路,以后我也会向您一样,努力分享的。
|
|
|
|
请问一下,为什么最开始P2要初始化为0x01?
|
|
|
|
只有小组成员才能发言,加入小组>>
3272 浏览 9 评论
2948 浏览 16 评论
3449 浏览 1 评论
8969 浏览 16 评论
4042 浏览 18 评论
1087浏览 3评论
563浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
558浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2295浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1851浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-14 13:27 , Processed in 1.241029 second(s), Total 91, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号