完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
当您能够在一个标准的MSC51单片机上,编制出来了能够实现通讯的UART通讯程序时,问题并没有结束。您还需要进一步了解的知识还包括下面几个方面:
1,非标准的MSC51单片机 市面上有大量的“51兼容单片机”,但是,通常这些单片机的兼容性仅仅表现在机器指令系统兼容、最基础的一些特殊寄存器兼容,对于UART来说,未必兼容。 使用这一类单片机时,您需要注意的是下面几点: A,UART工作模式。有可能会牵扯到1到3个不同的寄存器,这些寄存器必须要仔细的检查,设置成您 所需要的通讯编码模式。 B,UART时钟发生器。有可能并不使用MSC51所使用的时钟发生方法,您需要仔细的阅读单片机规格 书,确定如何设置UART的时钟发生器。 C,IO端口性质。当您设置使能UART时,相应的IO端口并不一定能够符合您所想的IO性质,需要额外 的对该单片机相应IO端口设置合适的输入、输出性质。 2,32位单片机 32位单片机在使用UART时,会有更多的可选编程项,并且通常会有配套的IO库来帮助编程者实现功能。仔细的阅读IO库的使用方法,并且选择您所需要的合适的波特率、通讯位数等设置项,然后使用相应的库函数来设置您所需要的通讯设置。 3,软件串口 有些低成本单片机,不带有硬件UART,或者有些单片机因为复用IO,不得不放弃使用硬件UART时,就需要使用软件模拟的UART了。使用软件模拟UART功能时,通常会使用一个延时软件来模拟波特率发生器的功能(有时也可以使用时钟中断来操作),那么最重要的事情是检查波特率是否合适,通常需要配合示波器观察通讯波形,确定延时是否准确,保证波特率符合要求。 下面是一个软件UART的例子。该例子使用10位通讯字,P0.0作为TX管脚使用。 #include “reg51.h” #include 《intrins.h》 ***it UARTO = P0^0; void UART_Delay( void ) { unsigned char DelayNum; // 该数据决定延时长短,需要在软件实际运转时,调整该数据 DelayNum = 50; while( DelayNum -- ){}; // 后面的几个 NOP,对延时进行微调 _nop_( ); _nop_( ); _nop_( ); } // 这个发送程序以通讯字10位为例 void UART_Send( unsigned char TChar ) { unsigned char UartCnt; unsigned char SendData; bit EAState; EAState = EA; SendData = TChar; EA = 0; UARTO = 0; UART_Delay( ); // 后面的几个 NOP,对延时进行微调。 // 以保证起始位和后面的数据位在时间上一致 _nop_( ); _nop_( ); for( UartCnt = 0; UartCnt 《 8; UartCnt ++ ) { If( SendData & 0x01 ) UARTO = 1; else UARTO = 0; UART_Delay( ); SendData 》》= 1; } UARTO = 1; UART_Delay( ); UART_Delay( ); EA = EAState; } |
|
|
|
只有小组成员才能发言,加入小组>>
物联网工程师必备:怎么选择不同的无线连接技术,本指南帮你忙!
3283 浏览 1 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】WIFI功能测试
3935 浏览 0 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】Arduino的替代SublimeText3+STino
3442 浏览 0 评论
使用端口扩展器轻松高效地向IIoT端点添加具有成本效益的子节点
4004 浏览 1 评论
20681 浏览 11 评论
模组有时候复位重启后输出日志为“REBOOT_CAUSE_SECURITY_PMU_POWER_ON_RESET”的原因?
800浏览 2评论
1017浏览 2评论
1022浏览 1评论
1140浏览 1评论
379浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 14:03 , Processed in 2.080605 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号