📄 一个非常好的串口程序--我们的技术是您的! www_icwin_net.htm
字号:
<TABLE align=center bgColor=#ffffff border=1 borderColor=#c0c0c0
cellPadding=3 cellSpacing=0 style="BORDER-COLLAPSE: collapse" width=530>
<TBODY>
<TR>
<TD align=middle height=22 width="90%"><SPAN
class=style6><STRONG>一个非常好的串口程序</STRONG></SPAN></TD></TR>
<TR>
<TD bgColor=#ffffff height=22>2005-11-28 14:44:45 <BR><BR>#i nclude
<iom128v.h><BR>#i nclude <macros.h><BR>#i nclude
"uart.h"<BR><BR>/* USART Buffer Defines */<BR>#define
USART_RX_BUFFER_SIZE 16 /* 1,2,4,8,16,32,64,128 or 256 bytes
*/<BR>#define USART_RX_BUFFER_MASK ( USART_RX_BUFFER_SIZE - 1
)<BR>#define USART_TX_BUFFER_SIZE 16 /* 1,2,4,8,16,32,64,128 or 256
bytes */<BR>#define USART_TX_BUFFER_MASK ( USART_TX_BUFFER_SIZE - 1
)<BR><BR>#if ( USART_RX_BUFFER_SIZE & USART_RX_BUFFER_MASK
)<BR>#error RX buffer size is not a power of 2<BR>#endif<BR><BR>/*
Static Variables */<BR>static unsigned char
USART_RxBuf[USART_RX_BUFFER_SIZE];<BR>static volatile unsigned char
USART_RxHead;<BR>static volatile unsigned char
USART_RxTail;<BR>static unsigned char
USART_TxBuf[USART_TX_BUFFER_SIZE];<BR>static volatile unsigned char
USART_TxHead;<BR>static volatile unsigned char
USART_TxTail;<BR><BR>/* 串口初始化 */<BR>void InitUSART(INT8U
baudrate)<BR>{<BR>INT8U x;<BR>UBRR0L = baudrate;<BR>UCSR0B = (
(1<<RXCIE0) | (1<<RXEN0) | (1<<TXEN0) );/*RX
Complete <BR>Interrupt Enable, Receiver Enable and Transmitter
Enable*/<BR>x = 0; /* flush receive buffer */<BR>USART_RxTail =
x;<BR>USART_RxHead = x;<BR>USART_TxTail = x;<BR>USART_TxHead =
x;<BR>}<BR><BR>/* 接收中断 */<BR>void USART_RX_interrupt( void
)<BR>{<BR>unsigned char data;<BR>unsigned char tmphead;<BR>data =
UDR0; /* read the received data */<BR>tmphead = ( USART_RxHead 1 )
& USART_RX_BUFFER_MASK;/* calculate <BR>buffer index
*/<BR>USART_RxHead = tmphead; /* store new index */<BR>if ( tmphead
== USART_RxTail )<BR>{<BR>return;/* ERROR! Receive buffer overflow,
you can use <BR>flux cortorl */<BR>}<BR>USART_RxBuf[tmphead] = data;
/* store received data in buffer */<BR>}<BR><BR>/* 发送中断 */<BR>void
USART_TX_interrupt( void )<BR>{<BR>unsigned char tmptail;<BR><BR>if
( USART_TxHead != USART_TxTail )/* check if all data is
<BR>transmitted */<BR>{<BR>tmptail = ( USART_TxTail 1 ) &
USART_TX_BUFFER_MASK;/* <BR>calculate buffer index
*/<BR>USART_TxTail = tmptail; /* store new index */<BR>UDR0 =
USART_TxBuf[tmptail]; /* start transmition
*/<BR>}<BR>else<BR>{<BR>UCSR0B &= ~(1<<UDRIE0); /* disable
UDRE interrupt */<BR>}<BR>}<BR><BR>/* 读取数据函数 */<BR>unsigned char
ReceiveByte( void )<BR>{<BR>unsigned char tmptail;<BR><BR>while (
USART_RxHead == USART_RxTail ) /* wait for incomming data
*/<BR>;<BR>tmptail = ( USART_RxTail 1 ) &
USART_RX_BUFFER_MASK;/* calculate <BR>buffer index
*/<BR>USART_RxTail = tmptail; /* store new index */<BR>return
USART_RxBuf[tmptail]; /* return data */<BR>}<BR><BR>/* 发送数据函数
*/<BR>void TransmitByte( unsigned char data )<BR>{<BR>unsigned char
tmphead;<BR><BR>tmphead = ( USART_TxHead 1 ) &
USART_TX_BUFFER_MASK; /* calculate <BR>buffer index */<BR><BR>while
( tmphead == USART_TxTail )/* wait for free space in buffer
*/<BR>;<BR>USART_TxBuf[tmphead] = data; /* store data in buffer
*/<BR>USART_TxHead = tmphead; /* store new index */<BR>UCSR0B |=
(1<<UDRIE0); /* enable UDRE interrupt */<BR>}<BR><BR>/*
查询是否有数据 */<BR>unsigned char DataInReceiveBuffer( void
)<BR>{<BR>return ( USART_RxHead != USART_RxTail ); /* return 0
(FALSE) if the <BR>receive buffer is empty */<BR>}<BR><BR>/*
中断中只做很少的事情,通常我是在接收中断中post一个信号量,触发别的任务读数据<BR>*/ <BR><BR><BR><BR><SPAN
class=style4>--------------------------------------------------------------------------------------</SPAN><BR> <IMG
border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"><IMG
border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/i8.gif"> (浏览:3)<B>内容</B><BR> <IMG
border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"><IMG
border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif"> <A
href="http://www.icwin.net/ShowArtitle.asp?art_id=793&cat_id=2">贴一个非常好的串口程序!(from
iccavr)(hanzhaowei)</A> 2005-9-30 23:36:29<BR></TD>
<FORM name=form1>
<TR>
<TD align=right colSpan=2>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0
width="100%">
<TBODY>
<TR>
<TD align=middle width="1%"> </TD></TR></FORM></TBODY></TABLE>
<TABLE align=center bgColor=#bdc0c8 border=0 cellPadding=6
cellSpacing=1 width="100%">
<TBODY>
<TR>
<TD bgColor=#ffffff borderColor=#666666><FONT
color=red>查看:2006-1-10 15:49:03</FONT></TD>
<TD align=middle bgColor=#ffffff><INPUT class=button onclick="" type=button value=复制>
<INPUT class=button onclick=javascript:window.print() type=button value=打印>
<INPUT class=button onclick=javascript:history.go(-1) type=button value=返回>
<INPUT class=button name=close2 onclick="window.close();return false;" type=button value=关闭>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
<TD background="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/xu.gif" height=190
width=1></TD>
<TD align=left background="" vAlign=top width=204>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD width=204><IMG border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/left_top2.gif"
useMap=#Map><MAP name=Map><AREA coords=61,11,87,24
href="http://www.icwin.net/connect.asp" shape=RECT title=留言本><AREA
coords=134,11,160,24 href="http://www.icwin.net/bbs/default.asp"
shape=RECT target=_blank title="ICWIN 论坛"></MAP></TD></TR></TBODY></TABLE>
<TABLE align=right border=0 cellPadding=0 cellSpacing=0 width=196>
<TBODY>
<TR>
<TD align=middle background="" height=24><STRONG>文 章 查
找</STRONG></TD></TR>
<FORM action=cs.asp?cat_id=33 method=post name=form2>
<TR>
<TD align=middle height=28><INPUT CHECKED name=select type=radio
value=m_Artkeyword> <FONT color=#0000ff>关键字</FONT> <INPUT
name=select type=radio value=m_ArtTitle><FONT
color=#ff00ff>标题</FONT> <INPUT name=select type=radio
value=m_ArtContent> <FONT color=#ff7f50>内容</FONT> </TD></TR>
<TR>
<TD align=middle height=28><INPUT class=lanyu maxLength=1000
name=keyword onfocus=this.select(); size=15> <INPUT class=button name=search type=submit value=搜索></TD></TR></FORM></TR>
<TR>
<TD align=middle background="" height=24><STRONG></STRONG></TD></TR>
<TR>
<TD> <IMG border=0 height=17
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"
width=8><IMG border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif"> <A
href="http://www.icwin.net/ShowArtitle.ASP?art_id=5590&cat_id=33"
title="[74系列器件] (215)"> 74系列器件 </A><BR> <IMG border=0 height=17
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"
width=8><IMG border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif"> <A
href="http://www.icwin.net/ShowArtitle.ASP?art_id=5936&cat_id=33"
title="[串口示例] (139)"> 串口示例 </A><BR> <IMG border=0 height=17
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"
width=8><IMG border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif"> <A
href="http://www.icwin.net/ShowArtitle.ASP?art_id=5569&cat_id=33"
title="[基于中断的串口驱动及显示程序] (131)"> 基于中断的串口驱动及显示程序 </A><BR> <IMG
border=0 height=17
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"
width=8><IMG border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif"> <A
href="http://www.icwin.net/ShowArtitle.ASP?art_id=5549&cat_id=33"
title="[单片机C51串口中断接收和发送测试例程] (130)"> 单片机C51串口中断接收...
</A><BR> <IMG border=0 height=17
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"
width=8><IMG border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif"> <A
href="http://www.icwin.net/ShowArtitle.ASP?art_id=5575&cat_id=33"
title="[C51中断处理过程] (124)"> C51中断处理过程 </A><BR> <IMG border=0
height=17 src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"
width=8><IMG border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif"> <A
href="http://www.icwin.net/ShowArtitle.ASP?art_id=5581&cat_id=33"
title="[ARM伪指令] (105)"> ARM伪指令 </A><BR> <IMG border=0 height=17
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"
width=8><IMG border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif"> <A
href="http://www.icwin.net/ShowArtitle.ASP?art_id=5933&cat_id=33"
title="[arm初始化] (105)"> arm初始化 </A><BR> <IMG border=0 height=17
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"
width=8><IMG border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif"> <A
href="http://www.icwin.net/ShowArtitle.ASP?art_id=165&cat_id=33"
title="[uC/OS和uClinux的比较] (101)"> uC/OS和uClinu... </A><BR> <IMG
border=0 height=17
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"
width=8><IMG border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif"> <A
href="http://www.icwin.net/ShowArtitle.ASP?art_id=5930&cat_id=33"
title="[ARM Boot 示例] (97)"> ARM Boot 示例 </A><BR> <IMG border=0
height=17 src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"
width=8><IMG border=0
src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif"> <A
href="http://www.icwin.net/ShowArtitle.ASP?art_id=151&cat_id=33"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -