秒表的数码管小数点的显示C语言,4位7段数码管秒表,一位小数,用at89c51单片机,汇编语言...
;要求:至少包括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单片机,汇编语言...相关推荐
- ESP32设备驱动-TM1637-驱动4位7段数码管
TM1637-驱动4位7段数码管 1.TM1637介绍 TM1637是一款带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成了MCU数字接口.数据锁存.LED高压驱动.键盘扫描等功能 ...
- ESP8266-Arduino编程实例-TM1637-驱动4位7段数码管
TM1637-驱动4位7段数码管 1.TM1637介绍 TM1637是一款带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成了MCU数字接口.数据锁存.LED高压驱动.键盘扫描等功能 ...
- STM32F1与STM32CubeIDE编程实例-74HC595驱动4位7段数码管
74HC595驱动4位7段数码管 1.74HC595介绍 74HCT595 是一个 8 位串行输入/串行或并行输出移位寄存器,带有一个存储寄存器和三态输出.移位寄存器和存储寄存器都有独立的时钟.该器件 ...
- STM32F1与STM32CubeIDE编程实例-MAX7219驱动8位7段数码管(基于SPI)
MAX7219驱动8位7段数码管(基于SPI) 在前面的文章中,我们实现了纯GPIO方式通过MAX7219驱动8位7段数码管.由于MAX7219支持SPI.QSPI接口,最大支持10MHz的通信速率, ...
- 接口技术七段数码管c语言,031 实例7-七段数码管绘制
[TOC] 一."七段数码管绘制"问题分析 1.1 问题分析 七段数码管 需求:用程序绘制七段数码管,似乎很有趣 该怎么做呢? turtle绘图体系 --> 七段数码管绘制 ...
- ch454c语言程序实例,16段数码管驱动和键盘控制芯片CH454.PDF
CH454 手册 1 16 段数码管驱动及键盘控制芯片CH454 手册 版本:1D 1.概述 CH454 是数码管显示驱动和键盘扫描控制芯片.CH454 内置时钟振荡电路,可以动态驱动8 只16 段的 ...
- 【arduino】4位8段数码管的使用
参考文章 原理分析: a,b,c,d,e,f,g,dp控制8段灯,其他4针脚控制位显示. 但是如何控制不同位同时显示不同数字,比如第一位显示1,第二位显示二,其实实际上是不同时显示,只不过是视觉效果. ...
- 74HC245_键盘与8段数码管共有一个IO口_控制步进电机【Protues】
完成功能: 数码管显示 '键盘输入角度-实际运动角度-运动状态-速度等级'初始显示 "Ent Act P 3" 键盘控制 步进电机 左转 右转 暂停 加减速 键盘输入0~9 ENT ...
- python turtle 绘制七段数码管以及14段数码管显示字母和时间
目录 书上的7段数码管,显示时间 书上的7断数码管显示应功都看过了,这里顺便提供一下` 看看显示原理 14段模型 14位数码管,画英文,和数字 书上的7段数码管,显示时间 书上的7断数码管显示应功都看 ...
最新文章
- python学习使用
- AOP||动态代理||AOP专业术语;
- 【备忘】とある画像の自动生成
- Linux 的权限表达式
- Linux系统编程(四)信号
- 使用集搜客爬取酷狗排行歌曲信息
- node-glob学习
- python排序算法可视化
- unity音效插件—— FMOD学习
- ACE ADMIN 大全
- python调用nmap扫描全端口_python nmap 扫描服务器端口
- 计算机网络管理员考试试题,计算机网络管理员考试试题和答案
- 招商银行笔试题 公司年会
- 聊一聊Java中的线程中断
- MHA-node MHA-manger相关依赖包安装
- 树莓派综合项目2:智能小车(一)四轮驱动
- x264重要结构体详细说明(4): x264_t
- 2022 还有人做四足蜘蛛机器人
- 【总结整理】面试pm常见的问题---摘自《人人都是产品经理》
- Java中Cookie详解