#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名同学错过报名的时间。这次事使我懂得了做事要脚踏实地,不能马虎。
在这次的交流会中,我希望大家可以从中吸取一些好的经验,带动本班级的学习风气,同时也相信大家在大学毕业后找到好的工作。谢谢大家!