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

📄 uart.lis

📁 AVR单片机RS232通信接口应用设计
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0048           _UART_TX_DATA::
 0048                   .dbline -1
 0048                   .dbline 141
 0048           ; 
 0048           ; //********************************************************************
 0048           ; // Function    : UART_TX_DATA
 0048           ; // Input       : bData-data to be send
 0048           ; // Output      : none
 0048           ; // Description : Write Data to UART TX Reigster
 0048           ; //********************************************************************
 0048           ; void UART_TX_DATA(INT8U bData)
 0048           ; {
 0048                   .dbline 142
 0048           ;       UDR = bData;
 0048 0CB9              out 0xc,R16
 004A                   .dbline -2
 004A                   .dbline 143
 004A           ; }
 004A           L11:
 004A                   .dbline 0 ; func end
 004A 0895              ret
 004C                   .dbsym r bData 16 c
 004C                   .dbend
 004C                   .dbfunc e UART_RX_DATA _UART_RX_DATA fc
                        .even
 004C           _UART_RX_DATA::
 004C                   .dbline -1
 004C                   .dbline 152
 004C           ; 
 004C           ; //********************************************************************
 004C           ; // Function    : UART_RX_DATA
 004C           ; // Input       : none
 004C           ; // Output      : data received
 004C           ; // Description : Get Received Data from Register
 004C           ; //********************************************************************
 004C           ; INT8U UART_RX_DATA(void)
 004C           ; {
 004C                   .dbline 153
 004C           ;       return(UDR);
 004C 0CB1              in R16,0xc
 004E                   .dbline -2
 004E           L12:
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbend
                        .area vector(rom, abs)
                        .org 44
 002C 0C942800          jmp _sUART_RX_ISR
                        .area text(rom, con, rel)
 0050                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\UART.c
 0050                   .dbfunc e sUART_RX_ISR _sUART_RX_ISR fV
 0050           ;           data -> R20
                        .even
 0050           _sUART_RX_ISR::
 0050 0E940000          xcall push_lset
 0054 0E940000          xcall push_gset1
 0058                   .dbline -1
 0058                   .dbline 164
 0058           ; }
 0058           ; 
 0058           ; //********************************************************************
 0058           ; // Function    : sUART_RX_ISR
 0058           ; // Input       : none
 0058           ; // Output      : none
 0058           ; // Description : UART RX Interrupt Service Routine
 0058           ; //********************************************************************
 0058           ; #pragma interrupt_handler sUART_RX_ISR:12  
 0058           ; void sUART_RX_ISR(void)
 0058           ; {
 0058                   .dbline 167
 0058           ;       INT8U data;
 0058           ;       //step1:read receive register to clear interrupt flag
 0058           ;       data = UART_RX_DATA();
 0058 F9DF              xcall _UART_RX_DATA
 005A 402F              mov R20,R16
 005C                   .dbline 169
 005C           ;       //step2:report event or store received char to buffer
 005C           ;       if((data == 0x0A) || (data == 0x0D))
 005C 0A30              cpi R16,10
 005E 11F0              breq L16
 0060 0D30              cpi R16,13
 0062 59F4              brne L14
 0064           L16:
 0064                   .dbline 170
 0064           ;       {
 0064                   .dbline 171
 0064           ;               if(sbGetRxBufferEmptyStatus(&stSciBuffer) == false)
 0064 00E0              ldi R16,<_stSciBuffer
 0066 10E0              ldi R17,>_stSciBuffer
 0068 7FD0              xcall _sbGetRxBufferEmptyStatus
 006A 0023              tst R16
 006C 51F4              brne L15
 006E                   .dbline 172
 006E           ;               {
 006E                   .dbline 173
 006E           ;                       SciBuffer_Rx_Reset(&stSciBuffer);
 006E 00E0              ldi R16,<_stSciBuffer
 0070 10E0              ldi R17,>_stSciBuffer
 0072 82D0              xcall _SciBuffer_Rx_Reset
 0074                   .dbline 174
 0074           ;                       sSet_SCI_Event(1);
 0074 01E0              ldi R16,1
 0076 C4DF              xcall _sSet_SCI_Event
 0078                   .dbline 175
 0078           ;               }
 0078                   .dbline 176
 0078           ;       }
 0078 04C0              xjmp L15
 007A           L14:
 007A                   .dbline 178
 007A                   .dbline 179
 007A 242F              mov R18,R20
 007C 00E0              ldi R16,<_stSciBuffer
 007E 10E0              ldi R17,>_stSciBuffer
 0080 24D0              xcall _SciBuffer_Rx_In
 0082                   .dbline 180
 0082           L15:
 0082                   .dbline -2
 0082                   .dbline 181
 0082           ;       else
 0082           ;       {
 0082           ;               SciBuffer_Rx_In(&stSciBuffer,data);
 0082           ;       }
 0082           ; }
 0082           L13:
 0082 0E940000          xcall pop_gset1
 0086 0E940000          xcall pop_lset
 008A                   .dbline 0 ; func end
 008A 1895              reti
 008C                   .dbsym r data 20 c
 008C                   .dbend
                        .area vector(rom, abs)
                        .org 52
 0034 0C944600          jmp _sUART_TX_ISR
                        .area text(rom, con, rel)
 008C                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\RS232通信协议应用设计\UART.c
 008C                   .dbfunc e sUART_TX_ISR _sUART_TX_ISR fV
 008C           ;          bData -> R20
                        .even
 008C           _sUART_TX_ISR::
 008C 0E940000          xcall push_lset
 0090 0E940000          xcall push_gset1
 0094                   .dbline -1
 0094                   .dbline 191
 0094           ; 
 0094           ; //********************************************************************
 0094           ; // Function    : sUART_TX_ISR
 0094           ; // Input       : none
 0094           ; // Output      : none
 0094           ; // Description : UART TX Interrupt Service Routine
 0094           ; //********************************************************************
 0094           ; #pragma interrupt_handler sUART_TX_ISR:14  
 0094           ; void sUART_TX_ISR(void)
 0094           ; {
 0094                   .dbline 193
 0094           ;       INT8U bData;
 0094           ;       if(sbGetTxBufferNoEmptyStatus(&stSciBuffer) == true)
 0094 00E0              ldi R16,<_stSciBuffer
 0096 10E0              ldi R17,>_stSciBuffer
 0098 55D0              xcall _sbGetTxBufferNoEmptyStatus
 009A 0130              cpi R16,1
 009C 31F4              brne L20
 009E                   .dbline 194
 009E           ;       {
 009E                   .dbline 195
 009E           ;               bData = SciBuffer_Tx_Out(&stSciBuffer);
 009E 00E0              ldi R16,<_stSciBuffer
 00A0 10E0              ldi R17,>_stSciBuffer
 00A2 29D0              xcall _SciBuffer_Tx_Out
 00A4 402F              mov R20,R16
 00A6                   .dbline 196
 00A6           ;               UART_TX_DATA(bData);
 00A6 D0DF              xcall _UART_TX_DATA
 00A8                   .dbline 197
 00A8           ;       }
 00A8 04C0              xjmp L21
 00AA           L20:
 00AA                   .dbline 199
 00AA                   .dbline 200
 00AA CCDF              xcall _Disable_UART_TX_INT
 00AC                   .dbline 201
 00AC 00E0              ldi R16,<_stSciBuffer
 00AE 10E0              ldi R17,>_stSciBuffer
 00B0 67D0              xcall _SciBuffer_Tx_Reset
 00B2                   .dbline 202
 00B2           L21:
 00B2                   .dbline -2
 00B2                   .dbline 203
 00B2           ;       else
 00B2           ;       {
 00B2           ;               Disable_UART_TX_INT();
 00B2           ;               SciBuffer_Tx_Reset(&stSciBuffer);
 00B2           ;       }
 00B2           ; }
 00B2           L19:
 00B2 0E940000          xcall pop_gset1
 00B6 0E940000          xcall pop_lset
 00BA                   .dbline 0 ; func end
 00BA 1895              reti
 00BC                   .dbsym r bData 20 c
 00BC                   .dbend
 00BC                   .dbfunc e SciBuffer_Init _SciBuffer_Init fV
 00BC           ;            ptr -> R16,R17
                        .even
 00BC           _SciBuffer_Init::
 00BC                   .dbline -1
 00BC                   .dbline 212
 00BC           ; 
 00BC           ; //********************************************************************
 00BC           ; // Function    : SciBuffer_Init
 00BC           ; // Input       : ptr-pointer to SCI Buffer
 00BC           ; // Output      : none
 00BC           ; // Description : Initialization of SCI Buffer
 00BC           ; //********************************************************************
 00BC           ; void SciBuffer_Init(struct SCI_Buffer *ptr)
 00BC           ; {
 00BC                   .dbline 213
 00BC           ;       ptr->bRxLength = 0;
 00BC 2224              clr R2
 00BE F801              movw R30,R16
 00C0 2082              std z+0,R2
 00C2                   .dbline 214
 00C2           ;       ptr->bTxLength = 0;
 00C2 2182              std z+1,R2
 00C4                   .dbline 215
 00C4           ;       ptr->bTxBufferLength = 0;
 00C4 F801              movw R30,R16
 00C6 2282              std z+2,R2
 00C8                   .dbline -2
 00C8                   .dbline 216
 00C8           ; }
 00C8           L22:
 00C8                   .dbline 0 ; func end
 00C8 0895              ret
 00CA                   .dbsym r ptr 16 pX
 00CA                   .dbend
 00CA                   .dbfunc e SciBuffer_Rx_In _SciBuffer_Rx_In fV
 00CA           ;          bData -> R18
 00CA           ;            ptr -> R16,R17
                        .even
 00CA           _SciBuffer_Rx_In::
 00CA                   .dbline -1
 00CA                   .dbline 225
 00CA           ; 
 00CA           ; //********************************************************************
 00CA           ; // Function    : SciBuffer_Rx_In
 00CA           ; // Input       : ptr-pointer to SCI Buffer
 00CA           ; // Output      : none
 00CA           ; // Description : Add data into the SCI RX Buffer
 00CA           ; //********************************************************************
 00CA           ; void SciBuffer_Rx_In(struct SCI_Buffer *ptr,INT8U bData)
 00CA           ; {
 00CA                   .dbline 226
 00CA           ;       if(ptr->bRxLength < cMaxRxLength)
 00CA F801              movw R30,R16
 00CC 8081              ldd R24,z+0
 00CE 8233              cpi R24,50
 00D0 60F4              brsh L24
 00D2                   .dbline 227
 00D2           ;       {
 00D2                   .dbline 228
 00D2           ;               ptr->bRxBuffer[ptr->bRxLength] = bData;
 00D2 CF01              movw R24,R30
 00D4 0396              adiw R24,3
 00D6 E081              ldd R30,z+0
 00D8 FF27              clr R31
 00DA E80F              add R30,R24
 00DC F91F              adc R31,R25
 00DE 2083              std z+0,R18
 00E0                   .dbline 229
 00E0           ;               ptr->bRxLength++;
 00E0 F801              movw R30,R16
 00E2 8081              ldd R24,z+0
 00E4 8F5F              subi R24,255    ; addi 1
 00E6 8083              std z+0,R24
 00E8                   .dbline 230
 00E8           ;       }
 00E8 05C0              xjmp L25
 00EA           L24:
 00EA                   .dbline 232
 00EA                   .dbline 233
 00EA F801              movw R30,R16
 00EC 2383              std z+3,R18
 00EE                   .dbline 234
 00EE 81E0              ldi R24,1
 00F0 F801              movw R30,R16
 00F2 8083              std z+0,R24
 00F4                   .dbline 235
 00F4           L25:
 00F4                   .dbline -2
 00F4                   .dbline 236
 00F4           ;       else
 00F4           ;       {
 00F4           ;               ptr->bRxBuffer[0] = bData;
 00F4           ;               ptr->bRxLength = 1;
 00F4           ;       }
 00F4           ; }
 00F4           L23:
 00F4                   .dbline 0 ; func end
 00F4 0895              ret
 00F6                   .dbsym r bData 18 c
 00F6                   .dbsym r ptr 16 pX
 00F6                   .dbend
 00F6                   .dbfunc e SciBuffer_Tx_Out _SciBuffer_Tx_Out fc
 00F6           ;          bData -> R20

⌨️ 快捷键说明

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