注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题

chenht7的个人空间 http://home.eeworld.com.cn/space-uid-490705.html [收藏] [复制] [分享] [RSS]

日志

单片机_汇编编程_11_00-99计数器

已有 84 次阅读2017-10-7 11:01 |个人分类:汇编

 单片机_汇编编程_00-99计数器
时间:2017/10/7

# 一、任务描述

通过汇编编程,实现在数码管上,进行显示按下的按键次数。

# 二、任务实现
## 2.1 硬件连接
目前的硬件线路如下:
主控芯片: STC 89C52
输入引脚: P3.7 - 独立式按钮
输出引脚: P0,P2 - 驱动两个共阳数码管
工作频率: 12MHz

[图 11_00-99计数器_IO]

## 2.2 分析命题
这次主要的功能如下:
1. 采用实际的按键,按键可能会存在抖动的现象 <-- 设计软件消抖,也就是采用了延时的方法
2. 数据需要通过数码管进行显示 <-- 要设置对应的查找表数组,便于调用
3. 数码管为2位,只能显示个位和十位 <-- 设置循环判断,便于溢出时的初始化


## 2.3 确定算法
实现策略比较简单,主要就是对于计数的寄存器进行读取,以及将其中的计数数值,按照个位和十位进行拎出来,从而放在不同的寄存器当中,再进行输出。

## 2.4 流程图

[图 11_00-99计数器_流程图]

## 2.5 程序

```
Count EQU 30H
SP1 BIT P3.7
ORG 00H
START:
    MOV Count, #00H
              ; 将计数值进行复位
NEXT:
    MOV A, Count
                    ; 将计数值赋予寄存器
    MOV B, #10
                       ; 设置B寄存器的数值
    DIV AB
                              ; 将A的数除以B,其中A中保留其中的商,B中保留其中的余数
    MOV DPTR, #TABLE
           ; 指向对应的数据表
    MOVC A, @A+DPTR
            ; 根据寄存器的数值,调用数据表中对应位置的数据
    MOV P0, A
                         ; 将提取的数据进行输出
    MOV A, B                          ; 将寄存器B中所存储的余数传入寄存器A中待输出
    MOVC A, @A+DPTR
           ; 查找数据表数据,并且传入寄存器A
    MOV P2, A
                        ; 将寄存器A中的数据,即余数。进行输出
WT:
    JNB SP1, WT
                     ; 判断按键是否按下,按下SP1=0
WAIT:
    JNB SP1, WAIT
                 ; 判断按键是否按下,按下SP1=0
    LCALL DELY10MS
             ; 进行按键消抖
    JB SP1, WAIT
                  ; 检测按键复位
    INC Count
                        ; 计数值增一
    MOV A, Count
                  ; 将寄存器数值写入计数器
    CJNE A, #100, NEXT
         ; 当计数满100时,进行跳转
    LJMP START
                     ; 重新进行复位
DELY10MS:
                          ; 延时函数
    MOV R6, #20
D1:
    MOV R7, #248
    DJNZ R7, $
    DJNZ R6, D1
    RET
TABLE:
                              ; 用于共阳发光二极管,因单片机的上拉能力弱,下拉能力强些。
    DB 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
    END


```


# 三、总结

目前这个实验所实现的效果,结合了查表、计数以及这个将数据进行分割个位与十位。

# 参考资料
[1] 《单片机的编程与汇编程序案例》, https://wenku.baidu.com/view/9018d6795acfa1c7aa00cc58.html

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-10-19 17:17 , Processed in 0.117541 second(s), 11 queries , Redis On.

Powered by EEWORLD电子工程世界

© 2017 http://bbs.eeworld.com.cn/

返回顶部