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

📄 sci.lis

📁 微程序控制器采用ATMEL AVR MEGA162
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module sci.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\mydoc\avrproject\icc\big162\gpseep\sci.c
 0000                   .dbfunc s CommDrvDefaultProc _CommDrvDefaultProc fV
 0000           ;          value -> R0
                        .even
 0000           _CommDrvDefaultProc:
 0000                   .dbline -1
 0000                   .dbline 5
 0000           ; #include "sci.h"
 0000           ; 
 0000           ;   
 0000           ;   
 0000           ; static void CommDrvDefaultProc (register BYTE value) { (void) value; };
 0000                   .dbline 5
 0000                   .dbline -2
 0000           L1:
 0000                   .dbline 0 ; func end
 0000 0895              ret
 0002                   .dbsym l value 0 c
 0002                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile F:\mydoc\avrproject\icc\big162\gpseep\sci.c
 0000           _EvtProcedure:
 0000                   .blkw 1
                        .area idata
 0000 0000              .word PL_CommDrvDefaultProc
                        .area data(ram, con, rel)
 0002                   .dbfile F:\mydoc\avrproject\icc\big162\gpseep\sci.c
 0002                   .dbsym s EvtProcedure _EvtProcedure pfV
                        .area vector(rom, abs)
                        .org 76
 004C 0C940100          jmp _UART0_RX_interrupt
                        .area data(ram, con, rel)
 0002                   .dbfile F:\mydoc\avrproject\icc\big162\gpseep\sci.c
                        .area text(rom, con, rel)
 0002                   .dbfile F:\mydoc\avrproject\icc\big162\gpseep\sci.c
 0002                   .dbfunc e UART0_RX_interrupt _UART0_RX_interrupt fV
                        .even
 0002           _UART0_RX_interrupt::
 0002 0E940000          xcall push_lset
 0006                   .dbline -1
 0006                   .dbline 14
 0006           ; static void (* EvtProcedure) (register BYTE value) = CommDrvDefaultProc;
 0006           ; // Byte pointers of the ring buffer (FIFO)
 0006           ; 
 0006           ; 
 0006           ; 
 0006           ; #pragma interrupt_handler UART0_RX_interrupt:20
 0006           ; 
 0006           ; void UART0_RX_interrupt( void )
 0006           ; {
 0006                   .dbline 16
 0006           ;       //BYTE a=UDR0;
 0006           ;     EvtProcedure(UDR0);
 0006 0CB1              in R16,0xc
 0008 E0910000          lds R30,_EvtProcedure
 000C F0910100          lds R31,_EvtProcedure+1
 0010 0E940000          xcall xicall
 0014                   .dbline 17
 0014           ;     PORTD ^= BIT(STA);
 0014 80E2              ldi R24,32
 0016 22B2              in R2,0x12
 0018 2826              eor R2,R24
 001A 22BA              out 0x12,R2
 001C                   .dbline -2
 001C           L2:
 001C 0E940000          xcall pop_lset
 0020                   .dbline 0 ; func end
 0020 1895              reti
 0022                   .dbend
                        .area vector(rom, abs)
                        .org 80
 0050 0C941100          jmp _UART1_RX_interrupt
                        .area text(rom, con, rel)
 0022                   .dbfile F:\mydoc\avrproject\icc\big162\gpseep\sci.c
 0022                   .dbfunc e UART1_RX_interrupt _UART1_RX_interrupt fV
                        .even
 0022           _UART1_RX_interrupt::
 0022 0E940000          xcall push_lset
 0026                   .dbline -1
 0026                   .dbline 25
 0026           ;       //WriteComm1(a);///////////////////////////
 0026           ; }
 0026           ; 
 0026           ; 
 0026           ; #pragma interrupt_handler UART1_RX_interrupt:21
 0026           ; 
 0026           ; void UART1_RX_interrupt( void )
 0026           ; {
 0026                   .dbline 26
 0026           ;       WriteComm0(UDR1);
 0026 03B1              in R16,0x3
 0028 08D0              xcall _WriteComm0
 002A                   .dbline 27
 002A           ;       PORTD ^= BIT(STC);
 002A 80E4              ldi R24,64
 002C 22B2              in R2,0x12
 002E 2826              eor R2,R24
 0030 22BA              out 0x12,R2
 0032                   .dbline -2
 0032           L3:
 0032 0E940000          xcall pop_lset
 0036                   .dbline 0 ; func end
 0036 1895              reti
 0038                   .dbend
 0038                   .dbfunc e OpenComm0 _OpenComm0 fV
                        .even
 0038           _OpenComm0::
 0038                   .dbline -1
 0038                   .dbline 32
 0038           ; }
 0038           ; 
 0038           ; 
 0038           ; void OpenComm0 (void)
 0038           ; {
 0038                   .dbline -2
 0038           L4:
 0038                   .dbline 0 ; func end
 0038 0895              ret
 003A                   .dbend
 003A                   .dbfunc e WriteComm0 _WriteComm0 fV
 003A           ;              c -> R16
                        .even
 003A           _WriteComm0::
 003A                   .dbline -1
 003A                   .dbline 39
 003A           ;       
 003A           ; }
 003A           ; 
 003A           ; 
 003A           ; 
 003A           ; void WriteComm0 (BYTE c)
 003A           ; {
 003A           L6:
 003A                   .dbline 40
 003A           L7:
 003A                   .dbline 40
 003A           ;       while( !(UCSR0A & (1<<UDRE0)) ); 
 003A 5D9B              sbis 0xb,5
 003C FECF              rjmp L6
 003E                   .dbline 41
 003E           ;       UDR0=c; 
 003E 0CB9              out 0xc,R16
 0040                   .dbline 42
 0040           ;     PORTD ^= BIT(STA);
 0040 80E2              ldi R24,32
 0042 22B2              in R2,0x12
 0044 2826              eor R2,R24
 0046 22BA              out 0x12,R2
 0048                   .dbline -2
 0048           L5:
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbsym r c 16 c
 004A                   .dbend
 004A                   .dbfunc e WriteCommStr0 _WriteCommStr0 fV
 004A           ;            str -> R20,R21
                        .even
 004A           _WriteCommStr0::
 004A 0E940000          xcall push_gset1
 004E A801              movw R20,R16
 0050                   .dbline -1
 0050                   .dbline 46
 0050           ;     //WriteComm1 (c);//////////////////////test
 0050           ; }
 0050           ; void WriteCommStr0 (char* str)
 0050           ; {
 0050 05C0              xjmp L11
 0052           L10:
 0052                   .dbline 48
 0052                   .dbline 49
 0052 FA01              movw R30,R20
 0054 0081              ldd R16,z+0
 0056 F1DF              xcall _WriteComm0
 0058                   .dbline 50
 0058 4F5F              subi R20,255  ; offset = 1
 005A 5F4F              sbci R21,255
 005C                   .dbline 51
 005C           L11:
 005C                   .dbline 47
 005C           ;       while(*str)
 005C FA01              movw R30,R20
 005E 2080              ldd R2,z+0
 0060 2220              tst R2
 0062 B9F7              brne L10
 0064                   .dbline -2
 0064           L9:
 0064 0E940000          xcall pop_gset1
 0068                   .dbline 0 ; func end
 0068 0895              ret
 006A                   .dbsym r str 20 pc
 006A                   .dbend
 006A                   .dbfunc e ReadComm0 _ReadComm0 fc
                        .even
 006A           _ReadComm0::
 006A                   .dbline -1
 006A                   .dbline 54
 006A           ;       {
 006A           ;               WriteComm0(*str);
 006A           ;               str++;
 006A           ;       }
 006A           ; }
 006A           ; BYTE ReadComm0 ()
 006A           ; {
 006A           L14:
 006A                   .dbline 55
 006A           L15:
 006A                   .dbline 55
 006A           ;       while( !(UCSR0A & (1<<RXC0)) );  
 006A 5F9B              sbis 0xb,7
 006C FECF              rjmp L14
 006E                   .dbline 56
 006E           ;       return UDR0; 
 006E 0CB1              in R16,0xc
 0070                   .dbline -2
 0070           L13:
 0070                   .dbline 0 ; func end
 0070 0895              ret
 0072                   .dbend
 0072                   .dbfunc e ReadCommT0 _ReadCommT0 fc
 0072           ;           time -> R16
                        .even
 0072           _ReadCommT0::
 0072                   .dbline -1

⌨️ 快捷键说明

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