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

📄 key4.asm

📁 单片机的开发程序,有关于单片机开发的基本操作.
💻 ASM
字号:
		xsdsm  equ 30h
 		fwdsm equ 31h			
 		txdsm equ 32h
		txjym equ 33h		
		xsm1 equ 37h			;显示缓冲区
		xsm2 equ 38h			;		
		xsm3 equ 39h			;
		xsm4 equ 3ah			;
		xsm5 equ 3bh			;
		xsm6 equ 3ch			;
		xsmm1 equ 3dh
		xsmm2 equ 3eh
 		xsmm3 equ 3fh
       	xsmm4 equ 40h
 		xsmm5 equ 41h 
       	xsmm6 equ 42h
       	txsjm equ 24h		
		jpm equ 25h
		dqdsm equ 26h
		txzcbzm equ 27h
		xsclm equ 43h 			;显示处理单元
       	sjzzm equ 44h       	 	
		jpclbzm	equ 49h	
		raddlm equ 4ch
		raddhm	equ 4dh
		wdatam equ 4eh
		xsdsm1 equ 4fh
		xsjym equ 50h
 		secm    equ    51h    ;秒数据
 		minm    equ    52h    ;分数据
 		hrm    equ    53h    ;小时数据
 		datem    equ    54h    ;日数据
 		monthm    equ    55h    ;月数据
 		weekm    equ    56h    ;星期数据
 		yearm    equ    57h    ;年数据低2位
		kscanfm equ 58h
		keyctm equ 59h
		keym1 equ 5ah
		keym2 equ 5bh
		keybm1 equ 5ch
		keybm2 equ 5dh		
		adsjdzl	equ 34h
		adsjdzh	equ 35h
		dpm equ 23h
		dp1	bit 18h		
		dp2	bit	19h
		dp3	bit	1ah
		dp4	bit	1bh
		dp5	bit	1ch 
		dp6	bit	1dh
		ptt	bit	1eh
		swa	bit	1fh
		org 0000h
  		ljmp start
	
		org 000bh
		ljmp zdt0
		org 0100h
start:	mov sp,#5eh
;-------------------------------t0 10 ms中断初始化
		mov tmod,#00100001b
;		setb pt0
		mov tl0,#00h
		mov th0,#0dch

		setb tr0		
		setb et0
		setb ea	
;--------------------------数码管显示存储单元初始化			
	mov dpm,#0ffh
	mov xsm1,#00h
	mov xsm2,#00h
	mov xsm3,#00h
       	mov xsm4,#00h
	mov xsm5,#00h
	mov xsm6,#00h
	mov r4,#00h
;------------------------------						 		
	acall key0
	acall display
;
jk:nop
jk4:	mov a,kscanfm
		cjne a,#55h,jk
		ljmp keypr
jk3:	acall key0
		ljmp jk								 		
keypr:	mov a,keym1
		cjne a,#0f7h,jk3 		;f1
 		acall key0	
		mov xsmm1,#01h 
		mov xsmm2,#0ffh
 		mov xsmm3,#0ffh
       	mov xsmm4,#0ffh
 		mov xsmm5,#0ffh
       	mov xsmm6,#0ffh 
		mov xsm1,xsmm1 
		mov xsm2,xsmm2
 		mov xsm3,xsmm3
       	mov xsm4,xsmm4
 		mov xsm5,xsmm5
       	mov xsm6,xsmm6       	 
       	lcall display
		
keypr9:	mov a,kscanfm
		cjne a,#55h,keypr9
		mov a,keym2
		cjne a,#0feh,keypr3
		acall key0
		mov xsm2,#00h
		lcall display 		
		ljmp dsxg				;时钟修改0
keypr3:	mov a,keym1 
		cjne a,#7fh,keypr4
		acall key0			
		mov xsm2,#01h
		lcall display
		ljmp dssxg				;时钟修改1 		
keypr4:	mov a,keym2 
		cjne a,#0f7h,keypr5                            
		acall key0
		mov xsm2,#02h
		lcall display
		ljmp adzh				;ad转换2 	
keypr5:	mov a,keym2 
		cjne a,#7fh,keypr6
		acall key0
		mov xsm2,#03h
		lcall display
		ljmp cd4014o			;并串转换3				
keypr6:	mov a,keym1 
		cjne a,#0bfh,keypr7
		acall key0 
		mov xsm2,#04h
		lcall display 		ljmp tx485				;485通信4
keypr7:	mov a,keym2 
		cjne a,#0fbh,keypr8
 		acall key0
 		mov xsm2,#05h
		lcall display						
 		ljmp tx232				;232通信5	
keypr8: mov a,keym2 
		cjne a,#0bfh,keypr10
		acall key0
		mov xsm2,#06h
		lcall display 
	        ljmp  keyshou				;桉数字健显示健值6
                                                                                                                       
keypr10:ljmp keypr
 			
;---------------------------------;桉数字健显示健值
	
	  
;-----------------------键盘存储单元初始化
key0:		mov keybm1,#0ffh			
		mov keybm2,#0ffh
		mov keym1,#0ffh		
		mov keym2,#0ffh	
		mov kscanfm,#00h		;kscanfm键盘扫描标志单元
		ret	
dsxg:	ljmp jk				;时钟修改0,
dssxg:	ljmp jk					;时钟修改1 	
adzh:	ljmp jk					;ad转换2
cd4014o:ljmp jk					;并串转换3
tx485:	ljmp jk					;485通信4
tx232:	ljmp jk					;232通信5
keyshou:mov a,kscanfm
		cjne a,#55h,keyshou
		mov a,keym1
		cjne a,#0efh,keyshou0	;是否按下取消健	
		acall key0
		ljmp jk
keyshou0:acall cbzc0			
		mov xsm2,r4
		acall display
		acall key0
		ajmp   keyshou 
		
		
		
		
;-----------------------------------;10ms中断扫描
		 
zdt0:	push psw
		push acc
		push dpl
		push dph
		clr PSW.4 
		setb PSW.3 
		mov tl0,#00h
		mov th0,#0dch
		setb tr0
		setb et0		 

zdjp9:		acall zdjp1		;读键值
		mov a,keyctm
		jz zdjp90  	;是否健按下
		dec a
		jz zdjp91 
		ljmp zdjp6	;键盘存储单元初始化
		
zdjp91: mov a,kscanfm		;kscanfm键盘扫描标志单元
		cjne a,#00h,zdjp8	;kscanfm=00h,无健按下	
		mov kscanfm,#44h
		mov keybm1,keym1			;keybm1键盘前次读数存储单元1
		mov keybm2,keym2			;keybm2键盘前次读数存储单元2
		ljmp zdds
zdjp90:	mov a,kscanfm		;kscanfm键盘扫描标志单元
		cjne a,#0aah,zdjp92	;kscanfm=aah,健按下
		mov kscanfm,#55h 	;健释放,执行任务,kscanfm=55h	
;----------------------------------健值翻译	
		mov keym1,keybm1
		mov keym2,keybm2
;		acall cbzc0		
;---------------------------------;桉数字健显示健值
;		mov xsm2,r4
;		acall display    
;--------------------------		       
;		acall key0
zdjp92:		cjne a,#44h,zdjp93
		ljmp zdds 
zdjp8:	cjne a,#44h,zdjp93	;kscanfm=44h,暂态,健按下去抖动			
		mov a,keym1
		cjne a,keybm1,zdjp6		
		mov a,keym2
		cjne a,keybm2,zdjp6
		mov kscanfm,#0aah
zdjp93:	ljmp zdds	
zdjp6:		mov kscanfm,#00h
		mov keybm1,#0ffh			
		mov keybm2,#0ffh
		mov keym1,#0ffh		
		mov keym2,#0ffh
zdds:		pop dph
		pop dpl		
		pop acc
		pop psw		
		reti				
		
;--------------------------读键值
zdjp1:	mov r0,#08h
		mov keyctm,#00h
		mov dpl,#00h				;cs4
		mov dph,#11000000b
		movx a,@dptr
		mov keym1,a					;keym1键盘读数存储单元1
zdjp3:	rlc a
		jc zdjp2	
		inc keyctm 					;键盘计数单元
zdjp2:	djnz r0,zdjp3		
		mov r0,#08h		
		mov dpl,#00h				;cs5
		mov dph,#11010000b
		movx a,@dptr
		mov keym2,a					;keym2键盘读数存储单元2
zdjp5:	rlc a
		jc zdjp4	
		inc keyctm 					;键盘计数单元
zdjp4:	djnz r0,zdjp5			
		ret

;-----------------------------------;健值翻译				
cbzc0:	mov a,keym1
 	    cjne a,#0ffh,dssxg1 	    
 		mov a,keym2
 	    cjne a,#0ffh,dssxg2  
		ret
dssxg1:	mov jpm,a				;jpm键盘数值
		mov dptr,#table1
		lcall cbzc
		ret
dssxg2:	mov jpm,a				;jpm键盘数值
		mov dptr,#table2
		lcall cbzc
		ret	 
;-----------------------------------查表翻译健值
cbzc:
cb2:	clr a
		movc a,@a+dptr
		cjne a,jpm,cb1
		inc dptr
		clr a
		movc a,@a+dptr
		mov r4,a
		
		ljmp cb3
cb1:	inc dptr
		inc dptr
		cjne a,#0ffh,cb2
		mov r4,#0ah		 
cb3:	ret		
table1:	db 7fh,01h,0bfh,04h,0dfh,07h,0ffh,0ffh	
;		1	4	  7
table2: db 0f7h,02h,0fbh,05h,0fdh,08h,0feh,00h,7fh,03h,0bfh,06h,0dfh,09h,0ffh,0ffh         
 ;		2	  5	   8	   0	    3	     6	      9					
;-----------------------------
sz1:	mov a,xsm1
	inc a
	mov xsm1,a
	cjne a,#0ah,sz2
	mov xsm1,#00h
sz2:	ret
		

display:clr p3.5		
	mov dptr,#8000h					;数码管小数点、通信口转换控制地址
        			;                  
        mov a,dpm
        movx @dptr,a			
 	mov dptr,#9000h				;1、2位数码管地址	
        anl xsm1,#0fh				;xsm1、xsm2、xsm3显示缓冲单元,10进制数
        anl xsm2,#0fh
        mov xsclm,xsm1				;xsclm显示处理单元
        orl xsclm,#0f0h               
        mov a,xsm2        
        swap a
        orl a,#0fh
        anl a,xsclm
        movx @dptr,a 	 
 	mov dptr,#0a000h				;3、4位数码管地址
       			; 	
        anl xsm3,#0fh
        anl xsm4,#0fh
        mov xsclm,xsm3
        orl xsclm,#0f0h               
        mov a,xsm4        
        swap a
        orl a,#0fh
        anl a,xsclm
        movx @dptr,a               
      mov dptr,#0b000h				;5、6位数码管地址
     			; 	
        anl xsm5,#0fh
        anl xsm6,#0fh
        mov xsclm,xsm5
        orl xsclm,#0f0h               
        mov a,xsm6             	 
        swap a
        orl a,#0fh
        anl a,xsclm
        movx @dptr,a 	 
  ;      acall sz1
        ret 
        

;  ------------------------------------------------------------------------    
display1:       clr p3.5		
	mov dptr,#8000h				;数码管小数点、通信口转换控制地址
        			;                  
        mov a,#00h
        nop
        nop
        movx @dptr,a			
 					;1、2位数码管地址
        mov dptr,#9000h			; 		
       
        mov a,#0ffh
        nop
        nop
        movx @dptr,a 	 
 	mov dptr,#0a000h				;3、4位数码管地址
       
        mov a,#0ffh
        movx @dptr,a               
        mov dptr,#0b000h				;5、6位数码管地址
       			; 	
       
        mov a,#0ffh
        nop
        nop
        movx @dptr,a
 ret
 

end

⌨️ 快捷键说明

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