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

📄 uartintr.lis

📁 原创
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0098                   .dbline 70
 0098           ;               UART_TxTail = tmptail; /* store new index */
 0098 00930000          sts _UART_TxTail,R16
 009C                   .dbline 71
 009C           ;               UDR = UART_TxBuf[tmptail]; /* start transmition */
 009C 80E0              ldi R24,<_UART_TxBuf
 009E 90E0              ldi R25,>_UART_TxBuf
 00A0 E02F              mov R30,R16
 00A2 FF27              clr R31
 00A4 E80F              add R30,R24
 00A6 F91F              adc R31,R25
 00A8 2080              ldd R2,z+0
 00AA 2CB8              out 0xc,R2
 00AC                   .dbline 72
 00AC           ;               }
 00AC 01C0              xjmp L7
 00AE           L6:
 00AE                   .dbline 74
 00AE                   .dbline 75
 00AE 5598              cbi 0xa,5
 00B0                   .dbline 76
 00B0           L7:
 00B0                   .dbline -2
 00B0           L5:
 00B0 2990              ld R2,y+
 00B2 2FBE              out 0x3f,R2
 00B4 F991              ld R31,y+
 00B6 E991              ld R30,y+
 00B8 9991              ld R25,y+
 00BA 8991              ld R24,y+
 00BC 1991              ld R17,y+
 00BE 0991              ld R16,y+
 00C0 3990              ld R3,y+
 00C2 2990              ld R2,y+
 00C4                   .dbline 0 ; func end
 00C4 1895              reti
 00C6                   .dbsym r tmptail 16 c
 00C6                   .dbend
 00C6                   .dbfunc e ReceiveByte _ReceiveByte fc
 00C6           ;        tmptail -> R16
                        .even
 00C6           _ReceiveByte::
 00C6                   .dbline -1
 00C6                   .dbline 81
 00C6           ;       else
 00C6           ;               {
 00C6           ;               UCSRB &= ~(1<<UDRIE); /* disable UDRE interrupt */
 00C6           ;               }
 00C6           ;       }
 00C6           ; 
 00C6           ; /* Read and write functions */
 00C6           ; unsigned char ReceiveByte( void )
 00C6           ;       {
 00C6           L9:
 00C6                   .dbline 85
 00C6           L10:
 00C6                   .dbline 84
 00C6           ;       unsigned char tmptail;
 00C6           ; 
 00C6           ;       while ( UART_RxHead == UART_RxTail ) /* wait for incomming data */
 00C6 20908200          lds R2,_UART_RxTail
 00CA 30908300          lds R3,_UART_RxHead
 00CE 3214              cp R3,R2
 00D0 D1F3              breq L9
 00D2                   .dbline 86
 00D2           ;               ;
 00D2           ;       tmptail = ( UART_RxTail + 1 ) & UART_RX_BUFFER_MASK;/* calculate buffer index */
 00D2 00918200          lds R16,_UART_RxTail
 00D6 0F5F              subi R16,255    ; addi 1
 00D8 0F77              andi R16,127
 00DA                   .dbline 87
 00DA           ;       UART_RxTail = tmptail; /* store new index */
 00DA 00938200          sts _UART_RxTail,R16
 00DE                   .dbline 88
 00DE           ;       return UART_RxBuf[tmptail]; /* return data */
 00DE 80E0              ldi R24,<_UART_RxBuf
 00E0 90E0              ldi R25,>_UART_RxBuf
 00E2 E02F              mov R30,R16
 00E4 FF27              clr R31
 00E6 E80F              add R30,R24
 00E8 F91F              adc R31,R25
 00EA 0081              ldd R16,z+0
 00EC                   .dbline -2
 00EC           L8:
 00EC                   .dbline 0 ; func end
 00EC 0895              ret
 00EE                   .dbsym r tmptail 16 c
 00EE                   .dbend
 00EE                   .dbfunc e TransmitByte _TransmitByte fV
 00EE           ;        tmphead -> R10
 00EE           ;           data -> R16
                        .even
 00EE           _TransmitByte::
 00EE 0E940000          xcall push_gset3x
 00F2                   .dbline -1
 00F2                   .dbline 92
 00F2           ;       }
 00F2           ; 
 00F2           ; void TransmitByte( unsigned char data )
 00F2           ;       {
 00F2                   .dbline 95
 00F2           ;       unsigned char tmphead;
 00F2           ;       /* calculate buffer index */
 00F2           ;       tmphead = ( UART_TxHead + 1 ) & UART_TX_BUFFER_MASK; 
 00F2 80910100          lds R24,_UART_TxHead
 00F6 8F5F              subi R24,255    ; addi 1
 00F8 8F77              andi R24,127
 00FA A82E              mov R10,R24
 00FC           L13:
 00FC                   .dbline 99
 00FC           L14:
 00FC                   .dbline 98
 00FC           ;               /* wait for free space in buffer */
 00FC           ; 
 00FC           ;       while ( tmphead == UART_TxTail )
 00FC 20900000          lds R2,_UART_TxTail
 0100 A214              cp R10,R2
 0102 E1F3              breq L13
 0104                   .dbline 100
 0104           ;               ;
 0104           ;       UART_TxBuf[tmphead] = data; /* store data in buffer */
 0104 80E0              ldi R24,<_UART_TxBuf
 0106 90E0              ldi R25,>_UART_TxBuf
 0108 EA2D              mov R30,R10
 010A FF27              clr R31
 010C E80F              add R30,R24
 010E F91F              adc R31,R25
 0110 0083              std z+0,R16
 0112                   .dbline 101
 0112           ;       UART_TxHead = tmphead; /* store new index */
 0112 A0920100          sts _UART_TxHead,R10
 0116                   .dbline 102
 0116           ;       UCSRB |= (1<<UDRIE); /* enable UDRE interrupt */
 0116 559A              sbi 0xa,5
 0118                   .dbline -2
 0118           L12:
 0118 0E940000          xcall pop_gset3x
 011C                   .dbline 0 ; func end
 011C 0895              ret
 011E                   .dbsym r tmphead 10 c
 011E                   .dbsym r data 16 c
 011E                   .dbend
 011E                   .dbfunc e DataInReceiveBuffer _DataInReceiveBuffer fc
                        .even
 011E           _DataInReceiveBuffer::
 011E                   .dbline -1
 011E                   .dbline 106
 011E           ;       }
 011E           ; 
 011E           ; unsigned char DataInReceiveBuffer( void )
 011E           ;       {
 011E                   .dbline 107
 011E           ;       return ( UART_RxHead != UART_RxTail ); 
 011E 20908200          lds R2,_UART_RxTail
 0122 30908300          lds R3,_UART_RxHead
 0126 3214              cp R3,R2
 0128 19F0              breq L17
 012A 01E0              ldi R16,1
 012C 10E0              ldi R17,0
 012E 02C0              xjmp L18
 0130           L17:
 0130 0027              clr R16
 0132 1127              clr R17
 0134           L18:
 0134                   .dbline -2
 0134           L16:
 0134                   .dbline 0 ; func end
 0134 0895              ret
 0136                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\avrwork3_pt100\uartintr.c
 0000           _UART_TxTail:
 0000                   .blkb 1
 0001                   .dbsym s UART_TxTail _UART_TxTail c
 0001           _UART_TxHead:
 0001                   .blkb 1
 0002                   .dbsym s UART_TxHead _UART_TxHead c
 0002           _UART_TxBuf:
 0002                   .blkb 128
 0082                   .dbsym s UART_TxBuf _UART_TxBuf A[128:128]c
 0082           _UART_RxTail:
 0082                   .blkb 1
 0083                   .dbsym s UART_RxTail _UART_RxTail c
 0083           _UART_RxHead:
 0083                   .blkb 1
 0084                   .dbsym s UART_RxHead _UART_RxHead c
 0084           _UART_RxBuf:
 0084                   .blkb 128
 0104                   .dbsym s UART_RxBuf _UART_RxBuf A[128:128]c

⌨️ 快捷键说明

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