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

📄 uart.lis

📁 万能遥控器解码
💻 LIS
字号:
                        .module uart.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator.27F5F4061F03467\桌面\uart\uart.c
 0000                   .dbfunc e delay_nus _delay_nus fV
 0000           ;              i -> R20,R21
 0000           ;              n -> R16,R17
                        .even
 0000           _delay_nus::
 0000 4A93              st -y,R20
 0002 5A93              st -y,R21
 0004                   .dbline -1
 0004                   .dbline 11
 0004           ; //ICC-AVR application builder : 2008-8-5 14:38:41
 0004           ; // Target : M8515
 0004           ; // Crystal: 8.0000Mhz
 0004           ; 
 0004           ; #include <iom8515v.h>
 0004           ; #include <macros.h>
 0004           ; 
 0004           ; #define uchar unsigned char
 0004           ; #define uint unsigned int
 0004           ; void delay_nus(unsigned int n)//n微秒延时函数 
 0004           ; { 
 0004                   .dbline 13
 0004           ; unsigned int i; 
 0004           ; for (i=0;i<n;i++) 
 0004 4427              clr R20
 0006 5527              clr R21
 0008 03C0              rjmp L5
 000A           L2:
 000A                   .dbline 14
 000A           ;   { 
 000A                   .dbline 15
 000A           ;       asm("nop"); 
 000A 0000              nop
 000C                   .dbline 16
 000C           ;   } 
 000C           L3:
 000C                   .dbline 13
 000C 4F5F              subi R20,255  ; offset = 1
 000E 5F4F              sbci R21,255
 0010           L5:
 0010                   .dbline 13
 0010 4017              cp R20,R16
 0012 5107              cpc R21,R17
 0014 D0F3              brlo L2
 0016           X0:
 0016                   .dbline -2
 0016           L1:
 0016                   .dbline 0 ; func end
 0016 5991              ld R21,y+
 0018 4991              ld R20,y+
 001A 0895              ret
 001C                   .dbsym r i 20 i
 001C                   .dbsym r n 16 i
 001C                   .dbend
 001C                   .dbfunc e delay_nms _delay_nms fV
 001C           ;              i -> R20,R21
 001C           ;              n -> R10,R11
                        .even
 001C           _delay_nms::
 001C 00D0              rcall push_xgset300C
 001E 5801              movw R10,R16
 0020                   .dbline -1
 0020                   .dbline 19
 0020           ; } 
 0020           ; void delay_nms(unsigned int n)//n毫秒延时函数 
 0020           ; { 
 0020                   .dbline 21
 0020           ;   unsigned int i; 
 0020           ;   for (i=0;i<n;i++) //执行n次1毫秒延时 
 0020 4427              clr R20
 0022 5527              clr R21
 0024 05C0              rjmp L10
 0026           L7:
 0026                   .dbline 22
 0026           ;   delay_nus(1000);  
 0026 08EE              ldi R16,1000
 0028 13E0              ldi R17,3
 002A EADF              rcall _delay_nus
 002C           L8:
 002C                   .dbline 21
 002C 4F5F              subi R20,255  ; offset = 1
 002E 5F4F              sbci R21,255
 0030           L10:
 0030                   .dbline 21
 0030 4A15              cp R20,R10
 0032 5B05              cpc R21,R11
 0034 C0F3              brlo L7
 0036           X1:
 0036                   .dbline -2
 0036           L6:
 0036                   .dbline 0 ; func end
 0036 00C0              rjmp pop_xgset300C
 0038                   .dbsym r i 20 i
 0038                   .dbsym r n 10 i
 0038                   .dbend
 0038                   .dbfunc e port_init _port_init fV
                        .even
 0038           _port_init::
 0038                   .dbline -1
 0038                   .dbline 25
 0038           ; }             
 0038           ; void port_init(void)
 0038           ; {
 0038                   .dbline 26
 0038           ;  PORTA = 0x00;
 0038 2224              clr R2
 003A 2BBA              out 0x1b,R2
 003C                   .dbline 27
 003C           ;  DDRA  = 0x00;
 003C 2ABA              out 0x1a,R2
 003E                   .dbline 28
 003E           ;  PORTB = 0x00;
 003E 28BA              out 0x18,R2
 0040                   .dbline 29
 0040           ;  DDRB  = 0x00;
 0040 27BA              out 0x17,R2
 0042                   .dbline 30
 0042           ;  PORTC = 0x00;
 0042 25BA              out 0x15,R2
 0044                   .dbline 31
 0044           ;  DDRC  = 0x00;
 0044 24BA              out 0x14,R2
 0046                   .dbline 32
 0046           ;  PORTD = 0x00;
 0046 22BA              out 0x12,R2
 0048                   .dbline 33
 0048           ;  DDRD  = 0x00; 
 0048 21BA              out 0x11,R2
 004A                   .dbline 34
 004A           ;  PORTE = 0x00;
 004A 27B8              out 0x7,R2
 004C                   .dbline 35
 004C           ;  DDRE  = 0x00; 
 004C 26B8              out 0x6,R2
 004E                   .dbline -2
 004E           L11:
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbend
 0050                   .dbfunc e uart0_init _uart0_init fV
                        .even
 0050           _uart0_init::
 0050                   .dbline -1
 0050                   .dbline 42
 0050           ; }
 0050           ; 
 0050           ; //UART0 initialize
 0050           ; // desired baud rate: 9600
 0050           ; // actual: baud rate:9615 (0.2%)
 0050           ; void uart0_init(void)
 0050           ; {
 0050                   .dbline 43
 0050           ;  UCSRB = 0x00; //disable while setting baud rate
 0050 2224              clr R2
 0052 2AB8              out 0xa,R2
 0054                   .dbline 44
 0054           ;  UCSRA = 0x00;
 0054 2BB8              out 0xb,R2
 0056                   .dbline 45
 0056           ;  UCSRC = BIT(URSEL) | 0x26;
 0056 86EA              ldi R24,166
 0058 80BD              out 0x20,R24
 005A                   .dbline 46
 005A           ;  UBRRL = 0x33; //set baud rate lo
 005A 83E3              ldi R24,51
 005C 89B9              out 0x9,R24
 005E                   .dbline 47
 005E           ;  UBRRH = 0x00; //set baud rate hi
 005E 20BC              out 0x20,R2
 0060                   .dbline 48
 0060           ;  UCSRB = 0x18;
 0060 88E1              ldi R24,24
 0062 8AB9              out 0xa,R24
 0064                   .dbline -2
 0064           L12:
 0064                   .dbline 0 ; func end
 0064 0895              ret
 0066                   .dbend
 0066                   .dbfunc e sendchar _sendchar fV
 0066           ;            num -> R16
                        .even
 0066           _sendchar::
 0066                   .dbline -1
 0066                   .dbline 53
 0066           ; }
 0066           ; 
 0066           ; 
 0066           ; void sendchar(uchar num)
 0066           ;   {      
 0066                   .dbline 54
 0066           ;       UDR=num;
 0066 0CB9              out 0xc,R16
 0068           L14:
 0068                   .dbline 55
 0068           ;       while(!(UCSRA&(1<<TXC)));
 0068           L15:
 0068                   .dbline 55
 0068 5E9B              sbis 0xb,6
 006A FECF              rjmp L14
 006C           X2:
 006C                   .dbline 56
 006C           ;         UCSRA |= (1<<TXC);
 006C 5E9A              sbi 0xb,6
 006E                   .dbline -2
 006E           L13:
 006E                   .dbline 0 ; func end
 006E 0895              ret
 0070                   .dbsym r num 16 c
 0070                   .dbend
 0070                   .dbfunc e PutChar _PutChar fI
 0070           ;              c -> R20
                        .even
 0070           _PutChar::
 0070 4A93              st -y,R20
 0072 402F              mov R20,R16
 0074                   .dbline -1
 0074                   .dbline 59
 0074           ;   }
 0074           ; int PutChar(char c)
 0074           ; {
 0074                   .dbline 60
 0074           ;     if(c == '\n')
 0074 4A30              cpi R20,10
 0076 11F4              brne L18
 0078           X3:
 0078                   .dbline 61
 0078           ;     {
 0078                   .dbline 62
 0078           ;         PutChar('\r');
 0078 0DE0              ldi R16,13
 007A FADF              rcall _PutChar
 007C                   .dbline 63
 007C           ;     }
 007C           L18:
 007C                   .dbline 64
 007C           ;     UDR = c;
 007C 4CB9              out 0xc,R20
 007E           L20:
 007E                   .dbline 65
 007E           ;     while(!(UCSRA &(1<<UDRE)));
 007E           L21:
 007E                   .dbline 65
 007E 5D9B              sbis 0xb,5
 0080 FECF              rjmp L20
 0082           X4:
 0082                   .dbline 66
 0082           ;     UCSRA |= (1<<UDRE);
 0082 5D9A              sbi 0xb,5
 0084                   .dbline 67
 0084           ;     return 0;
 0084 0027              clr R16
 0086 1127              clr R17
 0088                   .dbline -2
 0088           L17:
 0088                   .dbline 0 ; func end
 0088 4991              ld R20,y+
 008A 0895              ret
 008C                   .dbsym r c 20 c
 008C                   .dbend
 008C                   .dbfunc e main _main fV
 008C           ;              j -> <dead>
 008C           ;              i -> <dead>
                        .even
 008C           _main::
 008C                   .dbline -1
 008C                   .dbline 71
 008C           ; }
 008C           ; 
 008C           ; void main(void)
 008C           ; {
 008C                   .dbline 73
 008C           ;     uchar i,j;
 008C           ;     uart0_init();
 008C E1DF              rcall _uart0_init
 008E 05C0              rjmp L25
 0090           L24:
 0090                   .dbline 75
 0090           ; while(1)
 0090           ;    {
 0090                   .dbline 76
 0090           ;      delay_nms(500);
 0090 04EF              ldi R16,500
 0092 11E0              ldi R17,1
 0094 C3DF              rcall _delay_nms
 0096                   .dbline 77
 0096           ;        sendchar(0xaa);
 0096 0AEA              ldi R16,170
 0098 E6DF              rcall _sendchar
 009A                   .dbline 78
 009A           ;    }
 009A           L25:
 009A                   .dbline 74
 009A FACF              rjmp L24
 009C           X5:
 009C                   .dbline -2
 009C           L23:
 009C                   .dbline 0 ; func end
 009C 0895              ret
 009E                   .dbsym l j 1 c
 009E                   .dbsym l i 1 c
 009E                   .dbend
 009E           ;       ;
 009E           ;       
 009E           ; }

⌨️ 快捷键说明

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