📄 ad7705.lst
字号:
0249 01AF MOVW R20,R30
024A DFE9 RCALL _LCD_DisplayCharacter
024B 01FA MOVW R30,R20
024C 8020 LDD R2,Z+0
024D 2022 TST R2
024E F7C1 BNE 0x0247
024F 940E0538 CALL pop_gset3
0251 9508 RET
_LCD_DisplayInt:
n --> R22
j --> R22
str --> R10
a --> Y+2
i --> R20
t --> R20
y --> R14
x --> R12
0252 940E053E CALL push_gset5
0254 2EE2 MOV R14,R18
0255 2EC0 MOV R12,R16
0256 9727 SBIW R28,7
0257 8949 LDD R20,Y+17
0258 895A LDD R21,Y+18
(0124) }
(0125) /****************************************************************************/
(0126) //函数名: LCD_DisplayString ()
(0127) //功能: 显示一个字符串
(0128) //输入: x,y,t
(0129) //输出: 无
(0130) //备注:
(0131) /****************************************************************************/
(0132) uchar ch1[6]; //用于存放INT转换成字符串后的数据
(0133) void LCD_DisplayInt (uchar x, uchar y ,uint t)
(0134) {
(0135) unsigned char n;
(0136) unsigned char a[5]; char i, j;
(0137) unsigned char *str=ch1;
0259 E18E LDI R24,0x1E
025A E091 LDI R25,1
025B 015C MOVW R10,R24
(0138) a[0]=(t/10000)%10; //取得整数值到数组
025C E120 LDI R18,0x10
025D E237 LDI R19,0x27
025E 018A MOVW R16,R20
025F 940E04AA CALL div16u
0261 E02A LDI R18,0xA
0262 E030 LDI R19,0
0263 940E04A8 CALL mod16u
0265 830A STD Y+2,R16
(0139) a[1]=(t/1000)%10;
0266 EE28 LDI R18,0xE8
0267 E033 LDI R19,3
0268 018A MOVW R16,R20
0269 940E04AA CALL div16u
026B E02A LDI R18,0xA
026C E030 LDI R19,0
026D 940E04A8 CALL mod16u
026F 830B STD Y+3,R16
(0140) a[2]=(t/100)%10;
0270 E624 LDI R18,0x64
0271 E030 LDI R19,0
0272 018A MOVW R16,R20
0273 940E04AA CALL div16u
0275 E02A LDI R18,0xA
0276 E030 LDI R19,0
0277 940E04A8 CALL mod16u
0279 830C STD Y+4,R16
(0141) a[3]=(t/10)%10;
027A E02A LDI R18,0xA
027B E030 LDI R19,0
027C 018A MOVW R16,R20
027D 940E04AA CALL div16u
027F E02A LDI R18,0xA
0280 E030 LDI R19,0
0281 940E04A8 CALL mod16u
0283 830D STD Y+5,R16
(0142) a[4]=(t/1)%10;
0284 E02A LDI R18,0xA
0285 E030 LDI R19,0
0286 018A MOVW R16,R20
0287 940E04A8 CALL mod16u
0289 830E STD Y+6,R16
(0143)
(0144) for(i=0; i<5; i++) //转成ASCII码
028A 2744 CLR R20
028B C00B RJMP 0x0297
(0145) a[i]=a[i]+'0';
028C 01CE MOVW R24,R28
028D 9602 ADIW R24,2
028E 2E24 MOV R2,R20
028F 2433 CLR R3
0290 0E28 ADD R2,R24
0291 1E39 ADC R3,R25
0292 01F1 MOVW R30,R2
0293 8180 LDD R24,Z+0
0294 5D80 SUBI R24,0xD0
0295 8380 STD Z+0,R24
0296 9543 INC R20
0297 3045 CPI R20,5
0298 F398 BCS 0x028C
(0146) for(i=0; a[i]=='0' && i<=3; i++);
0299 2744 CLR R20
029A C001 RJMP 0x029C
029B 9543 INC R20
029C 01CE MOVW R24,R28
029D 9602 ADIW R24,2
029E 2FE4 MOV R30,R20
029F 27FF CLR R31
02A0 0FE8 ADD R30,R24
02A1 1FF9 ADC R31,R25
02A2 8180 LDD R24,Z+0
02A3 3380 CPI R24,0x30
02A4 F419 BNE 0x02A8
02A5 E083 LDI R24,3
02A6 1784 CP R24,R20
02A7 F798 BCC 0x029B
(0147) n=5-i;
02A8 E065 LDI R22,5
02A9 1B64 SUB R22,R20
(0148) for(j=5-n; j<i; j++) //填充空格
02AA E085 LDI R24,5
02AB 1B86 SUB R24,R22
02AC 2F68 MOV R22,R24
02AD C007 RJMP 0x02B5
(0149) { *str=' '; str++; }
02AE E280 LDI R24,0x20
02AF 01F5 MOVW R30,R10
02B0 8380 STD Z+0,R24
02B1 01CF MOVW R24,R30
02B2 9601 ADIW R24,1
02B3 015C MOVW R10,R24
02B4 9563 INC R22
02B5 1764 CP R22,R20
02B6 F3B8 BCS 0x02AE
(0150) for(; i<5; i++)
02B7 C00D RJMP 0x02C5
(0151) { *str=(char)a[i]; str++; } //加入有效的数字
02B8 01CE MOVW R24,R28
02B9 9602 ADIW R24,2
02BA 2FE4 MOV R30,R20
02BB 27FF CLR R31
02BC 0FE8 ADD R30,R24
02BD 1FF9 ADC R31,R25
02BE 8020 LDD R2,Z+0
02BF 01F5 MOVW R30,R10
02C0 8220 STD Z+0,R2
02C1 01CF MOVW R24,R30
02C2 9601 ADIW R24,1
02C3 015C MOVW R10,R24
02C4 9543 INC R20
02C5 3045 CPI R20,5
02C6 F388 BCS 0x02B8
(0152) *str='\0';
02C7 2422 CLR R2
02C8 01F5 MOVW R30,R10
02C9 8220 STD Z+0,R2
(0153) LCD_DisplayString(x,y,ch1);
02CA E18E LDI R24,0x1E
02CB E091 LDI R25,1
02CC 8399 STD Y+1,R25
02CD 8388 STD Y+0,R24
02CE 2D2E MOV R18,R14
02CF 2D0C MOV R16,R12
02D0 DF6C RCALL _LCD_DisplayString
02D1 9627 ADIW R28,7
02D2 940E053B CALL pop_gset5
02D4 9508 RET
_LCD_Displayasc:
temp --> R10
ascii --> Y+2
asc --> Y+10
y --> R22
x --> R20
02D5 940E0542 CALL push_gset3
02D7 2F62 MOV R22,R18
02D8 2F40 MOV R20,R16
02D9 9724 SBIW R28,4
(0154) }
(0155) /****************************************************************************/
(0156) //函数名: LCD_Displayasc (char row, char column unsigned char *asc)
(0157) //功能: 显示一个ascii值
(0158) //输入: x,y,*asc
(0159) //输出: 无
(0160) //备注:
(0161) /****************************************************************************/
(0162) void LCD_Displayasc (uchar x, uchar y, char asc)
(0163) { uchar ascii[2],temp;
(0164) temp=asc;
02DA 84AA LDD R10,Y+10
(0165) ascii[0]=temp+'0';
02DB 2D8A MOV R24,R10
02DC 5D80 SUBI R24,0xD0
02DD 838A STD Y+2,R24
(0166) ascii[1]='\0';
02DE 2422 CLR R2
02DF 822B STD Y+3,R2
(0167) LCD_DisplayString(x,y,ascii);
02E0 01CE MOVW R24,R28
02E1 9602 ADIW R24,2
02E2 8399 STD Y+1,R25
02E3 8388 STD Y+0,R24
02E4 2F26 MOV R18,R22
02E5 2F04 MOV R16,R20
02E6 DF56 RCALL _LCD_DisplayString
02E7 9624 ADIW R28,4
02E8 940E0538 CALL pop_gset3
02EA 9508 RET
_LCD_DisplayLong:
n --> R10
j --> R10
str --> R12
a --> Y+2
i --> R14
t --> Y+24
y --> Y+22
x --> Y+20
02EB 940E04A3 CALL push_arg4
02ED 940E053E CALL push_gset5
02EF 972A SBIW R28,0xA
(0168) }
(0169) /****************************************************************************/
(0170) //函数名: LCD_DisplayLong(char row, char column ,unsigned long t)
(0171) //功能: 显示一个字符串
(0172) //输入: x,y,t
(0173) //输出: 无
(0174) //备注:
(0175) /****************************************************************************/
(0176) uchar ch2[8]; //用于存放LONG转换成字符串的数据
(0177) void LCD_DisplayLong(uchar x, uchar y ,unsigned long t)
(0178) {
(0179) uchar n;
(0180) uchar a[8];
(0181) uchar i, j;
(0182) uchar *str=ch2;
02F0 E186 LDI R24,0x16
02F1 E091 LDI R25,1
02F2 016C MOVW R12,R24
(0183) a[0]=(t/10000000)%10;
02F3 E840 LDI R20,0x80
02F4 E956 LDI R21,0x96
02F5 E968 LDI R22,0x98
02F6 E070 LDI R23,0
02F7 01FE MOVW R30,R28
02F8 8C20 LDD R2,Z+24
02F9 8C31 LDD R3,Z+25
02FA 8C42 LDD R4,Z+26
02FB 8C53 LDD R5,Z+27
02FC 937A ST R23,-Y
02FD 936A ST R22,-Y
02FE 935A ST R21,-Y
02FF 934A ST R20,-Y
0300 0181 MOVW R16,R2
0301 0192 MOVW R18,R4
0302 940E04C4 CALL div32u
0304 E04A LDI R20,0xA
0305 E050 LDI R21,0
0306 E060 LDI R22,0
0307 E070 LDI R23,0
0308 937A ST R23,-Y
0309 936A ST R22,-Y
030A 935A ST R21,-Y
030B 934A ST R20,-Y
030C 940E04C6 CALL mod32u
030E 830A STD Y+2,R16
(0184) a[1]=(t/1000000)%10;
030F E440 LDI R20,0x40
0310 E452 LDI R21,0x42
0311 E06F LDI R22,0xF
0312 E070 LDI R23,0
0313 01FE MOVW R30,R28
0314 8C20 LDD R2,Z+24
0315 8C31 LDD R3,Z+25
0316 8C42 LDD R4,Z+26
0317 8C53 LDD R5,Z+27
0318 937A ST R23,-Y
0319 936A ST R22,-Y
031A 935A ST R21,-Y
031B 934A ST R20,-Y
031C 0181 MOVW R16,R2
031D 0192 MOVW R18,R4
031E 940E04C4 CALL div32u
0320 E04A LDI R20,0xA
0321 E050 LDI R21,0
0322 E060 LDI R22,0
0323 E070 LDI R23,0
0324 937A ST R23,-Y
0325 936A ST R22,-Y
0326 935A ST R21,-Y
0327 934A ST R20,-Y
0328 940E04C6 CALL mod32u
032A 830B STD Y+3,R16
(0185) a[2]=(t/100000)%10;
032B EA40 LDI R20,0xA0
032C E856 LDI R21,0x86
032D E061 LDI R22,1
032E E070 LDI R23,0
032F 01FE MOVW R30,R28
0330 8C20 LDD R2,Z+24
0331 8C31 LDD R3,Z+25
0332 8C42 LDD R4,Z+26
0333 8C53 LDD R5,Z+27
0334 937A ST R23,-Y
0335 936A ST R22,-Y
0336 935A ST R21,-Y
0337 934A ST R20,-Y
0338 0181 MOVW R16,R2
0339 0192 MOVW R18,R4
033A 940E04C4 CALL div32u
033C E04A LDI R20,0xA
033D E050 LDI R21,0
033E E060 LDI R22,0
033F E070 LDI R23,0
0340 937A ST R23,-Y
0341 936A ST R22,-Y
0342 935A ST R21,-Y
0343 934A ST R20,-Y
0344 940E04C6 CALL mod32u
0346 830C STD Y+4,R16
(0186) a[3]=(t/10000)%10; //取得整数值到数组
0347 E140 LDI R20,0x10
0348 E257 LDI R21,0x27
0349 E060 LDI R22,0
034A E070 LDI R23,0
034B 01FE MOVW R30,R28
034C 8C20 LDD R2,Z+24
034D 8C31 LDD R3,Z+25
034E 8C42 LDD R4,Z+26
034F 8C53 LDD R5,Z+27
0350 937A ST R23,-Y
0351 936A ST R22,-Y
0352 935A ST R21,-Y
0353 934A ST R20,-Y
0354 0181 MOVW R16,R2
0355 0192 MOVW R18,R4
0356 940E04C4 CALL div32u
0358 E04A LDI R20,0xA
0359 E050 LDI R21,0
035A E060 LDI R22,0
035B E070 LDI R23,0
035C 937A ST R23,-Y
035D 936A ST R22,-Y
035E 935A ST R21,-Y
035F 934A ST R20,-Y
0360 940E04C6 CALL mod32u
0362 830D STD Y+5,R16
(0187) a[4]=(t/1000)%10;
0363 EE48 LDI R20,0xE8
0364 E053 LDI R21,3
0365 E060 LDI R22,0
0366 E070 LDI R23,0
0367 01FE MOVW R30,R28
0368 8C20 LDD R2,Z+24
0369 8C31 LDD R3,Z+25
036A 8C42 LDD R4,Z+26
036B 8C53 LDD R5,Z+27
036C 937A ST R23,-Y
036D 936A ST R22,-Y
036E 935A ST R21,-Y
036F 934A ST R20,-Y
0370 0181 MOVW R16,R2
0371 0192 MOVW R18,R4
0372 940E04C4 CALL div32u
0374 E04A LDI R20,0xA
0375 E050 LDI R21,0
0376 E060 LDI R22,0
0377 E070 LDI R23,0
0378 937A ST R23,-Y
0379 936A ST R22,-Y
037A 935A ST R21,-Y
037B 934A ST R20,-Y
037C 940E04C6 CALL mod32u
037E 830E STD Y+6,R16
(0188) a[5]=(t/100)%10;
037F E644 LDI R20,0x64
0380 E050 LDI R21,0
0381 E060 LDI R22,0
0382 E070 LDI R23,0
0383 01FE MOVW R30,R28
0384 8C20 LDD R2,Z+24
0385 8C31 LDD R3,Z+25
0386 8C42 LDD R4,Z+26
0387 8C53 LDD R5,Z+27
0388 937A ST R23,-Y
0389 936A ST R22,-Y
038A 935A ST R21,-Y
038B 934A ST R20,-Y
038C 0181 MOVW R16,R2
038D 0192 MOVW R18,R4
038E 940E04C4 CALL div32u
0390 E04A LDI R20,0xA
0391 E050 LDI R21,0
0392 E060 LDI R22,0
0393 E070 LDI R23,0
0394 937A ST R23,-Y
0395 936A ST R22,-Y
0396 935A ST R21,-Y
0397 934A ST R20,-Y
0398 940E04C6 CALL mod32u
039A 830F STD Y+7,R16
(0189) a[6]=(t/10)%10;
039B E04A LDI R20,0xA
039C E050 LDI R21,0
039D E060 LDI R22,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -