📄 qingxi.lst
字号:
0F39 5BEC SUBI R30,0xBC
0F3A 4FFF SBCI R31,0xFF
0F3B 8000 LDD R0,Z+0
0F3C 9403 INC R0
0F3D 01FE MOVW R30,R28
0F3E 5BEC SUBI R30,0xBC
0F3F 4FFF SBCI R31,0xFF
0F40 8200 STD Z+0,R0
(0738) }
0F41 C07B RJMP 0x0FBD
(0739) else
(0740) { // 中文
(0741) for(j=0;j<sizeof(GB_16)/sizeof(GB_16[0]);j++)
0F42 2766 CLR R22
0F43 C015 RJMP 0x0F59
(0742) {
(0743) if(c1 == GB_16[j].Index[0] && c2 == GB_16[j].Index[1])
0F44 E282 LDI R24,0x22
0F45 9F86 MUL R24,R22
0F46 0110 MOVW R2,R0
0F47 ED86 LDI R24,0xD6
0F48 E193 LDI R25,0x13
0F49 01F1 MOVW R30,R2
0F4A 0FE8 ADD R30,R24
0F4B 1FF9 ADC R31,R25
0F4C 91E4 LPM R30,0(Z)
0F4D 16CE CP R12,R30
0F4E F449 BNE 0x0F58
0F4F ED87 LDI R24,0xD7
0F50 E193 LDI R25,0x13
0F51 01F1 MOVW R30,R2
0F52 0FE8 ADD R30,R24
0F53 1FF9 ADC R31,R25
0F54 91E4 LPM R30,0(Z)
0F55 174E CP R20,R30
0F56 F409 BNE 0x0F58
(0744) break;
0F57 C003 RJMP 0x0F5B
0F58 9563 INC R22
0F59 306A CPI R22,0xA
0F5A F348 BCS 0x0F44
(0745) }
(0746) for(k=0;k<sizeof(GB_16[0].Msk)/2;k++)
0F5B 24AA CLR R10
0F5C 24BB CLR R11
0F5D C047 RJMP 0x0FA5
(0747) {
(0748) fnSetPos(uRow+k,uCol);
0F5E 01FE MOVW R30,R28
0F5F 5BEC SUBI R30,0xBC
0F60 4FFF SBCI R31,0xFF
0F61 8120 LDD R18,Z+0
0F62 01FE MOVW R30,R28
0F63 5BEB SUBI R30,0xBB
0F64 4FFF SBCI R31,0xFF
0F65 8100 LDD R16,Z+0
0F66 2711 CLR R17
0F67 0D0A ADD R16,R10
0F68 1D1B ADC R17,R11
0F69 DDB0 RCALL _fnSetPos
(0749) lcd_wc(LC_AUT_WR); // 写数据
0F6A EB00 LDI R16,0xB0
0F6B DD77 RCALL _lcd_wc
(0750) if(j < sizeof(GB_16)/sizeof(GB_16[0]))
0F6C 306A CPI R22,0xA
0F6D F520 BCC 0x0F92
(0751) {
(0752) lcd_wd(GB_16[j].Msk[k*2]);
0F6E E282 LDI R24,0x22
0F6F 9F86 MUL R24,R22
0F70 0110 MOVW R2,R0
0F71 ED88 LDI R24,0xD8
0F72 E193 LDI R25,0x13
0F73 0E28 ADD R2,R24
0F74 1E39 ADC R3,R25
0F75 E002 LDI R16,2
0F76 E010 LDI R17,0
0F77 0195 MOVW R18,R10
0F78 940E1353 CALL empy16s
0F7A 01F8 MOVW R30,R16
0F7B 0DE2 ADD R30,R2
0F7C 1DF3 ADC R31,R3
0F7D 9104 LPM R16,0(Z)
0F7E DD4E RCALL _lcd_wd
(0753) lcd_wd(GB_16[j].Msk[k*2+1]);
0F7F E282 LDI R24,0x22
0F80 9F86 MUL R24,R22
0F81 0110 MOVW R2,R0
0F82 ED88 LDI R24,0xD8
0F83 E193 LDI R25,0x13
0F84 0E28 ADD R2,R24
0F85 1E39 ADC R3,R25
0F86 E002 LDI R16,2
0F87 E010 LDI R17,0
0F88 0195 MOVW R18,R10
0F89 940E1353 CALL empy16s
0F8B 01F8 MOVW R30,R16
0F8C 9631 ADIW R30,1
0F8D 0DE2 ADD R30,R2
0F8E 1DF3 ADC R31,R3
0F8F 9104 LPM R16,0(Z)
0F90 DD3C RCALL _lcd_wd
(0754) }
0F91 C00E RJMP 0x0FA0
(0755) else // 未找到该字
(0756) {
(0757) if(k < sizeof(GB_16[0].Msk)/4)
0F92 01C5 MOVW R24,R10
0F93 3088 CPI R24,0x8
0F94 E0E0 LDI R30,0
0F95 079E CPC R25,R30
0F96 F428 BCC 0x0F9C
(0758) {
(0759) lcd_wd(0x00);
0F97 2700 CLR R16
0F98 DD34 RCALL _lcd_wd
(0760) lcd_wd(0x00);
0F99 2700 CLR R16
0F9A DD32 RCALL _lcd_wd
(0761) }
0F9B C004 RJMP 0x0FA0
(0762) else
(0763) {
(0764) lcd_wd(0xff);
0F9C EF0F LDI R16,0xFF
0F9D DD2F RCALL _lcd_wd
(0765) lcd_wd(0xff);
0F9E EF0F LDI R16,0xFF
0F9F DD2D RCALL _lcd_wd
(0766) }
(0767) }
(0768) lcd_wc(LC_AUT_OVR);
0FA0 EB02 LDI R16,0xB2
0FA1 DD41 RCALL _lcd_wc
0FA2 01C5 MOVW R24,R10
0FA3 9601 ADIW R24,1
0FA4 015C MOVW R10,R24
0FA5 01C5 MOVW R24,R10
0FA6 3180 CPI R24,0x10
0FA7 E0E0 LDI R30,0
0FA8 079E CPC R25,R30
0FA9 F408 BCC 0x0FAB
0FAA CFB3 RJMP 0x0F5E
(0769) }
(0770) uCol += 2;
0FAB 01FE MOVW R30,R28
0FAC 5BEC SUBI R30,0xBC
0FAD 4FFF SBCI R31,0xFF
0FAE 8180 LDD R24,Z+0
0FAF 5F8E SUBI R24,0xFE
0FB0 01FE MOVW R30,R28
0FB1 5BEC SUBI R30,0xBC
0FB2 4FFF SBCI R31,0xFF
0FB3 8380 STD Z+0,R24
(0771) i++;
0FB4 01FE MOVW R30,R28
0FB5 5BEA SUBI R30,0xBA
0FB6 4FFF SBCI R31,0xFF
0FB7 8000 LDD R0,Z+0
0FB8 9403 INC R0
0FB9 01FE MOVW R30,R28
0FBA 5BEA SUBI R30,0xBA
0FBB 4FFF SBCI R31,0xFF
0FBC 8200 STD Z+0,R0
(0772) }
(0773) if(uCol >= 30) // 光标后移
0FBD 01FE MOVW R30,R28
0FBE 5BEC SUBI R30,0xBC
0FBF 4FFF SBCI R31,0xFF
0FC0 8180 LDD R24,Z+0
0FC1 318E CPI R24,0x1E
0FC2 F0F0 BCS 0x0FE1
(0774) {
(0775) uRow += 16;
0FC3 01FE MOVW R30,R28
0FC4 5BEB SUBI R30,0xBB
0FC5 4FFF SBCI R31,0xFF
0FC6 8180 LDD R24,Z+0
0FC7 5F80 SUBI R24,0xF0
0FC8 01FE MOVW R30,R28
0FC9 5BEB SUBI R30,0xBB
0FCA 4FFF SBCI R31,0xFF
0FCB 8380 STD Z+0,R24
(0776) if(uRow < 0x80)
0FCC 3880 CPI R24,0x80
0FCD F450 BCC 0x0FD8
(0777) uCol -= 30;
0FCE 01FE MOVW R30,R28
0FCF 5BEC SUBI R30,0xBC
0FD0 4FFF SBCI R31,0xFF
0FD1 8180 LDD R24,Z+0
0FD2 518E SUBI R24,0x1E
0FD3 01FE MOVW R30,R28
0FD4 5BEC SUBI R30,0xBC
0FD5 4FFF SBCI R31,0xFF
0FD6 8380 STD Z+0,R24
0FD7 C009 RJMP 0x0FE1
(0778) else
(0779) {
(0780) uRow = 0;
0FD8 2400 CLR R0
0FD9 01FE MOVW R30,R28
0FDA 5BEB SUBI R30,0xBB
0FDB 4FFF SBCI R31,0xFF
0FDC 8200 STD Z+0,R0
(0781) uCol = 0;
0FDD 01FE MOVW R30,R28
0FDE 5BEC SUBI R30,0xBC
0FDF 4FFF SBCI R31,0xFF
0FE0 8200 STD Z+0,R0
(0782) }
(0783) }
(0784) fnSetPos(uRow,uCol);
0FE1 01FE MOVW R30,R28
0FE2 5BEC SUBI R30,0xBC
0FE3 4FFF SBCI R31,0xFF
0FE4 8120 LDD R18,Z+0
0FE5 01FE MOVW R30,R28
0FE6 5BEB SUBI R30,0xBB
0FE7 4FFF SBCI R31,0xFF
0FE8 8100 LDD R16,Z+0
0FE9 DD30 RCALL _fnSetPos
(0785) i++;
0FEA 01FE MOVW R30,R28
0FEB 5BEA SUBI R30,0xBA
0FEC 4FFF SBCI R31,0xFF
0FED 8000 LDD R0,Z+0
0FEE 9403 INC R0
0FEF 01FE MOVW R30,R28
0FF0 5BEA SUBI R30,0xBA
0FF1 4FFF SBCI R31,0xFF
0FF2 8200 STD Z+0,R0
0FF3 01FE MOVW R30,R28
0FF4 5BEA SUBI R30,0xBA
0FF5 4FFF SBCI R31,0xFF
0FF6 8000 LDD R0,Z+0
0FF7 01FE MOVW R30,R28
0FF8 5BE9 SUBI R30,0xB9
0FF9 4FFF SBCI R31,0xFF
0FFA 8100 LDD R16,Z+0
0FFB 1600 CP R0,R16
0FFC F408 BCC 0x0FFE
0FFD CE9D RJMP 0x0E9B
(0786) }
(0787) return uLen;
0FFE 96EF ADIW R28,0x3F
0FFF 9629 ADIW R28,0x9
1000 940E136C CALL pop_gset5
1002 9624 ADIW R28,4
1003 9508 RET
_cgram:
i --> R20
j --> R22
1004 940E1375 CALL push_gset2
1006 9721 SBIW R28,1
(0788) }
(0789) //T6963驱动代码结束
(0790)
(0791)
(0792)
(0793) void cgram(void)
(0794) {
(0795) uchar i,j;
(0796) lcd_wc3(LC_ADD_POS,0x00,0x1C);
1007 E18C LDI R24,0x1C
1008 8388 STD Y+0,R24
1009 2722 CLR R18
100A E204 LDI R16,0x24
100B DCE9 RCALL _lcd_wc3
(0797) lcd_wc(LC_AUT_WR);
100C EB00 LDI R16,0xB0
100D DCD5 RCALL _lcd_wc
(0798) for(i=8;i>0;i--)
100E E048 LDI R20,0x8
100F C00E RJMP 0x101E
(0799) for(j=8;j>0;j--)
1010 E068 LDI R22,0x8
1011 C008 RJMP 0x101A
(0800) {
(0801) if(j<=i)
1012 1746 CP R20,R22
1013 F018 BCS 0x1017
(0802) lcd_wd(0x18);
1014 E108 LDI R16,0x18
1015 DCB7 RCALL _lcd_wd
1016 C002 RJMP 0x1019
(0803) else
(0804) lcd_wd(0x00);
1017 2700 CLR R16
1018 DCB4 RCALL _lcd_wd
1019 956A DEC R22
101A 2422 CLR R2
101B 1626 CP R2,R22
101C F3A8 BCS 0x1012
101D 954A DEC R20
101E 2422 CLR R2
101F 1624 CP R2,R20
1020 F378 BCS 0x1010
(0805) }
(0806) lcd_wc(LC_AUT_OVR);
1021 EB02 LDI R16,0xB2
1022 DCC0 RCALL _lcd_wc
1023 9621 ADIW R28,1
1024 940E1363 CALL pop_gset2
1026 9508 RET
(0807) }
(0808)
(0809)
(0810)
(0811) //Mega32芯片初始化
(0812) //call this routine to initialize all peripherals
(0813) void init_devices(void)
(0814) {
(0815) //stop errant interrupts until set up
(0816) CLI(); //disable all interrupts
_init_devices:
1027 94F8 BCLR 7
(0817) port_init();
1028 DBC6 RCALL _port_init
(0818) //uart0_init();
(0819) //watchdog_init();
(0820) timer0_init();
1029 DBD9 RCALL _timer0_init
(0821) timer1_init();
102A DBF1 RCALL _timer1_init
(0822) //adc_init();
(0823) MCUCR = 0x01; //
102B E081 LDI R24,1
102C BF85 OUT 0x35,R24
(0824) GICR = 0x40; //
102D E480 LDI R24,0x40
102E BF8B OUT 0x3B,R24
(0825) TIMSK = 0x05; //timer1,timer0 interrupt sources
102F E085 LDI R24,5
1030 BF89 OUT 0x39,R24
(0826) SEI(); //re-enable interrupts
1031 9478 BSET 7
1032 9508 RET
_main:
nn --> Y+2
TimesFlag --> Y+1
i --> Y+1
temp --> Y+1
tempadc --> Y+1
Times --> Y+1
exitcounter --> R10
pulse_pos --> R10
addr --> Y+0
tempfreq --> R10
1033 9724 SBIW R28,4
(0827) //all peripherals are now initialized
(0828) }
(0829)
(0830)
(0831)
(0832) void main(void)
(0833) {
(0834) uint Times,tempfreq,tempadc;
(0835) uchar temp,i;
(0836) uchar TimesFlag;
(0837) union uint2uchars nn;
(0838) union address addr;
(0839) uchar pulse_pos = 3;
(0840) uchar exitcounter=0;
1034 24AA CLR R10
(0841) addr.a = 0x0000;
1035 2422 CLR R2
1036 2433 CLR R3
1037 8239 STD Y+1,R3
1038 8228 STD Y+0,R2
(0842) init_devices();
1039 DFED RCALL _init_devices
(0843) uart_str("Jiangshu Zhenjiang Ibonding \n");
103A E705 LDI R16,0x75
103B E010 LDI R17,0
103C DC49 RCALL _uart_str
(0844) lcd_init();
103D DD5C RCALL _lcd_init
(0845) cls();
103E DD9B RCALL _cls
(0846) lcd_print240128(ourcompany);
103F E506 LDI R16,0x56
1040 E010 LDI R17,0
1041 DDF3 RCALL _lcd_print240128
(0847) WDR();
1042 95A8 WDR
(0848) beeps(2);
1043 E002 LDI R16,2
1044 DB96 RCALL _beeps
(0849) delay_ms(500);
1045 EF04 LDI R16,0xF4
1046 E011 LDI R17,1
1047 DB82 RCALL _delay_ms
(0850) WDR();
1048 95A8 WDR
(0851) delay_ms(500);
1049 EF04 LDI R16,0xF4
104A E011 LDI R17,1
104B DB7E RCALL _delay_ms
(0852) WDR();
104C 95A8 WDR
(0853) cls();
104D DD8C RCALL _cls
(0854) WDR();
104E 95A8 WDR
104F C0A1 RJMP 0x10F1
(0855) while (1) {
(0856) WDR();
1050 95A8 WDR
(0857) tempfreq=Freq;
1051 90A00171 LDS R10,Freq
1053 90B00172 LDS R11,Freq+1
(0858) tempfreq=tempfreq%100000;
1055 EA40 LDI R20,0xA0
1056 E856 LDI R21,0x86
1057 E061 LDI R22,1
1058 E070 LDI R23,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -