历史上的今天
返回首页

历史上的今天

今天是:2024年11月26日(星期二)

正在发生

2021年11月26日 | 基于51单片机电子秒表倒计时器

2021-11-26 来源:eefocus

刚刚咱们讲了电子秒表用的是C语言,接下来咱们再讲一讲用汇编。


硬件设计

(末尾附文件)


电路图1:

数码管显示;时间清零;启动计时;暂定计时;继续计时;

在这里插入图片描述

电路图2

在这里插入图片描述

程序设计

TLOW    EQU  78H

THIGH   EQU  0ECH

LED_WEI_Pro EQU 0f0H;数码管位选 保护位



;寄存器设置

COUN_INT    EQU 21H     ;5ms * 20 = 100ms = 0.1S

COUN_PASSNUM EQU 22H ;

COUN_TIME_L EQU 23H ;时间累加 低位 100MS加1

COUN_TIME_H EQU 24H ;时间累加 高位


COUN_WEI  EQU 3CH ;显示位

DISP_BUF EQU 50H


;端口配置

LED_WEI EQU P2 ;数码管位选

LED_DAT EQU P0 ;数码管数据

BEEP_PIN EQU P3.7 ;蜂鸣器

KEY_START  EQU P3.0 ;启动

KEY_STOP EQU P3.1 ;停止/归零键

;标志位配置

FLAG_TIMING EQU 20H.1 ;20H.1 为计时状态标记

FLAG_GO EQU 20H.2 ;20H.2 为使能标记

BEEP_EN EQU 20H.3 ;蜂鸣器响使能


;--------------------------------------------------

ORG  0000H

JMP  MAIN

ORG  0BH

JMP  T0_INT

;--------------------------------------------------

MAIN:

MOV  SP,#60H

MOV  A,#00H


MOV  COUN_WEI,A

MOV  COUN_PASSNUM,A;

MOV  COUN_TIME_L,A

MOV  COUN_TIME_H,A

CLR C

CLR FLAG_GO

CLR FLAG_TIMING;刚开机为非计时状态

SETB BEEP_EN;开机响一声

CALL  INIT_TIMER

SETB  TR0

LOOP:

CALL BEEP

K1:

JB KEY_START,K2;启动

NOP

JNB KEY_START,$

SETB BEEP_EN;蜂鸣器响

JB  FLAG_GO,LOOP

SETB FLAG_GO

SETB FLAG_TIMING

JMP LOOP

K2:

JB KEY_STOP,LOOP;暂停、归零键

NOP

JNB KEY_STOP,$

SETB BEEP_EN;蜂鸣器响

JB FLAG_TIMING,STOP;计时中按此键则暂停计时,暂停时按此键则归零

RESET_TIME:;归零

CLR FLAG_GO

CLR FLAG_TIMING

MOV COUN_TIME_L,#00H

MOV COUN_TIME_H,#00H

CALL DISP_TRANSDAT

JMP LOOP

STOP:;暂停

CLR FLAG_GO

CLR FLAG_TIMING;暂停计时

JMP LOOP


;;;-------------------------   


;;-------------------------   

;;显示子程序

;;使用寄存器组:第2组寄存器

;;出口:

;;入口:

;;--------------------------

DISPLAY:

PUSH ACC

PUSH  PSW

CLR  PSW.3 ;RS1、RS0(PSW.4、PSW.3): 1 0

SETB  PSW.4

; MOV DISP_BUF,#1H ;test

; MOV DISP_BUF+1,#2H

; MOV DISP_BUF+2,#3H

; MOV DISP_BUF+3,#4H

MOV A,COUN_WEI

CJNE A,#0,CJMP1

JMP DISP_WEI1

CJMP1:

CJNE A,#1,CJMP2

JMP DISP_WEI2

CJMP2:

CJNE A,#2,CJMP3

JMP DISP_WEI3

CJMP3:

CJNE A,#3,CJMP4

JMP DISP_WEI4

CJMP4:

MOV COUN_WEI,#0

DISP_WEI1:

MOV A,LED_WEI;P3

ANL A,#LED_WEI_Pro

ORL A,#01H

; CPL A

MOV LED_WEI,A

JMP DISP_WEI_END

DISP_WEI2:

MOV A,LED_WEI

ANL A,#LED_WEI_Pro

ORL A,#02H

; CPL A

MOV LED_WEI,A

JMP DISP_WEI_END

DISP_WEI3:

MOV A,LED_WEI

ANL A,#LED_WEI_Pro

ORL A,#04H

; CPL A

MOV LED_WEI,A

JMP DISP_WEI_END

DISP_WEI4:

MOV A,LED_WEI

ANL A,#LED_WEI_Pro

ORL A,#08H

; CPL A

MOV LED_WEI,A

DISP_WEI_END:

MOV R0,#DISP_BUF

MOV A,COUN_WEI

ADD A,R0

MOV R0,A

MOV A,@R0

MOV DPTR,#LED_TAB

MOVC A,@A+DPTR

MOV B,A

MOV A,COUN_WEI

CJNE A,#2,DISP_WEI_NODOT;增加小数点

MOV A,B

ANL A,#7FH

MOV B,A

DISP_WEI_NODOT:

MOV A,B

MOV LED_DAT,A

INC COUN_WEI

POP PSW

POP ACC

RET

LED_TAB:;共阳数码管表

   DB  0C0H        ;"0" 

   DB  0F9H        ;"1"

   DB  0A4H        ;"2"

   DB  0B0H        ;"3"

   DB   99H        ;"4"

   DB   92H        ;"5"

   DB   82H        ;"6"

   DB  0F8H        ;"7"


文件仅供参考:


链接:https://pan.baidu.com/s/12Yc0D2vZqSAloPW4UgGGig

提取码:ih55

推荐阅读

史海拾趣

Frolyt Condensers & Elements GmbH公司的发展小趣事

面对电子行业的快速变化,Frolyt Condensers & Elements GmbH深知数字化转型的重要性。近年来,公司积极推进数字化转型,引入先进的ERP系统和智能制造技术,实现了生产过程的自动化、智能化和精细化管理。数字化转型不仅提高了公司的生产效率和产品质量,还降低了运营成本,为公司的持续发展奠定了坚实的基础。同时,Frolyt还利用大数据和人工智能技术优化供应链管理,提升了客户服务水平和市场响应速度。

ARCOL公司的发展小趣事

随着电子技术的飞速发展,ARCOL公司意识到只有不断创新才能在激烈的市场竞争中立于不败之地。因此,公司加大了对研发的投入,积极引进先进的生产设备和技术,不断推出创新性的产品。通过不断优化生产工艺和提升产品质量,ARCOL的产品在市场上逐渐占据了领先地位。

AC Interface Inc公司的发展小趣事

在电子行业中,ABC Electronics Inc. 深知单打独斗难以取得长远发展。因此,公司积极寻求与其他企业的合作机会,通过技术共享、联合研发、市场互补等方式实现共赢。例如,公司与一家知名芯片制造商合作,共同开发了一款具有高性能的嵌入式系统解决方案,成功应用于智能家居、工业自动化等领域。这种合作模式不仅加速了产品的研发进程,也提高了公司的市场竞争力。

Crydom公司的发展小趣事

随着全球环保意识的增强,ABC Electronics Inc. 敏锐地捕捉到了绿色电子产品的市场潜力。公司开始研发和生产符合环保标准的产品,如低能耗的LED照明产品、可循环利用的电池等。同时,公司还优化了生产工艺,减少了生产过程中的环境污染。这些环保举措不仅赢得了消费者的青睐,也提升了公司的社会形象。

Good-Ark公司的发展小趣事
定期检查电路各部件的工作状态,及时更换损坏的元件,确保电路长期稳定运行。
迪一电子公司的发展小趣事

随着数字化和智能化技术的不断发展,迪一电子公司意识到必须跟上时代的步伐。于是,公司开始推进数字化转型和智能化生产。通过引入先进的生产设备和信息系统,优化生产流程,提高生产效率。同时,公司还注重人才培养和引进,建立了一支高素质的技术和管理团队。这些努力使迪一电子在数字化和智能化方面取得了显著成果,提高了公司的竞争力和市场地位。

问答坊 | AI 解惑

怎么知道AD转换结果?

高手们,怎么能知道PIC单片机的输入模拟量,对应的输出结果? 比如供电电压为5V,参考电压是单片机自己内部电压(5V),10位AD,输入模拟量1V对应多少?1.5V对应多少?2V对应多少?…

查看全部问答>

[求助] 急求开关设计电路

电路如图所示,现在遇到的问题是不知道用什么器件来担任J2的开关角色,说下这个电路的工作情况和参数要求: C1原本充好200V的电,现通过开关闭合使通过R1和J1放电,当检测到C2上的电压降到2V时,马上断开开关J2。要求断开时间不超过500us(最 ...…

查看全部问答>

想搞嵌入式开发,请大家指点下呗,谢谢了

我是通信工程专业的学生,我有数电,模电等电路基础,有基本C/C++基础,懂点单片机。我打算考研,发现报考的学校(现在定在北航)许多老师,都搞嵌入方向,我也想想学习下,为考研增加筹码。也许以后就定在嵌入方向了,但是我对嵌入方向没有什么方 ...…

查看全部问答>

在arm汇编的时候为什么没有返回

我在调试arm的休眠的时候用了点灯的方法,调用子程序 下面是子程序         ALIGN GREEN         bl GON         bl DELAY         bl GOFF     ...…

查看全部问答>

求助,UC/IP在44BOX上的移植

请各位大侠帮帮忙,把UC/IP移植到44BOX上,使用Q2403A GPRS模块,通过PPP协议与服务器收发数据.串口驱动,以及GPRS上网功能已经实现,接下来PPP协议移植实在是搞不出来了,请大虾们帮帮忙,给俺指导指导!…

查看全部问答>

刚学vhdl,问个关于quartus仿真的菜鸟问题。

刚学vhdl,问个关于quartus仿真的菜鸟问题。 照书上写了个分频器的程序,然后想用quartus5.0看看波形。 在新建工程的时候让选择所用芯片,选哪个啊?不选不行吗?(貌似新建工程的时候好像必过这一步。---family and device settings) 程序编译 ...…

查看全部问答>

求助,Vxworks下路由表管理接口问题,多谢!

比如说,向路由表中添加路由信息时,有两个接口routeAdd()和mRouteAdd()。这两个函数在功能上有何不同呢?在实现上又有什么不同呢? 我看了一下,routeAdd()最后是调用ioctl来添加路由信息的,而mRouteAdd()却不太知道了,希望哪位高人能够指点, ...…

查看全部问答>

C51计数器中的值怎样编程输出给DAC0832?

需要把AT89S51中计数器中的值输出,采用直通方式连接DAC0832,然后电流电压转换,结果电压根本没变化,请问是什么原因? 把计数器中的值进行了BCD编码处理,原来是通过P0和P2端口输出给LED显示的,显示正确。现在通过P0直接输出给DAC0832是否可以 ...…

查看全部问答>

ubuntu 10.04及10.10版本下SAMBA服务配置

一.这个SAMBA服务配置搞了好长时间。使用所有人可访问模式,很块就可以实现。但是使用用户名和密码模式费了我好大的劲。这主要涉及到XP和ubuntu两方面的配置。真奇怪的很,同一个命令和同一个问题,不同的人写的书竟然不一样,再加上UBUNTU自己弄的 ...…

查看全部问答>