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

📄 jiema.lis

📁 万能遥控器解码
💻 LIS
字号:
                        .module jiema.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator.27F5F4061F03467\桌面\上升沿\jiema.c
                        .area data(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator.27F5F4061F03467\桌面\上升沿\jiema.c
 0000           _IRCON::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile C:\DOCUME~1\Administrator.27F5F4061F03467\桌面\上升沿\jiema.c
 0001                   .dbsym e IRCON _IRCON c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator.27F5F4061F03467\桌面\上升沿\jiema.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 13
 0004           ; //ICC-AVR application builder : 2008-8-7 14:56:45
 0004           ; // Target : M8515
 0004           ; // Crystal: 4.0000Mhz
 0004           ; 
 0004           ; #include <iom8515v.h>
 0004           ; #include <macros.h>
 0004           ; #define uchar unsigned char
 0004           ; #define uint unsigned int
 0004           ; #define DQ    PD2
 0004           ; #define    HW   (PIND&(1<<DQ))  //数据的状态
 0004           ; uchar IRCode[3],IRCON=0;
 0004           ; void delay_nus(unsigned int n)//n微秒延时函数 
 0004           ; { 
 0004                   .dbline 15
 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 16
 000A           ;   { 
 000A                   .dbline 17
 000A           ;       asm("nop"); 
 000A 0000              nop
 000C                   .dbline 18
 000C           ;   } 
 000C           L3:
 000C                   .dbline 15
 000C 4F5F              subi R20,255  ; offset = 1
 000E 5F4F              sbci R21,255
 0010           L5:
 0010                   .dbline 15
 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 21
 0020           ; } 
 0020           ; void delay_nms(unsigned int n)//n毫秒延时函数 
 0020           ; { 
 0020                   .dbline 23
 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 24
 0026           ;   delay_nus(10);  
 0026 0AE0              ldi R16,10
 0028 10E0              ldi R17,0
 002A EADF              rcall _delay_nus
 002C           L8:
 002C                   .dbline 23
 002C 4F5F              subi R20,255  ; offset = 1
 002E 5F4F              sbci R21,255
 0030           L10:
 0030                   .dbline 23
 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 uart0_init _uart0_init fV
                        .even
 0038           _uart0_init::
 0038                   .dbline -1
 0038                   .dbline 28
 0038           ; }             
 0038           ; /************************* UART 发送数据函数*********************************************************/
 0038           ; void uart0_init(void)
 0038           ; {
 0038                   .dbline 29
 0038           ;  UCSRB = 0x00; //disable while setting baud rate
 0038 2224              clr R2
 003A 2AB8              out 0xa,R2
 003C                   .dbline 30
 003C           ;  UCSRA = 0x00;
 003C 2BB8              out 0xb,R2
 003E                   .dbline 31
 003E           ;  UCSRC = BIT(URSEL) | 0x26;
 003E 86EA              ldi R24,166
 0040 80BD              out 0x20,R24
 0042                   .dbline 32
 0042           ;  UBRRL = 0x33; //set baud rate lo
 0042 83E3              ldi R24,51
 0044 89B9              out 0x9,R24
 0046                   .dbline 33
 0046           ;  UBRRH = 0x00; //set baud rate hi
 0046 20BC              out 0x20,R2
 0048                   .dbline 34
 0048           ;  UCSRB = 0x18;
 0048 88E1              ldi R24,24
 004A 8AB9              out 0xa,R24
 004C                   .dbline -2
 004C           L11:
 004C                   .dbline 0 ; func end
 004C 0895              ret
 004E                   .dbend
 004E                   .dbfunc e sendchar _sendchar fV
 004E           ;            num -> R16
                        .even
 004E           _sendchar::
 004E                   .dbline -1
 004E                   .dbline 37
 004E           ; }
 004E           ; void sendchar(uchar num)
 004E           ;   {      
 004E                   .dbline 38
 004E           ;       UDR=num;
 004E 0CB9              out 0xc,R16
 0050           L13:
 0050                   .dbline 39
 0050           ;       while(!(UCSRA&(1<<TXC)));
 0050           L14:
 0050                   .dbline 39
 0050 5E9B              sbis 0xb,6
 0052 FECF              rjmp L13
 0054           X2:
 0054                   .dbline 40
 0054           ;         UCSRA |= (1<<TXC);
 0054 5E9A              sbi 0xb,6
 0056                   .dbline -2
 0056           L12:
 0056                   .dbline 0 ; func end
 0056 0895              ret
 0058                   .dbsym r num 16 c
 0058                   .dbend
                        .area vector(rom, abs)
                        .org 2
 0002 2CC0              rjmp _int0_isr
                        .area text(rom, con, rel)
 0058                   .dbfile C:\DOCUME~1\Administrator.27F5F4061F03467\桌面\上升沿\jiema.c
 0058                   .dbfunc e int0_isr _int0_isr fV
 0058           ;              j -> <dead>
 0058           ;           flag -> <dead>
 0058           ;              m -> R20,R21
                        .even
 0058           _int0_isr::
 0058 0A92              st -y,R0
 005A 1A92              st -y,R1
 005C 2A92              st -y,R2
 005E 3A92              st -y,R3
 0060 4A92              st -y,R4
 0062 5A92              st -y,R5
 0064 6A92              st -y,R6
 0066 7A92              st -y,R7
 0068 8A92              st -y,R8
 006A 9A92              st -y,R9
 006C 0A93              st -y,R16
 006E 1A93              st -y,R17
 0070 2A93              st -y,R18
 0072 3A93              st -y,R19
 0074 8A93              st -y,R24
 0076 9A93              st -y,R25
 0078 AA93              st -y,R26
 007A BA93              st -y,R27
 007C EA93              st -y,R30
 007E FA93              st -y,R31
 0080 0FB6              in R0,0x3f
 0082 0A92              st -y,R0
 0084 4A93              st -y,R20
 0086 5A93              st -y,R21
 0088                   .dbline -1
 0088                   .dbline 44
 0088           ;   }
 0088           ; #pragma interrupt_handler int0_isr:iv_INT0
 0088           ; void int0_isr(void)
 0088           ; { 
 0088                   .dbline 45
 0088           ;  uint flag,m=0,j;
 0088 4427              clr R20
 008A 5527              clr R21
 008C                   .dbline 47
 008C           ;  
 008C           ;     m++; 
 008C 4F5F              subi R20,255  ; offset = 1
 008E 5F4F              sbci R21,255
 0090                   .dbline 48
 0090           ;       if(m==2)
 0090 4230              cpi R20,2
 0092 E0E0              ldi R30,0
 0094 5E07              cpc R21,R30
 0096 31F4              brne L17
 0098           X3:
 0098                   .dbline 49
 0098           ;       { GICR = 0x00;
 0098                   .dbline 49
 0098 2224              clr R2
 009A 2BBE              out 0x3b,R2
 009C                   .dbline 50
 009C           ;       uart0_init();
 009C CDDF              rcall _uart0_init
 009E                   .dbline 51
 009E           ;     sendchar(IRCode[1]);      }         
 009E 00910100          lds R16,_IRCode+1
 00A2 D5DF              rcall _sendchar
 00A4                   .dbline 51
 00A4           L17:
 00A4                   .dbline -2
 00A4           L16:
 00A4                   .dbline 0 ; func end
 00A4 5991              ld R21,y+
 00A6 4991              ld R20,y+
 00A8 0990              ld R0,y+
 00AA 0FBE              out 0x3f,R0
 00AC F991              ld R31,y+
 00AE E991              ld R30,y+
 00B0 B991              ld R27,y+
 00B2 A991              ld R26,y+
 00B4 9991              ld R25,y+
 00B6 8991              ld R24,y+
 00B8 3991              ld R19,y+
 00BA 2991              ld R18,y+
 00BC 1991              ld R17,y+
 00BE 0991              ld R16,y+
 00C0 9990              ld R9,y+
 00C2 8990              ld R8,y+
 00C4 7990              ld R7,y+
 00C6 6990              ld R6,y+
 00C8 5990              ld R5,y+
 00CA 4990              ld R4,y+
 00CC 3990              ld R3,y+
 00CE 2990              ld R2,y+
 00D0 1990              ld R1,y+
 00D2 0990              ld R0,y+
 00D4 1895              reti
 00D6                   .dbsym l j 1 i
 00D6                   .dbsym l flag 1 i
 00D6                   .dbsym r m 20 i
 00D6                   .dbend
 00D6                   .dbfunc e init_devices _init_devices fV
                        .even
 00D6           _init_devices::
 00D6                   .dbline -1
 00D6                   .dbline 80
 00D6           ;       /*if(m>1)
 00D6           ;      {   
 00D6           ;        IRCode[IRCON]<<=1;     //每读一次放入变量中的二进制的一个位,每次左移一位
 00D6           ;        delay_nms(33);   //0.84ms
 00D6           ;              flag++;      
 00D6           ;                         if(flag==9) 
 00D6           ;                              { 
 00D6           ;                                   flag=0; //8为填满一个数组,计数清零
 00D6           ;                       IRCON++;  //填满一个字节,指向下一个变量                                                    
 00D6           ;                                       if(IRCON==4)  IRCON=0;                  
 00D6           ;                    }  
 00D6           ;                if(HW)    IRCode[IRCON]|=0x01; //左移后最后一位写入 1
 00D6           ;       if(m>32)  
 00D6           ;                {
 00D6           ;                   m=0;
 00D6           ;                        uart0_init();
 00D6           ;                   for(j=0;j<4;j++)
 00D6           ;               {
 00D6           ;                           delay_nms(5000);
 00D6           ;                 sendchar(IRCode[j]);            
 00D6           ;               }
 00D6           ;                         PORTB=IRCode[0];
 00D6           ;        }      
 00D6           ;     }         */       
 00D6           ;  // GICR = 0x40;
 00D6           ;   //SEI();
 00D6           ; }
 00D6           ; void init_devices(void)
 00D6           ; {
 00D6                   .dbline 81
 00D6           ;  CLI(); //disable all interrupts
 00D6 F894              cli
 00D8                   .dbline 82
 00D8           ;  MCUCR = 0x03;
 00D8 83E0              ldi R24,3
 00DA 85BF              out 0x35,R24
 00DC                   .dbline 83
 00DC           ;  GICR = 0x40;
 00DC 80E4              ldi R24,64
 00DE 8BBF              out 0x3b,R24
 00E0                   .dbline 84
 00E0           ;  SEI(); //re-enable interrupts
 00E0 7894              sei
 00E2                   .dbline -2
 00E2           L20:
 00E2                   .dbline 0 ; func end
 00E2 0895              ret
 00E4                   .dbend
 00E4                   .dbfunc e main _main fV
                        .even
 00E4           _main::
 00E4                   .dbline -1
 00E4                   .dbline 88
 00E4           ; }
 00E4           ; 
 00E4           ; void main(void)
 00E4           ;  { 
 00E4                   .dbline 89
 00E4           ;   DDRD&=~BIT(0);
 00E4 8898              cbi 0x11,0
 00E6                   .dbline 90
 00E6           ;   DDRD|=BIT(1);
 00E6 899A              sbi 0x11,1
 00E8                   .dbline 91
 00E8           ;   DDRD&=~BIT(2);//设置PD2为输入口 
 00E8 8A98              cbi 0x11,2
 00EA                   .dbline 92
 00EA           ;   init_devices();
 00EA F5DF              rcall _init_devices
 00EC           L22:
 00EC                   .dbline 93
 00EC           ;   while(1);
 00EC           L23:
 00EC                   .dbline 93
 00EC FFCF              rjmp L22
 00EE           X4:
 00EE                   .dbline -2
 00EE           L21:
 00EE                   .dbline 0 ; func end
 00EE 0895              ret
 00F0                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator.27F5F4061F03467\桌面\上升沿\jiema.c
 0000           _IRCode::
 0000                   .blkb 3
 0003                   .dbsym e IRCode _IRCode A[3:3]c
 0003           ;  }
 0003           ; 
 0003           ;        

⌨️ 快捷键说明

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