?? rd_useserialbuff.lis
字號:
.module RD_UseSerialBuff.c
.area text(rom, con, rel)
0000 .dbfile E:\單片機\ROOBCO~1\全向定位系統\坐標轉換模塊\相對定位模塊測試版\Relative_Locate_Module\RD_UseSerialBuff.c
.area data(ram, con, rel)
0000 .dbfile E:\單片機\ROOBCO~1\全向定位系統\坐標轉換模塊\相對定位模塊測試版\Relative_Locate_Module\RD_UseSerialBuff.c
0000 _UARTRxBuffHead:
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile E:\單片機\ROOBCO~1\全向定位系統\坐標轉換模塊\相對定位模塊測試版\Relative_Locate_Module\RD_UseSerialBuff.c
0002 _UARTRxBuffTail:
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile E:\單片機\ROOBCO~1\全向定位系統\坐標轉換模塊\相對定位模塊測試版\Relative_Locate_Module\RD_UseSerialBuff.c
0004 _UARTRxBuffCounter:
0004 .blkb 2
.area idata
0004 0000 .word 0
.area data(ram, con, rel)
0006 .dbfile E:\單片機\ROOBCO~1\全向定位系統\坐標轉換模塊\相對定位模塊測試版\Relative_Locate_Module\RD_UseSerialBuff.c
0006 _UARTTxBuffHead:
0006 .blkb 2
.area idata
0006 0000 .word 0
.area data(ram, con, rel)
0008 .dbfile E:\單片機\ROOBCO~1\全向定位系統\坐標轉換模塊\相對定位模塊測試版\Relative_Locate_Module\RD_UseSerialBuff.c
0008 _UARTTxBuffTail:
0008 .blkb 2
.area idata
0008 0000 .word 0
.area data(ram, con, rel)
000A .dbfile E:\單片機\ROOBCO~1\全向定位系統\坐標轉換模塊\相對定位模塊測試版\Relative_Locate_Module\RD_UseSerialBuff.c
000A _UARTTxBuffCounter:
000A .blkb 2
.area idata
000A 0000 .word 0
.area data(ram, con, rel)
000C .dbfile E:\單片機\ROOBCO~1\全向定位系統\坐標轉換模塊\相對定位模塊測試版\Relative_Locate_Module\RD_UseSerialBuff.c
000C _g_bIfSerialTransmitCompleted::
000C .blkb 1
.area idata
000C 01 .byte 1
.area data(ram, con, rel)
000D .dbfile E:\單片機\ROOBCO~1\全向定位系統\坐標轉換模塊\相對定位模塊測試版\Relative_Locate_Module\RD_UseSerialBuff.c
.area text(rom, con, rel)
0000 .dbfile E:\單片機\ROOBCO~1\全向定位系統\坐標轉換模塊\相對定位模塊測試版\Relative_Locate_Module\RD_UseSerialBuff.c
0000 .dbfunc e UARTgetDataFromRxBuff _UARTgetDataFromRxBuff fc
0000 ; cflags0 -> R10
0000 ; Data -> R16,R17
.even
0000 _UARTgetDataFromRxBuff::
0000 AA92 st -y,R10
0002 .dbline -1
0002 .dbline 139
0002 ; /***********************************************************
0002 ; * 函數庫說明:串行通訊緩沖區處理函數庫 *
0002 ; * 版本: v1.00 *
0002 ; * 作者: 王卓然 *
0002 ; * 創建日期: 2006年4月24日 *
0002 ; * -------------------------------------------------------- *
0002 ; * [支 持 庫] *
0002 ; * 支持庫名稱:RD_MacroAndConst.h *
0002 ; * 需要版本: v0.01 &abv *
0002 ; * 函數庫說明:系統常用宏定義庫 *
0002 ; * *
0002 ; * 支持庫名稱:RD_UseSerialBuff.h *
0002 ; * 需要版本: ----- *
0002 ; * 聲明庫說明:串行通訊緩沖區處理聲明庫 *
0002 ; * -------------------------------------------------------- *
0002 ; * [版本更新] *
0002 ; * 修改: 王卓然 *
0002 ; * 修改日期: 2006年5月20日 *
0002 ; * 版本: v0.31 *
0002 ; * *
0002 ; * 修改: 王卓然 *
0002 ; * 修改日期: 2007年3月1日 *
0002 ; * 版本: v0.40 *
0002 ; * *
0002 ; * 修改: 王卓然 *
0002 ; * 修改日期: 2007年3月2日 *
0002 ; * 版本: v1.00 *
0002 ; * -------------------------------------------------------- *
0002 ; * [版本歷史] *
0002 ; * v0.30 該版本提供了最基本的環形隊列緩沖區操作函數。*
0002 ; * v0.31 增加了調用該函數時候的宏說明,可以選擇需要 *
0002 ; * 提供的緩沖區功能。 *
0002 ; * v0.40 增加了串口發送進程。增加了原子操作。 *
0002 ; * v1.00 針對新規范進行了修改,增加自動收發進程。 *
0002 ; * -------------------------------------------------------- *
0002 ; * [使用說明] *
0002 ; * 1、通過SERIAL_RX_BUFF_SIZE來設定接收緩沖區的大 *
0002 ; * 小;通過SERIAL_TX_BUFF_SIZE來設定發送緩沖區 *
0002 ; * 的大小。 *
0002 ; * 2、通過定義_USE_SERIAL_RX_BUFF來選擇添加一個接 *
0002 ; * 收緩沖區;通過定義_USE_SERIAL_TX_BUFF來添加 *
0002 ; * 一個發送緩沖區。 *
0002 ; * 3、在取數的時候,有時候要考慮屏蔽中斷,否則會 *
0002 ; * 出現不可預知的后果。 *
0002 ; * 4、可以通過宏_USE_SERIAL_TX_TRANSMITTER_PROC在 *
0002 ; * 使用發送緩沖時,使用自動發送進程。并需要定 *
0002 ; * 義宏UDR_PORT來指定發送端口、也需要將宏 *
0002 ; * SERIAL_INSERT_USART_TX_ISR_CODE插入到發送完 *
0002 ; * 成中斷處理程序中。 *
0002 ; * 5、使用宏SERIAL_ENABLE_WRITE定義額外的發送使能 *
0002 ; * 代碼。例如485總線的發送使能等。 *
0002 ; * 6、使用宏SERIAL_DISABLE_WRITE定義額外的發送使 *
0002 ; * 能關閉代碼。例如485總線發送使能的關閉。 *
0002 ; ***********************************************************/
0002 ;
0002 ; /********************
0002 ; * 頭 文 件 配 置 區 *
0002 ; ********************/
0002 ; # include "LIB_Config.h"
0002 ; # include "RD_MacroAndConst.h"
0002 ; # include "RD_UseSerialBuff.h"
0002 ;
0002 ; /********************
0002 ; * 系 統 宏 定 義 *
0002 ; ********************/
0002 ;
0002 ; /*------------------*
0002 ; * 常 數 宏 定 義 *
0002 ; *------------------*/
0002 ; #ifndef SERIAL_RX_BUFF_SIZE
0002 ; # define SERIAL_RX_BUFF_SIZE 32
0002 ; #endif
0002 ; #ifndef SERIAL_TX_BUFF_SIZE
0002 ; # define SERIAL_TX_BUFF_SIZE 32
0002 ; #endif
0002 ; #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
0002 ; #ifndef UDR_PORT
0002 ; # error Need for UDR_PORT!
0002 ; #endif
0002 ;
0002 ; #ifndef SERIAL_ENABLE_WRITE
0002 ; # define SERIAL_ENABLE_WRITE
0002 ; #endif
0002 ;
0002 ; #ifndef SERIAL_DISABLE_WRITE
0002 ; # define SERIAL_DISABLE_WRITE
0002 ; #endif
0002 ; #endif
0002 ; /********************
0002 ; * 函 數 聲 明 區 *
0002 ; ********************/
0002 ; #ifdef _USE_SERIAL_RX_BUFF
0002 ; BOOL UARTaddDataToRxBuff(uint8 Data);
0002 ; BOOL UARTgetDataFromRxBuff(uint8 *Data);
0002 ; #endif
0002 ;
0002 ; #ifdef _USE_SERIAL_TX_BUFF
0002 ; BOOL UARTaddDataToTxBuff(uint8 Data);
0002 ; BOOL UARTgetDataFromTxBuff(uint8 *Data);
0002 ; #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
0002 ; BOOL PROC_Serial_Transmitter(void);
0002 ; #endif
0002 ; #endif
0002 ;
0002 ; /********************
0002 ; * 模塊變量定義區 *
0002 ; ********************/
0002 ; #ifdef _USE_SERIAL_RX_BUFF
0002 ; static uint8 UARTRxBuff[SERIAL_RX_BUFF_SIZE];
0002 ; static unsigned int UARTRxBuffHead = 0;
0002 ; static unsigned int UARTRxBuffTail = 0;
0002 ; static unsigned int UARTRxBuffCounter = 0;
0002 ; #endif
0002 ;
0002 ; #ifdef _USE_SERIAL_TX_BUFF
0002 ; static uint8 UARTTxBuff[SERIAL_TX_BUFF_SIZE];
0002 ; static unsigned int UARTTxBuffHead = 0;
0002 ; static unsigned int UARTTxBuffTail = 0;
0002 ; static unsigned int UARTTxBuffCounter = 0;
0002 ; #endif
0002 ;
0002 ; /********************
0002 ; * 全局變量定義區 *
0002 ; ********************/
0002 ; #ifdef _USE_SERIAL_TX_BUFF
0002 ; #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
0002 ; BOOL g_bIfSerialTransmitCompleted = TRUE;
0002 ; #endif
0002 ; #endif
0002 ;
0002 ; /***********************************************************
0002 ; * 函數說明:接收緩沖區取值函數 *
0002 ; * 輸入: 存儲取出數據地址的指針 *
0002 ; * 輸出: 取值是否成功 *
0002 ; * 調用函數:無 *
0002 ; ***********************************************************/
0002 ; #ifdef _USE_SERIAL_RX_BUFF
0002 ; BOOL UARTgetDataFromRxBuff(uint8 *Data)
0002 ; {
0002 .dbline 140
0002 ; SAFE_CODE_PERFORMANCE
0002 .dbline 140
0002 AFB6 in R10,0x3f
0004 .dbline 140
0004 F894 cli
0006 .dbline 140
0006 20900200 lds R2,_UARTRxBuffTail
000A 30900300 lds R3,_UARTRxBuffTail+1
000E 40900000 lds R4,_UARTRxBuffHead
0012 50900100 lds R5,_UARTRxBuffHead+1
0016 4214 cp R4,R2
0018 5304 cpc R5,R3
001A 59F4 brne L2
001C X0:
001C 20900400 lds R2,_UARTRxBuffCounter
0020 30900500 lds R3,_UARTRxBuffCounter+1
0024 2220 tst R2
0026 29F4 brne L2
0028 3320 tst R3
002A 19F4 brne L2
002C X1:
002C .dbline 140
002C .dbline 140
002C 7894 sei
002E .dbline 140
002E 0027 clr R16
0030 2BC0 rjmp L1
0032 L2:
0032 .dbline 140
0032 20900000 lds R2,_UARTRxBuffHead
0036 30900100 lds R3,_UARTRxBuffHead+1
003A C101 movw R24,R2
003C 0196 adiw R24,1
003E 90930100 sts _UARTRxBuffHead+1,R25
0042 80930000 sts _UARTRxBuffHead,R24
0046 80E0 ldi R24,<_UARTRxBuff
0048 90E0 ldi R25,>_UARTRxBuff
004A F101 movw R30,R2
004C E80F add R30,R24
004E F91F adc R31,R25
0050 2080 ldd R2,z+0
0052 F801 movw R30,R16
0054 2082 std z+0,R2
0056 .dbline 140
0056 80910400 lds R24,_UARTRxBuffCounter
005A 90910500 lds R25,_UARTRxBuffCounter+1
005E 0197 sbiw R24,1
0060 90930500 sts _UARTRxBuffCounter+1,R25
0064 80930400 sts _UARTRxBuffCounter,R24
0068 .dbline 140
0068 80910000 lds R24,_UARTRxBuffHead
006C 90910100 lds R25,_UARTRxBuffHead+1
0070 8032 cpi R24,32
0072 E0E0 ldi R30,0
0074 9E07 cpc R25,R30
0076 31F4 brne L4
0078 X2:
0078 .dbline 140
0078 .dbline 140
0078 2224 clr R2
007A 3324 clr R3
007C 30920100 sts _UARTRxBuffHead+1,R3
0080 20920000 sts _UARTRxBuffHead,R2
0084 .dbline 140
0084 L4:
0084 .dbline 140
0084 .dbline 140
0084 AFBE out 0x3f,R10
0086 .dbline 140
0086 .dbline 157
0086 ; (
0086 ; if ((UARTRxBuffHead == UARTRxBuffTail)
0086 ; && (UARTRxBuffCounter == 0))
0086 ; {
0086 ; SEI();
0086 ; return FALSE;
0086 ; }
0086 ; (*Data) = UARTRxBuff[UARTRxBuffHead++];
0086 ;
0086 ; UARTRxBuffCounter--;
0086 ;
0086 ; if (UARTRxBuffHead == SERIAL_RX_BUFF_SIZE)
0086 ; {
0086 ; UARTRxBuffHead = 0;
0086 ; }
0086 ; )
0086 ; return TRUE;
0086 01E0 ldi R16,1
0088 .dbline -2
0088 L1:
0088 .dbline 0 ; func end
0088 A990 ld R10,y+
008A 0895 ret
008C .dbsym r cflags0 10 c
008C .dbsym r Data 16 pc
008C .dbend
008C .dbfunc e UARTPeekDataFromRxBuff _UARTPeekDataFromRxBuff fc
008C ; cflags0 -> R10
008C ; pData -> R16,R17
.even
008C _UARTPeekDataFromRxBuff::
008C AA92 st -y,R10
008E .dbline -1
008E .dbline 167
008E ; }
008E ;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -