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

📄 7seg.asm.bak

📁 KT800综合系统板实验源程序库
💻 BAK
字号:
;///////////////////////////////////////////
;本程序源代码由单片机培训网提供.
;单片机培训网,让更多人学习单片机更容易.
;第一网址----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,#6,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 + -