⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 一个非常好的串口程序--我们的技术是您的! www_icwin_net.htm

📁 一个非常好的串口程序
💻 HTM
📖 第 1 页 / 共 5 页
字号:
      <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 
            &lt;iom128v.h&gt;<BR>#i nclude &lt;macros.h&gt;<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 &amp; 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&lt;&lt;RXCIE0) | (1&lt;&lt;RXEN0) | (1&lt;&lt;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 ) 
            &amp; 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 ) &amp; 
            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 &amp;= ~(1&lt;&lt;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 ) &amp; 
            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 ) &amp; 
            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&lt;&lt;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>&nbsp;<IMG 
            border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"><IMG 
            border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/i8.gif">&nbsp;(浏览:3)<B>内容</B><BR>&nbsp;<IMG 
            border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif"><IMG 
            border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif">&nbsp;<A 
            href="http://www.icwin.net/ShowArtitle.asp?art_id=793&amp;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%">&nbsp; </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=复制>&nbsp; 
<INPUT class=button onclick=javascript:window.print() type=button value=打印>&nbsp; 
<INPUT class=button onclick=javascript:history.go(-1) type=button value=返回>&nbsp; 
<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>&nbsp; <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>&nbsp;<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>&nbsp;<IMG border=0 height=17 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif" 
            width=8><IMG border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif">&nbsp;<A 
            href="http://www.icwin.net/ShowArtitle.ASP?art_id=5590&amp;cat_id=33" 
            title="[74系列器件] (215)"> 74系列器件 </A><BR>&nbsp;<IMG border=0 height=17 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif" 
            width=8><IMG border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif">&nbsp;<A 
            href="http://www.icwin.net/ShowArtitle.ASP?art_id=5936&amp;cat_id=33" 
            title="[串口示例] (139)"> 串口示例 </A><BR>&nbsp;<IMG border=0 height=17 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif" 
            width=8><IMG border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif">&nbsp;<A 
            href="http://www.icwin.net/ShowArtitle.ASP?art_id=5569&amp;cat_id=33" 
            title="[基于中断的串口驱动及显示程序] (131)"> 基于中断的串口驱动及显示程序 </A><BR>&nbsp;<IMG 
            border=0 height=17 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif" 
            width=8><IMG border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif">&nbsp;<A 
            href="http://www.icwin.net/ShowArtitle.ASP?art_id=5549&amp;cat_id=33" 
            title="[单片机C51串口中断接收和发送测试例程] (130)"> 单片机C51串口中断接收... 
            </A><BR>&nbsp;<IMG border=0 height=17 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif" 
            width=8><IMG border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif">&nbsp;<A 
            href="http://www.icwin.net/ShowArtitle.ASP?art_id=5575&amp;cat_id=33" 
            title="[C51中断处理过程] (124)"> C51中断处理过程 </A><BR>&nbsp;<IMG border=0 
            height=17 src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif" 
            width=8><IMG border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif">&nbsp;<A 
            href="http://www.icwin.net/ShowArtitle.ASP?art_id=5581&amp;cat_id=33" 
            title="[ARM伪指令] (105)"> ARM伪指令 </A><BR>&nbsp;<IMG border=0 height=17 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif" 
            width=8><IMG border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif">&nbsp;<A 
            href="http://www.icwin.net/ShowArtitle.ASP?art_id=5933&amp;cat_id=33" 
            title="[arm初始化] (105)"> arm初始化 </A><BR>&nbsp;<IMG border=0 height=17 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif" 
            width=8><IMG border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif">&nbsp;<A 
            href="http://www.icwin.net/ShowArtitle.ASP?art_id=165&amp;cat_id=33" 
            title="[uC/OS和uClinux的比较] (101)"> uC/OS和uClinu... </A><BR>&nbsp;<IMG 
            border=0 height=17 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif" 
            width=8><IMG border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif">&nbsp;<A 
            href="http://www.icwin.net/ShowArtitle.ASP?art_id=5930&amp;cat_id=33" 
            title="[ARM Boot 示例] (97)"> ARM Boot 示例 </A><BR>&nbsp;<IMG border=0 
            height=17 src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/none.gif" 
            width=8><IMG border=0 
            src="一个非常好的串口程序--我们的技术是您的! www_icwin_net.files/title.gif">&nbsp;<A 
            href="http://www.icwin.net/ShowArtitle.ASP?art_id=151&amp;cat_id=33" 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -