📄 ylf240128a.lst
字号:
o_x --> R20
04A7 940E05CC CALL push_gset3
04A9 2F62 MOV R22,R18
04AA 2F40 MOV R20,R16
04AB 9721 SBIW R28,1
04AC 80AF LDD R10,Y+7
04AD 84B8 LDD R11,Y+8
(1420) }
(1421)
(1422) //通过点阵图层写入字符,字符大小为32*32
(1423) //写入速度较慢
(1424) //位置为x*32,y*32,显示数据为disp[]
(1425) void DispChinaPic16(uchar o_x,uchar o_y,const uchar disp[])
(1426) {
(1427) uint temp;
(1428) uchar num;
(1429) temp=32*8*o_y;
04AE 2F26 MOV R18,R22
04AF 2733 CLR R19
04B0 E000 LDI R16,0
04B1 E011 LDI R17,1
04B2 940E05B2 CALL empy16s
04B4 01B8 MOVW R22,R16
(1430) temp=temp+o_x;
04B5 2E24 MOV R2,R20
04B6 2433 CLR R3
04B7 0D62 ADD R22,R2
04B8 1D73 ADC R23,R3
(1431) temp=temp+0x800;//加上图形区启始位置
04B9 5060 SUBI R22,0
04BA 4F78 SBCI R23,0xF8
(1432) num=16;
04BB E140 LDI R20,0x10
04BC C020 RJMP 0x04DD
(1433) while(num)
(1434) {
(1435) WriteTwoData((uchar)temp,(uchar)(temp>>8),0x24);//设置地址指针
04BD E284 LDI R24,0x24
04BE 8388 STD Y+0,R24
04BF 019B MOVW R18,R22
04C0 2F23 MOV R18,R19
04C1 2733 CLR R19
04C2 2F06 MOV R16,R22
04C3 DEB7 RCALL _WriteTwoData
(1436) temp=temp+32;// 换行
04C4 5E60 SUBI R22,0xE0
04C5 4F7F SBCI R23,0xFF
(1437) WriteOneData(disp[32-num*2],0xc0);//数据写,地址加1
04C6 EC20 LDI R18,0xC0
04C7 E082 LDI R24,2
04C8 9F84 MUL R24,R20
04C9 E2E0 LDI R30,0x20
04CA E0F0 LDI R31,0
04CB 19E0 SUB R30,R0
04CC 09F1 SBC R31,R1
04CD 0DEA ADD R30,R10
04CE 1DFB ADC R31,R11
04CF 9104 LPM R16,0(Z)
04D0 DEBA RCALL _WriteOneData
(1438) WriteOneData(disp[33-num*2],0xc0);//数据写,地址加1
04D1 EC20 LDI R18,0xC0
04D2 E082 LDI R24,2
04D3 9F84 MUL R24,R20
04D4 E2E1 LDI R30,0x21
04D5 E0F0 LDI R31,0
04D6 19E0 SUB R30,R0
04D7 09F1 SBC R31,R1
04D8 0DEA ADD R30,R10
04D9 1DFB ADC R31,R11
04DA 9104 LPM R16,0(Z)
04DB DEAF RCALL _WriteOneData
(1439) num--;
04DC 954A DEC R20
04DD 2344 TST R20
04DE F6F1 BNE 0x04BD
04DF 9621 ADIW R28,1
04E0 940E05C5 CALL pop_gset3
04E2 9508 RET
_DispChinaPic24:
temp --> R20
num --> R22
disp --> R10
o_y --> R20
o_x --> R22
04E3 940E05CC CALL push_gset3
04E5 2F42 MOV R20,R18
04E6 2F60 MOV R22,R16
04E7 9721 SBIW R28,1
04E8 80AF LDD R10,Y+7
04E9 84B8 LDD R11,Y+8
(1440) }
(1441) }
(1442)
(1443)
(1444) void DispChinaPic24(uchar o_x,uchar o_y,const uchar disp[])
(1445) {
(1446) uint temp;
(1447) uchar num;
(1448) temp=32*8*o_y;
04EA 2F24 MOV R18,R20
04EB 2733 CLR R19
04EC E000 LDI R16,0
04ED E011 LDI R17,1
04EE 940E05B2 CALL empy16s
04F0 01A8 MOVW R20,R16
(1449) temp=temp+o_x;
04F1 2E26 MOV R2,R22
04F2 2433 CLR R3
04F3 0D42 ADD R20,R2
04F4 1D53 ADC R21,R3
(1450) temp=temp+0x800;//加上图形区启始位置
04F5 5040 SUBI R20,0
04F6 4F58 SBCI R21,0xF8
(1451) num=24;
04F7 E168 LDI R22,0x18
04F8 C02B RJMP 0x0524
(1452) while(num)
(1453) {
(1454) WriteTwoData((uchar)temp,(uchar)(temp>>8),0x24);//设置地址指针
04F9 E284 LDI R24,0x24
04FA 8388 STD Y+0,R24
04FB 019A MOVW R18,R20
04FC 2F23 MOV R18,R19
04FD 2733 CLR R19
04FE 2F04 MOV R16,R20
04FF DE7B RCALL _WriteTwoData
(1455) temp=temp+32;// 换行
0500 5E40 SUBI R20,0xE0
0501 4F5F SBCI R21,0xFF
(1456) WriteOneData(disp[72-num*3],0xc0);//数据写,地址加1
0502 EC20 LDI R18,0xC0
0503 E083 LDI R24,3
0504 9F86 MUL R24,R22
0505 E4E8 LDI R30,0x48
0506 E0F0 LDI R31,0
0507 19E0 SUB R30,R0
0508 09F1 SBC R31,R1
0509 0DEA ADD R30,R10
050A 1DFB ADC R31,R11
050B 9104 LPM R16,0(Z)
050C DE7E RCALL _WriteOneData
(1457) WriteOneData(disp[73-num*3],0xc0);//数据写,地址加1
050D EC20 LDI R18,0xC0
050E E083 LDI R24,3
050F 9F86 MUL R24,R22
0510 E4E9 LDI R30,0x49
0511 E0F0 LDI R31,0
0512 19E0 SUB R30,R0
0513 09F1 SBC R31,R1
0514 0DEA ADD R30,R10
0515 1DFB ADC R31,R11
0516 9104 LPM R16,0(Z)
0517 DE73 RCALL _WriteOneData
(1458) WriteOneData(disp[74-num*3],0xc0);//数据写,地址加1
0518 EC20 LDI R18,0xC0
0519 E083 LDI R24,3
051A 9F86 MUL R24,R22
051B E4EA LDI R30,0x4A
051C E0F0 LDI R31,0
051D 19E0 SUB R30,R0
051E 09F1 SBC R31,R1
051F 0DEA ADD R30,R10
0520 1DFB ADC R31,R11
0521 9104 LPM R16,0(Z)
0522 DE68 RCALL _WriteOneData
(1459) num--;
0523 956A DEC R22
0524 2366 TST R22
0525 F699 BNE 0x04F9
0526 9621 ADIW R28,1
0527 940E05C5 CALL pop_gset3
0529 9508 RET
_main:
052A 9722 SBIW R28,2
(1460) }
(1461) }
(1462)
(1463) void main()
(1464) {
(1465) McuInit();
052B DE11 RCALL _McuInit
(1466) LcdInit();
052C DE6B RCALL _LcdInit
(1467) ClearLcd();
052D DE9B RCALL _ClearLcd
(1468) /* CGRamGen(0,CGTAB);
(1469) CGRamGen(0x80,yi16_1);
(1470) CGRamGen(0x84,er16_2);
(1471) CGRamGen(0x88,san16_3);
(1472) CGRamGen(0x8c,si16_4);
(1473) CGRamGen(0x90,wu16_5);
(1474) CGRamGen(0x94,liu16_6);
(1475) CGRamGen(0x98,qi16_7);
(1476) CGRamGen(0x9c,ba16_8);
(1477) CGRamGen(0xa0,jiu16_9);
(1478) CGRamGen(0xa4,ling16_0);*/
(1479)
(1480) CGRamGen(number);
052E E704 LDI R16,0x74
052F E010 LDI R17,0
0530 DECB RCALL _CGRamGen
(1481) // CGRamGenTry(numbertry);
(1482)
(1483)
(1484) // CGRamGen(0x80,ling16_0);
(1485)
(1486)
(1487) DispChinaCode(24,0,0x80);
0531 E880 LDI R24,0x80
0532 8388 STD Y+0,R24
0533 2722 CLR R18
0534 E108 LDI R16,0x18
0535 DF41 RCALL _DispChinaCode
(1488) DispChinaCode(26,0,0x84);
0536 E884 LDI R24,0x84
0537 8388 STD Y+0,R24
0538 2722 CLR R18
0539 E10A LDI R16,0x1A
053A DF3C RCALL _DispChinaCode
(1489) DispChinaCode(28,0,0x88);
053B E888 LDI R24,0x88
053C 8388 STD Y+0,R24
053D 2722 CLR R18
053E E10C LDI R16,0x1C
053F DF37 RCALL _DispChinaCode
(1490) DispChinaCode(24,2,0x8c);
0540 E88C LDI R24,0x8C
0541 8388 STD Y+0,R24
0542 E022 LDI R18,2
0543 E108 LDI R16,0x18
0544 DF32 RCALL _DispChinaCode
(1491) DispChinaCode(26,2,0x90);
0545 E980 LDI R24,0x90
0546 8388 STD Y+0,R24
0547 E022 LDI R18,2
0548 E10A LDI R16,0x1A
0549 DF2D RCALL _DispChinaCode
(1492) DispChinaCode(28,2,0x94);
054A E984 LDI R24,0x94
054B 8388 STD Y+0,R24
054C E022 LDI R18,2
054D E10C LDI R16,0x1C
054E DF28 RCALL _DispChinaCode
(1493) DispChinaCode(24,4,0x98);
054F E988 LDI R24,0x98
0550 8388 STD Y+0,R24
0551 E024 LDI R18,4
0552 E108 LDI R16,0x18
0553 DF23 RCALL _DispChinaCode
(1494)
(1495) /* DispChinaPic24(0,0,yang24);
(1496) DispChinaPic24(3,0,jian24);
(1497) DispChinaPic24(6,0,hao24);
(1498) DispChinaPic24(0,3,ci24);//次
(1499) DispChinaPic24(3,3,shu24);//数
(1500) DispChinaPic24(0,6,su24);//速
(1501) DispChinaPic24(3,6,du24);//度
(1502) DispChinaPic24(0,9,xing24);//行
(1503) DispChinaPic24(3,9,cheng24);//程
(1504) DispChinaPic24(0,12,ding24);//定
(1505) DispChinaPic24(3,12,dian24);//点
(1506) DispChinaPic24(6,12,pen24);//喷
(1507) DispChinaPic24(9,12,sshe24);//射
(1508) */
(1509) DispChinaPic16(0,0,yang16);//样
0554 EF84 LDI R24,0xF4
0555 E092 LDI R25,2
0556 8399 STD Y+1,R25
0557 8388 STD Y+0,R24
0558 2722 CLR R18
0559 2700 CLR R16
055A DF4C RCALL _DispChinaPic16
(1510) DispChinaPic16(2,0,jian16);//件
055B E184 LDI R24,0x14
055C E093 LDI R25,3
055D 8399 STD Y+1,R25
055E 8388 STD Y+0,R24
055F 2722 CLR R18
0560 E002 LDI R16,2
0561 DF45 RCALL _DispChinaPic16
(1511) DispChinaPic16(4,0,hao16);//号
0562 E384 LDI R24,0x34
0563 E093 LDI R25,3
0564 8399 STD Y+1,R25
0565 8388 STD Y+0,R24
0566 2722 CLR R18
0567 E004 LDI R16,4
0568 DF3E RCALL _DispChinaPic16
(1512) DispChinaPic16(0,3,ci16);//次
0569 E588 LDI R24,0x58
056A E093 LDI R25,3
056B 8399 STD Y+1,R25
056C 8388 STD Y+0,R24
056D E023 LDI R18,3
056E 2700 CLR R16
056F DF37 RCALL _DispChinaPic16
(1513) DispChinaPic16(2,3,shu16);//数
0570 E788 LDI R24,0x78
0571 E093 LDI R25,3
0572 8399 STD Y+1,R25
0573 8388 STD Y+0,R24
0574 E023 LDI R18,3
0575 E002 LDI R16,2
0576 DF30 RCALL _DispChinaPic16
(1514) DispChinaPic16(0,6,su16);//速
0577 E188 LDI R24,0x18
0578 E094 LDI R25,4
0579 8399 STD Y+1,R25
057A 8388 STD Y+0,R24
057B E026 LDI R18,6
057C 2700 CLR R16
057D DF29 RCALL _DispChinaPic16
(1515) DispChinaPic16(2,6,du16);//度
057E E388 LDI R24,0x38
057F E094 LDI R25,4
0580 8399 STD Y+1,R25
0581 8388 STD Y+0,R24
0582 E026 LDI R18,6
0583 E002 LDI R16,2
0584 DF22 RCALL _DispChinaPic16
(1516) DispChinaPic16(0,9,xing16);//行
0585 E588 LDI R24,0x58
0586 E094 LDI R25,4
0587 8399 STD Y+1,R25
0588 8388 STD Y+0,R24
0589 E029 LDI R18,0x9
058A 2700 CLR R16
058B DF1B RCALL _DispChinaPic16
(1517) DispChinaPic16(2,9,cheng16);//程
058C E788 LDI R24,0x78
058D E094 LDI R25,4
058E 8399 STD Y+1,R25
058F 8388 STD Y+0,R24
0590 E029 LDI R18,0x9
0591 E002 LDI R16,2
0592 DF14 RCALL _DispChinaPic16
(1518) DispChinaPic16(0,12,ding16);//定
0593 EB88 LDI R24,0xB8
0594 E093 LDI R25,3
0595 8399 STD Y+1,R25
0596 8388 STD Y+0,R24
0597 E02C LDI R18,0xC
0598 2700 CLR R16
0599 DF0D RCALL _DispChinaPic16
(1519) DispChinaPic16(2,12,dian16);//点
059A EF88 LDI R24,0xF8
059B E094 LDI R25,4
059C 8399 STD Y+1,R25
059D 8388 STD Y+0,R24
059E E02C LDI R18,0xC
059F E002 LDI R16,2
05A0 DF06 RCALL _DispChinaPic16
(1520) DispChinaPic16(4,12,pen16);//喷
05A1 E188 LDI R24,0x18
05A2 E095 LDI R25,5
05A3 8399 STD Y+1,R25
05A4 8388 STD Y+0,R24
05A5 E02C LDI R18,0xC
05A6 E004 LDI R16,4
05A7 DEFF RCALL _DispChinaPic16
(1521) DispChinaPic16(6,12,sshe16);//射
05A8 E388 LDI R24,0x38
05A9 E095 LDI R25,5
05AA 8399 STD Y+1,R25
05AB 8388 STD Y+0,R24
05AC E02C LDI R18,0xC
05AD E006 LDI R16,6
05AE DEF8 RCALL _DispChinaPic16
(1522)
(1523) /* DispChinaPic16(13,0,ba16_8);//
(1524) DispChinaPic16(15,0,ba16_8);//
(1525) DispChinaPic16(17,0,ba16_8);//
(1526) DispChinaPic16(13,3,ba16_8);//
(1527) DispChinaPic16(15,3,ba16_8);//
(1528) DispChinaPic16(17,3,ba16_8);//
(1529) DispChinaPic16(13,6,ba16_8);//
(1530) DispChinaPic16(15,6,ba16_8);//
(1531) DispChinaPic16(17,6,ba16_8);//
(1532) DispChinaPic16(8,9,ba16_8);//
(1533) DispChinaPic16(10,9,ba16_8);//
(1534) DispChinaPic16(12,9,ba16_8);//
(1535) DispChinaPic16(13,9,ba16_8);//
(1536) DispChinaPic16(15,9,ba16_8);//
(1537) DispChinaPic16(17,9,ba16_8);//
(1538) DispChinaPic16(10,12,ba16_8);//
(1539) DispChinaPic16(12,12,ba16_8);//
(1540) DispChinaPic16(15,12,ba16_8);//
(1541) DispChinaPic16(17,12,ba16_8);//
(1542) */
(1543) while(1);
FILE: <library>
05AF CFFF RJMP 0x05AF
05B0 9622 ADIW R28,2
05B1 9508 RET
empy16s:
05B2 920A ST R0,-Y
05B3 921A ST R1,-Y
05B4 938A ST R24,-Y
05B5 939A ST R25,-Y
05B6 9F02 MUL R16,R18
05B7 01C0 MOVW R24,R0
05B8 9F12 MUL R17,R18
05B9 0D90 ADD R25,R0
05BA 9F03 MUL R16,R19
05BB 0D90 ADD R25,R0
05BC 018C MOVW R16,R24
05BD 9199 LD R25,Y+
05BE 9189 LD R24,Y+
05BF 9019 LD R1,Y+
05C0 9009 LD R0,Y+
05C1 9508 RET
pop_gset2:
05C2 E0E2 LDI R30,2
05C3 940C05D4 JMP pop
pop_gset3:
05C5 E0E4 LDI R30,4
05C6 940C05D4 JMP pop
push_gset5:
05C8 92FA ST R15,-Y
05C9 92EA ST R14,-Y
push_gset4:
05CA 92DA ST R13,-Y
05CB 92CA ST R12,-Y
push_gset3:
05CC 92BA ST R11,-Y
05CD 92AA ST R10,-Y
push_gset2:
05CE 937A ST R23,-Y
05CF 936A ST R22,-Y
push_gset1:
05D0 935A ST R21,-Y
05D1 934A ST R20,-Y
05D2 9508 RET
pop_gset1:
05D3 E0E1 LDI R30,1
pop:
05D4 9149 LD R20,Y+
05D5 9159 LD R21,Y+
05D6 FDE0 SBRC R30,0
05D7 9508 RET
05D8 9169 LD R22,Y+
05D9 9179 LD R23,Y+
05DA FDE1 SBRC R30,1
05DB 9508 RET
05DC 90A9 LD R10,Y+
05DD 90B9 LD R11,Y+
05DE FDE2 SBRC R30,2
05DF 9508 RET
05E0 90C9 LD R12,Y+
05E1 90D9 LD R13,Y+
05E2 FDE3 SBRC R30,3
05E3 9508 RET
05E4 90E9 LD R14,Y+
05E5 90F9 LD R15,Y+
05E6 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -