完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
PIC单片机串口基础(一)
题外话:刚写了一篇软件串口调试手记,其中有一个问题要提出来,那个程序做多机通讯是有问题的,问题在于在多机通讯中,空闲时TX是不能置为输出状态的.....可以将程序改为TX=0,用TRISB来控制高低电平输出,当然,在硬件上需要对TX拉高。
复习一下学到的PIC自带串口的使用方法:
我这有一份从IC37.com下载的PIC18F2455的中文资料(顺便说一下,这个网站上似乎很多中文资料),相当详细!当然,很多东西我是用不到的,现在把重点抄下来:
设置异步发送的操作步骤如下:
1. 选择合适的波特率,对SPBRGH:SPBRG寄存器进行初始化。 按需要将BRGH 和BRG16 位置1或清零,以获得目标波特率。(16C6X系列的似乎没有BRG16)
2. 通过将 SYNC 位清零并将 SPEN 位置 1 使能异步串口。
3. 若要翻转TX 引脚的信号,将TXCKP位置1。(一般情况应该不用翻转)
4. 如果需要中断,将中断允许位TXIE 置1。(发送完成后引发中断(我估计的),如果有多很多数据要发送,你又很忙,那以你可以将一个字节的数据送给TXREG后就可以干别的去了,等中断后再来发一下字节)
5. 若需要发送9 位数据,请将发送位TX9 置1。 发送的第9 位可以是地址位也可以是数据位。(多机通讯的重点,如果不用多机通讯,也就不用理会了)
6. 通过将TXEN 位置 1使能发送,此操作同时也会将TXIF位置 1。
7. 如果选择发送9位数据,将第9位数据装入TX9D位。(同上,如果不用多机通讯也不用理会它)
8. 将数据装入TXREG 寄存器 (启动发送)。(你装进去,它就给你发出去,当然,发送完成是需要一点时间的,一个字节一个字节发,如果要发字符串,自己写程序吧)
9. 若想使用中断,请确保将 INTCON 寄存器中的GIE和 PEIE位(INTCON<7:6>)置 1。(既然是“若想”,那就是说用不用中断随便你咯。)
注意: “不管TXIE的状态如何,只要中断发生,TXIF就会置 1 并且不能用软件清零。 只有在新数据写入TXREG 寄存器时,TXIF才会复位。”
这是DATASHEET上的一段话,当时未看到,写了下面一段程序,结果死 了......
TXREG=x;
while(!TXIF);
TXIF=0; //这是错的,删除这句就对了。TXIF的意思是如果RXREG空了就置1,当你写了数据它自然就是0了,所以不用你清0的。
上面这是不用中断的写法,如果你用中断,就不用这样写了。
看起来好象很复杂,其实写出来很简单:
#include
|
|
相关推荐 |
|
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
788 浏览 0 评论
2275 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2141 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1682 浏览 0 评论
2930 浏览 3 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5551 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-20 09:27 , Processed in 0.455679 second(s), Total 32, Slave 24 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号