单片机交流
直播中

张莹

7年用户 965经验值
私信 关注
[问答]

如何去编写一种基于Atmega8单片机的串口收发程序?

如何去编写一种基于Atmega8单片机的串口收发程序?有大神遇到过这个问题吗

回帖(1)

元办叙

2021-7-8 14:47:31
  Atmega8出厂默认的内部时钟频率是1Mhz,做串口收发时波特率最高设置为4800,设置为9600会乱码,提高时钟频率才能将波特率提高。
  #include 《avr/io.h》#include 《avr/interrupt.h》#define F_CPU 1000000//时钟频率#define BAUD 4800//串口波特率//定义接收字符volatile char rx_data;/************************************************************************//* 主程序 *//************************************************************************/int main(void){ //设置波特率 UBRRH=(F_CPU/BAUD/16-1)/256; UBRRL=(F_CPU/BAUD/16-1)%256; //接收中断使能,接收使能,发送使能 UCSRB|=(1《《RXCIE)|(1《《RXEN)|(1《《TXEN); sei(); //使能总中断 while(1){ }}/************************************************************************//* 串口接收中断 *//************************************************************************/ISR(USART_RXC_vect){ rx_data = UDR; //发送接收到的字符 while(!(UCSRA & (1 《《 UDRE))); UDR = rx_data;}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分