📄 st7920.txt
字号:
0001ac e1a05001 MOV r5,r1
0001b0 e1a06002 MOV r6,r2
0001b4 e1a00004 MOV r0,r4
0001b8 ebfffffe BL SendCmd
0001bc e1a00005 MOV r0,r5
0001c0 ebfffffe BL SendDat
0001c4 e1a00006 MOV r0,r6
0001c8 ebfffffe BL SendDat
0001cc e8bd4070 POP {r4-r6,lr}
0001d0 e12fff1e BX lr
;;;92 SendCmd(x_add);
;;;93 SendDat(high);
;;;94 SendDat(low);
;;;95 }
ENDP
PreDispIndoorCall PROC
;;;106 uint8 i;
;;;107 for(i=0; i<16; i++)
0001d4 e3a02000 MOV r2,#0
0001d8 ea000009 B |L1.516|
|L1.476|
0001dc e7d03002 LDRB r3,[r0,r2]
0001e0 e3130040 TST r3,#0x40
0001e4 0a000002 BEQ |L1.500|
0001e8 e3a03008 MOV r3,#8
0001ec e7c13002 STRB r3,[r1,r2]
0001f0 ea000001 B |L1.508|
|L1.500|
0001f4 e3a0302d MOV r3,#0x2d
0001f8 e7c13002 STRB r3,[r1,r2]
|L1.508|
0001fc e2823001 ADD r3,r2,#1
000200 e20320ff AND r2,r3,#0xff
|L1.516|
000204 e3520010 CMP r2,#0x10
000208 bafffff3 BLT |L1.476|
00020c e12fff1e BX lr
;;;108 {
;;;109 if((0x40&(*(data+i)))!=0)
;;;110 *(p+i)=0x08;
;;;111 else
;;;112 *(p+i)=0x2d;
;;;113 }
;;;114 }
ENDP
PreDispOutdoorCallUp PROC
;;;124 uint8 i;
;;;125 for(i=0; i<16; i++)
000210 e3a02000 MOV r2,#0
000214 ea000009 B |L1.576|
|L1.536|
000218 e7d03002 LDRB r3,[r0,r2]
00021c e3130020 TST r3,#0x20
000220 0a000002 BEQ |L1.560|
000224 e3a03008 MOV r3,#8
000228 e7c13002 STRB r3,[r1,r2]
00022c ea000001 B |L1.568|
|L1.560|
000230 e3a0302d MOV r3,#0x2d
000234 e7c13002 STRB r3,[r1,r2]
|L1.568|
000238 e2823001 ADD r3,r2,#1
00023c e20320ff AND r2,r3,#0xff
|L1.576|
000240 e3520010 CMP r2,#0x10
000244 bafffff3 BLT |L1.536|
000248 e12fff1e BX lr
;;;126 {
;;;127 if((0x20&(*(data+i)))!=0)
;;;128 *(p+i)=0x08;
;;;129 else
;;;130 *(p+i)=0x2d;
;;;131 }
;;;132 }
ENDP
PreDispOutdoorCallDown PROC
;;;142 uint8 i;
;;;143 for(i=0; i<16; i++)
00024c e3a02000 MOV r2,#0
000250 ea000009 B |L1.636|
|L1.596|
000254 e7d03002 LDRB r3,[r0,r2]
000258 e3130010 TST r3,#0x10
00025c 0a000002 BEQ |L1.620|
000260 e3a03008 MOV r3,#8
000264 e7c13002 STRB r3,[r1,r2]
000268 ea000001 B |L1.628|
|L1.620|
00026c e3a0302d MOV r3,#0x2d
000270 e7c13002 STRB r3,[r1,r2]
|L1.628|
000274 e2823001 ADD r3,r2,#1
000278 e20320ff AND r2,r3,#0xff
|L1.636|
00027c e3520010 CMP r2,#0x10
000280 bafffff3 BLT |L1.596|
000284 e12fff1e BX lr
;;;144 {
;;;145 if((0x10&(*(data+i)))!=0)
;;;146 *(p+i)=0x08;
;;;147 else
;;;148 *(p+i)=0x2d;
;;;149 }
;;;150 }
ENDP
lcdclr PROC
;;;151 void lcdclr(void)
;;;152 { uint8 lcdlow,lcdlie;
000288 e92d4030 PUSH {r4,r5,lr}
00028c e3a04000 MOV r4,#0
000290 ea00000e B |L1.720|
|L1.660|
000294 e3a05000 MOV r5,#0
000298 ea000008 B |L1.704|
|L1.668|
00029c e59f10c4 LDR r1,|L1.872|
0002a0 e7d11004 LDRB r1,[r1,r4]
0002a4 e0811005 ADD r1,r1,r5
0002a8 e20100ff AND r0,r1,#0xff
0002ac e3a020a0 MOV r2,#0xa0
0002b0 e3a010a1 MOV r1,#0xa1
0002b4 ebfffffe BL Display
0002b8 e2850001 ADD r0,r5,#1
0002bc e20050ff AND r5,r0,#0xff
|L1.704|
0002c0 e3550008 CMP r5,#8
0002c4 bafffff4 BLT |L1.668|
0002c8 e2840001 ADD r0,r4,#1
0002cc e20040ff AND r4,r0,#0xff
|L1.720|
0002d0 e3540004 CMP r4,#4
0002d4 baffffee BLT |L1.660|
0002d8 e8bd4030 POP {r4,r5,lr}
0002dc e12fff1e BX lr
;;;153 //清屏
;;;154 for(lcdlow=0;lcdlow<4;lcdlow++)
;;;155 for(lcdlie=0;lcdlie<8;lcdlie++)
;;;156 Display(RowNum[lcdlow]+lcdlie,0xA1,0xA0); //0xA1A0为空格
;;;157
;;;158 }
ENDP
InitLcm PROC
;;;160 void InitLcm(void) //初始化 LCM
;;;161 {
0002e0 e52de004 PUSH {lr}
0002e4 e59f0078 LDR r0,|L1.868|
0002e8 e5900018 LDR r0,[r0,#0x18]
0002ec e380080f ORR r0,r0,#0xf0000
0002f0 e59f106c LDR r1,|L1.868|
0002f4 e5810018 STR r0,[r1,#0x18]
0002f8 e3a00801 MOV r0,#0x10000
0002fc e5810014 STR r0,[r1,#0x14]
000300 e3a00702 MOV r0,#0x80000
000304 e581001c STR r0,[r1,#0x1c]
000308 e3a000ff MOV r0,#0xff
00030c ebfffffe BL Delay
000310 e3a00702 MOV r0,#0x80000
000314 e59f1048 LDR r1,|L1.868|
000318 e5810014 STR r0,[r1,#0x14]
00031c e3a000ff MOV r0,#0xff
000320 ebfffffe BL Delay
000324 e3a00030 MOV r0,#0x30
000328 ebfffffe BL SendCmd
00032c e3a00004 MOV r0,#4
000330 ebfffffe BL SendCmd
000334 e3a0000f MOV r0,#0xf
000338 ebfffffe BL SendCmd
00033c e3a00001 MOV r0,#1
000340 ebfffffe BL SendCmd
000344 e3a00002 MOV r0,#2
000348 ebfffffe BL SendCmd
00034c e3a00080 MOV r0,#0x80
000350 ebfffffe BL SendCmd
000354 e3a0000c MOV r0,#0xc
000358 ebfffffe BL SendCmd
00035c e49de004 POP {lr}
000360 e12fff1e BX lr
|L1.868|
000364 e0028000 DCD 0xe0028000
|L1.872|
000368 00000000 DCD RowNum
;;;162 IO1DIR|=(ST7920_Cs|ST7920_Clk|ST7920_Sda|ST7920_Rst);
;;;163 IO1SET=ST7920_Cs; // 高电平使能
;;;164 IO1CLR=ST7920_Rst;
;;;165 Delay(0xff);
;;;166 IO1SET=ST7920_Rst;
;;;167 Delay(0xff);
;;;168 SendCmd(0x30); //功能设置:一次送 8 位数据,基本指令集
;;;169 SendCmd(0x04); //点设定 :显示字符/ 光标从左到右移位,DDRAM 地址加一
;;;170 SendCmd(0x0f); //显示设定:开显示 ,显示光标,当前显示位反白闪动
;;;171 SendCmd(0x01); //清DDRAM
;;;172 SendCmd(0x02); //*DDRAM 地址归位
;;;173 SendCmd(DDRAM_0); //DDRAM
;;;174 SendCmd(off_cursor); //关光标
;;;175 }
ENDP
AREA ||.constdata||, DATA, READONLY, ALIGN=0
||.constdata$1||
RowNum
DCB 0x80,0x90,0x88,0x98
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -