没有合适的资源?快使用搜索试试~ 我知道了~
单片机按键连按长按汇编程序.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 125 浏览量
2023-06-06
18:36:08
上传
评论
收藏 27KB DOCX 举报
温馨提示
试读
30页
单片机按键连按长按汇编程序.docx
资源推荐
资源详情
资源评论
单片机按键连按长按汇编程序
;==========================================================
=====
;程序编写人:兰建文
;编写地点:51hei 培训机构
;时间:6 月 7 日下午 星期日
;功能:本程序实现 P0 口的对 2 个数码管显示 0 到 99,一个按键实现一次
;按键只递加 1 次,到 99 回到 0,按着不动不影响数码管动态显示;任何时
;刻,任何一个按键,若按键连续按键 3 次,每次间隔时间不大于 1 秒,循
;环显示 0 到 9 回到 0。若间隔时间大于 1 秒,显示加 1,低电平亮
;P2 口实现对数码管的片选功能
;==========================================================
=====
;========================== 系 统 程 序
=============================
;========================= 开 始 初 始 化
============================
SHUCHU EQU P0 ;定义 P0 口为输出口
PIANXUAN EQU P2 ;定义 P2 口为片选口
SHUZI EQU 30H ;设置处理数据存放地址
JIANBIT0 BIT 20H.0 ;设置按键标志位
XIAN0 BIT 20H.2 ;显示标志位
T_BIT BIT 21H.0 ;设置中断定时器 0 标志位
LIANAN BIT 20H.1 ;设置连按标志位
BIT4 BIT 20H.2
MODE EQU 01H
SHU EQU 40H
;======================== 程 序 开 始
==============================
ORG 00H ;程序开始
LJMP START ;跳到 START
ORG 0BH ;中断定时器 0 入口地址
JMP T0_1 ;跳到定时器 0 服务程序
ORG 0030H ;入口地址
;========================= 主 程 序
===============================
START:MOV SP,#60H ;移开指针
MOV SHUZI,#00 ;数据初始化
MOV DPTR,#TAB ;查表初始化
MOV P1,#0F8H ;设置 P1.0 口为输入
CALL INIT ;开中断
CLR JIANBIT0 ;按键标志位清 0
CLR LIANAN ;连按标志位清 0
CLR BIT4
SETB T_BIT ;中断标志位置 1
MOV SHU,#0
MOV R2,#0
MOV R3,#0
MOV R4,#0
MOV R5,#200
MAIN:JNB T_BIT,MAIN ;等待中断
CLR T_BIT ;中断标志位清 0
JB BIT4,VV
INC R3
CJNE R3,#25,XX
MOV R3,#00
MOV R2,#0
JMP DD
XX:CJNE R2,#3,VV
SETB LIANAN
MOV R2,#00
DD:CLR BIT4
VV:JB LIANAN,XUNHUAN ;判断是否有连按
CC:CALL JISUAN ;计算分离十位和个位
CALL DISPLAY ;显示个位和十位
JNB JIANBIT0,PANDUAN;按键标志位=1 判断 P1.3 口,若为 0 则判断按键是否抬
起
JNB P1.3,XIANSHI0 ;若没抬起(P1.3=0)则调到 XIANSHI0
SETB BIT4
INC R2
MOV R3,#0
CLR JIANBIT0 ;按键标志位清 0
CLR XIAN0 ;显示标志位清 0
JMP MAIN ;返回 MAIN
PANDUAN:
JB P1.3,MAIN ;若按键抬起则返回 MAIN,若没有抬起按键标志位清 0
SETB JIANBIT0
JMP MAIN
XIANSHI0:
JB XIAN0,MAIN
SETB XIAN0 ;显示标志位清 0
CALL JIACHULI ;加处理
JMP MAIN
XUNHUAN:
MOV A,SHU
CJNE A,#10,KKK
MOV SHU,#0
CLR LIANAN
MOV A,SHU
KKK: MOVC A,@A+DPTR ;查表
MOV SHUCHU,A
MOV PIANXUAN,#05
INC R4
CJNE R4,#50,OUTT
INC SHU
MOV R4,#0
OUTT:JMP MAIN
;====================定时中断 0 服务子程序========================
;输入:无
;输出:无
;实现的功能:实现定时 20MS,影响标志位 T_BIT
;==========================================================
=====
T0_1:MOV TMOD,#MODE ;定时器 1 工作方式 1
MOV TL0,#0E0H ;设置定时初值
MOV TH0,#0B1H
SETB T_BIT ;定时标志位清 0
RETI
;======================== 中 断 设 置 子 程 序
=========================
;输入:无
;输出:无
;实现的功能:初始化设置定时器,设置初值
;==========================================================
=====
INIT:MOV TMOD,#MODE ;定时器 0 工作方式 1
MOV TL0,#0E0H
MOV TH0,#0B1H
MOV IE,#82H ;开定时器中断 0
SETB TR0 ;开定时器 0
RET
;======================== 计 算 子 程 序
=============================
;输入:30H
;输出:"A 和 B"
;实现的功能:把 30H 的数据的十位和个位分离出来
;==========================================================
=====
JISUAN:MOV A,SHUZI ;数据放在 A 中
MOV B,#10 ;除数放在 B 中
DIV AB ;商放在 A 中,余数放在 B 中
RET
;======================== 显 示 子 程 序
=============================
;输入:"A"
;输出:"P0 口"
;实现的功能:把 A 的数输出到 P0 口显示,十位和个位分开显示
;==========================================================
=====
DISPLAY:MOVC A,@A+DPTR ;查表
MOV SHUCHU,A ;显示十位
MOV PIANXUAN,#04H ;片选
CALL DELAY ;查表
MOV SHUCHU,#0FFH ;关闭数码管
MOV A,B
MOVC A,@A+DPTR ;查表
MOV SHUCHU,A ;显示个位
MOV PIANXUAN,#05H ;片选
CALL DELAY ;延时
MOV SHUCHU,#0FFH ;关闭数码管
RET
;====================== 加 处 理 子 程 序
=============================
;输入:无
;输出:无
;实现的功能:把 30H 地址加 1
;==========================================================
=====
JIACHULI:MOV A,SHUZI
CJNE A,#99,L0 ;若 A 不等于 9,则跳到 LL
MOV A,#00
JMP L1
L0:INC A ;自加一
L1:MOV SHUZI,A
RET
;======================== 延 时 程 序
===============================
;输入;无
;输出: 无
;实现的功能:延时一段时间
;==========================================================
=====
DELAY:
MOV R6,#80
L7:MOV R7,#80
L8:DJNZ R7,L8
DJNZ R6,L7
RET
;===================== 共 阳 查 表 数 据
==============================
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;======================= 程 序 结 束
================================
END
一个按键控制一个灯,要求按一下按键,灯亮一直亮,再按一下按键灯灭,要带按键的去
抖程序。
郑锦朋 | 浏览 2150 次
推荐于 2016-07-02 16:59:04
最佳答案
试一下这个,灯接在 p1.2,按键接在 p3.3
ORG 00H;
MOV P3,#0FFH ;
SETB P1.2 ;
START:JNB P3.3,TT0;
AJMP START ;
TT0:LCALL D1MS ;
JNB P3.3,TT0;
CPL P1.2;
剩余29页未读,继续阅读
资源评论
老帽爬新坡
- 粉丝: 82
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- BGP路由基本配置(拓扑图画好,ip配好了)
- C#的前置窗口截图工具
- 基于Flask开发后端、VUE开发前端框架,在WEB端部署YOLOv5目标检测模型
- kubekeyv3.0.13
- 基于SHT25温湿度传感器、FREERTOS、STM32F103C8T6、LCD1602温湿度采集显示系统proteus仿真设计
- C# 屏幕放大取色器 随时随地获取屏幕像素颜色
- 下载安装这个软件.apk
- 【数据集详细解释及案例分析】数据集详细解释及案例分析
- 基于SHT71温湿度传感器、STM32F103C8T6、LCD1602温湿度采集显示系统proteus仿真设计
- 基于TH02温湿度传感器、STM32F103C8T6、LCD1602、FREERTOS的温湿度采集系统proteus仿真设计
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功