易妖游戏网
您的当前位置:首页串口中断

串口中断

来源:易妖游戏网
串口中断.txt 您现在的位置: 中国IT实验室 >> 嵌入式开发 >> 单片机 >> 正文 AVR串口程序例子----中断模式 加入Intel嵌入式官方平台与工程师在线交流 谈谈嵌入式操作系统的调试问题

软件测试中的性能测试的容量评估 【安博亚威】CCIE考试通过率第一! [OPENLAB]RHCE+架构师优惠2200元

数据库工程师 高级项目经理 界面设计经理 中国IT实验室收集整理 佚名 2008-6-25 14:29:08 保存本文 推荐给好友 收藏本页 欢迎进入IT技术社区论坛,与200万技术人员互动交流 >>进入

/* Code adapted from Atmel AVR Application Note AVR306 * Interrupt mode driver for UART. */

#include #include #include \"uart.h\"

/* IMPORTANT: these vector numbers are for 8515! If you use other devices * you must change them to the different set of numbers. *

* UART_RX_interrupt set to UART, Rx Complete

* UART_TX_interrupt set to UART Data Register Empty */

#pragma interrupt_handler UART_RX_interrupt:10 UART_TX_interrupt:11

/* UART Buffer Defines */

#define UART_RX_BUFFER_SIZE 128 /* 1,2,4,8,16,32,,128 or 256 bytes */ #define UART_RX_BUFFER_MASK ( UART_RX_BUFFER_SIZE - 1 )

#define UART_TX_BUFFER_SIZE 128 /* 1,2,4,8,16,32,,128 or 256 bytes */ #define UART_TX_BUFFER_MASK ( UART_TX_BUFFER_SIZE - 1 )

#if ( UART_RX_BUFFER_SIZE & UART_RX_BUFFER_MASK ) #error RX buffer size is not a power of 2 #endif

/* Static Variables */

static unsigned char UART_RxBuf[UART_RX_BUFFER_SIZE]; static volatile unsigned char UART_RxHead; static volatile unsigned char UART_RxTail;

static unsigned char UART_TxBuf[UART_TX_BUFFER_SIZE]; static volatile unsigned char UART_TxHead; static volatile unsigned char UART_TxTail;

/* initialize UART */

void InitUART( unsigned char baudrate ) {

unsigned char x;

UBRR = baudrate; /* set the baud rate */ /* enable UART receiver and transmitter, and receive interrupt */

UCR = ( (1</* interrupt handlers */

void UART_RX_interrupt( void ) {

unsigned char data; unsigned char tmphead;

data = UDR; /* read the received data */ /* calculate buffer index */

tmphead = ( UART_RxHead + 1 ) & UART_RX_BUFFER_MASK; UART_RxHead = tmphead; /* store new index */ if ( tmphead == UART_RxTail ) {

/* ERROR! Receive buffer overflow */ }

UART_RxBuf[tmphead] = data; /* store received data in buffer */ }

void UART_TX_interrupt( void ) {

unsigned char tmptail;

/* check if all data is transmitted */ if ( UART_TxHead != UART_TxTail ) {

/* calculate buffer index */

tmptail = ( UART_TxTail + 1 ) & UART_TX_BUFFER_MASK; UART_TxTail = tmptail; /* store new index */

UDR = UART_TxBuf[tmptail]; /* start transmition */ } else {

UCR &= ~(1</* Read and write functions */ unsigned char ReceiveByte( void ) {

unsigned char tmptail;

while ( UART_RxHead == UART_RxTail ) /* wait for incomming data */ ;

tmptail = ( UART_RxTail + 1 ) & UART_RX_BUFFER_MASK;/* calculate buffer index */

UART_RxTail = tmptail; /* store new index */ return UART_RxBuf[tmptail]; /* return data */ }

void TransmitByte( unsigned char data ) {

unsigned char tmphead;

/* calculate buffer index */

tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK; /* wait for free space in buffer */

while ( tmphead == UART_TxTail ) ;

UART_TxBuf[tmphead] = data; /* store data in buffer */ UART_TxHead = tmphead; /* store new index */ UCR |= (1<unsigned char DataInReceiveBuffer( void ) {

return ( UART_RxHead != UART_RxTail );

/* return 0 (FALSE) if the receive buffer is empty */ }

#ifdef TEST

/* main - a simple test program*/ void main( void ) {

InitUART( 25 ); /* set the baudrate to 9600 bps using a 4MHz crystal */ _SEI(); /* enable interrupts => enable UART interrupts */ while ( 1 ) /* forever */

{

TransmitByte( ReceiveByte() ); /* echo the received character */ } }

演讲稿

尊敬的老师们,同学们下午好:

我是来自10级经济学(2)班的学习委,我叫张盼盼,很荣幸有这次机会和大家一起交流担任学习委员这一职务的经验。

转眼间大学生活已经过了一年多,在这一年多的时间里,我一直担任着学习委员这一职务。回望这一年多,自己走过的路,留下的或深或浅的足迹,不仅充满了欢愉,也充满了淡淡的苦涩。一年多的工作,让我学到了很多很多,下面将自己的工作经验和大家一起分享。

学习委员是班上的一个重要职位,在我当初当上它的时

候,我就在想一定不要辜负老师及同学们我的信任和支持,一定要把工作做好。要认真负责,态度踏实,要有一定的组织,领导,执行能力,并且做事情要公平,公正,公开,积极落实学校学院的具体工作。作为一名合格的学习委员,要收集学生对老师的意见和老师的教学动态。在很多情况下,老师无法和那么多学生直接打交道,很多老师也无暇顾及那么多的学生,特别是大家刚进入大学,很多人一时还不适应老师的教学模式。学习委员是老师与学生之间沟通的一个桥梁,学习委员要及时地向老师提出同学们的建议和疑问,熟悉老师对学生的基本要求。再次,学习委员在学习上要做好模范带头作用,要有优异

的成绩,当同学们向我提出问题时,基本上给同学一个正确的回复。

总之,在一学年的工作之中,我懂得如何落实各项工作,如何和班委有效地分工合作,如何和同学沟通交流并且提高大家的学习积极性。当然,我的工作还存在着很多不足之处。比日:有的时候得不到同学们的响应,同学们不积极主动支持我的工作;在收集同学们对自己工作意见方面做得不够,有些事情做错了,没有周围同学的提醒,自己也没有发觉等等。最严重的一次是,我没有把英语四六级报名的时间,地点通知到位,导致我们班有4名同学错过报名的时间。这次事使我懂得了做事要脚踏实地,不能马虎。

在这次的交流会中,我希望大家可以从中吸取一些好的经验,带动本班级的学习风气,同时也相信大家在大学毕业后找到好的工作。谢谢大家!

因篇幅问题不能全部显示,请点此查看更多更全内容