发布时间:2025-03-10 17:34:54    次浏览
//uart.h/**********串口端口定义**********/#defineRxDPD0#defineTxDPD1#definebaudrate9600//波特率#defineF_CPU8000000UL//定义晶振频率voiduart_init(void){/*****RS232口线设置*****/PORTD|=BIT(RxD)|BIT(TxD);DDRD=~BIT(RxD);DDRD|=BIT(TxD);/* 设置波特率*/UBRRL=(F_CPU/baudrate/16-1)%256; //本设置波特率不加倍及U2X=0UBRRH=(F_CPU/baudrate/16-1)/256;/* 接收器与发送器使能*/UCSRB|=BIT(4)|BIT(3);/*设置传输格式*///异步,8位数据,无奇偶校验,一个停止位,无倍速UCSRC|=BIT(7)|BIT(2)|BIT(1);}//串口数据发送,查询方式void putc(unsigned char c){/* 等待发送缓冲器为空 */while (!(UCSRA(1UDRE)));/* 将数据放入缓冲器,发送数据 */UDR = c;}//串口字符串发送,查询方式void puts(unsigned char *s){while(*s){putc(*s);s++;}putc(' ');//return 1;}//串口数据接收,查询方式unsigned char getc(void){/* 等待接收数据*/while (!(UCSRA(1RXC)));/* 从缓冲器中获取并返回数据*/return UDR;}//串口接收数据存储,存储到数组中void get_s(unsigned char *js,unsigned int num){unsigned int i;for(i=0;inum;i++){js[i]=getc(); //保存数据到数组里面}}//test.c//ICC-AVR application builder : 2008-11-4 12:34:31// Target : M16// Crystal: 8.0000Mhz#include iom16v.h#include macros.h#include 'uart.h'void main(void){uart_init();while(1){putc(getc());}}原文链接:http://www.eeworld.com.cn/mcu/article_2016102830932.html