📄 1.lst
字号:
0263 5480 SUBI R24,0x40
0264 4090 SBCI R25,0
0265 3080 CPI R24,0
0266 E0E0 LDI R30,0
0267 079E CPC R25,R30
0268 F00C BLT 0x026A
0269 C009 RJMP 0x0273
(0219) else if((adrColumn-64) < 0) left = 1; // left = 1:for left.
026A 858C LDD R24,Y+12
026B 859D LDD R25,Y+13
026C 5480 SUBI R24,0x40
026D 4090 SBCI R25,0
026E 3080 CPI R24,0
026F E0E0 LDI R30,0
0270 079E CPC R25,R30
0271 F40C BGE 0x0273
0272 E061 LDI R22,1
(0220) for(i=0; i<2; i++)
0273 2744 CLR R20
0274 C034 RJMP 0x02A9
(0221) {
(0222) if(left == 0)
0275 2366 TST R22
0276 F4B1 BNE 0x028D
(0223) { Wrigt_Cmad(adrPage | 0xb8);
0277 850A LDD R16,Y+10
0278 6B08 ORI R16,0xB8
0279 DF88 RCALL _Wrigt_Cmad
(0224) Wrigt_Cmad(adrColumn | 0x40);
027A 850C LDD R16,Y+12
027B 851D LDD R17,Y+13
027C 6400 ORI R16,0x40
027D DF84 RCALL _Wrigt_Cmad
(0225) for(j=0; j< ColSum; j++)
027E 24EE CLR R14
027F C00B RJMP 0x028B
(0226) {
(0227) Wrigt_Data(HZK[dptr]);
0280 E284 LDI R24,0x24
0281 E091 LDI R25,1
0282 01F5 MOVW R30,R10
0283 0FE8 ADD R30,R24
0284 1FF9 ADC R31,R25
0285 9104 LPM R16,0(Z)
0286 DF92 RCALL _Wrigt_Data
(0228) dptr = dptr + 1;
0287 01C5 MOVW R24,R10
0288 9601 ADIW R24,1
0289 015C MOVW R10,R24
028A 94E3 INC R14
028B 14EC CP R14,R12
028C F398 BCS 0x0280
(0229) }
(0230) }
(0231) if(left == 1)
028D 3061 CPI R22,1
028E F4B1 BNE 0x02A5
(0232) { Wleft_Cmad(adrPage | 0xb8);
028F 850A LDD R16,Y+10
0290 6B08 ORI R16,0xB8
0291 DF41 RCALL _Wleft_Cmad
(0233) Wleft_Cmad(adrColumn | 0x40);
0292 850C LDD R16,Y+12
0293 851D LDD R17,Y+13
0294 6400 ORI R16,0x40
0295 DF3D RCALL _Wleft_Cmad
(0234) for(j=0; j< ColSum; j++) {
0296 24EE CLR R14
0297 C00B RJMP 0x02A3
(0235) Wleft_Data(HZK[dptr]);
0298 E284 LDI R24,0x24
0299 E091 LDI R25,1
029A 01F5 MOVW R30,R10
029B 0FE8 ADD R30,R24
029C 1FF9 ADC R31,R25
029D 9104 LPM R16,0(Z)
029E DF4B RCALL _Wleft_Data
(0236) dptr = dptr + 1; }
029F 01C5 MOVW R24,R10
02A0 9601 ADIW R24,1
02A1 015C MOVW R10,R24
02A2 94E3 INC R14
02A3 14EC CP R14,R12
02A4 F398 BCS 0x0298
(0237) }
(0238) adrPage = adrPage + 1;
02A5 840A LDD R0,Y+10
02A6 9403 INC R0
02A7 860A STD Y+10,R0
02A8 9543 INC R20
02A9 3042 CPI R20,2
02AA F408 BCC 0x02AC
02AB CFC9 RJMP 0x0275
02AC 940E0372 CALL pop_gset5
02AE 9622 ADIW R28,2
02AF 9508 RET
_WriteDG:
i --> R20
left --> R22
j --> R14
dptr --> R10
adrColumn --> R12
adrPage --> Y+10
XH_Dig --> R20
02B0 933A ST R19,-Y
02B1 932A ST R18,-Y
02B2 940E0375 CALL push_gset5
02B4 2F40 MOV R20,R16
02B5 84CC LDD R12,Y+12
02B6 84DD LDD R13,Y+13
(0239) }
(0240) }
(0241) //-----------------------------------------------------------------------------
(0242) // LCD:DIlcdsplay ASCII.
(0243) //-----------------------------------------------------------------------------
(0244) void WriteDG(uchar XH_Dig,uchar adrPage,int adrColumn)
(0245) {
(0246) unsigned int dptr; // dptr_adderss for Dig code.
(0247) unsigned char left, i, j;
(0248) dptr = XH_Dig * 16;
02B7 E180 LDI R24,0x10
02B8 9F84 MUL R24,R20
02B9 0150 MOVW R10,R0
(0249) if(adrColumn-64 >= 0) left = 0; // left = 0:for right.
02BA 01C6 MOVW R24,R12
02BB 5480 SUBI R24,0x40
02BC 4090 SBCI R25,0
02BD 3080 CPI R24,0
02BE E0E0 LDI R30,0
02BF 079E CPC R25,R30
02C0 F014 BLT 0x02C3
02C1 2766 CLR R22
02C2 C001 RJMP 0x02C4
(0250) else left = 1; // left = 1:for left.
02C3 E061 LDI R22,1
(0251)
(0252) for(i=0; i<2; i++)
02C4 2744 CLR R20
02C5 C034 RJMP 0x02FA
(0253) {
(0254) if(left == 0)
02C6 2366 TST R22
02C7 F4B1 BNE 0x02DE
(0255) { Wrigt_Cmad(adrPage | 0xb8);
02C8 850A LDD R16,Y+10
02C9 6B08 ORI R16,0xB8
02CA DF37 RCALL _Wrigt_Cmad
(0256) Wrigt_Cmad(adrColumn | 0x40);
02CB 2D0C MOV R16,R12
02CC 6400 ORI R16,0x40
02CD DF34 RCALL _Wrigt_Cmad
(0257) for(j=0; j< 8; j++) {
02CE 24EE CLR R14
02CF C00B RJMP 0x02DB
(0258) Wrigt_Data(Dig[dptr]);
02D0 E584 LDI R24,0x54
02D1 E090 LDI R25,0
02D2 01F5 MOVW R30,R10
02D3 0FE8 ADD R30,R24
02D4 1FF9 ADC R31,R25
02D5 9104 LPM R16,0(Z)
02D6 DF42 RCALL _Wrigt_Data
(0259) dptr = dptr + 1; }
02D7 01C5 MOVW R24,R10
02D8 9601 ADIW R24,1
02D9 015C MOVW R10,R24
02DA 94E3 INC R14
02DB 2D8E MOV R24,R14
02DC 3088 CPI R24,0x8
02DD F390 BCS 0x02D0
(0260) }
(0261) if(left == 1)
02DE 3061 CPI R22,1
02DF F4B1 BNE 0x02F6
(0262) { Wleft_Cmad(adrPage | 0xb8);
02E0 850A LDD R16,Y+10
02E1 6B08 ORI R16,0xB8
02E2 DEF0 RCALL _Wleft_Cmad
(0263) Wleft_Cmad(adrColumn | 0x40);
02E3 2D0C MOV R16,R12
02E4 6400 ORI R16,0x40
02E5 DEED RCALL _Wleft_Cmad
(0264) for(j=0; j< 8; j++) {
02E6 24EE CLR R14
02E7 C00B RJMP 0x02F3
(0265) Wleft_Data(Dig[dptr]);
02E8 E584 LDI R24,0x54
02E9 E090 LDI R25,0
02EA 01F5 MOVW R30,R10
02EB 0FE8 ADD R30,R24
02EC 1FF9 ADC R31,R25
02ED 9104 LPM R16,0(Z)
02EE DEFB RCALL _Wleft_Data
(0266) dptr = dptr + 1; }
02EF 01C5 MOVW R24,R10
02F0 9601 ADIW R24,1
02F1 015C MOVW R10,R24
02F2 94E3 INC R14
02F3 2D8E MOV R24,R14
02F4 3088 CPI R24,0x8
02F5 F390 BCS 0x02E8
(0267) }
(0268) adrPage = adrPage + 1;
02F6 840A LDD R0,Y+10
02F7 9403 INC R0
02F8 860A STD Y+10,R0
02F9 9543 INC R20
02FA 3042 CPI R20,2
02FB F408 BCC 0x02FD
02FC CFC9 RJMP 0x02C6
02FD 940E0372 CALL pop_gset5
02FF 9622 ADIW R28,2
0300 9508 RET
(0269) }
(0270) }
(0271)
(0272) #define xtal 4
(0273) void delay_1ms(void)
(0274) { unsigned int i;
(0275) for(i=1;i<(unsigned int)(xtal*143-2);i++)
_delay_1ms:
i --> R16
0301 E001 LDI R16,1
0302 E010 LDI R17,0
0303 C002 RJMP 0x0306
0304 5F0F SUBI R16,0xFF
0305 4F1F SBCI R17,0xFF
0306 330A CPI R16,0x3A
0307 E0E2 LDI R30,2
0308 071E CPC R17,R30
0309 F3D0 BCS 0x0304
030A 9508 RET
_delay_ms:
i --> R20
n --> R22
030B 940E037B CALL push_gset2
030D 01B8 MOVW R22,R16
(0276) ;
(0277) }
(0278) void delay_ms(unsigned int n)
(0279) {
(0280) unsigned int i=0;
030E 2744 CLR R20
030F 2755 CLR R21
0310 C003 RJMP 0x0314
(0281) while(i<n)
(0282) {delay_1ms();
0311 DFEF RCALL _delay_1ms
(0283) i++;
0312 5F4F SUBI R20,0xFF
0313 4F5F SBCI R21,0xFF
0314 1746 CP R20,R22
0315 0757 CPC R21,R23
0316 F3D0 BCS 0x0311
0317 940E036F CALL pop_gset2
0319 9508 RET
_main:
031A 9723 SBIW R28,3
(0284) }
(0285) }
(0286)
(0287)
(0288) void main()
(0289) {
(0290) PORTA = 0x00;
031B 2422 CLR R2
031C BA2B OUT 0x1B,R2
(0291) DDRA = 0xFF;
031D EF8F LDI R24,0xFF
031E BB8A OUT 0x1A,R24
(0292) DDRB = 0xff ;
031F BB87 OUT 0x17,R24
(0293) PORTB=0xff;
0320 BB88 OUT 0x18,R24
(0294) PORTC = 0xff;
0321 BB85 OUT 0x15,R24
(0295) DDRC = 0xFF;
0322 BB84 OUT 0x14,R24
(0296) PORTC = 0xff;
0323 BB85 OUT 0x15,R24
(0297) PORTD = 0xFF;
0324 BB82 OUT 0x12,R24
(0298) LCD_INT();
0325 DF0B RCALL _LCD_INT
(0299) LCD_CLR();
0326 DF13 RCALL _LCD_CLR
(0300) WriteHZ(12, 0, 5, 64); // 氧电势
0327 E480 LDI R24,0x40
0328 838A STD Y+2,R24
0329 E085 LDI R24,5
032A E090 LDI R25,0
032B 8399 STD Y+1,R25
032C 8388 STD Y+0,R24
032D 2722 CLR R18
032E E00C LDI R16,0xC
032F DF27 RCALL _WriteHZ
(0301) WriteHZ(17, 0, 108, 16); // mv
0330 E180 LDI R24,0x10
0331 838A STD Y+2,R24
0332 E68C LDI R24,0x6C
0333 E090 LDI R25,0
0334 8399 STD Y+1,R25
0335 8388 STD Y+0,R24
0336 2722 CLR R18
0337 E101 LDI R16,0x11
0338 DF1E RCALL _WriteHZ
(0302) WriteHZ(0, 2, 0, 64); // 氧量
0339 E480 LDI R24,0x40
033A 838A STD Y+2,R24
033B 2422 CLR R2
033C 2433 CLR R3
033D 8239 STD Y+1,R3
033E 8228 STD Y+0,R2
033F E022 LDI R18,2
0340 2700 CLR R16
0341 DF15 RCALL _WriteHZ
(0303) WriteDG(11, 2, 108); // %
0342 E68C LDI R24,0x6C
0343 E090 LDI R25,0
0344 8399 STD Y+1,R25
0345 8388 STD Y+0,R24
0346 E022 LDI R18,2
0347 E00B LDI R16,0xB
0348 DF67 RCALL _WriteDG
(0304) WriteHZ(8, 4, 0, 64); // 热电势
0349 E480 LDI R24,0x40
034A 838A STD Y+2,R24
034B 2422 CLR R2
034C 2433 CLR R3
034D 8239 STD Y+1,R3
034E 8228 STD Y+0,R2
034F E024 LDI R18,4
0350 E008 LDI R16,0x8
0351 DF05 RCALL _WriteHZ
(0305) WriteHZ(17, 4, 108, 16); // mv
0352 E180 LDI R24,0x10
0353 838A STD Y+2,R24
0354 E68C LDI R24,0x6C
0355 E090 LDI R25,0
0356 8399 STD Y+1,R25
0357 8388 STD Y+0,R24
0358 E024 LDI R18,4
0359 E101 LDI R16,0x11
035A DEFC RCALL _WriteHZ
(0306) WriteHZ(4, 6, 0, 64); // 温度
035B E480 LDI R24,0x40
035C 838A STD Y+2,R24
035D 2422 CLR R2
035E 2433 CLR R3
035F 8239 STD Y+1,R3
0360 8228 STD Y+0,R2
0361 E026 LDI R18,6
0362 E004 LDI R16,4
0363 DEF3 RCALL _WriteHZ
(0307) WriteHZ(16, 6,108, 16); // C
FILE: <library>
0364 E180 LDI R24,0x10
0365 838A STD Y+2,R24
0366 E68C LDI R24,0x6C
0367 E090 LDI R25,0
0368 8399 STD Y+1,R25
0369 8388 STD Y+0,R24
036A E026 LDI R18,6
036B E100 LDI R16,0x10
036C DEEA RCALL _WriteHZ
036D 9623 ADIW R28,3
036E 9508 RET
pop_gset2:
036F E0E2 LDI R30,2
0370 940C0381 JMP pop
pop_gset5:
0372 27EE CLR R30
0373 940C0381 JMP pop
push_gset5:
0375 92FA ST R15,-Y
0376 92EA ST R14,-Y
push_gset4:
0377 92DA ST R13,-Y
0378 92CA ST R12,-Y
push_gset3:
0379 92BA ST R11,-Y
037A 92AA ST R10,-Y
push_gset2:
037B 937A ST R23,-Y
037C 936A ST R22,-Y
push_gset1:
037D 935A ST R21,-Y
037E 934A ST R20,-Y
037F 9508 RET
pop_gset1:
0380 E0E1 LDI R30,1
pop:
0381 9149 LD R20,Y+
0382 9159 LD R21,Y+
0383 FDE0 SBRC R30,0
0384 9508 RET
0385 9169 LD R22,Y+
0386 9179 LD R23,Y+
0387 FDE1 SBRC R30,1
0388 9508 RET
0389 90A9 LD R10,Y+
038A 90B9 LD R11,Y+
038B FDE2 SBRC R30,2
038C 9508 RET
038D 90C9 LD R12,Y+
038E 90D9 LD R13,Y+
038F FDE3 SBRC R30,3
0390 9508 RET
0391 90E9 LD R14,Y+
0392 90F9 LD R15,Y+
0393 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -