资源简介
马潮老师 AVR串口例程代码 Atmega16
代码片段和文件信息
/*****************************************************
File name : demo_14_1.c
Chip type : ATmega16L
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#include
#define UART_BEGIN_STX 0xBB
#define UART_END_STX 0xEE
#define FRAMING_ERROR (1< #define PARITY_ERROR (1< #define DATA_OVERRUN (1< #define DATA_REGISTER_EMPTY (1< #define RX_COMPLETE (1<
#define TX_BUFFER_SIZE 5
unsigned char tx_buffer[TX_BUFFER_SIZE]; // USART Transmitter buffer
unsigned char tx_wr_indextx_rd_indextx_counter;
// USART Transmitter interrupt service routine
interrupt [USART_TXC] void usart_tx_isr(void)
{
if (tx_counter)
{
--tx_counter;
UDR=tx_buffer[tx_rd_index];
if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
}
}
void putchar(unsigned char c)
{
while (tx_counter == TX_BUFFER_SIZE);
#asm(“cli“)
if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
{
tx_buffer[tx_wr_index]=c;
if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
++tx_counter;
}
else
UDR=c;
#asm(“sei“)
}
#define RX_BUFFER_SIZE 5
unsigned char rx_buffer[RX_BUFFER_SIZE]; // USART Receiver buffer
unsigned char rx_counter;
bit Uart_RecvFlag;
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
unsigned char statusdata;
status = UCSRA;
data = UDR;
if (!Uart_RecvFlag) // 判断是否允许接收一个新的数据包
{
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_counter] = data;
rx_counter++;
switch (rx_counter)
{
case 1: // 检验起始字符
- 上一篇:ztree模糊搜索demo
- 下一篇:GLAS数据提取高程,IDL
相关资源
- Atmega128上移植ucosii的实用例程
- iccavr atmega128 实验程序
- 基于ATmega128的BK-AVR128开发板Proteus仿真
- 基于 ATMEGA-16 的 PWM 与 Proteus 仿真
- 超声波的AVR程序
- avrdude-GUI 1.0.5
- flash、SRAM、EEPROM在AVR中的应用
- 论文研究-基于FPGA和AVR的多普勒超声波
- STM32F030C8T6串口例程
- ADS1256(AVR)
- AVR单片机入门与速成攻略源码.rar
- AVRUSB单片机编程与上位机编程教程重
- ATmega8 TQFP32 TQFP32 PCB封装
- 基于AVR单片机的OLED现实源码
- 郭天祥AVR单片机
- avr 单片机的fft
- 热敏电阻测温proteus仿真
- zw_Avr2Ins-平均根数和瞬时根数的相互转
- AVR-VID6606.doc
- ds2781单总线avr单片机程序
- 步进电机加减速之AVR446
- 基于AVR单片机的可预置程控宽带直流
- AVR单片机语音识别电路模块设计
- 基于AVR单片机的CH4气体检测系统
- ProgISP1.68
- 使用EXCEL记录串口数据
- AVR dude GUI
- windows下avrdude.exe和avrdude.conf和libusb0
- 基于AVR单片机LED数字大屏显示
- 单片机反汇编软件汇总
评论
共有 条评论