HOUR EQU 40H_声级计算公式8h40h
HOUR EQU 40H由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“声级计算公式8h40h”。
HOUR EQU 40H;存放时信息的单元
MINUTE EQU 41H;存放分信息的单元SECOND EQU 42H;存放秒信息的单元
NUMEQU 43H;存放T0溢出次数的单元ORG 0000H;程序入口
AJMP MAIN
ORG 0030H;主程序入口
MAIN:MOV SP,#60H;指定堆栈栈底MOV HOUR,#00H
MOV MINUTE,#00H
MOV SECOND,#00H
MOV NUM,#0
MOV TMOD,#01H
MOV TH0,#4CH
MOV TL0,#00H
MOV IE,#00H
SETB TR0
LOOP:NOP
NOP
ACALL DISPLAY
NOP
NOP
LOOP1:JB TF0,TIME
LJMPLOOP1
TIME:CLR TR0
PUSHDPL
PUSHDPH
PUSHACC
MOVTH0,#4CH
MOVTL0,#00H
SETB TR0
MOVA,NUM
INCA
MOV NUM,A
CJNE A,#0AH,TT1
MOV P1,#0FH
MOV R0,#04H
LCALL DELAY
JNB P1.0,T0C1
秒
JNB P1.1,T0C2
分
JNB P1.2,T0C3
整时;将时、分、秒分别清零;设T0工作于方式1,用于定时;设置T0的初始值;关中断;开启定时器T0;调用显示子程序;等待定时溢出;关闭定时器;保护现场;重新设置T0的值;开启T0;溢出次数+1;检测键盘;设键盘初值;延时消抖;为0表示P1.0按下,转T0C1调整;为0表示P1.1按下,转T0C2调整;为0表示P1.2按下,转T0C3调
TT1: CJNE A,#140,RR4
MOV NUM,#00H
T0C1:MOV A,SECOND
INC A;秒单元内容加1DA A;调整为BCD码MOV SECOND,A
CJNE A,#60H,RR4;不为60秒继续等待 setb flag:
clr flag
RR1: MOV SECOND,#00H
T0C2:MOV A,MINUTE
INC A
DA A
MOV MINUTE,A
CJNE A,#60H,RR4
RR2: MOV MINUTE,#00H
T0C3:MOV P1,#0F0H
LCALL DELAY
MOV P1,#0FH
MOV A,HOUR
INC A
DA A
MOV HOUR,A
CJNE A,#24H,RR4
RR3: MOV HOUR,#00H
RR4:POP ACC
POP DPH
POP DPL
LJMP LOOP
DELAY:MOV R1,#10H
DELAY1:MOV R2,#20H
DJNZ R2,$
DJNZ R1,DELAY1
DJNZ R0,DELAY
RET
DISPLAY:MOV DPTR,#TAB
MOV A,HOUR
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
CLR P2.6
MOV R0,#1
LCALLDELAY
SETB P2.6;为60秒将秒单元清零;分单元内容加1;调整为BCD码;不为60分继续等待;为60分,分单元清零;1小时闪一次;延时;时单元内容加1;调整为BCD码;不为24小时继续等待;为24小时,时单元清零;恢复现场;延时子程序;送表头基地址;屏蔽时高位;查时高位;开显示;延时消除鬼影;关显示
MOV A,HOUR
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV P0,A
CLR P2.7
MOV R0,#1
LCALLDELAY
SETB P2.7
MOV A,MINUTE
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
CLR P2.4
MOV R0,#1
LCALLDELAY
SETB P2.4
MOV A,MINUTE
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV P0,A
CLR P2.5
MOV R0,#1
LCALLDELAY
SETB P2.5
MOV A,SECOND
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
CLR P2.2
MOV R0,#1
LCALLDELAY
SETB P2.2
MOV A,SECOND
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV P0,A
CLR P2.3
MOV R0,#1
LCALLDELAY
SETB P2.3
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HEND