51单片机汇编语言点亮一位数码管,并计时(超详细分析汇编语言)

简介: 51单片机汇编语言点亮一位数码管,并计时(超详细分析汇编语言)

如何用汇编语言点亮51单片机上的一位数码管,并让数码管重复计时呢?

数码管选用的是共阳极数码管(及给0就亮)电路如下

因为是共阳极数码管

比如我们要显示数值“0” ,那么在我们应该给ABCDEF 引脚置0 而G和DP(小数点)置1

即 在汇编语言上 这么写

MOV P2,#0C0H

MOV: 意思可以理解为赋值或者传送

P2:因为数码管连接在的是单片机P2的八个引脚下,所以这里填写P2

#0C0H:这个是一个十六进制的立即数,转化成二进制就是 1100 0000

连起来的意思就是:将1100 0000这串二进制信号 赋值给 P2的八个引脚,前两个1分别对应DP和G所连接的P2.7和P2.6引脚,后面六个0分别送到了连接着FEDCBA所连接的P2.5\P2.4\P2.3\P2.2\P2.1\P2.1\引脚

这样 通过单片机给数码管传送不同的二进制信号,就可以点亮我们想点亮的数值了。

(注:在汇编语言中十六进制的立即数有一个规则,当十六进制数是字母开头时要在前面加0,这也就是为什么时#0C0H 而不是 #C0H的原因了)

点亮完了 那如何实现计数的功能呢?

直接上源代码分析(超详细分析)

TAB:  DB   0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H    ;定义了一个数组
UP0:  
    MOV R7,#10      ;等下用来记录循环了次数,因为0-9有10个数,所以赋值为10
    MOV R2,#00H     ;用来存储偏移量
    MOV DPTR,#TAB   ;将数组的首地址用DPTR来记录
 UP: 
    MOV   A,R2           ;将当前偏移量赋值给变量A
    MOVC  A,@A+DPTR   ;MOVC A,@A+DPTR是读取地址为A+DPTR存储单元的内容。
    MOV   P2,A      ;读取到的数组内容赋值给P2引脚
    LCALL  DELAY1000MS    ;LCALL的意思是调用,调用DELAY1000MS
    INC     R2      ;inc代表加一(偏移量加一)
    DJNZ   R7,UP        ;将R7减一,非0则跳转到UP,为0则执行下一句(可以执行10次)
    SJMP    UP0         ;SJMP是跳转的意思,跳转到UP0的位置
 
DELAY1000MS:      ;这里往下是延时函数的部分,可以理解为执行完下面这这语句用时1秒
  PUSH 30H
  PUSH 31H
  PUSH 32H
  MOV 30H,#8
  MOV 31H,#1
  MOV 32H,#236
NEXT:
  DJNZ 32H,NEXT
  DJNZ 31H,NEXT
  DJNZ 30H,NEXT
  POP 32H
  POP 31H
  POP 30H
  RET
END

每条语句基本都能理解,但是一连在一起就看不懂了?

大概意思就是,首先创建了一个数组,里面存有0-9 十个数码的共阳极段码,每个段码对应不同的二进制,可以点亮不同的数码管数值。然后在一个大循环里重复执行十次小循环,每次小循环都会显示不同的数码 ,然后延时,然后加1,在循环。最后大循环,将数码又继续从0开始。

效果图:

相关文章
|
3月前
|
编译器
【ARM汇编速成】零基础入门汇编语言之基本认识(一)
【ARM汇编速成】零基础入门汇编语言之基本认识(一)
|
5月前
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
376 1
|
3月前
|
存储 编译器 C语言
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
|
3月前
|
存储 移动开发 C语言
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
|
3月前
|
编译器 C语言 计算机视觉
【ARM汇编速成】零基础入门汇编语言之指令集(二)
【ARM汇编速成】零基础入门汇编语言之指令集(二)
303 0
|
5月前
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
154 3
|
5月前
|
程序员 编译器 数据处理
汇编高手秘籍:解锁性能优化新境界,用汇编语言让你的程序飞起来!
【8月更文挑战第31天】汇编语言作为编程基石,其高效性能备受推崇。尽管现代软件开发更偏爱高级语言,但在性能要求极高的场景下,汇编优化仍不可或缺。本文通过示例代码介绍四种优化技巧:循环展开、寄存器分配、指令重排及SIMD指令使用,显著提升执行效率。同时强调分析性能瓶颈、测试优化效果及保持代码可读性的重要性,助力开发者在关键代码路径上实现性能突破。
152 0
|
5月前
【51单片机】开发板上矩阵键盘键码在数码管上的显示,按下键盘在数码管上显示对应段码
【51单片机】开发板上矩阵键盘键码在数码管上的显示,按下键盘在数码管上显示对应段码
190 0
|
5月前
|
算法
51单片机不用定时器的数码管倒计时
51单片机不用定时器的数码管倒计时
|
8月前
|
编译器 C语言 开发者
单片机原理与应用:探索微型计算机世界
单片机原理与应用:探索微型计算机世界
63 1