?? rd_useserialbuff.lis
字號:
01D6 L14:
01D6 .dbline 0 ; func end
01D6 0895 ret
01D8 .dbsym r Data 16 pc
01D8 .dbend
01D8 .dbfunc e UARTPeekDataFromTxBuff _UARTPeekDataFromTxBuff fc
01D8 ; pData -> R16,R17
.even
01D8 _UARTPeekDataFromTxBuff::
01D8 .dbline -1
01D8 .dbline 247
01D8 ; }
01D8 ;
01D8 ; /***********************************************************
01D8 ; * 函數(shù)說明:首數(shù)據(jù)察看函數(shù) *
01D8 ; * 輸入: 存儲數(shù)據(jù)地址的指針 *
01D8 ; * 輸出: 取值是否成功 *
01D8 ; * 調(diào)用函數(shù):五 *
01D8 ; ***********************************************************/
01D8 ; BOOL UARTPeekDataFromTxBuff(uint8 *pData)
01D8 ; {
01D8 .dbline 248
01D8 ; SAFE_CODE_PERFORMANCE
01D8 F894 cli
01DA .dbline 248
01DA 20900800 lds R2,_UARTTxBuffTail
01DE 30900900 lds R3,_UARTTxBuffTail+1
01E2 40900600 lds R4,_UARTTxBuffHead
01E6 50900700 lds R5,_UARTTxBuffHead+1
01EA 4214 cp R4,R2
01EC 5304 cpc R5,R3
01EE 59F4 brne L20
01F0 X11:
01F0 20900A00 lds R2,_UARTTxBuffCounter
01F4 30900B00 lds R3,_UARTTxBuffCounter+1
01F8 2220 tst R2
01FA 29F4 brne L20
01FC 3320 tst R3
01FE 19F4 brne L20
0200 X12:
0200 .dbline 248
0200 .dbline 248
0200 7894 sei
0202 .dbline 248
0202 0027 clr R16
0204 0DC0 xjmp L19
0206 L20:
0206 .dbline 248
0206 80E0 ldi R24,<_UARTTxBuff
0208 90E0 ldi R25,>_UARTTxBuff
020A E0910600 lds R30,_UARTTxBuffHead
020E F0910700 lds R31,_UARTTxBuffHead+1
0212 E80F add R30,R24
0214 F91F adc R31,R25
0216 2080 ldd R2,z+0
0218 F801 movw R30,R16
021A 2082 std z+0,R2
021C .dbline 248
021C .dbline 248
021C 7894 sei
021E .dbline 258
021E ; (
021E ; if ((UARTTxBuffHead == UARTTxBuffTail)
021E ; && (UARTTxBuffCounter == 0))
021E ; {
021E ; SEI();
021E ; return FALSE;
021E ; }
021E ; (*pData) = UARTTxBuff[UARTTxBuffHead];
021E ; )
021E ; return TRUE;
021E 01E0 ldi R16,1
0220 .dbline -2
0220 L19:
0220 .dbline 0 ; func end
0220 0895 ret
0222 .dbsym r pData 16 pc
0222 .dbend
0222 .dbfunc e UARTaddDataToTxBuff _UARTaddDataToTxBuff fc
0222 ; Data -> R16
.even
0222 _UARTaddDataToTxBuff::
0222 .dbline -1
0222 .dbline 268
0222 ; }
0222 ;
0222 ; /***********************************************************
0222 ; * 函數(shù)說明:向通訊輸出緩沖區(qū)添加數(shù)據(jù)函數(shù) *
0222 ; * 輸入: 需要發(fā)送的數(shù)據(jù) *
0222 ; * 輸出: 無 *
0222 ; * 調(diào)用函數(shù):無 *
0222 ; ***********************************************************/
0222 ; BOOL UARTaddDataToTxBuff(uint8 Data)
0222 ; {
0222 .dbline 270
0222 ;
0222 ; SAFE_CODE_PERFORMANCE
0222 F894 cli
0224 .dbline 270
0224 20900800 lds R2,_UARTTxBuffTail
0228 30900900 lds R3,_UARTTxBuffTail+1
022C 40900600 lds R4,_UARTTxBuffHead
0230 50900700 lds R5,_UARTTxBuffHead+1
0234 4214 cp R4,R2
0236 5304 cpc R5,R3
0238 59F4 brne L23
023A X13:
023A 80910A00 lds R24,_UARTTxBuffCounter
023E 90910B00 lds R25,_UARTTxBuffCounter+1
0242 8032 cpi R24,32
0244 E0E0 ldi R30,0
0246 9E07 cpc R25,R30
0248 19F4 brne L23
024A X14:
024A .dbline 270
024A .dbline 270
024A 7894 sei
024C .dbline 270
024C 0027 clr R16
024E 29C0 xjmp L22
0250 L23:
0250 .dbline 270
0250 20900800 lds R2,_UARTTxBuffTail
0254 30900900 lds R3,_UARTTxBuffTail+1
0258 C101 movw R24,R2
025A 0196 adiw R24,1
025C 90930900 sts _UARTTxBuffTail+1,R25
0260 80930800 sts _UARTTxBuffTail,R24
0264 80E0 ldi R24,<_UARTTxBuff
0266 90E0 ldi R25,>_UARTTxBuff
0268 F101 movw R30,R2
026A E80F add R30,R24
026C F91F adc R31,R25
026E 0083 std z+0,R16
0270 .dbline 270
0270 80910A00 lds R24,_UARTTxBuffCounter
0274 90910B00 lds R25,_UARTTxBuffCounter+1
0278 0196 adiw R24,1
027A 90930B00 sts _UARTTxBuffCounter+1,R25
027E 80930A00 sts _UARTTxBuffCounter,R24
0282 .dbline 270
0282 80910800 lds R24,_UARTTxBuffTail
0286 90910900 lds R25,_UARTTxBuffTail+1
028A 8032 cpi R24,32
028C E0E0 ldi R30,0
028E 9E07 cpc R25,R30
0290 31F4 brne L25
0292 X15:
0292 .dbline 270
0292 .dbline 270
0292 2224 clr R2
0294 3324 clr R3
0296 30920900 sts _UARTTxBuffTail+1,R3
029A 20920800 sts _UARTTxBuffTail,R2
029E .dbline 270
029E L25:
029E .dbline 270
029E .dbline 270
029E 7894 sei
02A0 .dbline 287
02A0 ; (
02A0 ; if ((UARTTxBuffHead == UARTTxBuffTail)
02A0 ; && (UARTTxBuffCounter == SERIAL_TX_BUFF_SIZE))
02A0 ; {
02A0 ; SEI();
02A0 ; return FALSE;
02A0 ; }
02A0 ; UARTTxBuff[UARTTxBuffTail++] = Data;
02A0 ;
02A0 ; UARTTxBuffCounter ++;
02A0 ;
02A0 ; if (UARTTxBuffTail == SERIAL_TX_BUFF_SIZE)
02A0 ; {
02A0 ; UARTTxBuffTail = 0;
02A0 ; }
02A0 ; )
02A0 ; return TRUE;
02A0 01E0 ldi R16,1
02A2 .dbline -2
02A2 L22:
02A2 .dbline 0 ; func end
02A2 0895 ret
02A4 .dbsym r Data 16 c
02A4 .dbend
02A4 .dbfunc e PROC_Serial_Transmitter _PROC_Serial_Transmitter fc
02A4 ; cTransmitByte -> y+0
.even
02A4 _PROC_Serial_Transmitter::
02A4 2197 sbiw R28,1
02A6 .dbline -1
02A6 .dbline 298
02A6 ; }
02A6 ;
02A6 ; #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
02A6 ; /***********************************************************
02A6 ; * 函數(shù)說明:串行發(fā)送進程 *
02A6 ; * 輸入: 無 *
02A6 ; * 輸出: 是否繼續(xù)執(zhí)行 *
02A6 ; * 調(diào)用函數(shù):UARTgetDataFromTxBuff() *
02A6 ; ***********************************************************/
02A6 ; BOOL PROC_Serial_Transmitter(void)
02A6 ; {
02A6 .dbline 299
02A6 ; uint8 cTransmitByte = 0;
02A6 2224 clr R2
02A8 2882 std y+0,R2
02AA .dbline 301
02AA ;
02AA ; SAFE_CODE_PERFORMANCE
02AA F894 cli
02AC .dbline 301
02AC 20900C00 lds R2,_g_bIfSerialTransmitCompleted
02B0 2220 tst R2
02B2 61F0 breq L28
02B4 X16:
02B4 .dbline 301
02B4 .dbline 301
02B4 8E01 movw R16,R28
02B6 4DDF xcall _UARTgetDataFromTxBuff
02B8 0023 tst R16
02BA 19F4 brne L30
02BC X17:
02BC .dbline 301
02BC .dbline 301
02BC 7894 sei
02BE .dbline 301
02BE 01E0 ldi R16,1
02C0 07C0 xjmp L27
02C2 L30:
02C2 .dbline 301
02C2 .dbline 301
02C2 .dbline 301
02C2 2224 clr R2
02C4 20920C00 sts _g_bIfSerialTransmitCompleted,R2
02C8 .dbline 301
02C8 2880 ldd R2,y+0
02CA 2CB8 out 0xc,R2
02CC .dbline 301
02CC L28:
02CC .dbline 301
02CC .dbline 301
02CC 7894 sei
02CE .dbline 320
02CE ; (
02CE ; if (g_bIfSerialTransmitCompleted)
02CE ; {
02CE ; if (!UARTgetDataFromTxBuff(&cTransmitByte))
02CE ; {
02CE ; SEI();
02CE ; SERIAL_DISABLE_WRITE
02CE ; return TRUE;
02CE ; }
02CE ; else
02CE ; {
02CE ; SERIAL_ENABLE_WRITE
02CE ; }
02CE ; g_bIfSerialTransmitCompleted = FALSE;
02CE ; UDR_PORT = cTransmitByte;
02CE ; }
02CE ; )
02CE ;
02CE ; return TRUE;
02CE 01E0 ldi R16,1
02D0 .dbline -2
02D0 L27:
02D0 .dbline 0 ; func end
02D0 2196 adiw R28,1
02D2 0895 ret
02D4 .dbsym l cTransmitByte 0 c
02D4 .dbend
.area bss(ram, con, rel)
0000 .dbfile O:\2007全國電子設(shè)計大賽\鍵盤顯示模塊\RD_UseSerialBuff.c
0000 _UARTTxBuff:
0000 .blkb 32
0020 .dbsym s UARTTxBuff _UARTTxBuff A[32:32]c
0020 _UARTRxBuff:
0020 .blkb 32
0040 .dbsym s UARTRxBuff _UARTRxBuff A[32:32]c
0040 ; }
0040 ; #endif
0040 ;
0040 ; #endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -