📄 car.lst
字号:
015A 2422 CLR R2
015B 2433 CLR R3
015C 9230008B STS _time+1,R3
015E 9220008A STS _time,R2
(0075) LCD_write(5,0,'0'+time[0]);
0160 9180008A LDS R24,_time
0162 9190008B LDS R25,_time+1
0164 96C0 ADIW R24,0x30
0165 8399 STD Y+1,R25
0166 8388 STD Y+0,R24
0167 2722 CLR R18
0168 E005 LDI R16,5
0169 D251 RCALL _LCD_write
(0076) }
(0077) }
(0078) }
(0079) }
016A 9622 ADIW R28,2
016B D2EB RCALL pop_lset
016C 9518 RETI
(0080)
(0081) ////////////////////////////////////////
(0082) // Function : timer1_init()
(0083) // Purpose : T/C1 PWM模式初始化
(0084) //
(0085) void timer1_init(void)
(0086) {
(0087) TCCR1B = 0x00; //stop
_timer1_init:
016D 2422 CLR R2
016E BC2E OUT 0x2E,R2
(0088) TCNT1H = 0xE0; //setup
016F EE80 LDI R24,0xE0
0170 BD8D OUT 0x2D,R24
(0089) TCNT1L = 0xC0;
0171 EC80 LDI R24,0xC0
0172 BD8C OUT 0x2C,R24
(0090) OCR1AH = 0x1F;
0173 E18F LDI R24,0x1F
0174 BD8B OUT 0x2B,R24
(0091) OCR1AL = 0x40;
0175 E480 LDI R24,0x40
0176 BD8A OUT 0x2A,R24
(0092) OCR1BH = 0xFF;
0177 EF8F LDI R24,0xFF
0178 BD89 OUT 0x29,R24
(0093) OCR1BL = 0xFF;
0179 BD88 OUT 0x28,R24
(0094) TCCR1A = 0x63;
017A E683 LDI R24,0x63
017B BD8F OUT 0x2F,R24
(0095) TCCR1B = 0x01; //start Timer
017C E081 LDI R24,1
017D BD8E OUT 0x2E,R24
(0096) }
017E 9508 RET
_int0_isr:
017F 938A ST R24,-Y
0180 939A ST R25,-Y
0181 B78F IN R24,0x3F
0182 938A ST R24,-Y
(0097)
(0098) ////////////////////////////////////////
(0099) // Function : int0_isr()
(0100) // Purpose : INT0中断服务
(0101) //
(0102) #pragma interrupt_handler int0_isr:2
(0103) void int0_isr(void)
(0104) {
(0105) lcnt++;//检测的线条数目
0183 91800060 LDS R24,0x60
0185 91900061 LDS R25,0x61
0187 9601 ADIW R24,1
0188 93900061 STS 0x61,R25
018A 93800060 STS 0x60,R24
(0106) }
018C 9189 LD R24,Y+
018D BF8F OUT 0x3F,R24
018E 9199 LD R25,Y+
018F 9189 LD R24,Y+
0190 9518 RETI
_int1_isr:
0191 D2AE RCALL push_lset
0192 9722 SBIW R28,2
(0107) ///////////////////////////////////////
(0108) // Function : int1_1sr()
(0109) // Purpose : INT1中断服务
(0110) //
(0111) #pragma interrupt_handler int1_isr:3
(0112) void int1_isr(void)
(0113) {
(0114) qcnt++;
0193 91800062 LDS R24,0x62
0195 91900063 LDS R25,0x63
0197 9601 ADIW R24,1
0198 93900063 STS 0x63,R25
019A 93800062 STS 0x62,R24
(0115) if(juli[0]!=JULI/100)
019C 91000090 LDS R16,_juli
019E 91100091 LDS R17,_juli+1
01A0 D31F RCALL int2fp
01A1 933A ST R19,-Y
01A2 932A ST R18,-Y
01A3 931A ST R17,-Y
01A4 930A ST R16,-Y
01A5 E202 LDI R16,0x22
01A6 E010 LDI R17,0
01A7 D284 RCALL lpm32
01A8 933A ST R19,-Y
01A9 932A ST R18,-Y
01AA 931A ST R17,-Y
01AB 930A ST R16,-Y
01AC 91000062 LDS R16,0x62
01AE 91100063 LDS R17,0x63
01B0 D30F RCALL int2fp
01B1 933A ST R19,-Y
01B2 932A ST R18,-Y
01B3 931A ST R17,-Y
01B4 930A ST R16,-Y
01B5 D43A RCALL mpy32fs
01B6 E10E LDI R16,0x1E
01B7 E010 LDI R17,0
01B8 D273 RCALL lpm32
01B9 933A ST R19,-Y
01BA 932A ST R18,-Y
01BB 931A ST R17,-Y
01BC 930A ST R16,-Y
01BD D3AB RCALL div32fs
01BE D402 RCALL cmp32f
01BF F131 BEQ 0x01E6
(0116) {
(0117) juli[0]=JULI/100;
01C0 E202 LDI R16,0x22
01C1 E010 LDI R17,0
01C2 D269 RCALL lpm32
01C3 933A ST R19,-Y
01C4 932A ST R18,-Y
01C5 931A ST R17,-Y
01C6 930A ST R16,-Y
01C7 91000062 LDS R16,0x62
01C9 91100063 LDS R17,0x63
01CB D2F4 RCALL int2fp
01CC 933A ST R19,-Y
01CD 932A ST R18,-Y
01CE 931A ST R17,-Y
01CF 930A ST R16,-Y
01D0 D41F RCALL mpy32fs
01D1 E10E LDI R16,0x1E
01D2 E010 LDI R17,0
01D3 D258 RCALL lpm32
01D4 933A ST R19,-Y
01D5 932A ST R18,-Y
01D6 931A ST R17,-Y
01D7 930A ST R16,-Y
01D8 D392 RCALL div32f
01D9 D2A8 RCALL fp2int
01DA 93100091 STS _juli+1,R17
01DC 93000090 STS _juli,R16
(0118) LCD_write(5,1,'0'+juli[0]);
01DE 2F80 MOV R24,R16
01DF 2F91 MOV R25,R17
01E0 96C0 ADIW R24,0x30
01E1 8399 STD Y+1,R25
01E2 8388 STD Y+0,R24
01E3 E021 LDI R18,1
01E4 E005 LDI R16,5
01E5 D1D5 RCALL _LCD_write
(0119) }
(0120) if(juli[1]!=(JULI-juli[0]*100)/10)
01E6 91000092 LDS R16,_juli+2
01E8 91100093 LDS R17,_juli+3
01EA D2D5 RCALL int2fp
01EB 933A ST R19,-Y
01EC 932A ST R18,-Y
01ED 931A ST R17,-Y
01EE 930A ST R16,-Y
01EF E202 LDI R16,0x22
01F0 E010 LDI R17,0
01F1 D23A RCALL lpm32
01F2 933A ST R19,-Y
01F3 932A ST R18,-Y
01F4 931A ST R17,-Y
01F5 930A ST R16,-Y
01F6 91000062 LDS R16,0x62
01F8 91100063 LDS R17,0x63
01FA D2C5 RCALL int2fp
01FB 933A ST R19,-Y
01FC 932A ST R18,-Y
01FD 931A ST R17,-Y
01FE 930A ST R16,-Y
01FF D3F0 RCALL mpy32fs
0200 91200090 LDS R18,_juli
0202 91300091 LDS R19,_juli+1
0204 E604 LDI R16,0x64
0205 E010 LDI R17,0
0206 D267 RCALL mpy16s
0207 D2B8 RCALL int2fp
0208 933A ST R19,-Y
0209 932A ST R18,-Y
020A 931A ST R17,-Y
020B 930A ST R16,-Y
020C D30D RCALL sub32fs
020D E10A LDI R16,0x1A
020E E010 LDI R17,0
020F D21C RCALL lpm32
0210 933A ST R19,-Y
0211 932A ST R18,-Y
0212 931A ST R17,-Y
0213 930A ST R16,-Y
0214 D354 RCALL div32fs
0215 D3AB RCALL cmp32f
0216 F199 BEQ 0x024A
(0121) {
(0122) juli[1]=(JULI-juli[0]*100)/10;
0217 E202 LDI R16,0x22
0218 E010 LDI R17,0
0219 D212 RCALL lpm32
021A 933A ST R19,-Y
021B 932A ST R18,-Y
021C 931A ST R17,-Y
021D 930A ST R16,-Y
021E 91000062 LDS R16,0x62
0220 91100063 LDS R17,0x63
0222 D29D RCALL int2fp
0223 933A ST R19,-Y
0224 932A ST R18,-Y
0225 931A ST R17,-Y
0226 930A ST R16,-Y
0227 D3C8 RCALL mpy32fs
0228 91200090 LDS R18,_juli
022A 91300091 LDS R19,_juli+1
022C E604 LDI R16,0x64
022D E010 LDI R17,0
022E D23F RCALL mpy16s
022F D290 RCALL int2fp
0230 933A ST R19,-Y
0231 932A ST R18,-Y
0232 931A ST R17,-Y
0233 930A ST R16,-Y
0234 D2E5 RCALL sub32fs
0235 E10A LDI R16,0x1A
0236 E010 LDI R17,0
0237 D1F4 RCALL lpm32
0238 933A ST R19,-Y
0239 932A ST R18,-Y
023A 931A ST R17,-Y
023B 930A ST R16,-Y
023C D32E RCALL div32f
023D D244 RCALL fp2int
023E 93100093 STS _juli+3,R17
0240 93000092 STS _juli+2,R16
(0123) LCD_write(6,1,'0'+juli[1]);
0242 2F80 MOV R24,R16
0243 2F91 MOV R25,R17
0244 96C0 ADIW R24,0x30
0245 8399 STD Y+1,R25
0246 8388 STD Y+0,R24
0247 E021 LDI R18,1
0248 E006 LDI R16,6
0249 D171 RCALL _LCD_write
(0124) }
(0125) if(juli[2]!=JULI-juli[1]*10-juli[0]*100)
024A 91000094 LDS R16,0x94
024C 91100095 LDS R17,0x95
024E D271 RCALL int2fp
024F 933A ST R19,-Y
0250 932A ST R18,-Y
0251 931A ST R17,-Y
0252 930A ST R16,-Y
0253 E202 LDI R16,0x22
0254 E010 LDI R17,0
0255 D1D6 RCALL lpm32
0256 933A ST R19,-Y
0257 932A ST R18,-Y
0258 931A ST R17,-Y
0259 930A ST R16,-Y
025A 91000062 LDS R16,0x62
025C 91100063 LDS R17,0x63
025E D261 RCALL int2fp
025F 933A ST R19,-Y
0260 932A ST R18,-Y
0261 931A ST R17,-Y
0262 930A ST R16,-Y
0263 D38C RCALL mpy32fs
0264 91200092 LDS R18,_juli+2
0266 91300093 LDS R19,_juli+3
0268 E00A LDI R16,0xA
0269 E010 LDI R17,0
026A D203 RCALL mpy16s
026B D254 RCALL int2fp
026C 933A ST R19,-Y
026D 932A ST R18,-Y
026E 931A ST R17,-Y
026F 930A ST R16,-Y
0270 D2A9 RCALL sub32fs
0271 91200090 LDS R18,_juli
0273 91300091 LDS R19,_juli+1
0275 E604 LDI R16,0x64
0276 E010 LDI R17,0
0277 D1F6 RCALL mpy16s
0278 D247 RCALL int2fp
0279 933A ST R19,-Y
027A 932A ST R18,-Y
027B 931A ST R17,-Y
027C 930A ST R16,-Y
027D D29C RCALL sub32fs
027E D342 RCALL cmp32f
027F F409 BNE 0x0281
0280 C038 RJMP 0x02B9
(0126) {
(0127) juli[2]=JULI-juli[1]*10-juli[0]*100;
0281 E202 LDI R16,0x22
0282 E010 LDI R17,0
0283 D1A8 RCALL lpm32
0284 933A ST R19,-Y
0285 932A ST R18,-Y
0286 931A ST R17,-Y
0287 930A ST R16,-Y
0288 91000062 LDS R16,0x62
028A 91100063 LDS R17,0x63
028C D233 RCALL int2fp
028D 933A ST R19,-Y
028E 932A ST R18,-Y
028F 931A ST R17,-Y
0290 930A ST R16,-Y
0291 D35E RCALL mpy32fs
0292 91200092 LDS R18,_juli+2
0294 91300093 LDS R19,_juli+3
0296 E00A LDI R16,0xA
0297 E010 LDI R17,0
0298 D1D5 RCALL mpy16s
0299 D226 RCALL int2fp
029A 933A ST R19,-Y
029B 932A ST R18,-Y
029C 931A ST R17,-Y
029D 930A ST R16,-Y
029E D27B RCALL sub32fs
029F 91200090 LDS R18,_juli
02A1 91300091 LDS R19,_juli+1
02A3 E604 LDI R16,0x64
02A4 E010 LDI R17,0
02A5 D1C8 RCALL mpy16s
02A6 D219 RCALL int2fp
02A7 933A ST R19,-Y
02A8 932A ST R18,-Y
02A9 931A ST R17,-Y
02AA 930A ST R16,-Y
02AB D270 RCALL sub32f
02AC D1D5 RCALL fp2int
02AD 93100095 STS 0x95,R17
02AF 93000094 STS 0x94,R16
(0128) LCD_write(8,1,'0'+juli[2]);
02B1 2F80 MOV R24,R16
02B2 2F91 MOV R25,R17
02B3 96C0 ADIW R24,0x30
02B4 8399 STD Y+1,R25
02B5 8388 STD Y+0,R24
02B6 E021 LDI R18,1
02B7 E008 LDI R16,0x8
02B8 D102 RCALL _LCD_write
(0129) }
(0130) }
02B9 9622 ADIW R28,2
02BA D19C RCALL pop_lset
02BB 9518 RETI
(0131)
(0132) ////////////////////////////////
(0133) // Function : init_devices()
(0134) // Purpose : 硬件初始化
(0135) //
(0136) void init_devices(void)
(0137) {
(0138) CLI();
_init_devices:
02BC 94F8 BCLR 7
(0139) port_init();
02BD DE12 RCALL _port_init
(0140) timer0_init();
02BE DE1C RCALL _timer0_init
(0141) timer1_init();
02BF DEAD RCALL _timer1_init
(0142) PORTA&=0xC0;
02C0 B38B IN R24,0x1B
02C1 7C80 ANDI R24,0xC0
02C2 BB8B OUT 0x1B,R24
(0143) PORTB=0xFF;
02C3 EF8F LDI R24,0xFF
02C4 BB88 OUT 0x18,R24
(0144) MCUCR = 0x0F;
02C5 E08F LDI R24,0xF
02C6 BF85 OUT 0x35,R24
(0145) GIMSK = 0xC0;
02C7 EC80 LDI R24,0xC0
02C8 BF8B OUT 0x3B,R24
(0146) TIMSK = 0x02;
02C9 E082 LDI R24,2
02CA BF89 OUT 0x39,R24
(0147) SEI();
02CB 9478 BSET 7
(0148) }
02CC 9508 RET
(0149)
(0150) ///////////////////////////////
(0151) // 控制车速函数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -