📄 lcdtest.lst
字号:
__start:
__text_start:
1B91 E800 LDI R16,0x80
1B92 E010 LDI R17,0
1B93 FF10 SBRS R17,0
1B94 6400 ORI R16,0x40
1B95 BF05 OUT 0x35,R16
1B96 EFCF LDI R28,0xFF
1B97 E1D0 LDI R29,0x10
1B98 BFCD OUT 0x3D,R28
1B99 BFDE OUT 0x3E,R29
1B9A 53C2 SUBI R28,0x32
1B9B 40D0 SBCI R29,0
1B9C EA0A LDI R16,0xAA
1B9D 8308 STD Y+0,R16
1B9E 2400 CLR R0
1B9F EFE9 LDI R30,0xF9
1BA0 E1F1 LDI R31,0x11
1BA1 E112 LDI R17,0x12
1BA2 32E1 CPI R30,0x21
1BA3 07F1 CPC R31,R17
1BA4 F011 BEQ 0x1BA7
1BA5 9201 ST R0,Z+
1BA6 CFFB RJMP 0x1BA2
1BA7 8300 STD Z+0,R16
1BA8 E2E9 LDI R30,0x29
1BA9 E3F6 LDI R31,0x36
1BAA E0A0 LDI R26,0
1BAB E1B1 LDI R27,0x11
1BAC E317 LDI R17,0x37
1BAD 32E2 CPI R30,0x22
1BAE 07F1 CPC R31,R17
1BAF F021 BEQ 0x1BB4
1BB0 95C8 LPM
1BB1 9631 ADIW R30,1
1BB2 920D ST R0,X+
1BB3 CFF9 RJMP 0x1BAD
1BB4 940E294C CALL _main
_exit:
1BB6 CFFF RJMP _exit
_Dis_Int:
flag --> Y+6
tt --> R20
back --> R14
front --> Y+25
point --> Y+23
temp --> Y+21
y --> Y+19
x --> Y+17
1BB7 940E301B CALL push_arg4
1BB9 940E310D CALL push_gset5
1BBB 9727 SBIW R28,7
1BBC 8CEB LDD R14,Y+27
FILE: F:\Relations\sf6_system\measure\LCDtest\display.c
(0001) #include <iom128v.h>
(0002) #include <macros.h>
(0003) #include <math.h>
(0004) #include "lcd.h"
(0005) #include "touch.h"
(0006) #include "display.h"
(0007) #include "stdio.h"
(0008) /*
(0009) 功能:轮换一个有符号的整数
(0010) 输入,目标数组,需要显示的数,小数点位数,
(0011) 输出:无
(0012) 编者:赫树开
(0013) 日期:二○○六年二月二十四日
(0014) */
(0015) /*void Convert_SignedInt(unsigned char *str,int temp, unsigned char point)
(0016) {
(0017) unsigned char tt[8];
(0018) unsigned char i;
(0019) sprintf(tt,"%6d",temp);//右-左,遇见" "证明字符串结束
(0020) for(i = 0;i< point;i++)
(0021) {
(0022) tt[6-i] = tt[5-i];
(0023) if(tt[6-i] == ' ')
(0024) {
(0025) tt[6-i] = '0';
(0026) }
(0027) }
(0028) if(point)
(0029) {
(0030) tt[6-point] = '.';
(0031) if(tt[6-point-1] == ' ')//如果前面为空格,证明没有只有小数,而没有整数
(0032) {
(0033) tt[5-point] = '0';
(0034) }
(0035) }
(0036) if(tt[6-point-1] == ' ')//如果不是小数,又全部为空格,所以该数只能是0
(0037) {
(0038) tt[5-point] = '0';
(0039) }
(0040) else if(tt[5 - point] =='-')
(0041) {
(0042) tt[4-point] = '-';
(0043) tt[5-point] = '0';
(0044) }
(0045) tt[7] = 0;
(0046) StringCat(str,tt,6);
(0047) }*/
(0048) /*
(0049) 功能:显示一个无符号的整数
(0050) 输入,显示坐标,需要显示的数,小数点位数,字和背景色
(0051) 输出:无
(0052) 编者:赫树开
(0053) 日期:二○○六年二月二十四日
(0054) */
(0055) void Dis_Int(unsigned int x,unsigned char y,unsigned int temp, unsigned char point,unsigned char front,unsigned char back)
(0056) {
(0057) unsigned char tt;
(0058) unsigned char flag=0;
1BBD 2400 CLR R0
1BBE 820E STD Y+6,R0
(0059)
(0060) if(point>4) point=4;
1BBF E084 LDI R24,4
1BC0 880F LDD R0,Y+23
1BC1 1580 CP R24,R0
1BC2 F408 BCC 0x1BC4
1BC3 8B8F STD Y+23,R24
(0061) tt=temp/10000;
1BC4 E120 LDI R18,0x10
1BC5 E237 LDI R19,0x27
1BC6 890D LDD R16,Y+21
1BC7 891E LDD R17,Y+22
1BC8 940E3022 CALL div16u
1BCA 2F40 MOV R20,R16
(0062) temp%=10000;
1BCB E120 LDI R18,0x10
1BCC E237 LDI R19,0x27
1BCD 890D LDD R16,Y+21
1BCE 891E LDD R17,Y+22
1BCF 940E3020 CALL mod16u
1BD1 8B1E STD Y+22,R17
1BD2 8B0D STD Y+21,R16
(0063) if((tt==0)&(flag==0)&(point!=4))
1BD3 2344 TST R20
1BD4 F421 BNE 0x1BD9
1BD5 E081 LDI R24,1
1BD6 E090 LDI R25,0
1BD7 016C MOVW R12,R24
1BD8 C002 RJMP 0x1BDB
1BD9 24CC CLR R12
1BDA 24DD CLR R13
1BDB 800E LDD R0,Y+6
1BDC 2000 TST R0
1BDD F421 BNE 0x1BE2
1BDE E081 LDI R24,1
1BDF E090 LDI R25,0
1BE0 015C MOVW R10,R24
1BE1 C002 RJMP 0x1BE4
1BE2 24AA CLR R10
1BE3 24BB CLR R11
1BE4 898F LDD R24,Y+23
1BE5 3084 CPI R24,4
1BE6 F019 BEQ 0x1BEA
1BE7 E061 LDI R22,1
1BE8 E070 LDI R23,0
1BE9 C002 RJMP 0x1BEC
1BEA 2766 CLR R22
1BEB 2777 CLR R23
1BEC 0116 MOVW R2,R12
1BED 202A AND R2,R10
1BEE 203B AND R3,R11
1BEF 2226 AND R2,R22
1BF0 2237 AND R3,R23
1BF1 2022 TST R2
1BF2 F411 BNE 0x1BF5
1BF3 2033 TST R3
1BF4 F011 BEQ 0x1BF7
(0064) {
(0065) tt=' ';
1BF5 E240 LDI R20,0x20
(0066) }
1BF6 C004 RJMP 0x1BFB
(0067) else
(0068) {
(0069) flag=1;
1BF7 2400 CLR R0
1BF8 9403 INC R0
1BF9 820E STD Y+6,R0
(0070) tt+=0x30;
1BFA 5D40 SUBI R20,0xD0
(0071) }
(0072) Dis_Ascii(x,y,tt,front,back);
1BFB 2C2E MOV R2,R14
1BFC 2433 CLR R3
1BFD 823D STD Y+5,R3
1BFE 822C STD Y+4,R2
1BFF 8C09 LDD R0,Y+25
1C00 820A STD Y+2,R0
1C01 8348 STD Y+0,R20
1C02 892B LDD R18,Y+19
1C03 8909 LDD R16,Y+17
1C04 891A LDD R17,Y+18
1C05 940E24CF CALL _Dis_Ascii
(0073) if(point==4)
1C07 898F LDD R24,Y+23
1C08 3084 CPI R24,4
1C09 F491 BNE 0x1C1C
(0074) {
(0075) x+=8;
1C0A 8989 LDD R24,Y+17
1C0B 899A LDD R25,Y+18
1C0C 9608 ADIW R24,0x8
1C0D 8B9A STD Y+18,R25
1C0E 8B89 STD Y+17,R24
(0076) Dis_Ascii(x,y,'.',front,back);
1C0F 2C2E MOV R2,R14
1C10 2433 CLR R3
1C11 823D STD Y+5,R3
1C12 822C STD Y+4,R2
1C13 8C09 LDD R0,Y+25
1C14 820A STD Y+2,R0
1C15 E28E LDI R24,0x2E
1C16 8388 STD Y+0,R24
1C17 892B LDD R18,Y+19
1C18 8909 LDD R16,Y+17
1C19 891A LDD R17,Y+18
1C1A 940E24CF CALL _Dis_Ascii
(0077) }
(0078) tt=temp/1000;
1C1C EE28 LDI R18,0xE8
1C1D E033 LDI R19,3
1C1E 890D LDD R16,Y+21
1C1F 891E LDD R17,Y+22
1C20 940E3022 CALL div16u
1C22 2F40 MOV R20,R16
(0079) temp%=1000;
1C23 EE28 LDI R18,0xE8
1C24 E033 LDI R19,3
1C25 890D LDD R16,Y+21
1C26 891E LDD R17,Y+22
1C27 940E3020 CALL mod16u
1C29 8B1E STD Y+22,R17
1C2A 8B0D STD Y+21,R16
(0080) if((tt==0)&(flag==0)&(point!=3))
1C2B 2344 TST R20
1C2C F421 BNE 0x1C31
1C2D E081 LDI R24,1
1C2E E090 LDI R25,0
1C2F 016C MOVW R12,R24
1C30 C002 RJMP 0x1C33
1C31 24CC CLR R12
1C32 24DD CLR R13
1C33 800E LDD R0,Y+6
1C34 2000 TST R0
1C35 F421 BNE 0x1C3A
1C36 E081 LDI R24,1
1C37 E090 LDI R25,0
1C38 015C MOVW R10,R24
1C39 C002 RJMP 0x1C3C
1C3A 24AA CLR R10
1C3B 24BB CLR R11
1C3C 898F LDD R24,Y+23
1C3D 3083 CPI R24,3
1C3E F019 BEQ 0x1C42
1C3F E061 LDI R22,1
1C40 E070 LDI R23,0
1C41 C002 RJMP 0x1C44
1C42 2766 CLR R22
1C43 2777 CLR R23
1C44 0116 MOVW R2,R12
1C45 202A AND R2,R10
1C46 203B AND R3,R11
1C47 2226 AND R2,R22
1C48 2237 AND R3,R23
1C49 2022 TST R2
1C4A F411 BNE 0x1C4D
1C4B 2033 TST R3
1C4C F011 BEQ 0x1C4F
(0081) {
(0082) tt=' ';
1C4D E240 LDI R20,0x20
(0083) }
1C4E C004 RJMP 0x1C53
(0084) else
(0085) {
(0086) flag=1;
1C4F 2400 CLR R0
1C50 9403 INC R0
1C51 820E STD Y+6,R0
(0087) tt+=0x30;
1C52 5D40 SUBI R20,0xD0
(0088) }
(0089) x+=8;
1C53 8989 LDD R24,Y+17
1C54 899A LDD R25,Y+18
1C55 9608 ADIW R24,0x8
1C56 8B9A STD Y+18,R25
1C57 8B89 STD Y+17,R24
(0090) Dis_Ascii(x,y,tt,front,back);
1C58 2C2E MOV R2,R14
1C59 2433 CLR R3
1C5A 823D STD Y+5,R3
1C5B 822C STD Y+4,R2
1C5C 8C09 LDD R0,Y+25
1C5D 820A STD Y+2,R0
1C5E 8348 STD Y+0,R20
1C5F 892B LDD R18,Y+19
1C60 018C MOVW R16,R24
1C61 940E24CF CALL _Dis_Ascii
(0091) if(point==3)
1C63 898F LDD R24,Y+23
1C64 3083 CPI R24,3
1C65 F491 BNE 0x1C78
(0092) {
(0093) x+=8;
1C66 8989 LDD R24,Y+17
1C67 899A LDD R25,Y+18
1C68 9608 ADIW R24,0x8
1C69 8B9A STD Y+18,R25
1C6A 8B89 STD Y+17,R24
(0094) Dis_Ascii(x,y,'.',front,back);
1C6B 2C2E MOV R2,R14
1C6C 2433 CLR R3
1C6D 823D STD Y+5,R3
1C6E 822C STD Y+4,R2
1C6F 8C09 LDD R0,Y+25
1C70 820A STD Y+2,R0
1C71 E28E LDI R24,0x2E
1C72 8388 STD Y+0,R24
1C73 892B LDD R18,Y+19
1C74 8909 LDD R16,Y+17
1C75 891A LDD R17,Y+18
1C76 940E24CF CALL _Dis_Ascii
(0095) }
(0096) tt = temp/100;
1C78 E624 LDI R18,0x64
1C79 E030 LDI R19,0
1C7A 890D LDD R16,Y+21
1C7B 891E LDD R17,Y+22
1C7C 940E3022 CALL div16u
1C7E 2F40 MOV R20,R16
(0097) temp %= 100;
1C7F E624 LDI R18,0x64
1C80 E030 LDI R19,0
1C81 890D LDD R16,Y+21
1C82 891E LDD R17,Y+22
1C83 940E3020 CALL mod16u
1C85 8B1E STD Y+22,R17
1C86 8B0D STD Y+21,R16
(0098) if((tt==0)&(flag==0)&(point!=2))
1C87 2344 TST R20
1C88 F421 BNE 0x1C8D
1C89 E081 LDI R24,1
1C8A E090 LDI R25,0
1C8B 016C MOVW R12,R24
1C8C C002 RJMP 0x1C8F
1C8D 24CC CLR R12
1C8E 24DD CLR R13
1C8F 800E LDD R0,Y+6
1C90 2000 TST R0
1C91 F421 BNE 0x1C96
1C92 E081 LDI R24,1
1C93 E090 LDI R25,0
1C94 015C MOVW R10,R24
1C95 C002 RJMP 0x1C98
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -