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

📄 keyscan_3.asm

📁 单片机汇编例程学习,大量的汇编例程
💻 ASM
字号:
;///////////////////////////////////////////
;本程序源代码由单片机培训网提供.
;单片机培训网,让更多人学习单片机更容易.
;第一网址----www.mcuedu.com
;第二网址----http://51_train.nease.net
;创办人------刘永忠
;热线电话----(0755)27529998
;email-------aa815@163.com
;本程序实现铵键的移位显示并每按下"A"键一次闪烁位按个,十,百,千的顺序循环改变功能
;按键行列值表示如下:
;----P1.7---P1.6---P1.5---P1.4-------
;----03H----02H----01H----00H----P1.0
;----07H----06H----05H----04H----P1.1
;----0BH----0AH----09H----08H----P1.2
;----0FH----0EH----0DH----0CH----P1.3
;///////////////////////////////////////////
org	0000h
ajmp	main
org	0030h
main:
	clr	p2.4
	mov	dptr,#tab         		 ;将表头位置送入DPT       
	mov   30h,#00h            		 ;将30显示单元清零        
	mov   31h,#00h            		 ;将31显示单元清零        
	mov   32h,#00h            		 ;将32显示单元清零        
	mov   33h,#00h            		 ;将33显示单元清零        
	mov	35h,#00h	  		  ;软件计数器,决定闪烁的频率
	mov   36h,#00h		  		 ;移位计数器,决定闪烁的位置(个十百千).
loop:                             		
	jb	f0,kk1            		 ;f0若等于一则跳到KK1处      
	mov	35h,#00h          		 ;将35H清零                  
kk2:                              		                            
	lcall display		  		 ;调用显示程序               
	lcall	key		  		 ;调用键盘描程序             
	cpl	a                 		 ;将A的值取反                
	jz		loop      		 ;无键按下则返回             
	mov	a,34h             		 ;有键按下将键值送入ACC      
	cjne a,#0ah,norp          		 ;若A键未按下则返回到NORP处
	setb	f0                		 ;若A键按下则将F0值1         
	inc 36h                   		 ;将36H加一  
	ljmp loop                 		 ;返回主程序循环
kk1:                              		
	inc	35h               		 ;将35H加一
	mov	a,35h             		 ;送35H送入ACC
	cjne	a,#10,kk2         		 ;ACC中的值与10不相等跳转到KK2处
	mov	35h,#00H          		 ;相等则将35H清零
	cpl	00h               		 ;同时将标置位00H取反
	ajmp	kk2               		 ;返回到KK2处继续循环
                                  		
norp:                                                                           
	mov	33h,32h                          ;将32H显示单元的内容送入33H    
	mov 32h,31h                              ;将31H显示单元的内容送入32H    
	mov 31h,30h                              ;将30H单元的内容送入31H        
	mov	a,34h                            ;将键值送入ACC                 
	mov	30h,a                            ;将ACC的值送入30H              
	ljmp	loop                             ;返回主程序循环                
display:                        
			mov  p2,#0fh            ;将P2口置高电平
			mov r7,#100              ;软件计数器赋值   
dd1:
			jnb	00h,dd1d         ;00H若等于跳至dd1d处
			mov	a,36h            ;将36H中的数送入ACC中
			mov	b,#04h           ;将立即数4送入B中
			div	ab               ;A 与了相除

⌨️ 快捷键说明

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