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

📄 3.asm

📁 this program has many parts and fully working, based on MCS51. Hand made PWM and wave forms for dim
💻 ASM
📖 第 1 页 / 共 3 页
字号:

sequence1_10:
	cjne	A, #010, sequence1_11		;wait for timer
	mov	A, sequence1_timer		;check timer
	cjne	A, #015, sequence1_10_1		;if time not reached
	inc	sequence1_counter		;sequence++
 sequence1_10_1:
	ret

sequence1_11:
	cjne	A, #011, sequence1_12		;turn two by two ON and OFF
	mov	channel1_fade_max, #Max_POWER	;stop condition
	call	channel1_fade_to_on_init	;turn it on
	mov	channel2_fade_max, #Max_POWER	;stop condition
	call	channel2_fade_to_on_init	;turn it on
	mov	channel3_fade_min, #00		;start condition
	call	channel3_fade_to_off_init	;turn it off
	mov	channel4_fade_min, #00		;start condition
	call	channel4_fade_to_off_init	;turn it off
	mov	sequence1_timer, #00		;reset timer
	inc	sequence1_counter		;sequence++
	ret

sequence1_12:
	cjne	A, #012, sequence1_13		;wait for timer
	mov	A, sequence1_timer		;check timer
	cjne	A, #015, sequence1_12_1		;if time not reached
	inc	sequence1_counter		;sequence++
 sequence1_12_1:
	ret

sequence1_13:
	cjne	A, #013, sequence1_14		;turn two by two ON and OFF
	mov	channel1_fade_max, #Max_POWER	;stop condition
	call	channel1_fade_to_on_init	;turn it on
	mov	channel2_fade_min, #00		;start condition
	call	channel2_fade_to_off_init	;turn it off
	mov	channel3_fade_max, #Max_POWER	;stop condition
	call	channel3_fade_to_on_init	;turn it on
	mov	channel4_fade_min, #00		;start condition
	call	channel4_fade_to_off_init	;turn it off
	mov	sequence1_timer, #00		;reset timer
	inc	sequence1_counter		;sequence++
	ret

sequence1_14:
	cjne	A, #014, sequence1_15		;wait for timer
	mov	A, sequence1_timer		;check timer
	cjne	A, #015, sequence1_14_1		;if time not reached
	inc	sequence1_counter		;sequence++
 sequence1_14_1:
	ret

sequence1_15:
	cjne	A, #015, sequence1_16		;turn two by two ON and OFF
	mov	channel1_fade_min, #00		;start condition
	call	channel1_fade_to_off_init	;turn it off
	mov	channel2_fade_max, #Max_POWER	;stop condition
	call	channel2_fade_to_on_init	;turn it on
	mov	channel3_fade_min, #00		;start condition
	call	channel3_fade_to_off_init	;turn it off
	mov	channel4_fade_max, #Max_POWER	;stop condition
	call	channel4_fade_to_on_init	;turn it on
	mov	sequence1_timer, #00		;reset timer
	inc	sequence1_counter		;sequence++
	ret

sequence1_16:
	cjne	A, #016, sequence1_17		;wait for timer
	mov	A, sequence1_timer		;check timer
	cjne	A, #015, sequence1_16_1		;if time not reached
	inc	sequence1_counter		;sequence++
 sequence1_16_1:
	ret

sequence1_17:
	cjne	A, #017, sequence1_18		;turn all OFF
	mov	channel1_fade_min, #00		;start condition
	call	channel1_fade_to_off_init	;turn it off
	mov	channel2_fade_min, #00		;start condition
	call	channel2_fade_to_off_init	;turn it off
	mov	channel3_fade_min, #00		;start condition
	call	channel3_fade_to_off_init	;turn it off
	mov	channel4_fade_min, #00		;start condition
	call	channel4_fade_to_off_init	;turn it off
	mov	sequence1_timer, #00		;reset timer
	inc	sequence1_counter		;sequence++
	ret

sequence1_18:
	cjne	A, #018, sequence1_19		;wait for reset
	mov	A, sequence1_timer		;check timer
	cjne	A, #015, sequence1_18_1		;if time not reached
	inc	sequence1_counter		;sequence++
 sequence1_18_1:
	ret

sequence1_19:
	cjne	A, #019, sequence1_x		;wait for reset
	mov	sequence1_counter, #00		;sequence = 0
	jnb	recording, sequence1_19_1	;if I am recording
	clr	sound_chip_CE			; CE pulsed low ,recorde start
	mov	A, #10
	djnz	ACC,$
	setb	sound_chip_CE
	clr	recording			;stop recording
 sequence1_19_1:
	ret

sequence1_x:
	mov	sequence1_counter, #00		;sequence = 0
	ret
;============================================================================
sequence2:
	ret
;============================================================================
sequence3:
	ret
;============================================================================
channel1_fade_to_off_init:
	mov	A, channel1_fade_min		;prepare for check
	cjne	A, channel1_fade_PWM, channel1_fade_to_off_init_1
	ret
channel1_fade_to_off_init_1:
	jc	channel1_fade_to_off_init_2
	ret
channel1_fade_to_off_init_2:
	clr	fade1_to_on_in_progress
	setb	fade1_to_off_in_progress	;I am fading !
	mov	channel1_fade_counter, channel1_fade_delay ;preset value
;	mov	channel1_fade_PWM, channel1_fade_max
;============================================================================
channel1_fade_to_off:
	jb	fade1_to_off_in_progress, channel1_fade_to_off_1
	ret
channel1_fade_to_off_1:
	inc	channel1_fade_counter		;counter++
	mov	A, channel1_fade_counter	;prepare for check
	jnz	channel1_fade_to_off_3		;counter overflow check
	mov	channel1_fade_counter, channel1_fade_delay ;preset value
	mov	A, channel1_fade_PWM		;prepare for check
	cjne	A, channel1_fade_min, channel1_fade_to_off_2 ;countinue
	clr	fade1_to_off_in_progress	;Fading finished
	clr	fade1_direction			;last time I fade to off
	sjmp	channel1_fade_to_off_3		;go for exit
channel1_fade_to_off_2:
	dec	channel1_fade_PWM		;one step back
channel1_fade_to_off_3:
	mov	Channel1_PWM_percent, channel1_fade_PWM
channel1_fade_to_off_x:
	ret
;============================================================================
channel1_fade_to_on_init:
	mov	A, channel1_fade_max		;prepare for check
	cjne	A, channel1_fade_PWM, channel1_fade_to_on_init_1
	ret
channel1_fade_to_on_init_1:
	jnc	channel1_fade_to_on_init_2
	ret
channel1_fade_to_on_init_2:
	clr	fade1_to_off_in_progress
	setb	fade1_to_on_in_progress		;I am fading !
	mov	channel1_fade_counter, channel1_fade_delay ;preset value
;	mov	channel1_fade_PWM, channel1_fade_min
;============================================================================
channel1_fade_to_on:
	jb	fade1_to_on_in_progress, channel1_fade_to_on_1
	ret
channel1_fade_to_on_1:
	inc	channel1_fade_counter		;counter++
	mov	A, channel1_fade_counter	;prepare for check
	jnz	channel1_fade_to_on_3		;counter overflow check
	mov	channel1_fade_counter, channel1_fade_delay ;preset value
	mov	A, channel1_fade_PWM		;prepare for check
	cjne	A, channel1_fade_max, channel1_fade_to_on_2 ;countinue
	clr	fade1_to_on_in_progress		;Fading finished
	setb	fade1_direction			;last time I fade to on
	sjmp	channel1_fade_to_on_3		;go for exit
channel1_fade_to_on_2:
	inc	channel1_fade_PWM		;one step forward
channel1_fade_to_on_3:
	mov	Channel1_PWM_percent, channel1_fade_PWM
channel1_fade_to_on_x:
	ret
;============================================================================
channel2_fade_to_off_init:
	mov	A, channel2_fade_min		;prepare for check
	cjne	A, channel2_fade_PWM, channel2_fade_to_off_init_1
	ret
channel2_fade_to_off_init_1:
	jc	channel2_fade_to_off_init_2
	ret
channel2_fade_to_off_init_2:
	clr	fade2_to_on_in_progress
	setb	fade2_to_off_in_progress	;I am fading !
	mov	channel2_fade_counter, channel2_fade_delay ;preset value
;	mov	channel2_fade_PWM, channel2_fade_max
;============================================================================
channel2_fade_to_off:
	jb	fade2_to_off_in_progress, channel2_fade_to_off_1
	ret
channel2_fade_to_off_1:
	inc	channel2_fade_counter		;counter++
	mov	A, channel2_fade_counter	;prepare for check
	jnz	channel2_fade_to_off_3		;counter overflow check
	mov	channel2_fade_counter, channel2_fade_delay ;preset value
	mov	A, channel2_fade_PWM		;prepare for check
	cjne	A, channel2_fade_min, channel2_fade_to_off_2 ;countinue
	clr	fade2_to_off_in_progress	;Fading finished
	clr	fade2_direction			;last time I fade to off
	sjmp	channel2_fade_to_off_3		;go for exit
channel2_fade_to_off_2:
	dec	channel2_fade_PWM		;one step back
channel2_fade_to_off_3:
	mov	Channel2_PWM_percent, channel2_fade_PWM
channel2_fade_to_off_x:
	ret
;============================================================================
channel2_fade_to_on_init:
	mov	A, channel2_fade_max		;prepare for check
	cjne	A, channel2_fade_PWM, channel2_fade_to_on_init_1
	ret
channel2_fade_to_on_init_1:
	jnc	channel2_fade_to_on_init_2
	ret
channel2_fade_to_on_init_2:
	clr	fade2_to_off_in_progress
	setb	fade2_to_on_in_progress		;I am fading !
	mov	channel2_fade_counter, channel2_fade_delay ;preset value
;	mov	channel2_fade_PWM, channel2_fade_min
;============================================================================
channel2_fade_to_on:
	jb	fade2_to_on_in_progress, channel2_fade_to_on_1
	ret
channel2_fade_to_on_1:
	inc	channel2_fade_counter		;counter++
	mov	A, channel2_fade_counter	;prepare for check
	jnz	channel2_fade_to_on_3		;counter overflow check
	mov	channel2_fade_counter, channel2_fade_delay ;preset value
	mov	A, channel2_fade_PWM		;prepare for check
	cjne	A, channel2_fade_max, channel2_fade_to_on_2	;countinue
	clr	fade2_to_on_in_progress		;Fading finished
	setb	fade2_direction			;last time I fade to on
	sjmp	channel2_fade_to_on_3		;go for exit
channel2_fade_to_on_2:
	inc	channel2_fade_PWM		;one step forward
channel2_fade_to_on_3:
	mov	Channel2_PWM_percent, channel2_fade_PWM
channel2_fade_to_on_x:
	ret
;============================================================================
channel3_fade_to_off_init:
	mov	A, channel3_fade_min		;prepare for check
	cjne	A, channel3_fade_PWM, channel3_fade_to_off_init_1
	ret
channel3_fade_to_off_init_1:
	jc	channel3_fade_to_off_init_2
	ret
channel3_fade_to_off_init_2:
	clr	fade3_to_on_in_progress
	setb	fade3_to_off_in_progress	;I am fading !
	mov	channel3_fade_counter, channel3_fade_delay ;preset value
;	mov	channel3_fade_PWM, channel3_fade_max
;============================================================================
channel3_fade_to_off:
	jb	fade3_to_off_in_progress, channel3_fade_to_off_1
	ret
channel3_fade_to_off_1:
	inc	channel3_fade_counter		;counter++
	mov	A, channel3_fade_counter	;prepare for check
	jnz	channel3_fade_to_off_3		;counter overflow check
	mov	channel3_fade_counter, channel3_fade_delay ;preset value
	mov	A, channel3_fade_PWM		;prepare for check
	cjne	A, channel3_fade_min, channel3_fade_to_off_2 ;countinue
	clr	fade3_to_off_in_progress	;Fading finished
	clr	fade3_direction			;last time I fade to off
	sjmp	channel3_fade_to_off_3		;go for exit
channel3_fade_to_off_2:
	dec	channel3_fade_PWM		;one step back
channel3_fade_to_off_3:
	mov	Channel3_PWM_percent, channel3_fade_PWM
channel3_fade_to_off_x:
	ret
;============================================================================
channel3_fade_to_on_init:
	mov	A, channel3_fade_max		;prepare for check
	cjne	A, channel3_fade_PWM, channel3_fade_to_on_init_1
	ret
channel3_fade_to_on_init_1:
	jnc	channel3_fade_to_on_init_2
	ret
channel3_fade_to_on_init_2:
	clr	fade3_to_off_in_progress
	setb	fade3_to_on_in_progress		;I am fading !
	mov	channel3_fade_counter, channel3_fade_delay ;preset value
;	mov	channel3_fade_PWM, channel3_fade_min
;============================================================================
channel3_fade_to_on:
	jb	fade3_to_on_in_progress, channel3_fade_to_on_1
	ret
channel3_fade_to_on_1:
	inc	channel3_fade_counter		;counter++
	mov	A, channel3_fade_counter	;prepare for check
	jnz	channel3_fade_to_on_3		;counter overflow check

⌨️ 快捷键说明

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