背景:
最近在回顾51单片机相关基础知识,看了几本书,总是有种蜻蜓点水的感觉,一开始也是用C51写几个程序,又感觉不能找到单片机的感觉,觉得还是在写PC版本的程序。后来仔细想想,还是有必要用汇编直写程序,因为汇编更能体验控制硬件的过程,才能找到与单片机亲密接触的感觉,更能深入了解单片机的每一部分,更灵活地掌控它,为后面编写复杂的程序奠定基础。
后来在网上发现《单片机C语言程序设计实训100例基于8051+Proteus仿真》发布的Proteus仿真文件,正好可以拿这些仿真练手,将它用C写的效果,通过汇编语言实现,自我感觉主意不错,马上行动,即开始了这一系列之旅……
入正题:
题目描述:用程序实现一个7段数码管(共阴极)循环显示0~F这16个数字(16进制),Proteus仿真图如下所示:
由上图易看出通过P0口来控制数码管,数码管为共阴极,低电平亮。
代码文件main.asm
;; 单个数码管循环显示0~F数字
ORG 000H
START:
MOV R4,#0 ;循环显示10次
LOOP: ;循环显示数字,R4递增
MOV A,R4
MOV DPTR,#NTABLE
MOVC A,@A+DPTR
MOV P0,A
CALL DELAY
INC R4
CJNE R4,#16,LO