📄 ps2_study.lst
字号:
0504 1542 CP R20,R2
0505 F3B8 BCS 0x04FD
(0185) }
(0186) }
(0187) }
0506 9623 ADIW R28,3
0507 940E1FD3 CALL pop_gset5
0509 9622 ADIW R28,2
050A 9508 RET
_Delaynus:
j --> Y+1
m --> R20
i --> R22
k --> R16
050B 940E1FBD CALL push_gset2
(0188)
(0189)
(0190) ////////////////////////////////////////////////////////////////////////////
(0191) void Delaynus(unsigned int k)
(0192) {
(0193) char i, j, m;
(0194) for (m = 0; m < 8; m++)
050D 2744 CLR R20
050E C009 RJMP 0x0518
(0195) {
(0196) for (i = 0; i < k; i++)
050F 2766 CLR R22
0510 C001 RJMP 0x0512
0511 9563 INC R22
0512 2E26 MOV R2,R22
0513 2433 CLR R3
0514 1620 CP R2,R16
0515 0631 CPC R3,R17
0516 F3D0 BCS 0x0511
0517 9543 INC R20
0518 3048 CPI R20,0x8
0519 F3A8 BCS 0x050F
(0197) {
(0198) //for (j = 0; j < 150; j++);
(0199) ;
(0200) }
(0201) }
(0202) }
051A 940E1FCD CALL pop_gset2
051C 9508 RET
_Delaynms:
m --> R20
i --> R22
j --> R10
k --> R16
051D 940E1FC1 CALL push_gset3
(0203) //////////////////////////////////////////////////////
(0204) void Delaynms(unsigned int k)
(0205) {
(0206) char i, j, m;
(0207) for (m = 0; m < 8; m++)
051F 2744 CLR R20
0520 C00F RJMP 0x0530
(0208) {
(0209) for (i = 0; i < k; i++)
0521 2766 CLR R22
0522 C007 RJMP 0x052A
(0210) {
(0211) for (j = 0; j < 150; j++);
0523 24AA CLR R10
0524 C001 RJMP 0x0526
0525 94A3 INC R10
0526 2D8A MOV R24,R10
0527 3986 CPI R24,0x96
0528 F3E0 BCS 0x0525
0529 9563 INC R22
052A 2E26 MOV R2,R22
052B 2433 CLR R3
052C 1620 CP R2,R16
052D 0631 CPC R3,R17
052E F3A0 BCS 0x0523
052F 9543 INC R20
0530 3048 CPI R20,0x8
0531 F378 BCS 0x0521
(0212)
(0213) }
(0214) }
(0215) }
0532 940E1FD0 CALL pop_gset3
0534 9508 RET
_Delay_key:
i --> R20
j --> R22
m --> R10
k --> R16
0535 940E1FC1 CALL push_gset3
(0216) //////////////////////////////////
(0217)
(0218) void Delay_key(unsigned char k)
(0219) {
(0220) unsigned char i, j, m;
(0221) for (i = 0; i < k; i++)
0537 2744 CLR R20
0538 C00C RJMP 0x0545
(0222) {
(0223) for (j = 0; j < 8; j++)
0539 2766 CLR R22
053A C007 RJMP 0x0542
(0224) {
(0225) for (m = 0; m < 150; m++);
053B 24AA CLR R10
053C C001 RJMP 0x053E
053D 94A3 INC R10
053E 2D8A MOV R24,R10
053F 3986 CPI R24,0x96
0540 F3E0 BCS 0x053D
0541 9563 INC R22
0542 3068 CPI R22,0x8
0543 F3B8 BCS 0x053B
0544 9543 INC R20
0545 1740 CP R20,R16
0546 F390 BCS 0x0539
(0226) }
(0227) }
(0228) }
0547 940E1FD0 CALL pop_gset3
0549 9508 RET
_LCD_China:
i --> R20
L_R --> R22
data --> R10
y --> R12
x --> R14
054A 940E1FC9 CALL push_gset5
054C 2EC2 MOV R12,R18
054D 2EE0 MOV R14,R16
054E 9723 SBIW R28,3
054F 84AD LDD R10,13+Y
0550 84BE LDD R11,14+Y
0551 856F LDD R22,15+Y
(0229)
(0230)
(0231)
(0232) void LCD_China(char x, char y, unsigned char const *data, char L_R)
(0233) {
(0234) char i;
(0235) LCD_write_data(x, y, *data, L_R);
0552 836A STD R22,2+Y
0553 01F5 MOVW R30,R10
0554 91E4 LD R30,R30
0555 83E8 STD R30,0+Y
0556 2D2C MOV R18,R12
0557 2D0E MOV R16,R14
0558 DF19 RCALL _LCD_write_data
(0236) for (i = 0; i < 16; i++)
0559 2744 CLR R20
055A C008 RJMP 0x0563
(0237) {
(0238) LCD_write(*(data + i), L_R);
055B 2F26 MOV R18,R22
055C 2FE4 MOV R30,R20
055D 27FF CLR R31
055E 0DEA ADD R30,R10
055F 1DFB ADC R31,R11
0560 9104 LD R16,R16
0561 DEF4 RCALL _LCD_write
0562 9543 INC R20
0563 3140 CPI R20,0x10
0564 F3B0 BCS 0x055B
(0239) }
(0240)
(0241) LCD_write_data(x, y + 1, *(data + 16), L_R);
0565 836A STD R22,2+Y
0566 01F5 MOVW R30,R10
0567 9670 ADIW R30,0x10
0568 91E4 LD R30,R30
0569 83E8 STD R30,0+Y
056A 2D2C MOV R18,R12
056B 5F2F SUBI R18,0xFF
056C 2D0E MOV R16,R14
056D DF04 RCALL _LCD_write_data
(0242) for (i = 16; i < 32; i++)
056E E140 LDI R20,0x10
056F C008 RJMP 0x0578
(0243) {
(0244) LCD_write(*(data + i), L_R);
0570 2F26 MOV R18,R22
0571 2FE4 MOV R30,R20
0572 27FF CLR R31
0573 0DEA ADD R30,R10
0574 1DFB ADC R31,R11
0575 9104 LD R16,R16
0576 DEDF RCALL _LCD_write
0577 9543 INC R20
0578 3240 CPI R20,0x20
0579 F3B0 BCS 0x0570
(0245)
(0246)
(0247) }
(0248) }
057A 9623 ADIW R28,3
057B 940E1FD3 CALL pop_gset5
057D 9508 RET
_LCD_China_ini:
j --> R20
p --> R22
i --> R14
L_R --> R10
data --> R12
y --> Y+15
x --> Y+13
057E 940E1F73 CALL push_arg4
0580 940E1FC9 CALL push_gset5
0582 9723 SBIW R28,3
0583 88C9 LDD R12,17+Y
0584 88DA LDD R13,18+Y
0585 88AB LDD R10,19+Y
(0249) ///////////////////////////////////////////////
(0250) void LCD_China_ini(char x, char y, unsigned char const *data, char L_R)
(0251) {
(0252)
(0253) char i,j,p=0;
0586 2766 CLR R22
(0254) LED_ini();
0587 DF09 RCALL _LED_ini
(0255) for(j=0;j<4;j++)
0588 2744 CLR R20
0589 C01B RJMP 0x05A5
(0256) {
(0257)
(0258) LCD_write_data(x, y+j, *(data+p), L_R);
058A 82AA STD R10,2+Y
058B 2FE6 MOV R30,R22
058C 27FF CLR R31
058D 0DEC ADD R30,R12
058E 1DFD ADC R31,R13
058F 91E4 LD R30,R30
0590 83E8 STD R30,0+Y
0591 852F LDD R18,15+Y
0592 0F24 ADD R18,R20
0593 850D LDD R16,13+Y
0594 DEDD RCALL _LCD_write_data
(0259)
(0260) for (i = p; i < p+32; i++)
0595 2EE6 MOV R14,R22
0596 C008 RJMP 0x059F
(0261) {
(0262) LCD_write(*(data + i), L_R);
0597 2D2A MOV R18,R10
0598 2DEE MOV R30,R14
0599 27FF CLR R31
059A 0DEC ADD R30,R12
059B 1DFD ADC R31,R13
059C 9104 LD R16,R16
059D DEB8 RCALL _LCD_write
059E 94E3 INC R14
059F 2F86 MOV R24,R22
05A0 5E80 SUBI R24,0xE0
05A1 16E8 CP R14,R24
05A2 F3A0 BCS 0x0597
(0263) }
(0264) p=p+32;
05A3 5E60 SUBI R22,0xE0
05A4 9543 INC R20
05A5 3044 CPI R20,4
05A6 F318 BCS 0x058A
(0265) }
(0266) }
05A7 9623 ADIW R28,3
05A8 940E1FD3 CALL pop_gset5
05AA 9624 ADIW R28,4
05AB 9508 RET
_LCD_char:
i --> R20
L_R --> R22
data --> R10
y --> R12
x --> R14
05AC 940E1FC9 CALL push_gset5
05AE 2EC2 MOV R12,R18
05AF 2EE0 MOV R14,R16
05B0 9723 SBIW R28,3
05B1 84AD LDD R10,13+Y
05B2 84BE LDD R11,14+Y
05B3 856F LDD R22,15+Y
(0267) //////////////////////////////////////////////////////////////////////
(0268) void LCD_char(char x,char y,unsigned char const *data,char L_R)
(0269) {
(0270) char i;
(0271) LCD_write_data(x, y, *data, L_R);
05B4 836A STD R22,2+Y
05B5 01F5 MOVW R30,R10
05B6 91E4 LD R30,R30
05B7 83E8 STD R30,0+Y
05B8 2D2C MOV R18,R12
05B9 2D0E MOV R16,R14
05BA DEB7 RCALL _LCD_write_data
(0272) for (i = 1; i < 8; i++)
05BB E041 LDI R20,1
05BC C008 RJMP 0x05C5
(0273) {
(0274) LCD_write(*(data + i), L_R);
05BD 2F26 MOV R18,R22
05BE 2FE4 MOV R30,R20
05BF 27FF CLR R31
05C0 0DEA ADD R30,R10
05C1 1DFB ADC R31,R11
05C2 9104 LD R16,R16
05C3 DE92 RCALL _LCD_write
05C4 9543 INC R20
05C5 3048 CPI R20,0x8
05C6 F3B0 BCS 0x05BD
(0275) }
(0276)
(0277) LCD_write_data(x, y + 1, *(data + 8), L_R);
05C7 836A STD R22,2+Y
05C8 01F5 MOVW R30,R10
05C9 9638 ADIW R30,0x8
05CA 91E4 LD R30,R30
05CB 83E8 STD R30,0+Y
05CC 2D2C MOV R18,R12
05CD 5F2F SUBI R18,0xFF
05CE 2D0E MOV R16,R14
05CF DEA2 RCALL _LCD_write_data
(0278) for (i = 9; i < 16; i++)
05D0 E049 LDI R20,0x9
05D1 C008 RJMP 0x05DA
(0279) {
(0280) LCD_write(*(data + i), L_R);
05D2 2F26 MOV R18,R22
05D3 2FE4 MOV R30,R20
05D4 27FF CLR R31
05D5 0DEA ADD R30,R10
05D6 1DFB ADC R31,R11
05D7 9104 LD R16,R16
05D8 DE7D RCALL _LCD_write
05D9 9543 INC R20
05DA 3140 CPI R20,0x10
05DB F3B0 BCS 0x05D2
(0281) }
(0282) }
05DC 9623 ADIW R28,3
05DD 940E1FD3 CALL pop_gset5
05DF 9508 RET
_return_last:
n --> R20
05E0 940E1FA6 CALL push_gset1
05E2 2F40 MOV R20,R16
05E3 9723 SBIW R28,3
(0283)
(0284)
(0285) /*void LCD_pic(char x,char y,unsigned char const *data,char L_R)
(0286) {
(0287) int i,j;
(0288) int p=0;
(0289) LED_ini();
(0290) for(j=0;j<8;j++)
(0291) {
(0292)
(0293) LCD_write_data(x, y+j, *(data+p), L_R);
(0294)
(0295) for (i = p; i < p+64; i++)
(0296) {
(0297) LCD_write(*(data + i), L_R);
(0298) }
(0299) p=p+64;
(0300) }
(0301)
(0302) }*/
(0303) /////////////////////////////////////////////////////////////
(0304) void return_last(unsigned char n)
(0305) {
(0306) LCD_China(0,n,fan,0);
05E4 2422 CLR R2
05E5 822A STD R2,2+Y
05E6 E380 LDI R24,0x30
05E7 E095 LDI R25,5
05E8 8388 STD R24,0+Y
05E9 8399 STD R25,1+Y
05EA 2F24 MOV R18,R20
05EB 2700 CLR R16
05EC DF5D RCALL _LCD_China
(0307) LCD_China(17,n,hui,0);
05ED 2422 CLR R2
05EE 822A STD R2,2+Y
05EF E580 LDI R24,0x50
05F0 E095 LDI R25,5
05F1 8388 STD R24,0+Y
05F2 8399 STD R25,1+Y
05F3 2F24 MOV R18,R20
05F4 E101 LDI R16,0x11
05F5 DF54 RCALL _LCD_China
(0308) LCD_China(33,n,qing3,0);
05F6 2422 CLR R2
05F7 822A STD R2,2+Y
05F8 EE80 LDI R24,0xE0
05F9 E095 LDI R25,5
05FA 8388 STD R24,0+Y
05FB 8399 STD R25,1+Y
05FC 2F24 MOV R18,R20
05FD E201 LDI R16,0x21
05FE DF4B RCALL _LCD_China
(0309) LCD_China(49,n,an,0);
05FF 2422 CLR R2
0600 822A STD R2,2+Y
0601 E080 LDI R24,0
0602 E096 LDI R25,6
0603 8388 STD R24,0+Y
0604 8399 STD R25,1+Y
0605 2F24 MOV R18,R20
0606 E301 LDI R16,0x31
0607 DF42 RCALL _LCD_China
(0310) LCD_char(20,n,EE,1);
0608 E081 LDI R24,1
0609 838A STD R24,2+Y
060A E780 LDI R24,0x70
060B E095 LDI R25,5
060C 8388 STD R24,0+Y
060D 8399 STD R25,1+Y
060E 2F24 MOV R18,R20
060F E104 LDI R16,0x14
0610 DF9B RCALL _LCD_char
(0311) LCD_char(28,n,s,1);
0611 E081 LDI R24,1
0612 838A STD R24,2+Y
0613 EB80 LDI R24,0xB0
0614 E094 LDI R25,4
0615 8388 STD R24,0+Y
0616 8399 STD R25,1+Y
0617 2F24 MOV R18,R20
0618 E10C LDI R16,0x1C
0619 DF92 RCALL _LCD_char
(0312) LCD_char(36,n,c,1);
061A E081 LDI R24,1
061B 838A STD R24,2+Y
061C EB80 LDI R24,0xB0
061D E093 LDI R25,3
061E 8388 STD R24,0+Y
061F 8399 STD R25,1+Y
0620 2F24 MOV R18,R20
0621 E204 LDI R16,0x24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -