📄 (2).txt
字号:
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
; &
; &
; 《速度里程计》 &
; &
; 功能说明: &
; 实时显示行驶总时间 &
; 实时显示行驶总路程 &
; 实时显示行驶速度 &
; 实时显示功能指示灯 &
; 实时实现超速报警(V>15m/s) &
; &
; &
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;#######################################################################
; 变量定义 空间分配
;#######################################################################
;####################按键##########################
DISTANCEBUTTON BIT P1.2 ;里程按键
SPEEDBUTTON BIT P1.7 ;速度按键
TIMEBUTTON BIT P3.7 ;时间按键
;###############显示位选###########################
SHOWONES BIT P2.0 ;显示个位
SHOWTENS BIT P2.1 ;显示十位
SHOWHUNDREDS BIT P2.2 ;显示百位
SHOWKILOS BIT P2.3 ;显示千位
;###############外中断INT0输入#####################
INT0EDGE BIT P3.2 ;采集下降沿
;###############显示的存储空间#####################
SHOWLED0 EQU 30H
SHOWLED1 EQU 31H
SHOWLED2 EQU 32H
SHOWLED3 EQU 33H
SHOWLED4 EQU 34H
SHOWLED5 EQU 35H
;##############时 分 秒的存储空间##################
SECOND EQU 36H
MINUTE EQU 37H
HOUR EQU 38H
;##########未转化的速度的存储空间##################
SPEEDLOW EQU 39H
SPEEDHIG EQU 3AH
;#########速度经BCD转化后存储空间##################
BCDSPEEDL EQU 3CH
BCDSPEEDM EQU 3DH
BCDSPEEDH EQU 3EH
;########未转化的距离的存储空间####################
DISTANLOW EQU 3FH
DISTANHIG EQU 40H
;########距离BCD转化后的存储空间###################
BCDDISTANL EQU 41H
BCDDISTANM EQU 42H
BCDDISTANH EQU 43H
;########脉冲(圈数)计数的存储空间################
CIRCLESL EQU 44H ;自行车圈数存储单元低位
CIRCLESH EQU 45H ;自行车圈数存储单元高位
;########定时器计数中间变量的存储空间##############
TEMP EQU 46H
TEMP0 EQU 47H ;(自减10次 10*100MS=1S)
TEMP1 EQU 48H
;#############放大倍数的存储空间###################
MULTP0 EQU 49H
MULTP1 EQU 4AH
;#########采集时间标志的存储空间###################
FLAG EQU 4BH ;(是否是首次采集时间参数)
;################定时器T1的存储空间################
COUNTLOW EQU 4CH ;T1定时溢出存储单元低位
COUNTHIG EQU 4DH ;T1定时溢出存储单元高位
;################小数点的存储空间##################
DECIMAL EQU 4EH ;小数点位数单元 DECIMAL
DECIMAL1 EQU 4FH ;此位小数是处理小数点的关键
;#######################################################################
;#######################################################################
; 主 程 序 段
;#######################################################################
;#######################################################################
ORG 0000H
SJMP MAIN
ORG 0003H ;外部中断0程序入口地址
AJMP INTEX0
ORG 000BH ;T0中断(时钟定时100ms)
AJMP INT0TIME
ORG 001BH ;T1中断(速度计数1ms)
AJMP INT1CONT
ORG 0030H
;################################################################
; 初 始 化 子 程 序
;################################################################
MAIN: MOV SP,#70H ;栈顶
MOV TMOD,#11H ;设定T1、T0工作于模式1
MOV TEMP0,#0AH ;晶振12M ,10*100ms=1s
MOV TEMP1,#0FFH ;定时器中间变量
CLR A ; 将A清零
MOV FLAG,A ;首次采集时间参数清零
MOV SHOWLED0,#0aH ;将显示的存储空间赋值
MOV SHOWLED1,#0aH
MOV SHOWLED2,#0aH
MOV SHOWLED3,#0aH
MOV SHOWLED4,A ;数码管初始化显示为 ----
MOV SHOWLED5,A
MOV CIRCLESL ,A ;圈数计数器存储空间清零
MOV CIRCLESH,A
MOV HOUR,A ;时间初始化显示(00时)00分00秒
MOV MINUTE,A
MOV SECOND,A
MOV SPEEDLOW,A ;未转化的速度计算结果的空间清零
MOV SPEEDHIG,A
MOV BCDSPEEDL ,A ;BCD转化后速度结果存储空间清零
MOV BCDSPEEDM ,A
MOV BCDSPEEDH ,A
MOV DISTANLOW,A ;未转化的距离的存储空间清零
MOV DISTANHIG,A
MOV BCDDISTANL ,A ;BCD转化后距离结果存储空间清零
MOV BCDDISTANM,A
MOV BCDDISTANH,A
MOV COUNTLOW,A ;T1定时溢出存储单元低位
MOV COUNTLOW,A ;T1定时溢出存储单元高位
MOV R1,#SHOWLED3
SETB IT0 ;设置外中断0为边沿触发方式
SETB ET0 ;开T0中断
SETB ET1 ;开T1中断
SETB EX0 ;开外中断0
SETB EA ;中断全部开放
SETB PT1 ;设置T1为高优先级
MOV TH0,#03CH ;T0初值(100ms)
MOV TL0,#0B0H
MOV TH1,#0FCH ;T1初值(1ms)
MOV TL1,#018H
;########### 实时显示功能指示灯、实现超速报警各引脚清零##########
CLR P1.1 ;时间指示引脚
CLR P1.4 ;超速报警引脚
CLR P1.5 ;速度指示引脚
CLR P1.6 ;里程指示引脚
;################################################################
MAIN0: ACALL SHOW ;开机显示为 - - - -
SETB INT0EDGE ;外中断0为输入查询方式
JB INT0EDGE,MAIN0 ;等待第一个有效脉冲(下降沿)到来
;################################################################
SETB TR0 ;开T0、T1定时
SETB TR1
MOV R1,#SECOND ;开机按键未按下时显示时钟
MOV R2,#SHOWLED3 ;显示指针
MOV DECIMAL,#00H ;不带小数点显示
SETB P1.1 ;时间指示灯亮
CLR P1.5 ;速度指示不亮
CLR P1.6 ;里程指示不亮
;########################显示等待循环############################
NOCMWAIT:ACALL BUTTON ;扫描按键
PUSH 01H ;入栈保护
PUSH 02H
MOV R0,#SHOWLED0 ;BCD码分开后存储位置指针
ACALL DIVIDE ;分开BCD码(6个字节)
MOV A,R2
MOV R1,A
ACALL SHOW ;调用显示子程序
POP 02H ;出栈
POP 01H
AJMP NOCMWAIT ;按键未按下循环显示等待
;############################按键的采集############################
BUTTON:
JB TIMEBUTTON ,BUTTON0 ;时间显示按键(P3.7)
MOV R1,#SECOND ;时间即将被分开的压缩BCD 码指针
MOV R2,#SHOWLED3 ;显示指针
MOV DECIMAL,#00H ;小数点位置
SETB P1.1 ;时间指示灯亮
CLR P1.5 ;速度指示不亮
CLR P1.6 ;里程指示不亮
RET
BUTTON0 :JB SPEEDBUTTON,BUTTON1;速度显示按键(P1.7)
MOV R1,#BCDSPEEDL ;速度计算结果压缩BCD码
MOV R2,#SHOWLED4 ;显示指针
MOV DECIMAL,#02H ;小数点位置
CLR P1.1 ;时间指示灯不亮
SETB P1.5 ;速度指示亮
CLR P1.6 ;里程指示不亮
RET
BUTTON1: JB DISTANCEBUTTON,BUTTON2 ;里程显示按键(P1.2)
MOV R1,#BCDDISTANL ;里程计算结果的压缩BCD码
MOV R2,#SHOWLED3 ;显示指针
MOV DECIMAL,DECIMAL1 ;小数点位置
CLR P1.1 ;时间指示灯不亮
CLR P1.5 ;速度指示不亮
SETB P1.6 ;里程指示亮
RET
BUTTON2: RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -