之前写了一篇文章,对avr下使用lcd1602的库进行封装,使能够想使用arduino一样,很方便的使用lcd.今天再次放出基于avr单片机的串口库,包含串口中断接收,单片机为atmega16.
个人原创,版权所以,转载请注明原文出处,并保留原文链接:
http://www.embbnux.com/2014/04/15/use_avr_like_arduino_usart/
开发环境:
ubuntu linux
avr-gcc
首先是串口头文件:
/************************************************************ =============CopyRight of Embbnux ========================== ==============Writer : Embbnux Ji============================ ==============avr 串口 驱动程序 ============================ ==============http://www.embbnux.com ======================== ==============avr 串口 驱动程序 ============================ ==============ATmega16 16MHZ ================================ **************************************************************/ #ifndef USART_H_H #define USART_H_H #define BAUD 9600 #define CRYSTAL 16000000 //晶振 extern void USART_Init( void ); // 数据发送【发送5 到8 位数据位的帧】 extern void USART_Transmit( unsigned char data ); // 数据接收【以5 到8 个数据位的方式接收数 据帧】 extern unsigned char USART_Receive( void ); extern void USART_SEND_String(char *str); #endif
主要是实现串口的初始化;
接收发送字符函数;
发送字符串函数;
c语言文件,请到我的github下载
https://github.com/embbnux/AVR-LIKE-Arduino
对于串口接收,最好是使用中断,avr的串口中断编程还是比较简单的:
//接受中断服务程序 ISR(USART_RXC_vect){ //your_code }