像arduino一样使用AVR单片机-串口usart中断

之前写了一篇文章,对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

}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Time limit is exhausted. Please reload the CAPTCHA.