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

📄 int0.lis

📁 单片机红外控制发射与接收,红外发射是一种常用的控制方式
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 007C                   .dbline -2
 007C           L22:
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbend
                        .area vector(rom, abs)
                        .org 4
 0004 0C943F00          jmp _int0_isr
                        .area text(rom, con, rel)
 007E                   .dbfile C:\DOCUME~1\Administrator\桌面\新建文~2\INT0\INT0.c
 007E                   .dbfunc e int0_isr _int0_isr fV
 007E           ;              i -> R20
                        .even
 007E           _int0_isr::
 007E 0E940000          xcall push_lset
 0082 0E940000          xcall push_gset1
 0086                   .dbline -1
 0086                   .dbline 44
 0086           ; }
 0086           ; 
 0086           ; #pragma interrupt_handler int0_isr:2
 0086           ; void int0_isr(void)
 0086           ; {
 0086                   .dbline 47
 0086           ;    uchar i;
 0086           ;    
 0086           ;    CLI();
 0086 F894              cli
 0088                   .dbline 48
 0088           ;    {
 0088                   .dbline 49
 0088           ;        for(i=0;i<5;i++)
 0088 4427              clr R20
 008A 09C0              xjmp L27
 008C           L24:
 008C                   .dbline 50
 008C           ;              {
 008C                   .dbline 51
 008C           ;                     delay_nus(1000);
 008C 08EE              ldi R16,1000
 008E 13E0              ldi R17,3
 0090 B9DF              xcall _delay_nus
 0092                   .dbline 52
 0092           ;                     if((PIND&0X04)==0X04)
 0092 80B3              in R24,0x10
 0094 8470              andi R24,4
 0096 8430              cpi R24,4
 0098 09F4              brne L28
 009A                   .dbline 53
 009A           ;                               {
 009A                   .dbline 54
 009A           ;                                 return;
 009A 45C0              xjmp L23
 009C           L28:
 009C                   .dbline 56
 009C           L25:
 009C                   .dbline 49
 009C 4395              inc R20
 009E           L27:
 009E                   .dbline 49
 009E 4530              cpi R20,5
 00A0 A8F3              brlo L24
 00A2           L30:
 00A2                   .dbline 57
 00A2           L31:
 00A2                   .dbline 57
 00A2           ;                               }
 00A2           ;                  }
 00A2           ;               while((PIND&0X04)!=0X04);//等待高电平
 00A2 80B3              in R24,0x10
 00A4 8470              andi R24,4
 00A6 8430              cpi R24,4
 00A8 E1F7              brne L30
 00AA                   .dbline 58
 00AA           ;               delay_nus(2900);//延时4.8ms
 00AA 04E5              ldi R16,2900
 00AC 1BE0              ldi R17,11
 00AE AADF              xcall _delay_nus
 00B0                   .dbline 59
 00B0           ;               for(i=0;i<8;i++)
 00B0 4427              clr R20
 00B2 21C0              xjmp L36
 00B4           X0:
 00B4                   .dbline 60
 00B4           ;                   { 
 00B4           L37:
 00B4                   .dbline 61
 00B4           L38:
 00B4                   .dbline 61
 00B4           ;                     while((PIND&0X04)!=0X04);//等待高电平
 00B4 80B3              in R24,0x10
 00B6 8470              andi R24,4
 00B8 8430              cpi R24,4
 00BA E1F7              brne L37
 00BC                   .dbline 62
 00BC           ;                     delay_nus(480);//延时480us
 00BC 00EE              ldi R16,480
 00BE 11E0              ldi R17,1
 00C0 A1DF              xcall _delay_nus
 00C2                   .dbline 63
 00C2           ;                     if(PIND&0X04)
 00C2 829B              sbis 0x10,2
 00C4 0EC0              rjmp L40
 00C6                   .dbline 64
 00C6           ;                               {
 00C6                   .dbline 65
 00C6           ;                                                 temp=temp>>1;
 00C6 20900000          lds R2,_temp
 00CA 2694              lsr R2
 00CC 20920000          sts _temp,R2
 00D0                   .dbline 66
 00D0           ;                                     delay_nus(200);//
 00D0 08EC              ldi R16,200
 00D2 10E0              ldi R17,0
 00D4 97DF              xcall _delay_nus
 00D6                   .dbline 67
 00D6           ;                                                 temp|=0x80;           //数据写入1      
 00D6 80910000          lds R24,_temp
 00DA 8068              ori R24,128
 00DC 80930000          sts _temp,R24
 00E0                   .dbline 68
 00E0           ;                                    }
 00E0 09C0              xjmp L41
 00E2           L40:
 00E2                   .dbline 70
 00E2           ;                   else
 00E2           ;                                {
 00E2                   .dbline 71
 00E2           ;                                                  temp=temp>>1;
 00E2 20900000          lds R2,_temp
 00E6 2694              lsr R2
 00E8 20920000          sts _temp,R2
 00EC                   .dbline 72
 00EC           ;                                      temp&=0x7f;   //数据写入0
 00EC 822D              mov R24,R2
 00EE 8F77              andi R24,127
 00F0 80930000          sts _temp,R24
 00F4                   .dbline 73
 00F4           ;                                    }
 00F4           L41:
 00F4                   .dbline 74
 00F4           L34:
 00F4                   .dbline 59
 00F4 4395              inc R20
 00F6           L36:
 00F6                   .dbline 59
 00F6 4830              cpi R20,8
 00F8 E8F2              brlo L38
 00FA                   .dbline 76
 00FA           ;                   }
 00FA           ;               
 00FA           ;    }
 00FA           L42:
 00FA                   .dbline 77
 00FA           L43:
 00FA                   .dbline 77
 00FA           ;      while((PIND&0X04)!=0X04);//等待高电平
 00FA 80B3              in R24,0x10
 00FC 8470              andi R24,4
 00FE 8430              cpi R24,4
 0100 E1F7              brne L42
 0102                   .dbline 78
 0102           ;     delay_nus(480);//延时480us
 0102 00EE              ldi R16,480
 0104 11E0              ldi R17,1
 0106 7EDF              xcall _delay_nus
 0108                   .dbline 80
 0108           ;   
 0108           ;    if(!(PIND&0X04))
 0108 8299              sbic 0x10,2
 010A 01C0              rjmp L45
 010C                   .dbline 82
 010C           ;                            
 010C           ;                {
 010C                   .dbline 83
 010C           ;                 return;
 010C 0CC0              xjmp L23
 010E           L45:
 010E                   .dbline 93
 010E           ;            }
 010E           ;       /*if(temp==0x06)
 010E           ;       {
 010E           ;         PORTA=temp;
 010E           ;         SPI_send(abc[temp]);
 010E           ;        
 010E           ;         
 010E           ;       }*/
 010E           ;       else
 010E           ;       {                                 
 010E                   .dbline 94
 010E           ;        PORTA=temp; 
 010E 20900000          lds R2,_temp
 0112 2BBA              out 0x1b,R2
 0114                   .dbline 95
 0114           ;        SPI_send(abc[temp]);
 0114 80E0              ldi R24,<_abc
 0116 90E0              ldi R25,>_abc
 0118 E22D              mov R30,R2
 011A FF27              clr R31
 011C E80F              add R30,R24
 011E F91F              adc R31,R25
 0120 0081              ldd R16,z+0
 0122 9EDF              xcall _SPI_send
 0124                   .dbline 97
 0124           ;        
 0124           ;       }
 0124                   .dbline 98
 0124           ;     SEI();
 0124 7894              sei
 0126                   .dbline -2
 0126           L23:
 0126 0E940000          xcall pop_gset1
 012A 0E940000          xcall pop_lset
 012E                   .dbline 0 ; func end
 012E 1895              reti
 0130                   .dbsym r i 20 c
 0130                   .dbend
 0130                   .dbfunc e main _main fV
                        .even
 0130           _main::
 0130                   .dbline -1
 0130                   .dbline 103
 0130           ; }
 0130           ; 
 0130           ; //call this routine to initialize all peripherals
 0130           ; void main(void)
 0130           ; {
 0130                   .dbline 105
 0130           ;  //stop errant interrupts until set up
 0130           ;  CLI(); //disable all interrupts
 0130 F894              cli
 0132                   .dbline 106
 0132           ;  port_init();
 0132 9ADF              xcall _port_init
 0134                   .dbline 107
 0134           ;  SPI_init();
 0134 8FDF              xcall _SPI_init
 0136                   .dbline 108
 0136           ;  MCUCR = 0x02;
 0136 82E0              ldi R24,2
 0138 85BF              out 0x35,R24
 013A                   .dbline 109
 013A           ;  GICR  = 0x40;
 013A 80E4              ldi R24,64
 013C 8BBF              out 0x3b,R24
 013E                   .dbline 110
 013E           ;  TIMSK = 0x00; //timer interrupt sources
 013E 2224              clr R2
 0140 29BE              out 0x39,R2
 0142                   .dbline 111
 0142           ;  SPI_send(abc[16]);
 0142 00911100          lds R16,_abc+16
 0146 8CDF              xcall _SPI_send
 0148                   .dbline 112
 0148           ;  SEI(); //re-enable interrupts
 0148 7894              sei
 014A           L49:
 014A                   .dbline 115
 014A                   .dbline 118
 014A           L50:
 014A                   .dbline 114
 014A FFCF              xjmp L49
 014C           X1:
 014C                   .dbline -2
 014C           L47:
 014C                   .dbline 0 ; func end
 014C 0895              ret
 014E                   .dbend

⌨️ 快捷键说明

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