📄 megalcd.lis
字号:
00F0 ; return char_p;
00F0 082F mov R16,R24
00F2 192F mov R17,R25
00F4 .dbline -2
00F4 L7:
00F4 0E940000 xcall pop_gset5
00F8 .dbline 0 ; func end
00F8 0895 ret
00FA .dbsym r char_p 10 pc
00FA .dbsym r i 12 c
00FA .dbsym r temp 14 i
00FA .dbsym r adc 10 i
00FA .dbend
00FA .dbfunc e ocmj_init _ocmj_init fV
.even
00FA _ocmj_init::
00FA .dbline -1
00FA .dbline 228
00FA ; }
00FA ; /* OCMJ4X8LCD初始化 */
00FA ; void ocmj_init(void)
00FA ; {
00FA .dbline 229
00FA ; MCUCR=0;
00FA 2224 clr R2
00FC 25BE out 0x35,R2
00FE .dbline 230
00FE ; DDRA=0xff;
00FE 8FEF ldi R24,255
0100 8ABB out 0x1a,R24
0102 .dbline 231
0102 ; PORTA=0xff;
0102 8BBB out 0x1b,R24
0104 .dbline 232
0104 ; DDRE=0x80;
0104 80E8 ldi R24,128
0106 82B9 out 0x2,R24
0108 .dbline 233
0108 ; PORTE=0xff;
0108 8FEF ldi R24,255
010A 83B9 out 0x3,R24
010C .dbline 234
010C ; PORTC=0xff;
010C 85BB out 0x15,R24
010E .dbline 235
010E ; DDRD=0x00;
010E 21BA out 0x11,R2
0110 .dbline 236
0110 ; PORTD=0xff;
0110 82BB out 0x12,R24
0112 .dbline 237
0112 ; clr_reset;//LCD复位
0112 AB98 cbi 0x15,3
0114 .dbline 238
0114 ; delay_ms(10);
0114 0AE0 ldi R16,10
0116 10E0 ldi R17,0
0118 0E940000 xcall _delay_ms
011C .dbline 239
011C ; set_reset;
011C AB9A sbi 0x15,3
011E .dbline 240
011E ; clr_answer;
011E 1F98 cbi 0x03,7
0120 .dbline 241
0120 ; delay_ms(10);
0120 0AE0 ldi R16,10
0122 10E0 ldi R17,0
0124 .dbline -2
0124 .dbline 242
0124 ; }
0124 L16:
0124 .dbline 0 ; func end
0124 0C940000 xjmp _delay_ms
0128 .dbend
0128 .dbfunc e ocmj_write _ocmj_write fV
0128 ; data -> R16
.even
0128 _ocmj_write::
0128 .dbline -1
0128 .dbline 245
0128 ; /* 写数据到LCD */
0128 ; void ocmj_write(unsigned char data)
0128 ; {
0128 L18:
0128 .dbline 247
0128 L19:
0128 .dbline 246
0128 ; while(ask!=0)
0128 0E99 sbic 0x1,6
012A FECF rjmp L18
012C .dbline 248
012C ; ;
012C ; data_port=data;
012C 0BBB out 0x1b,R16
012E .dbline 249
012E ; wait;
012E 0000 nop
0130 0000 nop
0132 .dbline 250
0132 ; set_answer;
0132 1F9A sbi 0x03,7
0134 .dbline 251
0134 ; wait;
0134 0000 nop
0136 0000 nop
0138 L21:
0138 .dbline 253
0138 L22:
0138 .dbline 252
0138 ; while(ask==0)
0138 0E9B sbis 0x1,6
013A FECF rjmp L21
013C .dbline 254
013C ; ;
013C ; clr_answer;
013C 1F98 cbi 0x03,7
013E .dbline -2
013E .dbline 255
013E ; }
013E L17:
013E .dbline 0 ; func end
013E 0895 ret
0140 .dbsym r data 16 c
0140 .dbend
0140 .dbfunc e ico_tran _ico_tran fV
0140 ; j -> R20
0140 ; i -> R14
0140 ; ico_p -> R10,R11
0140 ; y -> R12
0140 ; x -> R22
.even
0140 _ico_tran::
0140 0E940000 xcall push_gset5
0144 C22E mov R12,R18
0146 602F mov R22,R16
0148 AA84 ldd R10,y+10
014A BB84 ldd R11,y+11
014C .dbline -1
014C .dbline 260
014C ; /* 传送32*32ICO点阵数据到LCD */
014C ; /* x:0~15(字节为单位) y:0~64 */
014C ; /* ico_p:指向图形数据的指针 */
014C ; void ico_tran(unsigned char x,unsigned char y,const unsigned char *ico_p)
014C ; {
014C .dbline 262
014C ; unsigned char i,j;
014C ; x+=4;
014C 6C5F subi R22,252 ; addi 4
014E .dbline 263
014E ; for(j=0;j<32;j++)
014E 4427 clr R20
0150 16C0 xjmp L28
0152 L25:
0152 .dbline 264
0152 ; {
0152 .dbline 265
0152 ; for(i=0;i<4;i++)
0152 EE24 clr R14
0154 0EC0 xjmp L32
0156 L29:
0156 .dbline 266
0156 .dbline 267
0156 03EF ldi R16,243
0158 E7DF xcall _ocmj_write
015A .dbline 268
015A 062F mov R16,R22
015C E5DF xcall _ocmj_write
015E .dbline 269
015E 0C2D mov R16,R12
0160 E3DF xcall _ocmj_write
0162 .dbline 270
0162 F501 movw R30,R10
0164 0491 lpm R16,Z
0166 E0DF xcall _ocmj_write
0168 .dbline 271
0168 C501 movw R24,R10
016A 0196 adiw R24,1
016C 5C01 movw R10,R24
016E .dbline 272
016E 6395 inc R22
0170 .dbline 273
0170 L30:
0170 .dbline 265
0170 E394 inc R14
0172 L32:
0172 .dbline 265
0172 8E2D mov R24,R14
0174 8430 cpi R24,4
0176 78F3 brlo L29
0178 .dbline 274
0178 6450 subi R22,4
017A .dbline 275
017A C394 inc R12
017C .dbline 276
017C L26:
017C .dbline 263
017C 4395 inc R20
017E L28:
017E .dbline 263
017E 4032 cpi R20,32
0180 40F3 brlo L25
0182 .dbline -2
0182 .dbline 277
0182 ; {
0182 ; ocmj_write(0xf3);
0182 ; ocmj_write(x);
0182 ; ocmj_write(y);
0182 ; ocmj_write(*ico_p);
0182 ; ico_p++;
0182 ; x++;
0182 ; }
0182 ; x-=4;
0182 ; y++;
0182 ; }
0182 ; }
0182 L24:
0182 0E940000 xcall pop_gset5
0186 .dbline 0 ; func end
0186 0895 ret
0188 .dbsym r j 20 c
0188 .dbsym r i 14 c
0188 .dbsym r ico_p 10 pc
0188 .dbsym r y 12 c
0188 .dbsym r x 22 c
0188 .dbend
0188 .dbfunc e cls _cls fV
0188 ; j -> R20
0188 ; i -> R14
0188 ; width -> R22
0188 ; high -> R10
0188 ; y -> R12,R13
0188 ; x -> y+10
.even
0188 _cls::
0188 0E940000 xcall push_arg4
018C 0E940000 xcall push_gset5
0190 6901 movw R12,R18
0192 AE84 ldd R10,y+14
0194 6889 ldd R22,y+16
0196 .dbline -1
0196 .dbline 280
0196 ; /* 清除屏幕区域 */
0196 ; void cls(unsigned x,unsigned y,unsigned char high,unsigned char width)
0196 ; {
0196 .dbline 282
0196 ; unsigned char i,j;
0196 ; x+=2;
0196 8A85 ldd R24,y+10
0198 9B85 ldd R25,y+11
019A 0296 adiw R24,2
019C 8A87 std y+10,R24
019E 9B87 std y+11,R25
01A0 .dbline 283
01A0 ; for(j=0;j<high;j++)
01A0 4427 clr R20
01A2 21C0 xjmp L37
01A4 L34:
01A4 .dbline 284
01A4 ; {
01A4 .dbline 285
01A4 ; for(i=0;i<width;i++)
01A4 EE24 clr R14
01A6 11C0 xjmp L41
01A8 L38:
01A8 .dbline 286
01A8 .dbline 287
01A8 00EF ldi R16,240
01AA BEDF xcall _ocmj_write
01AC .dbline 288
01AC 0A85 ldd R16,y+10
01AE 1B85 ldd R17,y+11
01B0 BBDF xcall _ocmj_write
01B2 .dbline 289
01B2 0C2D mov R16,R12
01B4 B9DF xcall _ocmj_write
01B6 .dbline 290
01B6 07E3 ldi R16,55
01B8 B7DF xcall _ocmj_write
01BA .dbline 291
01BA 0AE5 ldi R16,90
01BC B5DF xcall _ocmj_write
01BE .dbline 292
01BE 8A85 ldd R24,y+10
01C0 9B85 ldd R25,y+11
01C2 0196 adiw R24,1
01C4 8A87 std y+10,R24
01C6 9B87 std y+11,R25
01C8 .dbline 293
01C8 L39:
01C8 .dbline 285
01C8 E394 inc R14
01CA L41:
01CA .dbline 285
01CA E616 cp R14,R22
01CC 68F3 brlo L38
01CE .dbline 294
01CE 262E mov R2,R22
01D0 3324 clr R3
01D2 0A84 ldd R0,y+10
01D4 1B84 ldd R1,y+11
01D6 0218 sub R0,R2
01D8 1308 sbc R1,R3
01DA 0A86 std y+10,R0
01DC 1B86 std y+11,R1
01DE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -