📄 car_init.lis
字号:
0142 .dbfunc e int0_isr _int0_isr fV
.even
0142 _int0_isr::
0142 8A93 st -y,R24
0144 9A93 st -y,R25
0146 8FB7 in R24,0x3f
0148 8A93 st -y,R24
014A .dbline -1
014A .dbline 107
014A ;
014A ; ////////////////////////////////////////
014A ; // Function : int0_isr()
014A ; // Purpose : INT0中断服务
014A ; //
014A ;
014A ; #pragma interrupt_handler int0_isr:2
014A ; void int0_isr(void)
014A ; {
014A .dbline 108
014A ; lcnt++;//检测的线条数目
014A 80910000 lds R24,_lcnt
014E 90910100 lds R25,_lcnt+1
0152 0196 adiw R24,1
0154 90930100 sts _lcnt+1,R25
0158 80930000 sts _lcnt,R24
015C .dbline -2
015C .dbline 109
015C ; }
015C L27:
015C 8991 ld R24,y+
015E 8FBF out 0x3f,R24
0160 9991 ld R25,y+
0162 8991 ld R24,y+
0164 .dbline 0 ; func end
0164 1895 reti
0166 .dbend
.area vector(rom, abs)
.org 4
0004 B3C0 rjmp _int1_isr
.area text(rom, con, rel)
0166 .dbfile C:\DOCUME~1\Administrator\桌面\Car&Lcd\car_init.c
0166 .dbfunc e int1_isr _int1_isr fV
.even
0166 _int1_isr::
0166 00D0 rcall push_lset
0168 2297 sbiw R28,2
016A .dbline -1
016A .dbline 117
016A ; ///////////////////////////////////////
016A ; // Function : int1_1sr()
016A ; // Purpose : INT1中断服务
016A ; //
016A ;
016A ; #pragma interrupt_handler int1_isr:3
016A ; void int1_isr(void)
016A ; {
016A .dbline 118
016A ; qcnt++;
016A 80910000 lds R24,_qcnt
016E 90910100 lds R25,_qcnt+1
0172 0196 adiw R24,1
0174 90930100 sts _qcnt+1,R25
0178 80930000 sts _qcnt,R24
017C .dbline 119
017C ; juli[0]=JULI/100; //距离换算
017C 00E0 ldi R16,<L29
017E 10E0 ldi R17,>L29
0180 00D0 rcall lpm32
0182 3A93 st -y,R19
0184 2A93 st -y,R18
0186 1A93 st -y,R17
0188 0A93 st -y,R16
018A 00910000 lds R16,_qcnt
018E 10910100 lds R17,_qcnt+1
0192 00D0 rcall int2fp
0194 3A93 st -y,R19
0196 2A93 st -y,R18
0198 1A93 st -y,R17
019A 0A93 st -y,R16
019C 00D0 rcall mpy32fs
019E 00E0 ldi R16,<L30
01A0 10E0 ldi R17,>L30
01A2 00D0 rcall lpm32
01A4 3A93 st -y,R19
01A6 2A93 st -y,R18
01A8 1A93 st -y,R17
01AA 0A93 st -y,R16
01AC 00D0 rcall div32f
01AE 00D0 rcall fp2int
01B0 10930100 sts _juli+1,R17
01B4 00930000 sts _juli,R16
01B8 .dbline 120
01B8 ; juli[1]=(JULI-juli[0]*100)/10;
01B8 00E0 ldi R16,<L29
01BA 10E0 ldi R17,>L29
01BC 00D0 rcall lpm32
01BE 3A93 st -y,R19
01C0 2A93 st -y,R18
01C2 1A93 st -y,R17
01C4 0A93 st -y,R16
01C6 00910000 lds R16,_qcnt
01CA 10910100 lds R17,_qcnt+1
01CE 00D0 rcall int2fp
01D0 3A93 st -y,R19
01D2 2A93 st -y,R18
01D4 1A93 st -y,R17
01D6 0A93 st -y,R16
01D8 00D0 rcall mpy32fs
01DA 20910000 lds R18,_juli
01DE 30910100 lds R19,_juli+1
01E2 04E6 ldi R16,100
01E4 10E0 ldi R17,0
01E6 00D0 rcall mpy16s
01E8 00D0 rcall int2fp
01EA 3A93 st -y,R19
01EC 2A93 st -y,R18
01EE 1A93 st -y,R17
01F0 0A93 st -y,R16
01F2 00D0 rcall sub32fs
01F4 00E0 ldi R16,<L32
01F6 10E0 ldi R17,>L32
01F8 00D0 rcall lpm32
01FA 3A93 st -y,R19
01FC 2A93 st -y,R18
01FE 1A93 st -y,R17
0200 0A93 st -y,R16
0202 00D0 rcall div32f
0204 00D0 rcall fp2int
0206 10930300 sts _juli+2+1,R17
020A 00930200 sts _juli+2,R16
020E .dbline 121
020E ; juli[2]=JULI-juli[1]*10-juli[0]*100;
020E 00E0 ldi R16,<L29
0210 10E0 ldi R17,>L29
0212 00D0 rcall lpm32
0214 3A93 st -y,R19
0216 2A93 st -y,R18
0218 1A93 st -y,R17
021A 0A93 st -y,R16
021C 00910000 lds R16,_qcnt
0220 10910100 lds R17,_qcnt+1
0224 00D0 rcall int2fp
0226 3A93 st -y,R19
0228 2A93 st -y,R18
022A 1A93 st -y,R17
022C 0A93 st -y,R16
022E 00D0 rcall mpy32fs
0230 20910200 lds R18,_juli+2
0234 30910300 lds R19,_juli+2+1
0238 0AE0 ldi R16,10
023A 10E0 ldi R17,0
023C 00D0 rcall mpy16s
023E 00D0 rcall int2fp
0240 3A93 st -y,R19
0242 2A93 st -y,R18
0244 1A93 st -y,R17
0246 0A93 st -y,R16
0248 00D0 rcall sub32fs
024A 20910000 lds R18,_juli
024E 30910100 lds R19,_juli+1
0252 04E6 ldi R16,100
0254 10E0 ldi R17,0
0256 00D0 rcall mpy16s
0258 00D0 rcall int2fp
025A 3A93 st -y,R19
025C 2A93 st -y,R18
025E 1A93 st -y,R17
0260 0A93 st -y,R16
0262 00D0 rcall sub32f
0264 00D0 rcall fp2int
0266 10930500 sts _juli+4+1,R17
026A 00930400 sts _juli+4,R16
026E .dbline 122
026E ; LCD_write(5,1,'0'+juli[0]);
026E 80910000 lds R24,_juli
0272 90910100 lds R25,_juli+1
0276 C096 adiw R24,48
0278 9983 std y+1,R25
027A 8883 std y+0,R24
027C 21E0 ldi R18,1
027E 05E0 ldi R16,5
0280 00D0 rcall _LCD_write
0282 .dbline 123
0282 ; LCD_write(6,1,'0'+juli[1]);
0282 80910200 lds R24,_juli+2
0286 90910300 lds R25,_juli+2+1
028A C096 adiw R24,48
028C 9983 std y+1,R25
028E 8883 std y+0,R24
0290 21E0 ldi R18,1
0292 06E0 ldi R16,6
0294 00D0 rcall _LCD_write
0296 .dbline 124
0296 ; LCD_write(8,1,'0'+juli[2]);
0296 80910400 lds R24,_juli+4
029A 90910500 lds R25,_juli+4+1
029E C096 adiw R24,48
02A0 9983 std y+1,R25
02A2 8883 std y+0,R24
02A4 21E0 ldi R18,1
02A6 08E0 ldi R16,8
02A8 00D0 rcall _LCD_write
02AA .dbline -2
02AA .dbline 125
02AA ; }
02AA L28:
02AA 2296 adiw R28,2
02AC 00D0 rcall pop_lset
02AE .dbline 0 ; func end
02AE 1895 reti
02B0 .dbend
02B0 .dbfunc e init_devices _init_devices fV
.even
02B0 _init_devices::
02B0 .dbline -1
02B0 .dbline 133
02B0 ;
02B0 ; ////////////////////////////////
02B0 ; // Function : init_devices()
02B0 ; // Purpose : 硬件初始化
02B0 ; //
02B0 ;
02B0 ; void init_devices(void)
02B0 ; {
02B0 .dbline 134
02B0 ; CLI();
02B0 F894 cli
02B2 .dbline 135
02B2 ; port_init();
02B2 A6DE rcall _port_init
02B4 .dbline 136
02B4 ; timer0_init();
02B4 B0DE rcall _timer0_init
02B6 .dbline 137
02B6 ; timer1_init();
02B6 33DF rcall _timer1_init
02B8 .dbline 138
02B8 ; PORTA&=0xC0;
02B8 8BB3 in R24,0x1b
02BA 807C andi R24,192
02BC 8BBB out 0x1b,R24
02BE .dbline 139
02BE ; PORTB=0xFF;
02BE 8FEF ldi R24,255
02C0 88BB out 0x18,R24
02C2 .dbline 140
02C2 ; MCUCR = 0x0F;
02C2 8FE0 ldi R24,15
02C4 85BF out 0x35,R24
02C6 .dbline 141
02C6 ; GIMSK = 0xC0;
02C6 80EC ldi R24,192
02C8 8BBF out 0x3b,R24
02CA .dbline 142
02CA ; TIMSK = 0x02;
02CA 82E0 ldi R24,2
02CC 89BF out 0x39,R24
02CE .dbline 143
02CE ; SEI();
02CE 7894 sei
02D0 .dbline -2
02D0 .dbline 144
02D0 ; }
02D0 L37:
02D0 .dbline 0 ; func end
02D0 0895 ret
02D2 .dbend
02D2 .dbfunc e shifth _shifth fV
.even
02D2 _shifth::
02D2 .dbline -1
02D2 .dbline 150
02D2 ;
02D2 ; ///////////////////////////////
02D2 ; // 控制车速函数
02D2 ; //
02D2 ; void shifth(void) //控制高速
02D2 ; {
02D2 .dbline 151
02D2 ; OCR1BH = 0xFF;
02D2 8FEF ldi R24,255
02D4 89BD out 0x29,R24
02D6 .dbline 152
02D6 ; OCR1BL = 0xFF;
02D6 88BD out 0x28,R24
02D8 .dbline -2
02D8 .dbline 153
02D8 ; }
02D8 L38:
02D8 .dbline 0 ; func end
02D8 0895 ret
02DA .dbend
02DA .dbfunc e stop _stop fV
.even
02DA _stop::
02DA .dbline -1
02DA .dbline 156
02DA ;
02DA ; void stop(void) //制动
02DA ; {
02DA .dbline 157
02DA ; OCR1BH = 0x00;
02DA 2224 clr R2
02DC 29BC out 0x29,R2
02DE .dbline 158
02DE ; OCR1BL = 0x00;
02DE 28BC out 0x28,R2
02E0 .dbline -2
02E0 .dbline 159
02E0 ; }
02E0 L39:
02E0 .dbline 0 ; func end
02E0 0895 ret
02E2 .dbend
02E2 .dbfunc e shiftl _shiftl fV
.even
02E2 _shiftl::
02E2 .dbline -1
02E2 .dbline 162
02E2 ;
02E2 ; void shiftl(void) //控制低速
02E2 ; {
02E2 .dbline 163
02E2 ; OCR1BH = 0x01;
02E2 81E0 ldi R24,1
02E4 89BD out 0x29,R24
02E6 .dbline 164
02E6 ; OCR1BL = 0x7F;
02E6 8FE7 ldi R24,127
02E8 88BD out 0x28,R24
02EA .dbline -2
02EA .dbline 165
02EA ; }
02EA L40:
02EA .dbline 0 ; func end
02EA 0895 ret
02EC .dbend
.area lit(rom, con, rel)
0000 L32:
0000 00002041 .word 0x0,0x4120
0004 L30:
0004 0000C842 .word 0x0,0x42c8
0008 L29:
0008 6891AD3F .word 0x9168,0x3fad
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -