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

📄 lcd_f2.asm

📁 单片机直接驱动液晶显示的汇编程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
		mov l2_out,c
		mov c,acc.3
		mov h2_out,c
		ret
err_asc:
	db 11111100b;1 ch
	db 11110000b;2 ch
	db 11000000b;3 ch
	db 00000000b;4 ch
;****************************************
err_do: 
		mov r7,ch_no
		inc r7
		mov r4,#00d     
	cop_4:
		mov a,r7
		dec a
		rl a
		add a,r0
		mov r1,a
		mov a,@r1
		swap a
		mov b,a
		mov r6,#02d
	cop_3:
		anl a,#0fh
		cjne a,#cmp_no ,cop_1
		sjmp cop_31
	cop_1:  jc  cop_2
	
	cop_31:
		setb c
		sjmp cop_12
	cop_2:
		clr c   
	cop_12:
		mov a,r4
		rlc a
		mov r4,a
		mov a,b
		swap a
		djnz r6,cop_3
		djnz r7,cop_4
		ret             
;*************************************
;y1=k1*f1+b1
	cu_y1:
		mov a,test_no
		mov b,#03
		mul ab
		add a,r1
		mov r1,a
		ret
y1_count:       
		jb set1_f,y1_c12
		call jj_ha_f ;*****2001.5.27
		call jj_ha
	y1_c12:
		jbc test_ok ,y1_c1
		ret
	y1_c1:  
		call count_hz
		mov r1,#k1
		call cu_y1
	;******************************
		;mov r0,#fd1_temp    ;fhz into fd1_temp
		call fmul      ;k1*f1  
	
		mov r1,#b1
		call cu_y1
		call fadd      ;k1*f1+b1
		;call ftob	
	;*****************************************
	;jb c1-y1=>y1  
	;*******************************************2001.6.1
		mov r1,#c1   ;jb c1=0
		call cu_y1
		inc r1
		mov a,@r1
		inc r1
		orl a,@r1
		jz not_subb
;***********************************************
		mov r1,#c1   ;jb c1=0
		call cu_y1
		mov r0,#fd1_temp
		call fsub     ;y1=y1-c1  y1=-1
		mov a,@r0
		cpl acc.7
		mov @r0,a
;****************************************!!!!!!!!!!!
	not_subb:       
		mov r1,#y1
		call cu_y1
		mov a,r1
		mov r0,a   ;r0=> y1
		mov r1,#fd1_temp
		call fmov   ;[f1_temp]=>[yn]
		call f_fo_fs
		call f_l_h
		jmp da_out
count_hz:
		mov fd2_temp,#01h
		mov fd2_temp+1,#40h
		mov fd2_temp+2,#00h ;x_l=4,2 f=n*x_l
		mov r0,#fd2_temp
		call btof
		mov a,dp_dat    ;250ms ,500ms
		jz cou1                 
		mov fd2_temp,#01h
		mov fd2_temp+1,#20h
		mov fd2_temp+2,#00h ;x_l=4,2 f=n*x_l
		mov r0,#fd2_temp
		call btof
	cou1:
		jnb test_f ,cou2
		setb c
		mov a,n1
		rrc a
		mov n1,a
		mov a,n2
		rrc a
		mov n2,a
	cou2:
		mov fd1_temp,n1
		mov fd1_temp+1,n2
		mov fd1_temp+2,#0
		;*************** 2002.4.1
		mov n1,#0
		mov n2,#0
		;************************
		clr 1fh
		mov a,#16d
		mov r0,#fd1_temp   ;n1=h,n2=l
		call dtof
		mov r1,#fd2_temp
		call fmul          ;r0=fd1_temp =hz
		jbc test_f,cou3
		ret
	cou3:
		mov fd2_temp,#01h
		mov fd2_temp+1,#20h
		mov fd2_temp+2,#00h ;x_l=4,2 f=n*x_l
		mov r0,#fd2_temp
		call btof
		mov r0,#fd1_temp
		mov r1,#fd2_temp
		jmp fmul
;************************************
fd_ram:
		push 01h
		mov r1,#led1_bak  ;2001.10.18
		call din_dot
		call d_f_data
		pop 01h
		jb menu1_over ,fd_ram_end
		mov @r1,fd1_temp                                
		inc r1
		mov @r1,fd1_temp+1                              
		inc r1
		mov @r1,fd1_temp+2                              
		ret	
	fd_ram_end:
		mov @r1,#41h                                
		inc r1
		mov @r1,#0                              
		inc r1
		mov @r1,#0                              
		ret	
;**************************
	ff_mov:
		call led_y
		jnb kd_over ,ff_d5
		call led_cl0
	ff_d5:
		ret
;************************************
		proc key_jmp
key_jmp:
		mov a,key_data
		mov key_data,#00h
		jz key_d
		cjne a,#01,key_a
		clr sq1_f           ;2001.10.18
		;************;ka        
		call clr_kd
		;******************
		mov sec_bak,sec
		inc led_power
		mov a,#36d ;const
		add a,ch_no
		mov b,a
		mov a,led_power
		cjne a,b,key_a0
	key_a1:
		mov led_power,#01h
		ret	
	key_a0:
		jnc key_a1
		ret     
	key_a:  
		cjne a,#02,key_b
		jmp kb_jmp      ;kb
	key_b:
		cjne a,#03,key_c
		jmp kc_jmp      ;kc
	key_c:
		cjne a,#04,key_d
		mov a,led_power
		jz key_d
		jnb set1_f,key_c1
		mov addres_bak,addres
		call bps_int            
	;*************************
		mov led_power,frist
		mov frist,#frist_no;2001.10.26	
		call wr_int
	key_c1:
		clr a
		mov led_power,a
		mov frist,a
		clr set1_f
		setb es
		jmp clr_kd
key_d:
		ret
		end

	clr_kd:
		mov kb_data,#01d
		mov kc_data,#01d
		clr kd_over
		jmp clr_led0_bak
;****************************************
		proc kc_jmp
kc_jmp:
		jb set1_f,kcc1
	kcc0:
		ret                             
;**************************************
	kcc1:
;**************************************
		mov sec_bak,sec
		mov a,led_power
		cjne a,#6,kc2
	kc2_12:
		mov r0,#ch_no
		sjmp fid
	kc2:
		jc kc2_12
;************************************** 
		cjne a,#10,kc21
	kc21_1:
		mov r1,#dt1_dat
		mov b,#10d
		call cout_dt
		inc @r1
		mov a,@r1
		cjne a,#4,kc21_2
		mov @r1,#0
	kc21_2:
		ret                     
	kc21:   
		jc kc21_1
;**************************************         
		cjne a,#14,kc3
	kc22_1:
		mov r1,#fd1_dat
		mov b,#14d
		call cout_dt
		inc @r1
		mov a,@r1
		cjne a,#03,kc21_4
		mov @r1,#05
	kc21_4: 
		mov a,@r1
		cjne a,#6,kc21_3
		mov @r1,#1
	kc21_3:
		ret                     
;********************* al1_al4 **************
	kc3:
		jc kc22_1
		cjne a,#18,kc4
		ret
	kc4:
		jc kc21_3
;***************************** fs,fo    
		jmp kc_up
		end
;**********************************
	fid:
		;push a
		dec a
		mov b,a
		add a,r0
		mov r0,a   ;point to addres
		mov a,b
		mov dptr,#fd_asc
		movc a,@a+dptr
		mov b,a                                 
		;pop a
		;*********************
		;cjne a,#01,fi1
		;mov a,@r0
		;inc a
		;anl a,#ch_max
		;sjmp kc22
		;clr a
;********************************************
	fi1:
		mov a,@r0
		inc a
		inc b
		cjne a,b,kc22
		clr a
	kc22:
		mov @r0,a       
		ret     
fd_asc:
	db ch_max,06h,64d,1d,ch_max,3d;  2002.1.31
;         ch_no,bps,addres,dp_dat,da_no,del_t
;********************************************
;flash 1_way_l "lo  ovr"
FLASH_WAY:
	mov r7,#04h
	mov r6,#00h
	mov a,fs_out
fl_w1:
	push a  
	anl a ,#00000011b
;*****************************************              
		cjne a,#01,fl_w2
way_k1_3:   ;led_"low"
		call jj_led_ad
		;mov @r0,#black
		;inc r0
		mov @r0,#l_led;"L"
		INC R0
		mov @r0,#o_led ;"0"
		inc r0
		mov @r0,#black
		jb fl_250ms ,fl_w3
		call fl_blk
		sjmp fl_w3
	fl_w2:
		cjne a,#02,fl_w3
		call jj_led_ad   ;led "over"
		mov @r0,#o_led;led=>O
		inc r0
		mov @r0,#u_led;"u"
		INC R0
		mov @r0,#r_led ;"r"
		jb fl_250ms ,fl_w3
		call fl_blk
	fl_w3:
		pop a
		rr a
		rr a
		inc r6
		djnz r7,fl_w1
		ret             
;*******************************************
	fl_blk: 
		mov a,#black  ;led=>black
		mov @r0,a
		dec r0
		mov @r0,a
		dec r0
		mov @r0,a
		dec r0
		mov @r0,a     ;led1=>black
		ret
	jj_led_ad:      
		mov r0,#led1
		mov a,r6
		mov b,#04d
		mul ab
		add a,r0
		mov r0,a
		mov a,r6
		;inc a
		mov a,#black
		mov @r0,a
		inc r0
		ret
;###############################################
set_menu:
		mov a,set_data
		jnz set_m1
		ret
	set_m1:
		cjne a,#01,set_m2
		mov set_data,#0
		ret
		;jmp set_clock
	set_m2:
		cjne a,#02,set_m3
		cpl lamp_out
		mov set_data,#0
		ret
		;jmp set_fh12
	set_m3:
		cjne a,#03,set_m4
		mov led_power,#01
		mov sec_bak,sec
		setb set1_f
		call led_jmp
		;call jj_sf
		clr es
		mov set_data,#0
		ret
	set_m4:
		cjne a,#04,set_m5
		jmp pass_set
	set_m5:
		ret     
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&			
;*****************************
kcs_jmp:
		call jj_z
		jz kcs_10
		ret		;??????????
	kcs_10:
		jmp kc_up
	jj_z:
		mov a,LED_power;(1, 2 ,3, 4 ,5)
		mov b,#02      ;a/b =0 =>2,4
		div ab
		mov a,b
		ret
		
		proc kbs_jmp
kbs_jmp:
		call jj_z
		jz kbs_10
		ret		;??????????
	kbs_10:
		jmp kb_ctrl
		end
;**************************************				
		proc kbbs_jmp
kbbs_jmp:
		mov a,led_power
		cjne a,#2,kbb2
		mov r1,#y1
		jmp fd_ram      
	kbb2:
		cjne a,#3,kbb4
		ret
	kbb4:
		cjne a,#4,kbb7
		mov r1,#y2
		jmp fd_ram      
	kbb7:
		ret
		end
	clr_ff:
		mov a,#ff_led
		mov led1_bak,#p_led
		mov led2_bak,a
		mov led3_bak,a
		mov led4_bak,a
		ret
;**************************************
		proc pass_set
pass_set:
		clr a
		mov fh1_bak,a
		mov fh2_bak,a ;2002.3.20
		mov kc_data,a

		clr menu1_over
		mov set_data,#0
		call clr_ff
		call clr_led2		
		mov sec_bak,#pass_no
		call led_blk
	pass1:
		call clock
		call led_blk
		call clr_led2
		call key_jmpp
		call y1_count
		jb menu1_over,pass1_end
		jbc card_f ,pass2_end
		mov a,sec_bak
		jnz pass1
		mov set_data,#0
		ret
		end
pass1_end:
		call beep_del
		call set_menu2
		mov set_data,#0
		ret		
;**********************************
beep_del:
		mov r7,#02
		clr beep_out
	beep1_1:
		push 07h
		call timer_20ms
		call timer_20ms
		call timer_20ms
		pop 07h
		djnz r7,beep1_1
		setb beep_out		
		ret
;***********************************		
pass2_end:
		;******turn off card power *****
		;setb card_power
		call beep_del
		;jnb card_test_f,$  ;*******card used
		jmp set_fh12   ;2002.1.31
		;jmp beep_del
;*************************************		
key_jmpp:
		mov a,key_data
		jnz kp1	
		ret	
	kp1:
		cjne a,#01,kp2;ka
		call clr_ff
		ret						
	kp2:
		cjne a,#02,kp3;kb
		mov kc_data,#0
		inc set_data
		mov a,set_data
		cjne a,#03,kp2_1
		mov set_data,#0	
	kp2_1:
		ret			
	kp3:
		cjne a,#03,kp4;kc
		inc kc_data
		mov a,kc_data
		cjne a,#10,kp3_1
		mov kc_data,#0	
	kp3_1:
		mov r0,#led2_bak
		jmp jj_led2_bak
	kp4:
		cjne a,#04,kp5;kd
		mov a,led2_bak
		xrl a,#pass_1
		jz kp41
		sjmp sec_1
	kp41:
		mov a,led3_bak
		xrl a,#pass_2
		jz kp42
		sjmp sec_1
	kp42:
		mov a,led4_bak
		xrl a,#pass_3
		jz kp43
	sec_1:
;****************** take off card ************2001.9.28
		mov a,led2_bak
		xrl a,#sn_pass1
		jz kp51
		sjmp sec_2				
	kp51:
		mov a,led3_bak
		xrl a,#sn_pass2
		jz kp52
		sjmp sec_2				
		
	kp52:
		mov a,led4_bak
		xrl a,#sn_pass3
		jz kp53
	sec_2:	
		dec sec_bak
		jmp clr_led2

	kp53:
		setb card_f
		ret	
	kp43:
		setb menu1_over
	kp5:
		ret		

	clr_led2:
		call led_pass
		call led
		call key_bord1
		call key_del
		ret	
;**********************************
	jj_led2_bak:
		mov a,set_data
		add a,r0
		mov r0,a
		mov @r0,kc_data
		ret			
led_pass:
		mov led1,led1_bak
		mov led2,led2_bak
		mov led3,led3_bak
		mov led4,led4_bak
		jb fl_250ms,led_pass1
		mov r0,#led2
		call jj_led2_bak
		mov @r0,#black
led_pass1:
		ret
jj_card:
		jb card_test_f,jj_card_end
		call timer_20ms
		call timer_20ms
		jb card_test_f,jj_card_end
		call beep_del
		clr card_power
		ret
	jj_card_end:
		setb card_power
		ret	
		
card_wr:
		jnb card_power,card_wr_1
		ret	
card_wr_1:		
		;********* write data to card ******
		;
		ret
;******************************************
rs_485:
		push a
		push b
		push psw
		push 00h
		jbc ri ,rec_s1
		clr ren
		clr ti
		jnb rs_485_f,rs4_1
		mov r0,#y1
		jnb pc_f,rs11_1
		mov r0,#pc1
	rs11_1:
		call sbuf_out		
		mov a,send_no
		cjne a,#rs_no,rs_485_end  ;****2001.5.29
		clr rs_485_f
		sjmp rs_485_end
	rs4_1:
		clr ti  
		clr rs_485_f
		clr rs_en               
		setb rs_led  ;*******2001.6.4
		setb ren
		mov send_no,#00d
		clr pc_f
		sjmp rs_485_end
	rec_s1:
	;*************************2001.6.7
		clr tb8
		clr rb8
		mov a,sbuf
		mov b,addres_bak
		cjne a,b,rs_4
		setb tb8
	;********************
		mov r0,#pc1
		setb pc_f
		sjmp rs_41
	rs_4:
		xch a,b
		setb acc.7
		xch a,b              ;send asc addres =addres+128
		cjne a,b,rs_485_end
		mov r0,#y1
		clr pc_f
	rs_41:
		clr rs_led
		clr ti
		setb rs_en
		mov send_no,#00h
		call sbuf_out
		clr ren
		setb rs_485_f
rs_485_end:
		pop 00h
		pop psw
		pop b
		pop a
		reti
;************************************
	sbuf_out:
		mov b,#05d
		djnz b,$
		
		mov a,send_no
		add a,r0
		mov r0,a
		mov a,@r0
		mov sbuf,a
		inc send_no
		ret
;*********************************
back:
		mov a,led_power
		jz bk_3
		mov a,sec_bak
		add a,#back_x
		call sec_ct
		cjne a,b,bk_3
		mov key_data,#04d
	bk_3:
		ret		
;***************************************
key_del:
		mov a,key_data
		jnz kl_12
		mov a,frist
		jnz kl_13
		ret
	kl_13:
		mov key_data,frist
		mov frist,#0
		clr key_over		
		jmp beep_del
	kl_12:	
		jnb key_over,kl11
		mov a,t_30ms
		add a,#03
		call sec_ct
		cjne a,b,key_del_end
		clr key_over		
		jmp set_key
	kl11:
		mov t_30ms,sec
		setb key_over
key_del_end:
		call sf_a
		cjne a,#key_da,sfg_12
		clr key_over		
		jmp beep_del
	sfg_12:
		mov frist,key_data
		mov key_data,#0
		ret

;******************************************
key_bord1:
		call re_k
		mov a,key_data
		jz key_bord1_end
key_bord1_end:
		;setb key_f
		ret

	sec_ct:
		mov b,#60d
		div ab
		mov a,sec
		ret
set_key:
	mov a,key_data
	cjne a,#01h,set_cc1
	mov set_data,#01d
	ret
set_cc1:
	cjne a,#02h,set_cc2
	mov set_data,#02d
	ret
set_cc2:
	cjne a,#03h,set_cc3
	mov set_data,#03d
	ret     
set_cc3:
	cjne a,#04h,sf_beep
	mov set_data,#04d
	ret
;******************************
re_k:   
		mov key_data,#00h
		mov a,p1
		anl a ,#key_da;11110000b
		cjne a,#key_da,you_key
re_k_end:       
		ret
you_key:
		call timer_20ms
		call timer_20ms
		call timer_20ms
		mov a,p1
		anl a ,#key_da
		cjne a,#key_da,you_key1
		ret                                   
you_key1:
	jb acc.7,key_kb
	mov key_data,#01h
key_kb: 
	jb acc.6,key_kb1
	mov key_data,#02h
key_kb1: 
	jb acc.5,key_kb2
	mov key_data,#03h
key_kb2: 
	jb acc.4,sf_key0
	mov key_data,#04h
sf_key0:
	ret             
sf_key:
		call sf_a
		cjne a,#key_da,sf_key
		jmp beep_del
sf_a:
		mov a,p1
		;setb key_f
		anl a ,#key_da
		ret
;************************************
sf_beep:
		jmp beep_del
jj_sf:
		mov a,p1
		anl a ,#key_da
		cjne a,#key_da,jj_sf
		mov key_data,#0
		mov frist,#0
		ret

;^&&^&^&^&^&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
clr_y1:
		mov r0,#y1
		mov r7,#12
	set_clr2:
		mov @r0,#0
		inc r0
		djnz r7,set_clr2               
		ret
set_menu2:
		mov led_power,#01
		call clr_kd
		;mov ka_data,#01
		setb set_f
		clr a
		mov key_data,a
		mov ch_no_temp,a
		call clr_y1
		mov sec_bak,sec

⌨️ 快捷键说明

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