AVR单片机的用IO脚模拟串口收发的时候,如何初始化的时候设置波特率

来源:百度知道 编辑:UC知道 时间:2024/05/22 13:29:34
我在网上看过了一个程序,但是初始化的时候没有看懂怎么设置的波特率,如果需要这个IO脚通讯,如何设置波特率?
....是IO脚模拟的...串口通讯脚占用了....-_-# UBRR里面放的是串口通讯的波特率,现在问题是IO脚模拟的串口通讯波特率如何确定。
我是想做一个Mega8 一边收发,然后筛选数据用IO脚模拟另一边的收发....假设6mHz晶振,1200波特率是如何设置模拟脚的波特率,就是因为没有初始化的寄存器啊,关键是内部计数器两个都可以用吧,然后怎么算的这个不是很清楚。

你干吗不看数据手册呢,上面都写的很清楚的

你光看程序是不能了解他对这些寄存器的操作代表了什么意思

串口通讯的初始化就是对UBRRL、UBRRH、UCSRA、UCSRB、UCSRC这几个寄存器设置单片机用何种方式来进行通讯(其中包括数据位、校验位、停止位的选择,以及波特率的选择)

而波特率的选择又和你单片机的晶振频率有关,可选择的选项实在太多了,在数据手册中有个表格的,你自己去看吧

关于模拟串口的问题,他的运作原理和原本的串口通讯脚是不一样的
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=431041&bbs_page_no=1&search_mode=1&search_text=模拟串口&bbs_id=9999
你可以看这个帖子

这个论坛是个很专业的AVR论坛,你可以到这上面发帖求助
http://www.ourdev.cn/bbs/bbs_list.jsp?bbs_id=1000

计算公式是Baud=fosc/[16*(UBRR+1)]
6*1000000/(1200*16)-1=UBRR