📄 lcd12864_3wires.lst
字号:
0689 C00B RJMP 0x0695
(0452) {
(0453) W_1byte(0,1,*Draw++); //
068A 0117 MOVW R2,R14
068B 01C1 MOVW R24,R2
068C 9601 ADIW R24,1
068D 017C MOVW R14,R24
068E 01F1 MOVW R30,R2
068F 91E4 LPM R30,0(Z)
0690 83E8 STD Y+0,R30
0691 E021 LDI R18,1
0692 2700 CLR R16
0693 DF24 RCALL _W_1byte
0694 94C3 INC R12
0695 2D8C MOV R24,R12
0696 3180 CPI R24,0x10
0697 F390 BCS 0x068A
0698 94A3 INC R10
0699 2D8A MOV R24,R10
069A 3280 CPI R24,0x20
069B F310 BCS 0x067E
(0454) }
(0455) }
(0456)
(0457) temp_x = 0x88; //
069C E868 LDI R22,0x88
(0458) temp_y = 0x80; //
069D E840 LDI R20,0x80
(0459) j = 0; //
069E 24CC CLR R12
(0460) for(;i<64;i++ )
069F C01B RJMP 0x06BB
(0461) {
(0462) W_1byte(0,0,temp_y++); //设置绘图区的Y地址坐标
06A0 2E24 MOV R2,R20
06A1 5F4F SUBI R20,0xFF
06A2 8228 STD Y+0,R2
06A3 2722 CLR R18
06A4 2700 CLR R16
06A5 DF12 RCALL _W_1byte
(0463) W_1byte(0,0,temp_x); //设置绘图区的X地址坐标
06A6 8368 STD Y+0,R22
06A7 2722 CLR R18
06A8 2700 CLR R16
06A9 DF0E RCALL _W_1byte
(0464) for(j=0;j<16;j++)
06AA 24CC CLR R12
06AB C00B RJMP 0x06B7
(0465) {
(0466) W_1byte(0,1,*Draw++); //
06AC 0117 MOVW R2,R14
06AD 01C1 MOVW R24,R2
06AE 9601 ADIW R24,1
06AF 017C MOVW R14,R24
06B0 01F1 MOVW R30,R2
06B1 91E4 LPM R30,0(Z)
06B2 83E8 STD Y+0,R30
06B3 E021 LDI R18,1
06B4 2700 CLR R16
06B5 DF02 RCALL _W_1byte
06B6 94C3 INC R12
06B7 2D8C MOV R24,R12
06B8 3180 CPI R24,0x10
06B9 F390 BCS 0x06AC
06BA 94A3 INC R10
06BB 2D8A MOV R24,R10
06BC 3480 CPI R24,0x40
06BD F310 BCS 0x06A0
06BE 9621 ADIW R28,1
06BF 940E074D CALL pop_gset5
06C1 9508 RET
_Set_White:
clr_y --> R14
clr_x --> R10
white_y --> R22
white_x --> Y+2
i --> R20
white_end_x --> Y+1
j --> R12
clear --> Y+15
end_x --> Y+13
y --> R12
x --> R20
06C2 940E0750 CALL push_gset5
06C4 2EC2 MOV R12,R18
06C5 2F40 MOV R20,R16
06C6 9723 SBIW R28,3
(0467) }
(0468) }
(0469)
(0470) }
(0471) /**************************************************/
(0472) /**************************************************/
(0473) void Set_White(uchar x,uchar y,uchar end_x,uchar clear)
(0474) {
(0475) uchar i, j, white_x, white_y,white_end_x,clr_x,clr_y; //
(0476) white_end_x = (end_x-x+1);
06C7 858D LDD R24,Y+13
06C8 1B84 SUB R24,R20
06C9 5F8F SUBI R24,0xFF
06CA 8389 STD Y+1,R24
(0477) white_end_x <<= 1;
06CB 2E28 MOV R2,R24
06CC 0C22 LSL R2
06CD 8229 STD Y+1,R2
(0478) if(y==1)
06CE 2D8C MOV R24,R12
06CF 3081 CPI R24,1
06D0 F449 BNE 0x06DA
(0479) {
(0480) white_x = (0x80+x-1);
06D1 2F84 MOV R24,R20
06D2 5880 SUBI R24,0x80
06D3 5081 SUBI R24,1
06D4 838A STD Y+2,R24
(0481) white_y = 0x80;
06D5 E860 LDI R22,0x80
(0482) clr_x = 0x80;
06D6 E880 LDI R24,0x80
06D7 2EA8 MOV R10,R24
(0483) clr_y = 0x80;
06D8 2EE8 MOV R14,R24
(0484) }
06D9 C026 RJMP 0x0700
(0485) else if(y==2)
06DA 2D8C MOV R24,R12
06DB 3082 CPI R24,2
06DC F451 BNE 0x06E7
(0486) {
(0487) white_x = (0x80+x-1);
06DD 2F84 MOV R24,R20
06DE 5880 SUBI R24,0x80
06DF 5081 SUBI R24,1
06E0 838A STD Y+2,R24
(0488) white_y = 0x90;
06E1 E960 LDI R22,0x90
(0489) clr_x = 0x80;
06E2 E880 LDI R24,0x80
06E3 2EA8 MOV R10,R24
(0490) clr_y = 0x90;
06E4 E980 LDI R24,0x90
06E5 2EE8 MOV R14,R24
(0491) }
06E6 C019 RJMP 0x0700
(0492) else if(y==3)
06E7 2D8C MOV R24,R12
06E8 3083 CPI R24,3
06E9 F451 BNE 0x06F4
(0493) {
(0494) white_x = (0x88+x-1);
06EA 2F84 MOV R24,R20
06EB 5788 SUBI R24,0x78
06EC 5081 SUBI R24,1
06ED 838A STD Y+2,R24
(0495) white_y = 0x80;
06EE E860 LDI R22,0x80
(0496) clr_x = 0x88;
06EF E888 LDI R24,0x88
06F0 2EA8 MOV R10,R24
(0497) clr_y = 0x80;
06F1 E880 LDI R24,0x80
06F2 2EE8 MOV R14,R24
(0498) }
06F3 C00C RJMP 0x0700
(0499) else if(y==4)
06F4 2D8C MOV R24,R12
06F5 3084 CPI R24,4
06F6 F449 BNE 0x0700
(0500) {
(0501) white_x = (0x88+x-1);
06F7 2F84 MOV R24,R20
06F8 5788 SUBI R24,0x78
06F9 5081 SUBI R24,1
06FA 838A STD Y+2,R24
(0502) white_y = 0x90;
06FB E960 LDI R22,0x90
(0503) clr_x = 0x88;
06FC E888 LDI R24,0x88
06FD 2EA8 MOV R10,R24
(0504) clr_y = 0x90;
06FE E980 LDI R24,0x90
06FF 2EE8 MOV R14,R24
(0505) }
(0506) if(clear==0)//要反白时,先将整行的液晶全部清成不反白(此处行指y)
0700 840F LDD R0,Y+15
0701 2000 TST R0
0702 F4E9 BNE 0x0720
(0507) {
(0508) for(i=0;i<16;i++ ) //16行
0703 2744 CLR R20
0704 C019 RJMP 0x071E
(0509) {
(0510) W_1byte(0,0,clr_y++); //设置绘图区的Y地址坐标0
0705 2C2E MOV R2,R14
0706 2D82 MOV R24,R2
0707 5F8F SUBI R24,0xFF
0708 2EE8 MOV R14,R24
0709 8228 STD Y+0,R2
070A 2722 CLR R18
070B 2700 CLR R16
070C DEAB RCALL _W_1byte
(0511) W_1byte(0,0,clr_x); //设置绘图区的X地址坐标0
070D 82A8 STD Y+0,R10
070E 2722 CLR R18
070F 2700 CLR R16
0710 DEA7 RCALL _W_1byte
(0512) for(j=0;j<16;j++) //
0711 24CC CLR R12
0712 C007 RJMP 0x071A
(0513) {
(0514) W_1byte(0,1,0x00); //清成不反白
0713 2422 CLR R2
0714 8228 STD Y+0,R2
0715 E021 LDI R18,1
0716 2700 CLR R16
0717 DEA0 RCALL _W_1byte
(0515) nop();
0718 0000 NOP
0719 94C3 INC R12
071A 2D8C MOV R24,R12
071B 3180 CPI R24,0x10
071C F3B0 BCS 0x0713
071D 9543 INC R20
071E 3140 CPI R20,0x10
071F F328 BCS 0x0705
(0516) }
(0517) }
(0518) }
(0519) nop();
0720 0000 NOP
(0520) for(i=0;i<16;i++ ) //16行,因为是16*16汉字
0721 2744 CLR R20
0722 C021 RJMP 0x0744
(0521) {
(0522) W_1byte(0,0,white_y++); //设置绘图区的Y地址坐标0
0723 2E26 MOV R2,R22
0724 5F6F SUBI R22,0xFF
0725 8228 STD Y+0,R2
0726 2722 CLR R18
0727 2700 CLR R16
0728 DE8F RCALL _W_1byte
(0523) W_1byte(0,0,white_x); //设置绘图区的X地址坐标0
0729 800A LDD R0,Y+2
072A 8208 STD Y+0,R0
072B 2722 CLR R18
072C 2700 CLR R16
072D DE8A RCALL _W_1byte
(0524) for(j=0;j<white_end_x;j++) //
072E 24CC CLR R12
072F C010 RJMP 0x0740
(0525) {
(0526) if(clear==1)
0730 858F LDD R24,Y+15
0731 3081 CPI R24,1
0732 F431 BNE 0x0739
(0527) {
(0528) W_1byte(0,1,0x00); //取消这一行的8个点的反白,液晶地址自动加1
0733 2422 CLR R2
0734 8228 STD Y+0,R2
0735 E021 LDI R18,1
0736 2700 CLR R16
0737 DE80 RCALL _W_1byte
(0529) //(此处行指一个一个液晶点所组成的行)
(0530) }
0738 C005 RJMP 0x073E
(0531) else
(0532) {
(0533) W_1byte(0,1,0xff); //反白这一行的8个点,液晶地址自动加1
0739 EF8F LDI R24,0xFF
073A 8388 STD Y+0,R24
073B E021 LDI R18,1
073C 2700 CLR R16
073D DE7A RCALL _W_1byte
(0534) //(此处行指一个一个液晶点所组成的行)
(0535) }
(0536) nop();
FILE: <library>
073E 0000 NOP
073F 94C3 INC R12
0740 8009 LDD R0,Y+1
0741 14C0 CP R12,R0
0742 F368 BCS 0x0730
0743 9543 INC R20
0744 3140 CPI R20,0x10
0745 F2E8 BCS 0x0723
0746 9623 ADIW R28,3
0747 940E074D CALL pop_gset5
0749 9508 RET
pop_gset3:
074A E0E4 LDI R30,4
074B 940C075C JMP pop
pop_gset5:
074D 27EE CLR R30
074E 940C075C JMP pop
push_gset5:
0750 92FA ST R15,-Y
0751 92EA ST R14,-Y
push_gset4:
0752 92DA ST R13,-Y
0753 92CA ST R12,-Y
push_gset3:
0754 92BA ST R11,-Y
0755 92AA ST R10,-Y
push_gset2:
0756 937A ST R23,-Y
0757 936A ST R22,-Y
push_gset1:
0758 935A ST R21,-Y
0759 934A ST R20,-Y
075A 9508 RET
pop_gset1:
075B E0E1 LDI R30,1
pop:
075C 9149 LD R20,Y+
075D 9159 LD R21,Y+
075E FDE0 SBRC R30,0
075F 9508 RET
0760 9169 LD R22,Y+
0761 9179 LD R23,Y+
0762 FDE1 SBRC R30,1
0763 9508 RET
0764 90A9 LD R10,Y+
0765 90B9 LD R11,Y+
0766 FDE2 SBRC R30,2
0767 9508 RET
0768 90C9 LD R12,Y+
0769 90D9 LD R13,Y+
076A FDE3 SBRC R30,3
076B 9508 RET
076C 90E9 LD R14,Y+
076D 90F9 LD R15,Y+
076E 9508 RET
lsl16:
076F 2322 TST R18
0770 F021 BEQ 0x0775
0771 0F00 LSL R16
0772 1F11 ROL R17
0773 952A DEC R18
0774 CFFA RJMP lsl16
0775 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -