;要求:至少包括4个功能:时间清零;启动计时;暂定计时;继续计时;

;      计时最小单位0.1 秒,最大计时时间999.9秒,

;      用数码管显示时间,同时要求按下任何一个功能键必须有声音提示。

;

;使用方法: 设有启动键K1和暂停/清零键K2。按k1启动计时,按k2则暂停计时,再按k2则清零。

;常数设置

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,[        DISCUZ_CODE_1        ]nbsp;

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"

DB   80H        ;"8"

DB   90H        ;"9"

DB   88H        ;"A"

DB   83H        ;"B"

DB  0C6H        ;"C"

DB  0A1H        ;"D"

DB   86H        ;"E"

DB   8EH        ;"F";15

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

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

DELAY2:

MOV  R5,#2H

DELAY:                    ;延时R5×10MS

MOV  R6,#50

D1:

MOV  R7,#100

DJNZ  R7,$

DJNZ  R6,D1

DJNZ  R5,DELAY

RET

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

DELAY1:                    ;延时5MS

MOV  R6,#25

D2:

MOV  R7,#100

DJNZ  R7,$

DJNZ  R6,D2

RET

BEEP:

JNB         BEEP_EN,NOT_BEEP

CLR BEEP_EN

CLR BEEP_PIN                        ;低电平有效

CALL DELAY1                                ;延时

;NOT_BEEP:

SETB BEEP_PIN

NOT_BEEP:

RET

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

INIT_TIMER:                ;初始化定时器

MOV  TMOD,#01H    ;设置定时器0 工作模式为模式1

MOV  IE,  #82H    ;启用定时器0 中断产生

MOV  TL0,#TLOW

MOV  TH0,#THIGH

RET

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

T0_INT:

PUSH  ACC

PUSH  PSW

MOV  TL0,#TLOW

MOV  TH0,#THIGH

CALL DISPLAY

JNB FLAG_TIMING,T0_EXIT

CLR C

INC COUN_INT

MOV A,COUN_INT

CJNE A,#20,T0_EXIT

MOV COUN_INT,#0

MOV A,COUN_TIME_L

ADDC A,#1

DA A

MOV COUN_TIME_L,A

JNC TIME_ADD_END

MOV A,COUN_TIME_H

ADDC A,#0

DA A

MOV COUN_TIME_H,A

TIME_ADD_END:

MOV A,COUN_TIME_H

CJNE A,#99H,TIME_ADD_T

MOV A,COUN_TIME_L

CJNE A,#99H,TIME_ADD_T

CLR FLAG_TIMING;达到最大值999,则停止

……………………

…………限于本文篇幅 余下代码请从51黑下载附件…………

秒表的数码管小数点的显示C语言,4位7段数码管秒表,一位小数,用at89c51单片机,汇编语言...相关推荐

  1. ESP32设备驱动-TM1637-驱动4位7段数码管

    TM1637-驱动4位7段数码管 1.TM1637介绍 TM1637是一款带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成了MCU数字接口.数据锁存.LED高压驱动.键盘扫描等功能 ...

  2. ESP8266-Arduino编程实例-TM1637-驱动4位7段数码管

    TM1637-驱动4位7段数码管 1.TM1637介绍 TM1637是一款带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成了MCU数字接口.数据锁存.LED高压驱动.键盘扫描等功能 ...

  3. STM32F1与STM32CubeIDE编程实例-74HC595驱动4位7段数码管

    74HC595驱动4位7段数码管 1.74HC595介绍 74HCT595 是一个 8 位串行输入/串行或并行输出移位寄存器,带有一个存储寄存器和三态输出.移位寄存器和存储寄存器都有独立的时钟.该器件 ...

  4. STM32F1与STM32CubeIDE编程实例-MAX7219驱动8位7段数码管(基于SPI)

    MAX7219驱动8位7段数码管(基于SPI) 在前面的文章中,我们实现了纯GPIO方式通过MAX7219驱动8位7段数码管.由于MAX7219支持SPI.QSPI接口,最大支持10MHz的通信速率, ...

  5. 接口技术七段数码管c语言,031 实例7-七段数码管绘制

    [TOC] 一."七段数码管绘制"问题分析 1.1 问题分析 七段数码管 需求:用程序绘制七段数码管,似乎很有趣 该怎么做呢? turtle绘图体系 --> 七段数码管绘制 ...

  6. ch454c语言程序实例,16段数码管驱动和键盘控制芯片CH454.PDF

    CH454 手册 1 16 段数码管驱动及键盘控制芯片CH454 手册 版本:1D 1.概述 CH454 是数码管显示驱动和键盘扫描控制芯片.CH454 内置时钟振荡电路,可以动态驱动8 只16 段的 ...

  7. 【arduino】4位8段数码管的使用

    参考文章 原理分析: a,b,c,d,e,f,g,dp控制8段灯,其他4针脚控制位显示. 但是如何控制不同位同时显示不同数字,比如第一位显示1,第二位显示二,其实实际上是不同时显示,只不过是视觉效果. ...

  8. 74HC245_键盘与8段数码管共有一个IO口_控制步进电机【Protues】

    完成功能: 数码管显示 '键盘输入角度-实际运动角度-运动状态-速度等级'初始显示 "Ent Act P 3" 键盘控制 步进电机 左转 右转 暂停 加减速 键盘输入0~9 ENT ...

  9. python turtle 绘制七段数码管以及14段数码管显示字母和时间

    目录 书上的7段数码管,显示时间 书上的7断数码管显示应功都看过了,这里顺便提供一下` 看看显示原理 14段模型 14位数码管,画英文,和数字 书上的7段数码管,显示时间 书上的7断数码管显示应功都看 ...

最新文章

  1. python学习使用
  2. AOP||动态代理||AOP专业术语;
  3. 【备忘】とある画像の自动生成
  4. Linux 的权限表达式
  5. Linux系统编程(四)信号
  6. 使用集搜客爬取酷狗排行歌曲信息
  7. node-glob学习
  8. python排序算法可视化
  9. unity音效插件—— FMOD学习
  10. ACE ADMIN 大全
  11. python调用nmap扫描全端口_python nmap 扫描服务器端口
  12. 计算机网络管理员考试试题,计算机网络管理员考试试题和答案
  13. 招商银行笔试题 公司年会
  14. 聊一聊Java中的线程中断
  15. MHA-node MHA-manger相关依赖包安装
  16. 树莓派综合项目2:智能小车(一)四轮驱动
  17. x264重要结构体详细说明(4): x264_t
  18. 2022 还有人做四足蜘蛛机器人
  19. 【总结整理】面试pm常见的问题---摘自《人人都是产品经理》
  20. Java中Cookie详解

热门文章

  1. (2019春)软件构造:雨课堂试卷(第十章)
  2. 售价最贵的20个域名
  3. Sketch for mac(矢量绘图UI设计)
  4. 蓝桥杯python组——四平方和
  5. vite不支持 require 使用require报错 如何解决
  6. 女儿的画作-《回家的路》
  7. asterisk App-Hangup 挂机
  8. 2023最新51单片机毕设选题推荐
  9. IT界牛逼的人之一:法布里斯·贝拉
  10. 传智播客前端开发_前端开发人员的最佳播客