car_main.lis

来自「基于m16的寻迹小车(包含小车题目」· LIS 代码 · 共 1,632 行 · 第 1/5 页

LIS
1,632
字号
 006A 1127              clr R17
 006C DBDF              xcall _PwmBSet
 006E                   .dbline -2
 006E           L9:
 006E                   .dbline 0 ; func end
 006E 0895              ret
 0070                   .dbend
 0070                   .dbfunc e LightOnOff _LightOnOff fV
 0070           ;          onoff -> R16
                        .even
 0070           _LightOnOff::
 0070                   .dbline -1
 0070                   .dbline 111
 0070           ; }
 0070           ; 
 0070           ; //--------------------------------------------声光报警
 0070           ; void LightOnOff (uchar onoff)
 0070           ; {
 0070                   .dbline 112
 0070           ;       DDRC |= (1 << PC0);
 0070 A09A              sbi 0x14,0
 0072                   .dbline 114
 0072           ;       
 0072           ;       if (onoff == OFF) {
 0072 0023              tst R16
 0074 11F4              brne L11
 0076           X0:
 0076                   .dbline 114
 0076                   .dbline 115
 0076           ;               PORTC &=~ (1 << PC0);
 0076 A898              cbi 0x15,0
 0078                   .dbline 116
 0078           ;       }
 0078 03C0              xjmp L12
 007A           L11:
 007A                   .dbline 118
 007A           ; 
 007A           ;       else if (onoff == ON) {
 007A 0130              cpi R16,1
 007C 09F4              brne L13
 007E           X1:
 007E                   .dbline 118
 007E                   .dbline 119
 007E           ;               PORTC |= (1 << PC0);
 007E A89A              sbi 0x15,0
 0080                   .dbline 120
 0080           ;       }               
 0080           L13:
 0080           L12:
 0080                   .dbline -2
 0080           L10:
 0080                   .dbline 0 ; func end
 0080 0895              ret
 0082                   .dbsym r onoff 16 c
 0082                   .dbend
                        .area data(ram, con, rel)
 0012                   .dbfile d:\我的文档\桌面\小车\car1\car_main.c
 0012           _T2_int_n::
 0012                   .blkb 1
                        .area idata
 0012 00                .byte 0
                        .area data(ram, con, rel)
 0013                   .dbfile d:\我的文档\桌面\小车\car1\car_main.c
 0013                   .dbsym e T2_int_n _T2_int_n c
 0013           _T2_1s_set_n::
 0013                   .blkb 4
                        .area idata
 0013 00000000          .word 0,0
                        .area data(ram, con, rel)
 0017                   .dbfile d:\我的文档\桌面\小车\car1\car_main.c
 0017                   .dbsym e T2_1s_set_n _T2_1s_set_n l
 0017           _T2_1s_set::
 0017                   .blkb 1
                        .area idata
 0017 00                .byte 0
                        .area data(ram, con, rel)
 0018                   .dbfile d:\我的文档\桌面\小车\car1\car_main.c
 0018                   .dbsym e T2_1s_set _T2_1s_set c
                        .area text(rom, con, rel)
 0082                   .dbfile d:\我的文档\桌面\小车\car1\car_main.c
 0082                   .dbfunc e timer2_init _timer2_init fV
                        .even
 0082           _timer2_init::
 0082                   .dbline -1
 0082                   .dbline 136
 0082           ; }
 0082           ; 
 0082           ; /*------------------------------------end car active ----------------------------------------*/
 0082           ; 
 0082           ; /*------------------------------------TIME ----------------------------------------*/
 0082           ; uchar T2_int_n = 0;    //定时器25ms溢出次数
 0082           ; unsigned long int T2_1s_set_n = 0; //1s次数
 0082           ; uchar T2_1s_set = 0;
 0082           ; 
 0082           ; 
 0082           ; //TIMER2 initialize - prescale:1024
 0082           ; // WGM: CTC
 0082           ; // desired value: 25mSec
 0082           ; // actual value: 25.088mSec (0.4%)
 0082           ; void timer2_init(void)
 0082           ; {
 0082                   .dbline 137
 0082           ;  TCCR2 = 0x00; //stop
 0082 2224              clr R2
 0084 25BC              out 0x25,R2
 0086                   .dbline 138
 0086           ;  ASSR  = 0x00; //set async mode
 0086 22BC              out 0x22,R2
 0088                   .dbline 139
 0088           ;  TCNT2 = 0x3D; //setup
 0088 8DE3              ldi R24,61
 008A 84BD              out 0x24,R24
 008C                   .dbline 140
 008C           ;  OCR2  = 0xC3;
 008C 83EC              ldi R24,195
 008E 83BD              out 0x23,R24
 0090                   .dbline 141
 0090           ;  TCCR2 = 0x0F; //start
 0090 8FE0              ldi R24,15
 0092 85BD              out 0x25,R24
 0094                   .dbline -2
 0094           L15:
 0094                   .dbline 0 ; func end
 0094 0895              ret
 0096                   .dbend
                        .area vector(rom, abs)
                        .org 12
 000C 0C944B00          jmp _timer2_comp_isr
                        .area text(rom, con, rel)
 0096                   .dbfile d:\我的文档\桌面\小车\car1\car_main.c
 0096                   .dbfunc e timer2_comp_isr _timer2_comp_isr fV
                        .even
 0096           _timer2_comp_isr::
 0096 0A92              st -y,R0
 0098 1A92              st -y,R1
 009A 2A92              st -y,R2
 009C 3A92              st -y,R3
 009E 4A92              st -y,R4
 00A0 5A92              st -y,R5
 00A2 8A93              st -y,R24
 00A4 9A93              st -y,R25
 00A6 AA93              st -y,R26
 00A8 BA93              st -y,R27
 00AA 0FB6              in R0,0x3f
 00AC 0A92              st -y,R0
 00AE                   .dbline -1
 00AE                   .dbline 146
 00AE           ; }
 00AE           ; 
 00AE           ; #pragma interrupt_handler timer2_comp_isr:iv_TIM2_COMP
 00AE           ; void timer2_comp_isr(void)
 00AE           ; {
 00AE                   .dbline 149
 00AE           ;  //compare occured TCNT2=OCR2
 00AE           ;  //compare occured TCNT0=OCR0
 00AE           ;       if((T2_int_n++) == 40) {  //25ms溢出, 40次则1s
 00AE 20901200          lds R2,_T2_int_n
 00B2 3324              clr R3
 00B4 822D              mov R24,R2
 00B6 8F5F              subi R24,255    ; addi 1
 00B8 80931200          sts _T2_int_n,R24
 00BC 822D              mov R24,R2
 00BE 8832              cpi R24,40
 00C0 F1F4              brne L17
 00C2           X2:
 00C2                   .dbline 149
 00C2                   .dbline 150
 00C2           ;               T2_1s_set = 1;
 00C2 81E0              ldi R24,1
 00C4 80931700          sts _T2_1s_set,R24
 00C8                   .dbline 151
 00C8           ;               T2_1s_set_n ++;  //置位1s
 00C8 81E0              ldi R24,1
 00CA 90E0              ldi R25,0
 00CC A0E0              ldi R26,0
 00CE B0E0              ldi R27,0
 00D0 40901500          lds R4,_T2_1s_set_n+2
 00D4 50901600          lds R5,_T2_1s_set_n+2+1
 00D8 20901300          lds R2,_T2_1s_set_n
 00DC 30901400          lds R3,_T2_1s_set_n+1
 00E0 280E              add R2,R24
 00E2 391E              adc R3,R25
 00E4 4A1E              adc R4,R26
 00E6 5B1E              adc R5,R27
 00E8 30921400          sts _T2_1s_set_n+1,R3
 00EC 20921300          sts _T2_1s_set_n,R2
 00F0 50921600          sts _T2_1s_set_n+2+1,R5
 00F4 40921500          sts _T2_1s_set_n+2,R4
 00F8                   .dbline 152
 00F8           ;               T2_int_n = 0;  //溢出次数清0
 00F8 2224              clr R2
 00FA 20921200          sts _T2_int_n,R2
 00FE                   .dbline 153
 00FE           ;       }
 00FE           L17:
 00FE                   .dbline -2
 00FE           L16:
 00FE                   .dbline 0 ; func end
 00FE 0990              ld R0,y+
 0100 0FBE              out 0x3f,R0
 0102 B991              ld R27,y+
 0104 A991              ld R26,y+
 0106 9991              ld R25,y+
 0108 8991              ld R24,y+
 010A 5990              ld R5,y+
 010C 4990              ld R4,y+
 010E 3990              ld R3,y+
 0110 2990              ld R2,y+
 0112 1990              ld R1,y+
 0114 0990              ld R0,y+
 0116 1895              reti
 0118                   .dbend
 0118                   .dbfunc e Time2OnOff _Time2OnOff fV
 0118           ;          onoff -> R16
                        .even
 0118           _Time2OnOff::
 0118                   .dbline -1
 0118                   .dbline 159
 0118           ; }
 0118           ; 
 0118           ; 
 0118           ; //计时开始停止控制
 0118           ; void Time2OnOff (uchar onoff)
 0118           ; {
 0118                   .dbline 160
 0118           ;       if (onoff == ON) {
 0118 0130              cpi R16,1
 011A 21F4              brne L20
 011C           X3:
 011C                   .dbline 160
 011C                   .dbline 161
 011C           ;               TIMSK |= (1 << OCIE2);  //开时间中断
 011C 89B7              in R24,0x39
 011E 8068              ori R24,128
 0120 89BF              out 0x39,R24
 0122                   .dbline 162
 0122           ;       }
 0122 05C0              xjmp L21
 0124           L20:
 0124                   .dbline 164
 0124           ; 
 0124           ;       else if (onoff == OFF) {
 0124 0023              tst R16
 0126 19F4              brne L22
 0128           X4:
 0128                   .dbline 164
 0128                   .dbline 165
 0128           ;               TIMSK &=~ (1 << OCIE2);  //禁止时间中断
 0128 89B7              in R24,0x39
 012A 8F77              andi R24,127
 012C 89BF              out 0x39,R24
 012E                   .dbline 166
 012E           ;       }               
 012E           L22:
 012E           L21:
 012E                   .dbline -2
 012E           L19:
 012E                   .dbline 0 ; func end
 012E 0895              ret
 0130                   .dbsym r onoff 16 c
 0130                   .dbend
                        .area data(ram, con, rel)
 0018                   .dbfile d:\我的文档\桌面\小车\car1\car_main.c
 0018           _T0_10_n::
 0018                   .blkb 4
                        .area idata
 0018 00000000          .word 0,0
                        .area data(ram, con, rel)
 001C                   .dbfile d:\我的文档\桌面\小车\car1\car_main.c
 001C                   .dbsym e T0_10_n _T0_10_n l
 001C           _T0_10_set::
 001C                   .blkb 1
                        .area idata
 001C 00                .byte 0
                        .area data(ram, con, rel)
 001D                   .dbfile d:\我的文档\桌面\小车\car1\car_main.c
 001D                   .dbsym e T0_10_set _T0_10_set c
                        .area text(rom, con, rel)
 0130                   .dbfile d:\我的文档\桌面\小车\car1\car_main.c
 0130                   .dbfunc e timer0_init _timer0_init fV
                        .even
 0130           _timer0_init::
 0130                   .dbline -1
 0130                   .dbline 177
 0130           ; }
 0130           ; 
 0130           ; //-----------------------T0------------------------------------
 0130           ; unsigned long int T0_10_n = 0;  //处部计数满10后溢出次数, 周长 = [((10 * T0_10_n) + TCNT0) / 5 ]* LENGHT_PER_CIRCLE
 0130           ; uchar T0_10_set = 0;
 0130           ; //TIMER0 initialize - prescale:Falling edge
 0130           ; // WGM: CTC
 0130           ; // desired value: 1Hz
 0130           ; // actual value: Out of range
 0130           ; void timer0_init(void)
 0130           ; {
 0130                   .dbline 178
 0130           ;  TCCR0 = 0x00; //stop
 0130 2224              clr R2
 0132 23BE              out 0x33,R2
 0134                   .dbline 179
 0134           ;  OCR0  = 9 /*INVALID SETTING*/;  //set compare
 0134 89E0              ldi R24,9
 0136 8CBF              out 0x3c,R24
 0138                   .dbline 180
 0138           ;  TCCR0 = 0x0E; //start timer
 0138 8EE0              ldi R24,14
 013A 83BF              out 0x33,R24
 013C                   .dbline -2
 013C           L24:
 013C                   .dbline 0 ; func end
 013C 0895              ret
 013E                   .dbend
                        .area vector(rom, abs)
                        .org 76
 004C 0C949F00          jmp _timer0_comp_isr
                        .area text(rom, con, rel)
 013E                   .dbfile d:\我的文档\桌面\小车\car1\car_main.c
 013E                   .dbfunc e timer0_comp_isr _timer0_comp_isr fV
                        .even
 013E           _timer0_comp_isr::
 013E 2A92              st -y,R2
 0140 3A92              st -y,R3
 0142 4A92              st -y,R4
 0144 5A92              st -y,R5
 0146 8A92              st -y,R8
 0148 9A92              st -y,R9
 014A 8A93              st -y,R24

⌨️ 快捷键说明

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