汇编语言与接口技术实践——秒表

1. 设计要求

基于 51 开发板,利用键盘作为按键输入,将数码管作为显示输出,实现电子秒表。

功能要求:

(1)计时精度达到百分之一秒;

(2)能按键记录下5次时间并通过按键回看

(3)设置时间,实现倒计时,时间到,数码管闪烁 10 次,并激发蜂鸣器,可通过按键解除。

2. 设计思路

实现过程:
代码实现了一个简单的单片机程序,其中包含了数字显示、按键检测、正/反倒计时、数据存储、按键判断、复位功能、显示控制和延时等基础功能。通过设置程序结构、定义变量和寄存器、使用标签以及相关指令,实现了LED灯阵列的数字显示、按键状态的检测、倒计时功能、数据存储、按键判断和跳转、系统复位、LED灯的显示控制以及延时等功能。整体而言,该代码是一个综合性的单片机程序,展现了在嵌入式系统中常见的基础操作和功能。

程序结构:

ORG 0000H: 设置程序的起始地址为0000H。

LJMP MAIN: 无条件跳转到MAIN标签,即程序的主入口。

ORG 0100H: 设置程序的代码段起始地址为0100H。

主要变量和寄存器说明:

R0, R1, R2, R3, R4, R5, R6, R7: 寄存器,用于临时存储数据。

A, B: 通用寄存器。

P0, P1, P2: 用于控制端口的寄存器。

SRC、DPTR: 数据指针寄存器。

数字显示:

使用SHOW和LLSHOW等标签,通过LED灯阵列实现数字的显示。

按键检测:

使用KEY2标签,通过检测键盘输入状态实现按键的检测,按键状态保存在A寄存器中。

倒计时功能:

使用COUNT和COUNT1等标签,实现了一个简单的倒计时功能。

使用LLLSHOW和LLLDARKSHOW标签,通过LED灯阵列实现了倒计时数字的显示和清除。

数据存储和保存:

使用SAVE和SAVE1等标签,实现了将数据存储到指定的内存位置。

数据存储的起始位置是由R1寄存器表示。

按键判断和跳转:

使用CHECK、CHECK1、WAIT等标签,根据按键的状态进行条件判断和跳转。

复位功能:

使用RESET标签,实现了系统的复位功能。

显示控制和延时:

使用SHOW、DARKSHOW、DELAY等标签,控制LED灯的显示和延时。

其他功能:

包括了一些与LED灯和按键相关的功能实现,如LED灯的控制、显示、清除等。

拓展功能——正计时和LED8x8点阵显示:

正计时:

基于倒计时的原理,拓展了一个功能上与之相反的正计时功能,从零开始计时,直到用户的设定值。

LED8x8点阵显示:

图 1  LED8x8点阵屏

使用LED8x8点阵屏显示个位数字和一些用户交互图形和动画(注意使用时需把黄色帽子扣在另外一边)

图 2 操作流程图

3. 实现效果

图 1开始界面

按下K4选择模式(正计时/倒计时)

图 2选择正计时模式

图 3选择倒计时模式

矩阵键盘选择起始值/终点值的十位和个位,并按下K2键确认

图 4选择十位

按下K1键开启程序

图 6倒计时

时间到按下K2解除蜂鸣器,并按下K3进行左查询或K4进行右查询时间记录

4. 总结

本程序结构清晰明了。起始地址被正确设置,通过跳转到主入口实现程序的顺利执行。采用ORG指令设置代码段起始地址,提高了程序的组织性。主要的寄存器和变量都经过详细说明,有助于他人理解和维护代码。

数字显示方面,通过LED灯阵列实现了显示功能,而按键检测则通过KEY2标签实现,按键状态存储在A寄存器中。倒计时功能的实现涉及COUNT和COUNT1标签,同时通过LLLSHOW和LLLDARKSHOW标签控制LED灯阵列进行数字的显示和清除。

数据的存储和保存方面,通过SAVE和SAVE1标签实现,存储的起始位置由R1寄存器表示。按键判断和跳转方面使用了CHECK、CHECK1、WAIT等标签,根据按键状态进行条件判断和跳转。复位功能通过RESET标签实现,确保系统可以在需要时进行重新初始化。

显示控制和延时通过SHOW、DARKSHOW、DELAY等标签实现,以控制LED灯的显示和延时。

此外,还包括一些与LED灯和按键相关的功能,如LED灯的控制、显示、清除等。拓展功能方面,实现了正计时功能,为用户提供了更多选择。此外,还涉及到LED8x8点阵显示,为课设增加了一些复杂性和趣味性。

在总体上,这个单片机课设考虑到了多个方面,包括基本功能、用户交互、数据存储和显示等,展现了一个完整而且有趣的设计。程序的模块化和注释使得代码易于理解和维护。在进一步的开发和测试中,我们也考虑到了一些边界条件和错误处理,以确保系统的稳定性和可靠性。

课程评价:
单片机课程为我们提供了深入了解嵌入式系统的机会,通过学习底层硬件、嵌入式编程和实际应用,培养了学生的系统设计和调试能力,同时强化了团队合作和问题解决的技能。这门课程对计算机工程专业学生具有重要意义。

5. 代码

      ORG 0000H

  LJMP MAIN

  ORG 001BH  //=======中断服务程序=======

  MOV TL0,#0B0H

  MOV TH0,#3CH

  CPL P1.0

  DJNZ R5,RETURN

  CJNE R4,#10H,DONE

  MOV R4,#0CH

  DONE:

  INC R4

  MOV R5,#0AH

  RETURN:

  RETI

  ORG 0100H  //=============主程序==============

  SRC DATA 60H     ;定义SRC数据指针存放R0值

  CLR F0

MAIN:

      ACALL NULL

      MOV R0,#20H   //R0作为显示数据操作指针

  MOV R1,#20H   //目前的数据指针   

  LCALL INTERRUPT

  MOV R4,#0DH

  AJMP MODELCHECK

NULL: //清空上一次操作残留的数据

      MOV R0,#2DH

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/410615.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数学建模【GM(1, 1)灰色预测】

一、GM(1, 1)灰色预测简介 乍一看,这个名字好奇怪,其实是有含义的 G:Grey(灰色)M:Model(模型)(1, 1):只含有一个变量的一阶微分方程模型 提到灰色,就得先说…

基于InSAR、CNN的滑坡监测(一)

文献阅读记录,也是组会汇报材料收集,从中文文献开始学习。 开发一种快速、精确且自动化程度较高的滑坡定位或检测模型可以为地质灾害防治提供有效支撑,为研究滑坡分布规律及滑坡潜在风险等问题提供技术支持 ①《基于高分辨率遥感影像和改进 U-Net 模型的…

【Spring Cloud】高并发带来的问题及常见容错方案

文章目录 高并发带来的问题编写代码修改配置压力测试修改配置,并启动软件添加线程组配置线程并发数添加Http取样配置取样,并启动测试访问message方法观察效果 服务雪崩效应常见容错方案常见的容错思路常见的容错组件 总结 欢迎来到阿Q社区 https://bbs.c…

YOLOv5改进 | SPPF篇 | 利用YOLOv9最新的SPPELAN模块改进SPPF(全网独家创新,附手撕结构图)

一、本文介绍 本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的SPPELAN模块来改进SPPF,其中YOLOv9针对于这个模块并没有介绍,只是在其项目文件中用到了,我将其整理出来用于我们的YOLOv5的项目,同时空间金字塔池化作为我们YOLOv5中的一个比较独特的存…

算法学习(十三)多路归并

多路归并 1. 概念 一、多路归并算法的由来 假定现在有一包含大量整数的文本文件存放于磁盘中,其文件大小为10GB,而本机内存只有4GB。此时若我们要对该文件中的所有整数进行升序排序,肯定不能直接将文件中的所有数据一次性读入内存中&#x…

《Docker 简易速速上手小册》第7章 高级容器管理(2024 最新版)

文章目录 7.1 容器监控与日志7.1.1 重点基础知识7.1.2 重点案例:监控 Flask 应用7.1.3 拓展案例 1:使用 ELK Stack 收集和分析日志7.1.4 拓展案例 2:使用集成监控工具 7.2 性能调优与资源限制7.2.1 重点基础知识7.2.2 重点案例:Fl…

边缘计算网关与边缘计算的融合之道-天拓四方

随着物联网、大数据和人工智能的飞速发展,数据处理和分析的需求呈现出爆炸式增长。传统的中心化数据处理模式已难以满足实时性、低延迟和高带宽的需求,边缘计算应运而生,成为解决这一难题的关键技术。而边缘计算网关,作为连接边缘…

护眼台灯哪个品牌质量比较好?五大优质护眼台灯推荐!

护眼台灯作为近年来最受欢迎的灯具之一,它不仅可以提供充足明亮的光照,光线环境,从而减少眼睛的负担和疲劳,还能够实现预防近视的效果,所以很多家长都会给孩子准备护眼台灯。但也有不少朋友觉得护眼台灯是名副其实的智…

爆火的Sora,动了谁的奶酪?

北京时间2月16日凌晨,当我们还沉浸在春节假期的喜庆和欢乐中时,Open AI 官宣推出首个文生视频模型 Sora。一年多前,Chat GPT 的横空出世,引起了全球广泛关注。如今 Sora 的出现,再次掀起千层浪。 只需要一段文本描述&a…

校招失败后,在小公司熬了 2 年终于进了字节跳动,竭尽全力....

其实两年前校招的时候就往字节投了一次简历,结果很明显凉了,随后这个理想就被暂时放下了,但是这个种子一直埋在心里这两年除了工作以外,也会坚持写博客,也因此结识了很多优秀的小伙伴,从他们身上学到了特别…

SMTP和IMAP是什么?SMTP的定义及工作模式?

SMTP是什么邮件的协议?如何开启网站邮箱SMTP服务? 随着互联网的普及和电子邮件的广泛使用,SMTP和IMAP这两个名词逐渐进入了我们的视野。它们是什么?它们在我们的日常生活中扮演着怎样的角色呢?下面,蜂邮ED…

C语言--贪吃蛇

目录 1. 实现目标2. 需掌握的技术3. Win32 API介绍控制台程序控制台屏幕上的坐标COORDGetStdHandleGetConsoleCursorinfoCONSOLE_CURSOR_INFOSetConsoleCursorInfoSetConsoleCursorPositionGetAsyncKeyState 4. 贪吃蛇游戏设计与分析地图<locale.h>本地化类项setlocale函…

uniapp微信小程序解决上方刘海屏遮挡

问题 在有刘海屏的手机上&#xff0c;我们的文字和按钮等可能会被遮挡 应该避免这种情况 解决 const SYSTEM_INFO uni.getSystemInfoSync();export const getStatusBarHeight ()> SYSTEM_INFO.statusBarHeight || 15;export const getTitleBarHeight ()>{if(uni.get…

信号完整性分析基本概念

“设计师可以分成两类&#xff0c;一类已经遇到了信号完整性问题&#xff0c;另一类即将遇到信号完不整性问题” 随着时钟频率的提高&#xff0c;发现并解决信号完整性问题成为产品开发的关键。因此需要精通信号完整性分析技术&#xff0c;并能采取高效设计过程以消除这些问题…

如何使用群晖NAS中FTP服务开启与使用固定地址远程上传下载本地文件?

文章目录 1. 群晖安装Cpolar2. 创建FTP公网地址3. 开启群晖FTP服务4. 群晖FTP远程连接5. 固定FTP公网地址6. 固定FTP地址连接 本文主要介绍如何在群晖NAS中开启FTP服务并结合cpolar内网穿透工具&#xff0c;实现使用固定公网地址远程访问群晖FTP服务实现文件上传下载。 Cpolar内…

实践案例分析:让数据说话,高效盘点研发效能,助力企业2024发展 | 活动回顾

前不久&#xff0c;思码逸 DevData Talks 落地深圳南山区&#xff0c;举办了一场以「中小到千人规模团队研发效能提升实践 」为主题的闭门沙龙&#xff0c;共探研发增效之道。活动邀请到了几位来自不同研发规模的团队的研发效能负责人齐聚一堂&#xff0c;分别是平安银行组织级…

SD-WAN:三步轻松实现异地访问总部内网

随着经济的蓬勃发展和企业业务范围的不断扩张&#xff0c;许多企业逐渐形成了以总部为核心的多点生产结构&#xff0c;并通过网络实现了总部与分支机构之间的信息互通。要实现对企业总部内网的异地访问并非易事&#xff0c;但如果应用了SD-WAN这些问题将被轻松解决。 某企业在总…

React18源码: Fiber树的初次创建过程图文详解

fiber树构造&#xff08;初次创建&#xff09; fiber树构造的2种情况&#xff1a; 1.初次创建 在React应用首次启动时&#xff0c;界面还没有渲染此时并不会进入对比过程&#xff0c;相当于直接构造一棵全新的树 2.对比更新 React应用启动后&#xff0c;界面已经渲染如果再次发…

连续轨迹加工和速度前瞻:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十二)

XPCIE1032H功能简介 XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡&#xff0c;可选6-64轴运动控制&#xff0c;支持多路高速数字输入输出&#xff0c;可轻松实现多轴同步控制和高速数据传输。 XPCIE1032H集成了强大的运动控制功能&#xff0c;结合MotionRT7运动…

盈致MES系统助力企业实现数字化转型

盈致MES系统通过以下几个方面帮助企业实现数字化转型&#xff1a; 生产流程透明化&#xff1a;MES系统通过实时采集生产现场的数据&#xff0c;实现了生产流程的透明化管理。企业可以实时了解生产进度、设备状态、质量检测等信息&#xff0c;提高了生产管理的效率和准确性。 优…