📄 ac19-1.lst
字号:
0171 925A ST R5,-Y
0172 924A ST R4,-Y
0173 923A ST R3,-Y
0174 922A ST R2,-Y
0175 E708 LDI R16,0x78
0176 E010 LDI R17,0
0177 940E0411 CALL lpm32
0179 933A ST R19,-Y
017A 932A ST R18,-Y
017B 931A ST R17,-Y
017C 930A ST R16,-Y
017D 940E0585 CALL cmp32f
017F F0D4 BLT 0x019A
0180 01FE MOVW R30,R28
0181 8021 LDD R2,Z+1
0182 8032 LDD R3,Z+2
0183 8043 LDD R4,Z+3
0184 8054 LDD R5,Z+4
0185 925A ST R5,-Y
0186 924A ST R4,-Y
0187 923A ST R3,-Y
0188 922A ST R2,-Y
0189 E708 LDI R16,0x78
018A E010 LDI R17,0
018B 940E0411 CALL lpm32
018D 933A ST R19,-Y
018E 932A ST R18,-Y
018F 931A ST R17,-Y
0190 930A ST R16,-Y
0191 940E04D2 CALL sub32f
0193 940E0425 CALL fp2int
0195 01C8 MOVW R24,R16
0196 5080 SUBI R24,0
0197 4890 SBCI R25,0x80
0198 015C MOVW R10,R24
0199 C008 RJMP 0x01A2
019A 01FE MOVW R30,R28
019B 8101 LDD R16,Z+1
019C 8112 LDD R17,Z+2
019D 8123 LDD R18,Z+3
019E 8134 LDD R19,Z+4
019F 940E0425 CALL fp2int
01A1 0158 MOVW R10,R16
01A2 92B00076 STS DisVal+1,R11
01A4 92A00075 STS DisVal,R10
(0127)
(0128) disx[3]=(DisVal/1000)%10;disx[2]=(DisVal/100)%10;
01A6 EE28 LDI R18,0xE8
01A7 E033 LDI R19,3
01A8 0185 MOVW R16,R10
01A9 940E03C6 CALL div16u
01AB E02A LDI R18,0xA
01AC E030 LDI R19,0
01AD 940E03C4 CALL mod16u
01AF 9310006C STS 0x6C,R17
01B1 9300006B STS 0x6B,R16
01B3 E624 LDI R18,0x64
01B4 E030 LDI R19,0
01B5 91000075 LDS R16,DisVal
01B7 91100076 LDS R17,DisVal+1
01B9 940E03C6 CALL div16u
01BB E02A LDI R18,0xA
01BC E030 LDI R19,0
01BD 940E03C4 CALL mod16u
01BF 9310006A STS 0x6A,R17
01C1 93000069 STS 0x69,R16
(0129) disx[1]=(DisVal%100)/10;disx[0]=DisVal%10;
01C3 E624 LDI R18,0x64
01C4 E030 LDI R19,0
01C5 91000075 LDS R16,DisVal
01C7 91100076 LDS R17,DisVal+1
01C9 940E03C4 CALL mod16u
01CB E02A LDI R18,0xA
01CC E030 LDI R19,0
01CD 940E03C6 CALL div16u
01CF 93100068 STS disx+3,R17
01D1 93000067 STS disx+2,R16
01D3 E02A LDI R18,0xA
01D4 E030 LDI R19,0
01D5 91000075 LDS R16,DisVal
01D7 91100076 LDS R17,DisVal+1
01D9 940E03C4 CALL mod16u
01DB 93100066 STS disx+1,R17
01DD 93000065 STS disx,R16
(0130) DisplayOneChar(4,1,disx[3]+0x30);//显示数据
01DF 9180006B LDS R24,0x6B
01E1 9190006C LDS R25,0x6C
01E3 96C0 ADIW R24,0x30
01E4 8388 STD Y+0,R24
01E5 E021 LDI R18,1
01E6 E004 LDI R16,4
01E7 940E033E CALL _DisplayOneChar
(0131) DisplayOneChar(5,1,disx[2]+0x30);
01E9 91800069 LDS R24,0x69
01EB 9190006A LDS R25,0x6A
01ED 96C0 ADIW R24,0x30
01EE 8388 STD Y+0,R24
01EF E021 LDI R18,1
01F0 E005 LDI R16,5
01F1 940E033E CALL _DisplayOneChar
(0132) DisplayOneChar(6,1,disx[1]+0x30);
01F3 91800067 LDS R24,disx+2
01F5 91900068 LDS R25,disx+3
01F7 96C0 ADIW R24,0x30
01F8 8388 STD Y+0,R24
01F9 E021 LDI R18,1
01FA E006 LDI R16,6
01FB 940E033E CALL _DisplayOneChar
(0133) DisplayOneChar(7,1,disx[0]+0x30);
01FD 91800065 LDS R24,disx
01FF 91900066 LDS R25,disx+1
0201 96C0 ADIW R24,0x30
0202 8388 STD Y+0,R24
0203 E021 LDI R18,1
0204 E007 LDI R16,7
0205 940E033E CALL _DisplayOneChar
(0134) DisFlag=0;WorkTime=0;DisTime=0;EndFlag=0;
0207 2422 CLR R2
0208 92200062 STS DisFlag,R2
020A 2433 CLR R3
020B 9230007C STS WorkTime+1,R3
020D 9220007B STS WorkTime,R2
020F 9230007A STS DisTime+1,R3
0211 92200079 STS DisTime,R2
0213 92200064 STS EndFlag,R2
(0135) Start=0;cnt=0;
0215 92200060 STS Start,R2
0217 92300074 STS cnt+1,R3
0219 92200073 STS cnt,R2
(0136) }
021B C02A RJMP 0x0246
(0137) else //否则进行取样
(0138) {
(0139) do{temp=PIND&0x04;WDR();JS=1;//等待下降沿后下一次测试
021C B380 IN R24,0x10
021D 7084 ANDI R24,4
021E 2EA8 MOV R10,R24
021F 95A8 WDR
0220 E081 LDI R24,1
0221 93800061 STS JS,R24
(0140) if(Counter>1500){Counter=0;JS=0;DisFlag=1;cx=0;goto END;}
0223 ED8C LDI R24,0xDC
0224 E095 LDI R25,5
0225 90200077 LDS R2,Counter
0227 90300078 LDS R3,Counter+1
0229 1582 CP R24,R2
022A 0593 CPC R25,R3
022B F480 BCC 0x023C
022C 2422 CLR R2
022D 2433 CLR R3
022E 92300078 STS Counter+1,R3
0230 92200077 STS Counter,R2
0232 92200061 STS JS,R2
0234 E081 LDI R24,1
0235 93800062 STS DisFlag,R24
0237 9230006E STS cx+1,R3
0239 9220006D STS cx,R2
023B C00A RJMP 0x0246
(0141) }
(0142) while(temp==0x04);
023C 2D8A MOV R24,R10
023D 3084 CPI R24,4
023E F2E9 BEQ 0x021C
(0143) BeginFlag=1;Start=1;GICR=0x40;//重开INT0
023F E081 LDI R24,1
0240 93800063 STS BeginFlag,R24
0242 93800060 STS Start,R24
0244 E480 LDI R24,0x40
0245 BF8B OUT 0x3B,R24
0246 CE9C RJMP 0x00E3
0247 962D ADIW R28,0xD
0248 9508 RET
_timer2_ovf_isr:
0249 922A ST R2,-Y
024A 923A ST R3,-Y
024B 938A ST R24,-Y
024C 939A ST R25,-Y
024D 93EA ST R30,-Y
024E B62F IN R2,0x3F
024F 922A ST R2,-Y
(0144) END:;
(0145) }
(0146) }
(0147) }
(0148)
(0149) #pragma interrupt_handler timer2_ovf_isr:5
(0150) void timer2_ovf_isr(void)
(0151) {
(0152) TCNT2 = 0x83; //reload counter value
0250 E883 LDI R24,0x83
0251 BD84 OUT 0x24,R24
(0153) SEI();
0252 9478 BSET 7
(0154) if(BeginFlag==1)
0253 91800063 LDS R24,BeginFlag
0255 3081 CPI R24,1
0256 F4E9 BNE 0x0274
(0155) {
(0156) DisTime++;
0257 91800079 LDS R24,DisTime
0259 9190007A LDS R25,DisTime+1
025B 9601 ADIW R24,1
025C 9390007A STS DisTime+1,R25
025E 93800079 STS DisTime,R24
(0157) if(DisTime>1300){DisFlag=1;DisTime=0;BeginFlag=0;} //开显示
0260 E184 LDI R24,0x14
0261 E095 LDI R25,5
0262 90200079 LDS R2,DisTime
0264 9030007A LDS R3,DisTime+1
0266 1582 CP R24,R2
0267 0593 CPC R25,R3
0268 F458 BCC 0x0274
0269 E081 LDI R24,1
026A 93800062 STS DisFlag,R24
026C 2422 CLR R2
026D 2433 CLR R3
026E 9230007A STS DisTime+1,R3
0270 92200079 STS DisTime,R2
0272 92200063 STS BeginFlag,R2
(0158) }
(0159) if(Start==1){WorkTime++;}
0274 91800060 LDS R24,Start
0276 3081 CPI R24,1
0277 F449 BNE 0x0281
0278 9180007B LDS R24,WorkTime
027A 9190007C LDS R25,WorkTime+1
027C 9601 ADIW R24,1
027D 9390007C STS WorkTime+1,R25
027F 9380007B STS WorkTime,R24
(0160) if(WorkTime==1000){EndFlag=1;}
0281 9180007B LDS R24,WorkTime
0283 9190007C LDS R25,WorkTime+1
0285 3E88 CPI R24,0xE8
0286 E0E3 LDI R30,3
0287 079E CPC R25,R30
0288 F419 BNE 0x028C
0289 E081 LDI R24,1
028A 93800064 STS EndFlag,R24
(0161) if(JS==1)Counter++;
028C 91800061 LDS R24,JS
028E 3081 CPI R24,1
028F F449 BNE 0x0299
0290 91800077 LDS R24,Counter
0292 91900078 LDS R25,Counter+1
0294 9601 ADIW R24,1
0295 93900078 STS Counter+1,R25
0297 93800077 STS Counter,R24
0299 9029 LD R2,Y+
029A BE2F OUT 0x3F,R2
029B 91E9 LD R30,Y+
029C 9199 LD R25,Y+
029D 9189 LD R24,Y+
029E 9039 LD R3,Y+
029F 9029 LD R2,Y+
02A0 9518 RETI
_int0_isr:
y --> R16
02A1 922A ST R2,-Y
02A2 923A ST R3,-Y
02A3 930A ST R16,-Y
02A4 938A ST R24,-Y
02A5 939A ST R25,-Y
02A6 B62F IN R2,0x3F
02A7 922A ST R2,-Y
(0162)
(0163) }
(0164)
(0165) #pragma interrupt_handler int0_isr:2
(0166) void int0_isr(void)
(0167) {
(0168) uchar y;
(0169) SEI();
02A8 9478 BSET 7
(0170) //external interupt on INT0
(0171) y=PIND&0x04;
02A9 B300 IN R16,0x10
02AA 7004 ANDI R16,4
(0172) JS=0;Counter=0;
02AB 2422 CLR R2
02AC 92200061 STS JS,R2
02AE 2433 CLR R3
02AF 92300078 STS Counter+1,R3
02B1 92200077 STS Counter,R2
(0173) if((Start==1)&&(y==0x00))cnt++;
02B3 91800060 LDS R24,Start
02B5 3081 CPI R24,1
02B6 F459 BNE 0x02C2
02B7 2300 TST R16
02B8 F449 BNE 0x02C2
02B9 91800073 LDS R24,cnt
02BB 91900074 LDS R25,cnt+1
02BD 9601 ADIW R24,1
02BE 93900074 STS cnt+1,R25
02C0 93800073 STS cnt,R24
(0174) //**********************
(0175) if((Start==1)&&(y==0x04))
02C2 91800060 LDS R24,Start
02C4 3081 CPI R24,1
02C5 F529 BNE 0x02EB
02C6 3004 CPI R16,4
02C7 F519 BNE 0x02EB
(0176) {
(0177) cnt++;
02C8 91800073 LDS R24,cnt
02CA 91900074 LDS R25,cnt+1
02CC 9601 ADIW R24,1
02CD 93900074 STS cnt+1,R25
02CF 93800073 STS cnt,R24
(0178) if(EndFlag==1){tx=WorkTime;cx=cnt;EndFlag=0;
02D1 91800064 LDS R24,EndFlag
02D3 3081 CPI R24,1
02D4 F4B1 BNE 0x02EB
02D5 9020007B LDS R2,WorkTime
02D7 9030007C LDS R3,WorkTime+1
02D9 92300070 STS tx+1,R3
02DB 9220006F STS tx,R2
02DD 90200073 LDS R2,cnt
02DF 90300074 LDS R3,cnt+1
02E1 9230006E STS cx+1,R3
02E3 9220006D STS cx,R2
02E5 2422 CLR R2
02E6 92200064 STS EndFlag,R2
(0179) Start=0;GICR=0x00;}//关闭INT0中断
02E8 92200060 STS Start,R2
02EA BE2B OUT 0x3B,R2
(0180) }
FILE: <library>
02EB 9029 LD R2,Y+
02EC BE2F OUT 0x3F,R2
02ED 9199 LD R25,Y+
02EE 9189 LD R24,Y+
02EF 9109 LD R16,Y+
02F0 9039 LD R3,Y+
02F1 9029 LD R2,Y+
02F2 9518 RETI
_ePutstr:
l --> R20
i --> R22
ptr --> R10
y --> R12
x --> R14
02F3 940E03E9 CALL push_gset5
02F5 2EC2 MOV R12,R18
02F6 2EE0 MOV R14,R16
02F7 9722 SBIW R28,2
02F8 84AC LDD R10,Y+12
02F9 84BD LDD R11,Y+13
02FA 2744 CLR R20
02FB C001 RJMP 0x02FD
02FC 9543 INC R20
02FD 2FE4 MOV R30,R20
02FE 27FF CLR R31
02FF 0DEA ADD R30,R10
0300 1DFB ADC R31,R11
0301 91E4 LPM R30,0(Z)
0302 E18F LDI R24,0x1F
0303 178E CP R24,R30
0304 F3B8 BCS 0x02FC
0305 2766 CLR R22
0306 C019 RJMP 0x0320
0307 2FE6 MOV R30,R22
0308 27FF CLR R31
0309 0DEA ADD R30,R10
030A 1DFB ADC R31,R11
030B 9024 LPM R2,0(Z)
030C 2433 CLR R3
030D 8239 STD Y+1,R3
030E 8228 STD Y+0,R2
030F 2D2C MOV R18,R12
0310 2733 CLR R19
0311 2C2E MOV R2,R14
0312 2433 CLR R3
0313 2D82 MOV R24,R2
0314 5F8F SUBI R24,0xFF
0315 2EE8 MOV R14,R24
0316 2D02 MOV R16,R2
0317 2711 CLR R17
0318 D025 RCALL _DisplayOneChar
0319 2D8E MOV R24,R14
031A 3088 CPI R24,0x8
031B F419 BNE 0x031F
031C 24EE CLR R14
031D E081 LDI R24,1
031E 26C8 EOR R12,R24
031F 9563 INC R22
0320 1764 CP R22,R20
0321 F328 BCS 0x0307
0322 9622 ADIW R28,2
0323 940E03E6 CALL pop_gset5
0325 9508 RET
_LocateXY:
temp --> R20
posy --> R22
posx --> R10
0326 940E03ED CALL push_gset3
0328 2F62 MOV R22,R18
0329 2EA0 MOV R10,R16
032A 774F ANDI R20,0x7F
032B 2D4A MOV R20,R10
032C 7047 ANDI R20,7
032D 7061 ANDI R22,1
032E 2777 CLR R23
032F 3061 CPI R22,1
0330 E0E0 LDI R30,0
0331 077E CPC R23,R30
0332 F009 BEQ 0x0334
0333 C001 RJMP 0x0335
0334 6440 ORI R20,0x40
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -