找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1790|回复: 0
打印 上一主题 下一主题
收起左侧

该单片机汇编程序如何改成线反转法扫描键盘

[复制链接]
跳转到指定楼层
楼主
ID:708783 发表于 2020-4-5 19:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
start:
MOV R0, #0        ; 清零R0-第一个键是key0
; 扫描 row0
SETB P0.3        ; 置1 row3
CLR P0.0                ; 清0 row0
CALL colScan                ; 调用 column扫描子程序
JB F0, finish                ; | 如果置1了F0,则跳到程序末尾
        ; | (因为找到了按下的键,其编号存储在R0)
; 扫描 row1
SETB P0.0        ; 置1 row0
CLR P0.1                ; 清0 row1
CALL colScan                ; 调用 column扫描子程序
JB F0, finish                ; | 如果置1了F0,则跳到程序末尾
        ; | (因为找到了按下的键,其编号存储在R0)
; 扫描 row2
SETB P0.1        ; 置1 row1
CLR P0.2                ; 清0 row2
CALL colScan                ; 调用 column扫描子程序
JB F0, finish                ; | 如果置1了F0,则跳到程序末尾
        ; | (因为找到了按下的键,其编号存储在R0)
; 扫描 row3
SETB P0.2        ; 置1 row2
CLR P0.3                ; 清0 row3
CALL colScan                ; 调用 column扫描子程序
JB F0, finish                ; | 如果置1了F0,则跳到程序末尾
        ; | (因为找到了按下的键,其编号存储在R0)

JMP start                ; | 返回扫描row0
        ; | (这就是为什么在程序开始时置1row3,当程序跳回开始时,row3刚刚被扫描)
finish:
JMP $        ; 找到按键时程序执行到此处-不执行任何操作

; column扫描子程序
colScan:
JNB P0.4, gotKey                ; 如果col0被清0-找到按键
INC R0        ; 否则移到下一个按键
JNB P0.5, gotKey                ; 如果col1被清0-找到按键
INC R0        ; 否则移到下一个按键
JNB P0.6, gotKey                ; 如果col2被清0-找到按键
INC R0        ; 否则移到下一个按键
RET        ; 子程序返回-未找到按键
gotKey:
SETB F0        ; 找到按键-置1F0
RET        ; 子程序返回
        END
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表