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

📄 lcd_f2.asm

📁 单片机直接驱动液晶显示的汇编程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	flash_y1:
		jb fl_250ms,led_d2
		mov led1,a
		mov led2,a
		mov led3,a
	led_d2:
		jb sq1_f,led_d22
		mov a,sec_bak
		add a,#2
		call sec_ct
		cjne a,b,led_d1
	led_d22:	
		;mov r1,#fo1
		mov a,led_ch
		mov b,#03
		mul ab
		add a,r1
		subb a,led_ch				
		mov r1,a
		jnb set_f,led_de1 
		mov led_ch,ch_no_temp
	led_de1:	
		mov r3,led_ch
		inc r3         ;r3=>ch_no
		setb sq1_f
		call ff_mov
		;jnb set1_f,led_d1
		;jb fl_250ms,led_d1
		;call blk_14
	led_d1:
		ret
		end
;&*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
led_y:
	mov r0,#fd2_temp
	call fmov
	push 03h  ;r3=ch_no
	call ftob
	pop 03h

yy_led:
	mov r1,#led1
	dec r1
	mov r7,#02
inled:  
	inc r1
	inc r0           ;to y1 (h)
	mov a,@r0
	anl a,#0f0h  ;h1=>led1
	swap a
	mov @r1,a
	mov a,@r0
	anl a,#0fh  ;h2=>led2
	inc r1
	mov @r1,a
	djnz r7,inled
;**********************jb sgn 2001.9.14
	mov a,fd2_temp+1
	orl a,fd2_temp+2
	jnz zq1
zer_data:
	mov led1,#20h
	mov led2,#0h
	mov led3,#0h
	mov led4,#0h
	jmp yy_dot
zq1:
	mov a,fd2_temp
	jb acc.7,zq2
	call z_data
	jmp yy_dot
zq2:    
	call f_data
	jmp yy_dot
;*************************************
z_data:
		mov r0,#fd2_temp
		mov a,@r0
		jnz zz1
		;0.1
		mov a,#01d
		call ddot
		ret                             
	zz1:
		cjne a,#04d,zz2
		mov a,led4
		add a,#20h
		mov led4,a
		  ret   
	zz3:
		mov r1,#led1
		add a,r1
		dec a      ;-1 rrl bit 
		mov r1,a
		mov a,@r1
		add a,#20h  ;dot bit
		mov @r1,a   ;2001.4.19
		ret
	zz2:
		jc zz3  
		cjne a,#10d,zz4
	zz5:
		;***********************************
	led999:
		mov led1,#9
		mov led2,#9
		mov led3,#9
		mov led4,#29h
		ret             
	zz4:
		jc zz5
		cjne a,#7fh,zz6
		mov a,#02d
		call ddot
		ret     
	zz6:
		cjne a,#7eh,zz8
		mov a,#03d
		call ddot
		ret
	zz8:
		jmp zer_data
;******************************************
ddot:
		mov r5,a
	ddot1:  
		mov led4,led3
		mov led3,led2
		mov led2,led1
		mov led1,#00h ;??????????2001.9.20
		djnz r5,ddot1
		mov led1,#20h
		ret
;**********************************
f_data:
		mov r0,#fd2_temp
		mov a,@r0
		clr acc.7
		mov @r0,a
		call z_data
		mov a,led4
		cjne a,#20h,fsd1
	fds2:
		mov led3,a
		sjmp fsd3	
	fsd1:
		jnc fds2	
	fsd3:
		mov led4,led3
		mov led3,led2
		mov led2,led1
		mov led1,#ff_led  ;"1"=>led1
		ret
;***************************************
yy_dot:
		;jb set1_f,fd_cu_end      
		mov r5,#00d
		mov r1,#led4    
		mov r6,#04d
	dds4:
		mov a,@r1
		cjne a,#20h,dds1
	dds2:   sjmp dds3       
	dds1:   jnc dds2
		inc r5
		dec r1
		djnz r6,dds4                                                            
	dds3:
		mov r1,#dt1_dat
		mov a,r3          ;r3=ch_no+1
		dec a             ;2001.9.27
		add a,r1
		mov r1,a
		clr c
		mov a,r5
		subb a,@r1
		jz yy_dot_end
		mov r4,a       ;r4=1,2,3
		jc yy_dot_end 
		;***************0.5=>1
		;mov a,r4
		;clr c
		;mov a,#led4
		;inc a
		;subb a,r4
		;mov r0,a       ;r0=> 0.5
		;mov b,a        ;r0=>b
		;mov a,@r0
	les11:
		mov led4,led3  ;led3=>led4
		mov led3,#black
		mov led3,led2   ;led2
		mov led2,#black
		mov led2,led1
		mov led1,#black
		djnz r4,les11
yy_dot_end :
		mov a,led4
		cjne a,#20h,f_d2
	f_d1:
		clr c
		subb a,#20h
		mov led4,a
		sjmp f_d3			
	f_d2:
		jnc f_d1	

;*****************************
;fd count
f_d3:	
	mov a,r3              ;r3=ch+no
	dec a
	mov r0,#fd1_dat
	add a,r0
	mov r0,a
	mov a,@r0
	;****************************
	mov b,led4     ;a-k+[2*k/d]*d;k=mod(a/d)
	xch a,b
	div ab
	mov a,led4
	clr c
	subb a,b
	mov led4,a
fd_cu_end:      
	ret
;*****************************************ch_no to led
y1_led:
		mov r3,ch_no
		inc r3
	y1_led1:
		mov r1,#y1
		mov a,r3
		dec a
		mov b,#03
		mul ab
		add a,r1
		mov r1,a
	;************************       
		call led_y
		mov r0,#led1
		mov a,r3
		dec a
		mov b,#4
		mul ab
		add a,r0
		mov r0,a
		mov @r0,led1
		inc r0
		mov @r0,led2
		inc r0
		mov @r0,led3
		inc r0
		mov @r0,led4
		djnz r3 ,y1_led1                                                                
		ret
;********************************************
;********************************
	clr_led0_bak:
		clr fff_f
		clr a
		mov led0_bak,#ff_led
		mov led1_bak,a
		mov led2_bak,a
		mov led3_bak,a
		mov led4_bak,a
		ret
;******************************
;jbc menu1_over ,mnb
led_cl0:
		mov a,kb_data
		cjne a,#01,ll24
		ret
din_dot:
;****************** add dot to led_bak ****************
		mov a,led_ch;  led_power =>led_ch 2001.10.18
		mov r0,#dt1_dat
		add a,r0
		mov r0,a
		mov a,#03
		clr c
		subb a,@r0
		add a,r1
		mov r1,a
		mov a,@r1
		add a,#20h
		mov @r1,a
		ret
;*****************************************
	ll24:
		mov led4,led4_bak
		mov led3,led3_bak
		mov led2,led2_bak
		mov led1,led1_bak
		mov r1,#led1
		call din_dot
	;************************jb fff_f
		mov a,kb_data
		cjne a,#02,ll23
		mov led4,led0_bak
		mov led3,#l_led
		mov led2,#o_led
		mov led1,#p_led
		jb fl_250ms,led_cl_end
		mov led4,#black
		ret     
	ll23:
	;************************flash
		mov r0,#led1
		dec r0
		mov a,kb_data
		dec a
		dec a
		;dec a       ;2001.10.18
		add a,r0
		mov r0,a
		jb fl_250ms  ,led_cl_end
		mov @r0,#black
led_cl_end:
		ret
;************************************
jj_zer:
		clr menu1_over
		mov r7,#04d
		mov r0,#led1_bak
	jj_z1:
		mov a,@r0
		jnz jj_zer_end                          
		inc r0
		djnz r7,jj_z1
		setb menu1_over
jj_zer_end:
		ret

	kill_0:
		mov a,led1_bak
		jnz new1
		mov led1_bak,led2_bak
		mov led2_bak,led3_bak
		mov led3_bak,led4_bak
		mov led4_bak,#00h
		sjmp kill_0
	new1:
		ret     

	norml:  
		mov a,led1_bak
		swap a
		orl a,led2_bak
		mov fd1_temp+1,a
		;****************
		mov a,led3_bak
		swap a
		orl a,led4_bak
		mov fd1_temp+2,a
	;**************************
		mov a,led0_bak
		cjne a,#black,ja1q                      
		clr c
		sjmp ja2q       
	ja1q:
		setb c
					
	ja2q:   mov a,dot_bit
		mov acc.7,c
		mov fd1_temp,a
		mov r0,#fd1_temp
		jmp btof
;******************************         
		proc d_f_data
d_f_data:
		call jj_zer
		jnb menu1_over ,dc1
		ret
		;************add dot to led4_bak
	dc1:
		mov r7,#04
		mov r0,#led1_bak
	dot10:
		mov a,@r0
		cjne a,#20h,dot1
		sjmp dot2
	dot1:   
		jnc dot2
		inc r0
		djnz r7,dot10
	;************************* add dot led4_bak     
		add a,#20h
		mov led4_bak,a
	dot2:
		call kill_0
	;********** jb led1_bak=20h *******
		mov a,led1_bak
		cjne a,#20h,dot_1
		sjmp dot_0
	dot_1:
		mov dot_bit,#00
		mov r7,#04d
		mov r0,#led1_bak
	dot_12:
		inc dot_bit
		mov a,@r0
		cjne a,#20h,ghh0
		sjmp dot_11  ;!!1       ;lxl<1  
	ghh0:
		jnc dot_11
		inc r0
		djnz r7,dot_12   
		dec r0
	dot_11:
		clr c
		subb a,#20h ;led_n_bak -20h
		mov @r0,a   ;clr dot
;********************* norml led1_mak led4_bak ********
		jmp norml
;******************* over *******************
dot_0:
		mov r7,#03d
		mov r0,#led2_bak
		mov dot_bit,#80h
	dfo1:
		mov a,@r0
		jnz dfo2
		inc r0
		dec dot_bit
		djnz r7,dfo1
		mov fd1_temp,#41h
		mov fd1_temp+1,#0h
		mov fd1_temp+2,#0h
		ret  ;all 0.000
	dfo2:
		mov a,dot_bit
		cjne a,#80h,dfo3
		mov dot_bit,#00
	dfo3:   
		mov led1_bak,#0
		call kill_0             
		jmp norml
		end
;***********************************
;  kb (1-5)
		proc kb_ctrl
	kb_ctrl:
		setb kd_over
		mov a,kb_data
		;dec a
		dec a
		jnz ka_s1
		clr dot_f
	ka_s1:
		mov a,kc_data
		mov b,#02d
		div ab
		mov a,b
		jnz ka_d1       ;0=>dot data    
		setb dot_f      
	ka_d1:
		inc kb_data
		mov a,kb_data
		cjne a,#07d,cc_q1
		mov kb_data,#01h        
		
		jb set_f,ka_d11
		call kbb_jmp
		sjmp ka_d12
	ka_d11:	
		call kbbs_jmp
	ka_d12:	
		call clr_led0_bak
	cc_q1:                  
		mov kc_data,#01h
		ret     
		end
;kc up 1
	kc_up:  
		jnb kd_over ,kb_d5
		mov a,kb_data
		dec a
		dec a
		jnz kb_d1
		cpl fff_f
		mov led0_bak,#black
		jb fff_f ,kb_d5
		mov led0_bak,#ff_led
		sjmp kb_d5
	kb_d1:
		inc kc_data
		mov a,kc_data
		cjne a,#11d,kb_d4
		mov kc_data,#01d
	kb_d4:
		call dat_al
kb_d5:
		ret
;***************************************************
dat_al:
		mov r0,#led1_bak
		mov a,kb_data ;(kb_data:1--6)
		dec a
		dec a
		add a,R0
		dec a
		mov r0,a
		;mov a,@r0
		;cjne a,#20h,daf11
		;sjmp daf12      
	daf11:  
		;jc daf13
	daf12:
		;mov a,kc_data
		;add a,#20h      
		;sjmp daf14
	daf13:  
		mov a,kc_data
	daf14:
		dec a
		mov @r0,a
		ret
;********************************
		proc kb_jmp
kb_jmp:
		jb set1_f,kb0_1
		;clr sq1_f           ;2001.10.18
		;************;ka        
		;call clr_kd
		;******************
		ret
	kb0_1:
		mov sec_bak,sec
		mov a,led_power
	;************** add 'dr' dec 1 ************
		cjne a,#03,kb30_1
		dec addres
		mov a,addres
		cjne a,#0ffh,kb30_2
		mov addres,#64	
	kb30_2:
		ret	
		
	kb30_1:	
		
		cjne a,#18,kb1 ;************!!!!!!!!!!!!!
	kb12:   
		jmp kb_ctrl
	kb1:    
		jnc kb12
		ret
		end

	cu_r1:
		mov a,led_ch
		mov b,#03
		mul ab
		add a,r1
		mov r1,a
		ret
				
		proc kbb_jmp
kbb_jmp:
		mov a,LED_power
		jnz kbb1
		ret
	kbb1:
		cjne a,#022,kbb2
	kbb1_1: 
		mov b,#22
		call cout_dt
		mov r1,#fo1
		call cu_r1
		jmp fd_ram      
	kbb2:
		jc kbb1_1
		cjne a,#26,kbb4
	kbb2_1: 
		mov b,#26
		call cout_dt
		mov r1,#fs1
		call cu_r1
		jmp fd_ram      
	kbb4:
		jc kbb2_1
		cjne a,#30,kbb7
	kbb4_1: 
		mov b,#30
		call cout_dt
		mov r1,#l1
		call cu_r1
		jmp fd_ram      
	kbb7:
		jc kbb4_1
		cjne a,#34,kbb8
	kbb7_1: 
		mov b,#34
		call cout_dt
		mov r1,#h1
		call cu_r1
		jmp fd_ram      
	kbb8:
		jc kbb7_1
		cjne a,#38,kbb9
	kbb8_1: 
		mov b,#38
		call cout_dt
		mov r1,#c1
		call cu_r1
		jmp fd_ram      
	kbb9:
		jc kbb8_1
		ret
		end
;************************************
		proc jj_ha_f
jj_ha_f:
		mov a,ch_no
		inc a
		rl a
		mov r7,a
		mov a,h_l_out
	jj_ha1:
		rrc a
		jc jj_ha2                       
		djnz r7,jj_ha1          
		clr ha_over
		jb ha_fl,jj_ha4
		sjmp jj_ha3
	jj_ha2:
		jb ha_fl,jj_ha4
		jb ha_over ,jj_ha3
		mov beep,sec
		clr beep_out
		setb ha_fl      
		sjmp jj_ha3
	jj_ha4:
		mov a,beep
		add a,#03d
		call sec_ct
		cjne a,b,jj_ha5
	jj_ha6:
		setb beep_out
		setb ha_over
		clr  ha_fl
		sjmp jj_ha3
	jj_ha5:                         
		jnc jj_ha6      
		mov c,fl_250ms
		mov beep_out,c
	jj_ha3:
		ret
		end             

		proc jj_ha
jj_ha:
		mov a,ch_no
		inc a
		rl a
		mov r7,a
		mov a,fs_out
	jj_ha1:
		rrc a
		jc jj_ha2                       
		djnz r7,jj_ha1          
		clr ha_over1
		jb ha_f ,jj_ha4
		sjmp jj_ha3
	jj_ha2:
		jb ha_f,jj_ha4
		jb ha_over1 ,jj_ha3
		mov beep1,sec
		clr beep_out
		setb ha_f       
		sjmp jj_ha3
	jj_ha4:
		mov a,beep1
		add a,#03d
		call sec_ct
		cjne a,b,jj_ha5
	jj_ha6:
		setb beep_out
		setb ha_over1
		clr  ha_f
		sjmp jj_ha3
	jj_ha5:                         
		jnc jj_ha6      
	jj_ha3:
		ret
		end             
;**************************************
f_fo_fs:
		mov r0,#fs1_no
		call f_fa1
		mov r1,#fo1
		call f_fa2
		mov a,r3
		mov r4,a                
		mov r1,#fs1
		call f_fa21
		mov r0,#fs1_no
		call f_fa3
led_err_out:
		mov r0,#fs1_no
		call err_do
		mov a,ch_no
		mov dptr,#err_asc
		movc a,@a+dptr
		orl a,r4
		mov fs_out,a
		ret

	fg_ad1: 
		mov a,test_no;;;;;;ch_no_temp
		rl a
		add a,r0
		mov r0,a
		ret
	y1_add1:
		mov a,r0
		mov r1,a
		call cu_y1
		mov a,r1
		mov r0,a
		ret
;********************************
f_fa1:
		call fg_ad1
		mov a,@r0
		mov b,a
		anl a,#00001111b
		mov r3,a             ;fo=>r3
		mov a,b
		swap a
		anl a,#00001111b
		mov r2,a            ;fs=>r2
		mov r0,#y1
		jmp y1_add1
;************************************
	fg_ad:  
		mov a,test_no;;;;;;ch_no_temp
		mov b,#03d
		mul ab
		add a,r1
		mov r1,a
	;***************************    
		mov a,test_no;;;;;;;ch_no_temp
		jmp fcmp
;*************************************
		proc f_fa2
 f_fa2:
		call fg_ad
		jc up_1
		mov r3,#00h
		sjmp up_2                                                               
	up_1:
		inc r3
		mov a,r3
		lcall nu_5
		mov r3,a
	up_2:
		ret
		end

		proc f_fa21
 f_fa21:

		call fg_ad
		jnc up_1
		mov r2,#00h
		sjmp up_2                                                               
	up_1:
		inc r2
		mov a,r2
		call nu_5
		mov r2,a
	up_2:
		ret
		end

	nu_5:   
		mov b,#cmp_no
		inc b
		cjne a,b,nuc1
		sjmp nuc2
	nuc1:   
		jc nu_51                
	nuc2:
		mov a,#cmp_no      
	nu_51:  ret
f_fa3:
		mov a,r2
		swap a
		anl a,#0f0h
		orl a,r4
		mov b,a                                                                         

		call fg_ad1

		mov @r0,b
		ret
;*************************************
f_l_h:
		;mov r0,#f1_temp
		;mov @r0,#04h
		;inc r0
		;mov @r0,#30h
		;inc r0
		;mov @r0,#00h
		;mov r0,#f1_temp
		;lcall btof
		;mov ch_no_temp ,#00d
		;mov r7,#05d
;*************************************
		mov r0,#fs1_no
		inc r0
		call f_fa1
		mov r1,#l1
		call f_fa2
		mov a,r3
		mov r4,a                
		mov r1,#h1
		call f_fa21
		mov r0,#fs1_no
		inc r0
		call f_fa3
p0_out:
		mov r0,#fs1_no
		inc r0              ;h,l=>byt
		call err_do
		mov a,ch_no
		mov dptr,#err_asc
		movc a,@a+dptr
		orl a,r4
		;mov fs_out,a
		cpl a
		mov b,a
		mov dptr,#err_asc
		mov a,ch_no
		movc a,@a+dptr
		orl a,b
;*************************************
		cpl a      ;out_wei=1
		;mov led24,a
		mov h_l_out,a
		cpl a
		mov c,acc.0
		mov l1_out,c
		mov c,acc.1
		mov h1_out,c
		mov c,acc.2

⌨️ 快捷键说明

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