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

📄 7seg.asm

📁 单片机汇编例程学习,大量的汇编例程
💻 ASM
字号:
;///////////////////////////////////////////
;本程序源代码由单片机培训网提供.
;单片机培训网,让更多人学习单片机更容易.
;第一网址----www.mcuedu.com
;第二网址----http://51_train.nease.net
;创办人------刘永忠
;热线电话----(0755)27529998
;email-------aa815@163.com
;本程序实现七段码动态显示功能
;///////////////////////////////////////////
			org	0000h
			ajmp	main
			org	0030h
main:
			mov dptr,#tab				;将表头位置送入DPTR      					
			mov 30h,#00h                ;将30H个位显示缓冲单元清零          
			mov 31h,#00h                ;将31H十位显示缓冲单元清零          
			mov 32h,#00h                ;将32H百位显示缓冲单元清零          
			mov 33h,#00h                ;将33H千位显示缓冲单元清零          
loop:
			mov r4,#5					;r4作为软件计数器
tt1:
			lcall display				;调用显示程序 
			djnz	r4,tt1				;r4减一后不为零,返回tt1
			lcall update				;调用刷新显示子程序
			ajmp loop					;跳回loop,继续循环显示.

display:	mov	p2,#0ffh				;将P2口置高电平                         
			mov r7,#100					;软件计数器赋值                         	
dd1:                                                                            
			mov a,30h                   ;将显示缓冲区30H中的值送入ACC           
			movc a,@a+dptr              ;查表取要显示的数并把查表的结果送入ACC  
			mov p0,a                    ;将要显示的数送入P0口                   
			clr p2.0                    ;开个位显示单元                         
			lcall delay100us            ;延时100US                              
			setb p2.0                   ;关个位显示单                           
                                        	                                    
			mov a,31h                   ;将显示缓冲区别31H中的值送入A           
			movc a,@a+dptr              ;查表取要显示的数并把查表的结果送入ACC  
			mov p0,a                    ;将要显示的数送入P0口                   
			clr p2.1                    ;开十位显示单元                         
			lcall delay100us            ;延时100US                              
			setb p2.1                   ;关十位显示单元                         
                                        	                                    
			mov a,32h                   ;将显示缓冲区32H中的值送入ACC           
			movc a,@a+dptr              ;查表取要显示的数并把查表的结果送入ACC  
			mov p0,a                    ;将要显示的数送入P0口                   
			clr p2.2                    ;开百位显示单元                         
			lcall delay100us            ;延时100US                              
			setb p2.2                   ;关百位显示单元                         
                                        	                                    
			mov a,33h                   ;将显示缓冲区33H中的值送入ACC           
			movc a,@a+dptr              ;查表取要显示的数并把查表的结果送入ACC  
			mov p0,a                    ;将要显示的数送入P0口                   
			clr p2.3                    ;开千位显示单元                         
			lcall delay100us            ;延时100US                              
			setb p2.3                   ;关千位显示单元                         
			djnz r7,dd1                 ;R7不等于0返回至DD1处                   
			ret                         ;R7等于0子程序返回                      

update:									;刷新显示子程序
			inc 30h						;个位显示缓冲单元加一		
			mov a,30h
			cjne a,#10,exit				;还没加到十,退出
			mov 30h,#00h				;加到十了,个位清零
			inc 31h						;十位显示缓冲单元加一		
			mov a,31h                                               
			cjne a,#10,exit             ;还没加到十,退出            
			mov 31h,#00h                ;加到十了,十位清零          
			inc 32h						;百位显示缓冲单元加一		
			mov a,32h                                               
			cjne a,#10,exit             ;还没加到十,退出            
			mov 32h,#00h                ;加到十了,百位清零          
			inc 33h						;千位显示缓冲单元加一		
			mov a,33h                                                                           
			cjne a,#10,exit             ;还没加到十,退出            
			mov 33h,#00h                ;加到十了,千位清零          
exit:
			ret							;刷新显示子程序返回

delay100us:
			mov r5,#50
			djnz	r5,$
			ret

delay10ms:
			mov r6,#100
tt2:
			mov r5,#50
			djnz r5,$
			djnz r6,tt2
			ret
			
tab:	db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh

end

⌨️ 快捷键说明

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