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

📄 noname1.lst

📁 占空比可调的信号发生器 占空比可调的信号发生器
💻 LST
📖 第 1 页 / 共 2 页
字号:
                                                                    页     1
                                                                    07-06-08
                                                                    00:19:45
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

                    OUTPUT		BIT	P1.0	;定义输出端口;
            	KEY_F_UP	BIT	P0.2	;频率上调按键;
            	KEY_F_DOWN	BIT	P0.3	;频率下调按键;
            	KEY_DC_UP	BIT	P0.4	;占空比上调按键;
            	KEY_DC_DOWN	BIT	P0.5	;占空比下调按键;
            
                    TIMER0_H	EQU	30H	;定时器0高8位;
            	TIMER0_L	EQU	31H	;定时器0低8位;
            	TIMER1_H	EQU	32H	;定时器1高8位;
            	TIMER1_L	EQU	33H	;定时器1低8位;
            
            	PERCENT		EQU	34H	;占空比设置变量;
                    F_H		EQU	35H	;频率高8位;
            	F_L		EQU	36H	;频率低8位;
                    TEMP_H		EQU	37H	;临时变量,用于全局数字的传递;
            	TEMP_L		EQU	38H
            	F_TEMP_H	EQU	39H
            	F_TEMP_L	EQU	40H
            	DC_TEMP_H	EQU	41H
            	DC_TEMP_L	EQU	42H
            
            
                    ORG	0000H
0000 2100   	AJMP	MAIN
            	ORG	00BH
000B 41A0   	AJMP	TIMER0			;定时器0中断入口;
            	ORG	01BH
001B 41B3   	AJMP	TIMER1			;定时器1中断入口;
            
            	ORG	0100H
            
0100 753432 MAIN:   MOV	PERCENT,#50		;初始化占空比为50%;
0103 753500 	MOV	F_H,	#00H		;初始频率设为250HZ;
0106 7536FA 	MOV	F_L,	#0FAH
0109 7530F0 	MOV	TIMER0_H,#0F0H		;设初值;
010C 753160 	MOV	TIMER0_L,#60H		;设初值;
010F 7532F8 	MOV	TIMER1_H,#0F8H		;设初值;
0112 753330 	MOV	TIMER1_L,#30H		;设初值;
0115 758911 	MOV	TMOD,	#11H		;定时器0和定时器1都工作在方式1下(16位);
0118 85308C 	MOV	TH0,	TIMER0_H	;定时器0初始定时为2ms;
011B 85318A 	MOV	TL0,	TIMER0_L
011E 85328D 	MOV	TH1,	TIMER1_H	;定时器1初始定时4ms;
0121 85338B 	MOV	TL1,	TIMER1_L
0124 D2A9   	SETB	ET0			;设置定时器0中断;
0126 D2AB   	SETB	ET1			;设置定时器1中断;
0128 D2AF   	SETB	EA			;开启总中断;
012A D28C   	SETB	TR0			;开启定时器0;
012C D28E   	SETB	TR1			;开启定时器1;


C:\USERS\SONY\DESKTOP\许靓\NONAME1.ASM                          
 
                                                                    页     2
                                                                    07-06-08
                                                                    00:19:45
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

012E 313B   LOOP:	ACALL	KEYSCAN
0130 80FC   	SJMP	LOOP
            DELAY:					;延时子程序;
0132 7A14           MOV	R2,	#20
0134 7B14   LOOP1:	MOV	R3,	#20
0136 DBFE   	DJNZ	R3,	$                               
0138 DAFA   	DJNZ	R2,	LOOP1
013A 22     	RET
            KEYSCAN:				        ;键盘扫描子函数;
013B 3132   	ACALL	DELAY			        ;延时去抖;
            F_UP:
013D 208213 	JB	KEY_F_UP,       F_DOWN		;判断KEY_F_UP键是否按下,没有按下则往下检查KEY_F_DOWN键;
0140 3082FD 	JNB	KEY_F_UP,       $		;等待按键松开;
0143 AF35           MOV	R7,		F_H		;频率加10;
0145 AE36   	MOV	R6,		F_L
0147 7D00   	MOV	R5,		#00H
0149 7C0A   	MOV	R4,		#0AH
014B 5104   	ACALL	ADD_16
014D 8D35   	MOV	F_H,		R5
014F 8C36   	MOV	F_L,		R4
0151 2199   	AJMP	END_KEY_SCAN_F			;结束;
            F_DOWN:
0153 208313 	JB	KEY_F_DOWN,	DC_UP		;判断KEY_F_DOWN键是否按下,没有按下则往下检查KEY_DC_UP键;
0156 3083FD 	JNB	KEY_F_DOWN,	$		;等待按键松开;
0159 AF35   	MOV	R7,		F_H		;频率减10;
015B AE36   	MOV	R6,		F_L
015D 7D00   	MOV	R5,		#00H
015F 7C0A   	MOV	R4,		#0AH
0161 510C   	ACALL	SUB_16
0163 8D35   	MOV	F_H,		R5
0165 8C36   	MOV	F_L,		R4
0167 2199   	AJMP	END_KEY_SCAN_F			;结束;
            DC_UP:
0169 208417 	JB	KEY_DC_UP,	DC_DOWN		;判断KEY_DC_UP键是否按下,没有按下则往下检查KEY_DC_DOWN键;
016C 3084FD 	JNB	KEY_DC_UP,	$		;等待按键松开;
016F E534   	MOV	A,		PERCENT
0171 2405   	ADD	A,		#05H		;脉宽加5;
0173 C3     	CLR	C
0174 9464   	SUBB	A,		#100		;判断是不是大于100,大于则重置为1;
0176 4005   	JC	NEXT1
0178 753401 	MOV	PERCENT,	#01
017B 219F   	AJMP	END_KEY_SCAN_DC
017D 2464   NEXT1:	ADD	A,		#100
017F F534   	MOV	PERCENT,	A
0181 219F   	AJMP	END_KEY_SCAN_DC			;结束;
            DC_DOWN:
0183 20851D 	JB	KEY_DC_DOWN,	END_KEY_SCAN	;判断KEY_DC_DOWN键是否按下,没有按下则结束;
0186 3085FD 	JNB	KEY_DC_DOWN,	$		;等待按键松开;


C:\USERS\SONY\DESKTOP\许靓\NONAME1.ASM                          
 
                                                                    页     3
                                                                    07-06-08
                                                                    00:19:45
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

0189 E534   	MOV	A,		PERCENT
018B C3     	CLR	C
018C 9405   	SUBB	A,		#05H		;脉宽,频率减5;
018E 5005   	JNC	NEXT2				;判断是否小于0,小于则重置为99;
0190 753463 	MOV	PERCENT,	#99
0193 219F   	AJMP	END_KEY_SCAN_DC
0195 F534   NEXT2:	MOV	PERCENT,	A
0197 219F   	AJMP	END_KEY_SCAN_DC			;结束;
            
            END_KEY_SCAN_F:
0199 31A4   	ACALL	CALCULATE_F			;改变频率后要重新计算定时器0的初值;
019B 31D3   	ACALL	CALCULATE_DC			;改变频率后也要重新计算定时器1的初值,以确保占空比不改变;
019D 8004   	SJMP	END_KEY_SCAN
            END_KEY_SCAN_DC:
019F 31D3   	ACALL	CALCULATE_DC			;改变占空比后要重新计算定时器1的初值;
01A1 8000   	SJMP	END_KEY_SCAN
            END_KEY_SCAN:
01A3 22     	RET
            ;-------------------------------------------------------------------------------
            ;void	calculate_F()
            ;		{
            ;
            ;			temp=ALL-F_osc/12.0/FREQ;
            ;			TIMER0_H=(uint)temp/256;
            ;			TIMER0_L=(uint)temp%256;
            ;		 }
            ;下面这段程序是这段程序的翻译汇编语言,Fosc=12M;
            ;函数功能:频率计算函数,当频率变化,计算出定时器0初值;
            ;--------------------------------------------------------------------------------
            CALCULATE_F:
01A4 C0E0   	PUSH	ACC
01A6 C0D0   	PUSH	PSW
01A8 7D00   	MOV	R5,		#00H
01AA 7A0F   	MOV	R2,		#0FH
01AC 7B42   	MOV	R3,		#42H
01AE 7C40   	MOV	R4,		#40H
01B0 AE35   	MOV	R6,		F_H
01B2 AF36   	MOV	R7,		F_L
01B4 5114   	ACALL	NDIV42
01B6 8B39   	MOV	F_TEMP_H,	R3
01B8 8C40   	MOV	F_TEMP_L,	R4
01BA 7FFF   	MOV	R7,		#0FFH
01BC 7EFF   	MOV	R6,		#0FFH
01BE AD39   	MOV	R5,		F_TEMP_H
01C0 AC40   	MOV	R4,		F_TEMP_L
01C2 510C   	ACALL	SUB_16
01C4 8D37   	MOV	TEMP_H,		R5
01C6 8C38   	MOV	TEMP_L,		R4


C:\USERS\SONY\DESKTOP\许靓\NONAME1.ASM                          
 
                                                                    页     4
                                                                    07-06-08
                                                                    00:19:45
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

01C8 853730 	MOV	TIMER0_H,	TEMP_H
01CB 853831 	MOV	TIMER0_L,	TEMP_L
01CE D0D0   	POP	PSW
01D0 D0E0   	POP	ACC
01D2 22     	RET
            ;---------------------------------------------------------------------------------
            ;	void	calculate_W()
            ;		{
            ;			float TEMP;
            ;			TEMP=(1-PERCENT/100.0)*ALL+temp*PERCENT/100.0;
            ;			TIMER1_H=(uint)TEMP/256;
            ;			TIMER1_L=(uint)TEMP%256;
            ;		}
            ;下面这段程序是这段程序的翻译汇编语言,temp=F_TEMP_H*256+F_TEMP_L;
            ;函数功能:脉宽计算函数,脉宽变化时,计算出定时器1初值;
            ;----------------------------------------------------------------------------------
            CALCULATE_DC:
01D3 C0E0   	PUSH	ACC
01D5 C0D0   	PUSH	PSW
01D7 C3     	CLR	C
01D8 7464   	MOV	A, 	#64H
01DA 9534   	SUBB	A,	PERCENT
01DC 7B02   	MOV	R3,	#02H
01DE 7C8F   	MOV	R4,	#8FH
01E0 FF     	MOV	R7,	A
01E1 515E   	ACALL	NMUL21
01E3 8B41   	MOV	DC_TEMP_H,R3
01E5 8C42   	MOV	DC_TEMP_L,R4
01E7 AB37   	MOV	R3,	TEMP_H
01E9 AC38   	MOV	R4,	TEMP_L
01EB AF34   	MOV	R7,	PERCENT
01ED 515E   	ACALL	NMUL21				;乘积在R2,R3,R4中;
01EF 7F64   	MOV	R7,	#64H			;商在R3,R4中;
01F1 5172   	ACALL	NDIV31
01F3 AF41   	MOV	R7,	DC_TEMP_H
01F5 AE42   	MOV	R6,	DC_TEMP_L
01F7 EB     	MOV	A,	R3
01F8 FD     	MOV	R5,	A
01F9 5104   	ACALL	ADD_16
01FB 8D32   	MOV	TIMER1_H,R5
01FD 8C33   	MOV	TIMER1_L,R4
01FF D0D0   	POP	PSW
0201 D0E0   	POP	ACC
0203 22     	RET
            
            
            ADD_16:						;16位加法子程序(R7R6+R5R4=R5R4);
0204 C3     	CLR	C


C:\USERS\SONY\DESKTOP\许靓\NONAME1.ASM                          
 
                                                                    页     5
                                                                    07-06-08
                                                                    00:19:45
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

0205 EE     	MOV	A,	R6
0206 3C     	ADDC	A,	R4
0207 FC     	MOV	R4,	A
0208 EF     	MOV	A,	R7
0209 3D     	ADDC	A,	R5
020A FD     	MOV	R5,	A
020B 22     END_ADD:RET
            
            
            SUB_16:						;16位减法子程序(R7R6-R5R4=R5R4);
020C C3     	CLR	C
020D EE     	MOV	A,	R6
020E 9C     	SUBB	A,	R4
020F FC     	MOV	R4,	A
0210 EF     	MOV	A,	R7
0211 9D     	SUBB	A,	R5
0212 FD     	MOV	R5,	A
0213 22     END_SUB:RET
            
            
            ;-------------------------------------------------------------------------------------
            ;双字节无符号除法程序 (R5R2R3R4/R6R7)=(R2)R3R4 余数R6R7
            ;入口: R5,R2,R3,R4,R6,R7
            ;占用资源: ACC,B,F0
            ;堆栈需求: 4字节
            ;出口: (R2),R3,R4,R6,R7,OV
            ;-------------------------------------------------------------------------------------
0214 E9     NDIV42 :MOV A,R1
0215 C0E0   	PUSH ACC
0217 75F000 	MOV B,#00H
021A EA     NDV421 :MOV A,R2
021B C3     	CLR C
021C 9F     	SUBB A,R7
021D F9     	MOV R1,A
021E ED     	MOV A,R5
021F 9E     	SUBB A,R6
0220 4007   	JC NDV422
0222 FD     	MOV R5,A
0223 E9     	MOV A,R1
0224 FA     	MOV R2,A
0225 05F0   	INC B
0227 80F1   	SJMP NDV421
0229 C0F0   NDV422 :PUSH B
022B 75F010 	MOV B,#10H
022E C3     NDV423 :CLR C
022F EC     	MOV A,R4
0230 33     	RLC A
0231 FC     	MOV R4,A


C:\USERS\SONY\DESKTOP\许靓\NONAME1.ASM                          
 
                                                                    页     6
                                                                    07-06-08
                                                                    00:19:45
伟福汇编器 V5.00                             Copyright (c) 1989, 2001 by CHY

地址  机器码 源程序

0232 EB     	MOV A,R3
0233 33     	RLC A
0234 FB     	MOV R3,A
0235 EA     	MOV A,R2
0236 33     	RLC A
0237 FA     	MOV R2,A
0238 CD     	XCH A,R5
0239 33     	RLC A
023A CD     	XCH A,R5
023B 92D5   	MOV F0,C
023D C3     	CLR C
023E 9F     	SUBB A,R7
023F F9     	MOV R1,A
0240 ED     	MOV A,R5
0241 9E     	SUBB A,R6
0242 20D502 	JB F0,NCV424
0245 4004   	JC NDV425
0247 FD     NCV424 :MOV R5,A
0248 E9     	MOV A,R1
0249 FA     	MOV R2,A
024A 0C     	INC R4
024B D5F0E0 NDV425 :DJNZ B,NDV423
024E D0E0   	POP ACC

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -