⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qingxi.lst

📁 超简单的编码开关(单键飞梭开关)解码程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -