📄 megalcd.lis
字号:
; adcval[5]=0;
00FC 2224 clr R2
00FE 20920800 sts _adcval+5,R2
0102 .dbline 199
; char_p=adcval;
0102 80E0 ldi R24,<_adcval
0104 90E0 ldi R25,>_adcval
0106 A82E mov R10,R24
0108 B92E mov R11,R25
010A .dbline 200
; return char_p;
010A 0A2D mov R16,R10
010C 1B2D mov R17,R11
010E .dbline -2
010E L10:
010E 0E940000 xcall pop_gset5
0112 .dbline 0 ; func end
0112 0895 ret
0114 .dbsym r char_p 10 pc
0114 .dbsym r i 12 c
0114 .dbsym r temp 14 i
0114 .dbsym r adc 10 i
0114 .dbfunc s ocmj_init _ocmj_init fI
.even
0114 _ocmj_init::
0114 .dbline -1
0114 .dbline 204
; }
; /* OCMJ4X8LCD初始化 */
; void ocmj_init(void)
; {
0114 .dbline 205
; MCUCR=0;
0114 2224 clr R2
0116 25BE out 0x35,R2
0118 .dbline 206
; DDRA=0xff;
0118 8FEF ldi R24,255
011A 8ABB out 0x1a,R24
011C .dbline 207
; PORTA=0xff;
011C 8BBB out 0x1b,R24
011E .dbline 208
; DDRE=0x80;
011E 80E8 ldi R24,128
0120 82B9 out 0x2,R24
0122 .dbline 209
; PORTE=0xff;
0122 8FEF ldi R24,255
0124 83B9 out 0x3,R24
0126 .dbline 210
; PORTC=0xff;
0126 85BB out 0x15,R24
0128 .dbline 211
; DDRD=0x00;
0128 21BA out 0x11,R2
012A .dbline 212
; PORTD=0xff;
012A 82BB out 0x12,R24
012C .dbline 213
; clr_reset;//LCD复位
012C AB98 cbi 0x15,3
012E .dbline 214
; delay_ms(10);
012E 0AE0 ldi R16,10
0130 10E0 ldi R17,0
0132 0E940000 xcall _delay_ms
0136 .dbline 215
; set_reset;
0136 AB9A sbi 0x15,3
0138 .dbline 216
; clr_answer;
0138 1F98 cbi 0x03,7
013A .dbline 217
; delay_ms(10);
013A 0AE0 ldi R16,10
013C 10E0 ldi R17,0
013E 0E940000 xcall _delay_ms
0142 .dbline -2
0142 .dbline 218
; }
0142 L20:
0142 .dbline 0 ; func end
0142 0895 ret
0144 .dbfunc s ocmj_write _ocmj_write fI
; data -> R16
.even
0144 _ocmj_write::
0144 .dbline -1
0144 .dbline 221
; /* 写数据到LCD */
; void ocmj_write(unsigned char data)
; {
0144 L22:
0144 .dbline 223
0144 L23:
0144 .dbline 222
; while(ask!=0)
0144 0E99 sbic 0x1,6
0146 FECF rjmp L22
0148 .dbline 224
; ;
; data_port=data;
0148 0BBB out 0x1b,R16
014A .dbline 225
; wait;
014A 0000 nop
014C 0000 nop
014E .dbline 226
; set_answer;
014E 1F9A sbi 0x03,7
0150 .dbline 227
; wait;
0150 0000 nop
0152 0000 nop
0154 L25:
0154 .dbline 229
0154 L26:
0154 .dbline 228
; while(ask==0)
0154 0E9B sbis 0x1,6
0156 FECF rjmp L25
0158 .dbline 230
; ;
; clr_answer;
0158 1F98 cbi 0x03,7
015A .dbline -2
015A .dbline 231
; }
015A L21:
015A .dbline 0 ; func end
015A 0895 ret
015C .dbsym r data 16 c
015C .dbfunc s ico_tran _ico_tran fI
; j -> R20
; i -> R22
; ico_p -> R10,R11
; y -> R12
; x -> R14
.even
015C _ico_tran::
015C 0E940000 xcall push_gset5
0160 C22E mov R12,R18
0162 E02E mov R14,R16
0164 AA84 ldd R10,y+10
0166 BB84 ldd R11,y+11
0168 .dbline -1
0168 .dbline 236
; /* 传送32*32ICO点阵数据到LCD */
; /* x:0~15(字节为单位) y:0~64 */
; /* ico_p:指向图形数据的指针 */
; void ico_tran(unsigned char x,unsigned char y,const unsigned char *ico_p)
; {
0168 .dbline 238
; unsigned char i,j;
; x+=4;
0168 8E2D mov R24,R14
016A 8C5F subi R24,252 ; addi 4
016C E82E mov R14,R24
016E .dbline 239
; for(j=0;j<32;j++)
016E 4427 clr R20
0170 1BC0 xjmp L32
0172 L29:
0172 .dbline 240
; {
0172 .dbline 241
; for(i=0;i<4;i++)
0172 6627 clr R22
0174 12C0 xjmp L36
0176 L33:
0176 .dbline 242
0176 .dbline 243
0176 03EF ldi R16,243
0178 E5DF xcall _ocmj_write
017A .dbline 244
017A 0E2D mov R16,R14
017C E3DF xcall _ocmj_write
017E .dbline 245
017E 0C2D mov R16,R12
0180 E1DF xcall _ocmj_write
0182 .dbline 246
0182 EA2D mov R30,R10
0184 FB2D mov R31,R11
0186 C895 lpm
0188 002D mov R16,R0
018A DCDF xcall _ocmj_write
018C .dbline 247
018C 8A2D mov R24,R10
018E 9B2D mov R25,R11
0190 0196 adiw R24,1
0192 A82E mov R10,R24
0194 B92E mov R11,R25
0196 .dbline 248
0196 E394 inc R14
0198 .dbline 249
0198 L34:
0198 .dbline 241
0198 6395 inc R22
019A L36:
019A .dbline 241
019A 6430 cpi R22,4
019C 60F3 brlo L33
019E .dbline 250
019E 8E2D mov R24,R14
01A0 8450 subi R24,4
01A2 E82E mov R14,R24
01A4 .dbline 251
01A4 C394 inc R12
01A6 .dbline 252
01A6 L30:
01A6 .dbline 239
01A6 4395 inc R20
01A8 L32:
01A8 .dbline 239
01A8 4032 cpi R20,32
01AA 18F3 brlo L29
01AC .dbline -2
01AC .dbline 253
; {
; ocmj_write(0xf3);
; ocmj_write(x);
; ocmj_write(y);
; ocmj_write(*ico_p);
; ico_p++;
; x++;
; }
; x-=4;
; y++;
; }
; }
01AC L28:
01AC 0E940000 xcall pop_gset5
01B0 .dbline 0 ; func end
01B0 0895 ret
01B2 .dbsym r j 20 c
01B2 .dbsym r i 22 c
01B2 .dbsym r ico_p 10 pc
01B2 .dbsym r y 12 c
01B2 .dbsym r x 14 c
01B2 .dbfunc s cls _cls fI
; j -> R20
; i -> R10
; width -> R12
; high -> R22
; y -> R14,R15
; x -> y+10
.even
01B2 _cls::
01B2 0E940000 xcall push_arg4
01B6 0E940000 xcall push_gset5
01BA E22E mov R14,R18
01BC F32E mov R15,R19
01BE 6E85 ldd R22,y+14
01C0 7F85 ldd R23,y+15
01C2 C888 ldd R12,y+16
01C4 D988 ldd R13,y+17
01C6 .dbline -1
01C6 .dbline 256
; /* 清除屏幕区域 */
; void cls(unsigned x,unsigned y,unsigned char high,unsigned char width)
; {
01C6 .dbline 258
; unsigned char i,j;
; x+=2;
01C6 8A85 ldd R24,y+10
01C8 9B85 ldd R25,y+11
01CA 0296 adiw R24,2
01CC 8A87 std y+10,R24
01CE 9B87 std y+11,R25
01D0 .dbline 259
; for(j=0;j<high;j++)
01D0 4427 clr R20
01D2 23C0 xjmp L41
01D4 L38:
01D4 .dbline 260
; {
01D4 .dbline 261
; for(i=0;i<width;i++)
01D4 AA24 clr R10
01D6 11C0 xjmp L45
01D8 L42:
01D8 .dbline 262
01D8 .dbline 263
01D8 00EF ldi R16,240
01DA B4DF xcall _ocmj_write
01DC .dbline 264
01DC 0A85 ldd R16,y+10
01DE 1B85 ldd R17,y+11
01E0 B1DF xcall _ocmj_write
01E2 .dbline 265
01E2 0E2D mov R16,R14
01E4 AFDF xcall _ocmj_write
01E6 .dbline 266
01E6 07E3 ldi R16,55
01E8 ADDF xcall _ocmj_write
01EA .dbline 267
01EA 0AE5 ldi R16,90
01EC ABDF xcall _ocmj_write
01EE .db
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -