📄 jifeng_jieshou.lst
字号:
02EF 2FE8 MOV R30,R24
02F0 2FF9 MOV R31,R25
02F1 95C8 LPM
02F2 2D00 MOV R16,R0
02F3 DF37 RCALL _Lcd_Write_Data
02F4 94E3 INC R14
02F5 2D8E MOV R24,R14
02F6 3180 CPI R24,0x10
02F7 F370 BCS 0x02E6
02F8 9543 INC R20
02F9 154C CP R20,R12
02FA F408 BCC 0x02FC
02FB CFCB RJMP 0x02C7
02FC D18C RCALL pop_gset5
02FD 9508 RET
_dis_168hz:
b --> R20
a --> R22
j --> R10
hz --> R12
row --> R14
x1 --> R20
02FE D18C RCALL push_gset5
02FF 2EE2 MOV R14,R18
0300 2F40 MOV R20,R16
0301 84CA LDD R12,Y+10
0302 84DB LDD R13,Y+11
(0511) }
(0512) }
(0513) }
(0514) /*------------------------------------------------------------------------------
(0515) void Dis16x16(uchar add_page, uchar add_col,const uchar *pHZ,uchar state)
(0516) {
(0517) uchar i;
(0518) Lcd_CURSOR(add_page, add_col);
(0519) for(i=0;i<16;i++)
(0520) { //一个汉字2行,16列,32个字节
(0521) if(state) //state(选亮,黑)
(0522) {
(0523) Lcd_Write_Data(pHZ[i]); //光标定位后沿着行开始写16列的字模数据??????
(0524) }
(0525) // else
(0526) // {
(0527) Lcd_Write_Data(~pHZ[i]); //如果列变,光标也会不停的换列,这里光标只换页不换列
(0528) // } //那还是一列一列的写吗????(写一次会自动加1列)
(0529) // } //而清时在不停的换列
(0530) Lcd_CURSOR(add_page-1, add_col); //加或减都行,只是取模方向不同
(0531) for(;i<32;i++)
(0532) {
(0533) if(state)
(0534) {
(0535) Lcd_Write_Data(pHZ[i]);
(0536) }
(0537) // else
(0538) // {
(0539) // Lcd_Write_Data(~pHZ[i]);
(0540) }
(0541) }
(0542) }
(0543) */
(0544) //-----------------------------16*8点阵显示-------------------------------------
(0545) void dis_168hz(uchar x1,uchar row,const uchar hz[]) //16*16
(0546) {
(0547) uchar a,b,j;
(0548) a=x1;
0303 2F64 MOV R22,R20
(0549) b=x1+1;
0304 5F4F SUBI R20,0xFF
(0550) Lcd_Write_command(a); //+号为合成为一个字节(其实就是或)B0+0x
0305 2F06 MOV R16,R22
0306 DF50 RCALL _Lcd_Write_command
(0551) Lcd_Write_command(0x10); //Set column address MSB(10+xx)即Y7 Y6 Y5 Y4
0307 E100 LDI R16,0x10
0308 DF4E RCALL _Lcd_Write_command
(0552) Lcd_Write_command(0x01);
0309 E001 LDI R16,1
030A DF4C RCALL _Lcd_Write_command
(0553) Lcd_CURSOR(a,0);
030B 2722 CLR R18
030C 2F06 MOV R16,R22
030D DF70 RCALL _Lcd_CURSOR
(0554) for(j=0;j<8;j++)
030E 24AA CLR R10
030F C00E RJMP 0x031E
(0555) { //每读写一次,列会自动加1
(0556) Lcd_CURSOR(a,j+row); //改变列位置,列在变,光标也在不停的换列,重新进行定位
0310 2D2A MOV R18,R10
0311 0D2E ADD R18,R14
0312 2F06 MOV R16,R22
0313 DF6A RCALL _Lcd_CURSOR
(0557) Lcd_Write_Data(hz[j]); //检测写进f0h???4点亮4点暗
0314 2C2A MOV R2,R10
0315 2433 CLR R3
0316 0C2C ADD R2,R12
0317 1C3D ADC R3,R13
0318 2DE2 MOV R30,R2
0319 2DF3 MOV R31,R3
031A 95C8 LPM
031B 2D00 MOV R16,R0
031C DF0E RCALL _Lcd_Write_Data
031D 94A3 INC R10
031E 2D8A MOV R24,R10
031F 3088 CPI R24,0x8
0320 F378 BCS 0x0310
(0558) }
(0559) Lcd_Write_command(b); //+号为合成为一个字节(其实就是或)B0+0x
0321 2F04 MOV R16,R20
0322 DF34 RCALL _Lcd_Write_command
(0560) Lcd_Write_command(0x10); //Set column address MSB(10+xx)即Y7 Y6 Y5 Y4
0323 E100 LDI R16,0x10
0324 DF32 RCALL _Lcd_Write_command
(0561) Lcd_Write_command(0x01);
0325 E001 LDI R16,1
0326 DF30 RCALL _Lcd_Write_command
(0562) Lcd_CURSOR(b,0);
0327 2722 CLR R18
0328 2F04 MOV R16,R20
0329 DF54 RCALL _Lcd_CURSOR
(0563) for(j=0;j<8;j++)
032A 24AA CLR R10
032B C00F RJMP 0x033B
(0564) { //每读写一次,列会自动加1
(0565) Lcd_CURSOR(b,j+row); //列在变,光标也在不停的换列,重新进行定位
032C 2D2A MOV R18,R10
032D 0D2E ADD R18,R14
032E 2F04 MOV R16,R20
032F DF4E RCALL _Lcd_CURSOR
(0566) Lcd_Write_Data(hz[j+8]); //检测写进f0h???4点亮4点暗
0330 2D8A MOV R24,R10
0331 2799 CLR R25
0332 0D8C ADD R24,R12
0333 1D9D ADC R25,R13
0334 9608 ADIW R24,0x8
0335 2FE8 MOV R30,R24
0336 2FF9 MOV R31,R25
0337 95C8 LPM
0338 2D00 MOV R16,R0
0339 DEF1 RCALL _Lcd_Write_Data
033A 94A3 INC R10
033B 2D8A MOV R24,R10
033C 3088 CPI R24,0x8
033D F370 BCS 0x032C
033E D14A RCALL pop_gset5
033F 9508 RET
_dis_shuzi:
shuzi --> Y+8
y --> R22
x --> R20
0340 D14E RCALL push_gset3
0341 2F62 MOV R22,R18
0342 2F40 MOV R20,R16
0343 9722 SBIW R28,2
(0567) }
(0568)
(0569) }
(0570) void dis_shuzi(uchar x,uchar y,uchar shuzi)
(0571) {
(0572) switch (shuzi)
0344 84A8 LDD R10,Y+8
0345 24BB CLR R11
0346 20AA TST R10
0347 F419 BNE 0x034B
0348 20BB TST R11
0349 F409 BNE 0x034B
034A C073 RJMP 0x03BE
034B 2D8A MOV R24,R10
034C 2D9B MOV R25,R11
034D 3081 CPI R24,1
034E E0E0 LDI R30,0
034F 079E CPC R25,R30
0350 F409 BNE 0x0352
0351 C064 RJMP 0x03B6
0352 3082 CPI R24,2
0353 E0E0 LDI R30,0
0354 079E CPC R25,R30
0355 F409 BNE 0x0357
0356 C057 RJMP 0x03AE
0357 3083 CPI R24,3
0358 E0E0 LDI R30,0
0359 079E CPC R25,R30
035A F409 BNE 0x035C
035B C04A RJMP 0x03A6
035C 3084 CPI R24,4
035D E0E0 LDI R30,0
035E 079E CPC R25,R30
035F F409 BNE 0x0361
0360 C03D RJMP 0x039E
0361 3085 CPI R24,5
0362 E0E0 LDI R30,0
0363 079E CPC R25,R30
0364 F189 BEQ 0x0396
0365 3086 CPI R24,6
0366 E0E0 LDI R30,0
0367 079E CPC R25,R30
0368 F129 BEQ 0x038E
0369 3087 CPI R24,7
036A E0E0 LDI R30,0
036B 079E CPC R25,R30
036C F0C9 BEQ 0x0386
036D 3088 CPI R24,0x8
036E E0E0 LDI R30,0
036F 079E CPC R25,R30
0370 F069 BEQ 0x037E
0371 3089 CPI R24,0x9
0372 E0E0 LDI R30,0
0373 079E CPC R25,R30
0374 F009 BEQ 0x0376
0375 C04F RJMP 0x03C5
(0573) {
(0574) //case 0x0f:dispaly[2]=9;break;
(0575) //case 0x0e:dispaly[2]=9;break;
(0576) //case 0x0d:dispaly[2]=8;break;
(0577) //case 0x0c:dispaly[2]=8;break;
(0578) //case 0x0b:dispaly[2]=7;break;
(0579) //case 0x0a:dispaly[2]=6;break;
(0580) case 0x09:dis_168hz(x,y,jiu16);break;
0376 E984 LDI R24,0x94
0377 E090 LDI R25,0
0378 8399 STD Y+1,R25
0379 8388 STD Y+0,R24
037A 2F26 MOV R18,R22
037B 2F04 MOV R16,R20
037C DF81 RCALL _dis_168hz
037D C047 RJMP 0x03C5
(0581) case 0x08:dis_168hz(x,y,ba16);break;
037E E884 LDI R24,0x84
037F E090 LDI R25,0
0380 8399 STD Y+1,R25
0381 8388 STD Y+0,R24
0382 2F26 MOV R18,R22
0383 2F04 MOV R16,R20
0384 DF79 RCALL _dis_168hz
0385 C03F RJMP 0x03C5
(0582) case 0x07:dis_168hz(x,y,qi16);break;
0386 E784 LDI R24,0x74
0387 E090 LDI R25,0
0388 8399 STD Y+1,R25
0389 8388 STD Y+0,R24
038A 2F26 MOV R18,R22
038B 2F04 MOV R16,R20
038C DF71 RCALL _dis_168hz
038D C037 RJMP 0x03C5
(0583) case 0x06:dis_168hz(x,y,liu16);break;
038E E684 LDI R24,0x64
038F E090 LDI R25,0
0390 8399 STD Y+1,R25
0391 8388 STD Y+0,R24
0392 2F26 MOV R18,R22
0393 2F04 MOV R16,R20
0394 DF69 RCALL _dis_168hz
0395 C02F RJMP 0x03C5
(0584) case 0x05:dis_168hz(x,y,wu16);break;
0396 E584 LDI R24,0x54
0397 E090 LDI R25,0
0398 8399 STD Y+1,R25
0399 8388 STD Y+0,R24
039A 2F26 MOV R18,R22
039B 2F04 MOV R16,R20
039C DF61 RCALL _dis_168hz
039D C027 RJMP 0x03C5
(0585) case 0x04:dis_168hz(x,y,si16);break;
039E E484 LDI R24,0x44
039F E090 LDI R25,0
03A0 8399 STD Y+1,R25
03A1 8388 STD Y+0,R24
03A2 2F26 MOV R18,R22
03A3 2F04 MOV R16,R20
03A4 DF59 RCALL _dis_168hz
03A5 C01F RJMP 0x03C5
(0586) case 0x03:dis_168hz(x,y,san16);break;
03A6 E384 LDI R24,0x34
03A7 E090 LDI R25,0
03A8 8399 STD Y+1,R25
03A9 8388 STD Y+0,R24
03AA 2F26 MOV R18,R22
03AB 2F04 MOV R16,R20
03AC DF51 RCALL _dis_168hz
03AD C017 RJMP 0x03C5
(0587) case 0x02:dis_168hz(x,y,er16);break;
03AE E284 LDI R24,0x24
03AF E090 LDI R25,0
03B0 8399 STD Y+1,R25
03B1 8388 STD Y+0,R24
03B2 2F26 MOV R18,R22
03B3 2F04 MOV R16,R20
03B4 DF49 RCALL _dis_168hz
03B5 C00F RJMP 0x03C5
(0588) case 0x01:dis_168hz(x,y,yi16);break;
03B6 E184 LDI R24,0x14
03B7 E090 LDI R25,0
03B8 8399 STD Y+1,R25
03B9 8388 STD Y+0,R24
03BA 2F26 MOV R18,R22
03BB 2F04 MOV R16,R20
03BC DF41 RCALL _dis_168hz
03BD C007 RJMP 0x03C5
(0589) case 0x00:dis_168hz(x,y,ling16);break;
03BE E084 LDI R24,4
03BF E090 LDI R25,0
03C0 8399 STD Y+1,R25
03C1 8388 STD Y+0,R24
03C2 2F26 MOV R18,R22
03C3 2F04 MOV R16,R20
03C4 DF39 RCALL _dis_168hz
(0590) default:break;
03C5 9622 ADIW R28,2
03C6 D0C0 RCALL pop_gset3
03C7 9508 RET
_dis_ykxt:
03C8 9724 SBIW R28,4
(0591) }
(0592) }
(0593) //-----------------------------------------------------------------------------
(0594)
(0595) /*void LCDtime(uchar x,uchar nian1,uchar nian2,uchar nian3,uchar nian4,
(0596) uchar yue1,uchar yue2,
(0597) uchar ri1,uchar ri2,
(0598) uchar shi1,uchar shi2,
(0599) uchar fen1,uchar fen1,) //LCD时间显示函数
(0600) */
(0601) //------------------------------------------------------------------------------
(0602) /*
(0603) void LCDtime()
(0604) {
(0605) dis_168hz(0xB6,5,er16); //n1
(0606) dis_168hz(0xB6,13,ling16); //n2
(0607) dis_168hz(0xB6,21,ling16); //n3
(0608) dis_168hz(0xB6,29,qi16); //n4
(0609) dis_168hz(0xB6,37,heng16);
(0610) dis_168hz(0xB6,45,yi16); //y1
(0611) dis_168hz(0xB6,53,ling16); //y2
(0612) dis_168hz(0xB6,61,heng16);
(0613) dis_168hz(0xB6,69,yi16); //r1
(0614) dis_168hz(0xB6,77,ling16); //r2
(0615) ///////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -