📄 megalcd.lis
字号:
00EC 90E0 ldi R25,>_adcval
00EE 5C01 movw R10,R24
00F0 .dbline 224
00F0 ; return char_p;
00F0 8C01 movw R16,R24
00F2 .dbline -2
00F2 L7:
00F2 0E940000 xcall pop_gset5
00F6 .dbline 0 ; func end
00F6 0895 ret
00F8 .dbsym r char_p 10 pc
00F8 .dbsym r i 12 c
00F8 .dbsym r temp 14 i
00F8 .dbsym r adc 10 i
00F8 .dbend
00F8 .dbfunc e ocmj_init _ocmj_init fV
.even
00F8 _ocmj_init::
00F8 .dbline -1
00F8 .dbline 228
00F8 ; }
00F8 ; /* OCMJ4X8LCD初始化 */
00F8 ; void ocmj_init(void)
00F8 ; {
00F8 .dbline 229
00F8 ; MCUCR=0;
00F8 2224 clr R2
00FA 25BE out 0x35,R2
00FC .dbline 230
00FC ; DDRA=0xff;
00FC 8FEF ldi R24,255
00FE 8ABB out 0x1a,R24
0100 .dbline 231
0100 ; PORTA=0xff;
0100 8BBB out 0x1b,R24
0102 .dbline 232
0102 ; DDRE=0x80;
0102 80E8 ldi R24,128
0104 82B9 out 0x2,R24
0106 .dbline 233
0106 ; PORTE=0xff;
0106 8FEF ldi R24,255
0108 83B9 out 0x3,R24
010A .dbline 234
010A ; PORTC=0xff;
010A 85BB out 0x15,R24
010C .dbline 235
010C ; DDRD=0x00;
010C 21BA out 0x11,R2
010E .dbline 236
010E ; PORTD=0xff;
010E 82BB out 0x12,R24
0110 .dbline 237
0110 ; clr_reset;//LCD复位
0110 AB98 cbi 0x15,3
0112 .dbline 238
0112 ; delay_ms(10);
0112 0AE0 ldi R16,10
0114 10E0 ldi R17,0
0116 0E940000 xcall _delay_ms
011A .dbline 239
011A ; set_reset;
011A AB9A sbi 0x15,3
011C .dbline 240
011C ; clr_answer;
011C 1F98 cbi 0x03,7
011E .dbline 241
011E ; delay_ms(10);
011E 0AE0 ldi R16,10
0120 10E0 ldi R17,0
0122 0E940000 xcall _delay_ms
0126 .dbline -2
0126 L16:
0126 .dbline 0 ; func end
0126 0895 ret
0128 .dbend
0128 .dbfunc e ocmj_write _ocmj_write fV
0128 ; data -> R16
.even
0128 _ocmj_write::
0128 .dbline -1
0128 .dbline 245
0128 ; }
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 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 ; }
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 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 pkc
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 ; ocmj_write(0xf3);
0196 ; ocmj_write(x);
0196 ; ocmj_write(y);
0196 ; ocmj_write(*ico_p);
0196 ; ico_p++;
0196 ; x++;
0196 ; }
0196 ; x-=4;
0196 ; y++;
0196 ; }
0196 ; }
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 9B87 std y+11,R25
019E 8A87 std y+10,R24
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 9B87 std y+11,R25
01C6 8A87 std y+10,R24
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 1B86 std y+11,R1
01DC 0A86 std y+10,R0
01DE .dbline 295
01DE C601 movw R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -