📄 safe control.asm
字号:
;程序注释:
;1.包括时间部分与其他显示
;a.定时器0 -----保留
;b.定时器1 -----更新显示用
;C.定时器2------串口用(使用AT89C52/STC89C52,当使用STC时,烧写要禁止内部RAM)
;显示格式:2088-18-88 3 18:88
;其他显示包括:离上次损工事故的天数;离上次有记录的事故/伤病天数;今年离岗事故次数;离上次离岗事故的天数;离下次颁奖日天数
;24小时制
;
;
TRXD EQU P1.0;更新时间数据
TTXD EQU P1.1
TLATCH EQU P1.2
SRXD EQU P1.3;更新其他数据
STXD EQU P1.4
SLATCH EQU P1.5
DOG EQU P3.5 ;看门狗
TME_ADDR EQU 53H
BD_RATEH EQU 0FFH ;9600 BOAD_RATE VALUE 11.059M
BD_RATEL EQU 0DBH ;9600 BOAD_RATE VALUE 11.059M
TADDR EQU 30H
FX_TEM EQU 4FH ;串口功能码缓存
ORG 0000H
LJMP FORMAT
ORG 001BH
LJMP INT1S
ORG 0023H
LJMP S_PORT
;
ORG 0100H
FORMAT:
ACALL D01S
ACALL CLK691
ACALL D01S
ACALL CLK691
MOV DPTR,#800FH ;根据标志位判断是否首次运行,是则初始化
MOVX A,@DPTR
CJNE A,#0AAH,STAR1
LJMP FORMAT1
STAR1: NOP
MOV A,#0AAH
MOVX @DPTR,A
ACALL W818
FORMAT1: MOV 0CAH,#BD_RATEL ;RCAP2L
MOV 0CBH,#BD_RATEH ;RCAP2H
MOV 0C8H,#00110100B ;T2CON
MOV PCON,#00000000B ;SMOD=0
MOV TMOD,#00010010B ;
MOV TCON,#01000000B ;0100 0000 (TR1=1 )
MOV SCON,#11010000B ;1101 0000 (MODE 3 ;RECEIVE ENABLE)
MOV IP,#00010010B ;
MOV IE,#10011010B ;1001,1010 ET0=1 ET1=1 (S_PORT INT)
MOV TH1,#4CH
MOV TL1,#00H
MOV P1,#0FFH
SETB TR1
ACALL DISPT
ACALL DISPA
MAINLOP: NOP
ACALL D01S
ACALL CLK691
AJMP MAINLOP ;等待
;************** 时间发送 ***********
TSENDNUM: NOP ;CPL A ;确定6B595 NOP 或HC595 CPL A
MOV R3,#08
TDISPLP : RRC A ;RLC A ;确定先移高位或低位
MOV TRXD,C
SETB TTXD
NOP
CLR TTXD
DJNZ R3,TDISPLP
RET
;************** 看门狗 ***********
CLK691: NOP
CLR DOG
NOP
SETB DOG
NOP
CLR DOG
RET
;************** 时间显示 ***********
LAS: CLR TLATCH
NOP
NOP
NOP
NOP
NOP
NOP
SETB TLATCH
NOP
NOP
NOP
NOP
NOP
NOP
CLR TLATCH
RET
;************** 安全数据发送 ***********
SSENDNUM: NOP ;CPL A ;确定6B595 NOP 或HC595 CPL A
MOV R3,#08
SDISPLP : RRC A ;RLC A ;确定先移高位或低位
MOV SRXD,C
SETB STXD
NOP
CLR STXD
DJNZ R3,SDISPLP
RET
;************** 安全数据显示 ***********
SLAS: CLR SLATCH
NOP
NOP
NOP
NOP
NOP
NOP
SETB SLATCH
NOP
NOP
NOP
NOP
NOP
NOP
CLR SLATCH
RET
;***************DELAY 0.1 S***************
D01S: MOV R5,#0FFH
D01: MOV R6,#0FFH
D02: DJNZ R6,D02
DJNZ R5,D01
RET
;****************************************
;* DISPT *
;****************************************
DISPT: NOP
ACALL CLK691
PUSH 00H
PUSH ACC
CLR TRXD
CLR TTXD
CLR TLATCH
MOV DPTR,#TABDIP
MOV A,#2 ;年千位
MOVC A,@A+DPTR
LCALL TSENDNUM
MOV A,#0 ;年百位
MOVC A,@A+DPTR
LCALL TSENDNUM
MOV A,5DH ;年十位
MOVC A,@A+DPTR
LCALL TSENDNUM
MOV A,5CH ;年个位
MOVC A,@A+DPTR
LCALL TSENDNUM
MOV A,5BH ;月十位
CJNE A,#00H,WE1 ;月十位不显示零
MOV A,#0AH
WE1: MOVC A,@A+DPTR
LCALL TSENDNUM
MOV A,5AH ;月个位
MOVC A,@A+DPTR
LCALL TSENDNUM
MOV A,59H ;日十位
CJNE A,#00H,WE2 ;日十位不显示零
MOV A,#0AH ;日个位
WE2: MOVC A,@A+DPTR
LCALL TSENDNUM
MOV A,58H ;日个位
MOVC A,@A+DPTR
LCALL TSENDNUM
MOV A,57H ;星期位
MOVC A,@A+DPTR
LCALL TSENDNUM
WE2A: MOV A,56H ;小时十位
CJNE A,#00H,WE3 ;小时十位不显示零
MOV A,#0AH
WE3: MOVC A,@A+DPTR
LCALL TSENDNUM
MOV A,55H ;小时个位
MOVC A,@A+DPTR
LCALL TSENDNUM
MOV A,52H ;:
LCALL TSENDNUM
MOV A,54H ;分钟十位
MOVC A,@A+DPTR
LCALL TSENDNUM
MOV A,53H ;分钟个位
MOVC A,@A+DPTR
LCALL TSENDNUM
WE5: ACALL LAS
POP ACC
POP 00H
RET
;****************************************
;* DISPA *
;****************************************
DISPA: NOP ;数据分位输出,每数据包括四单位
ACALL CLK691
PUSH 00H
PUSH ACC
CLR SRXD
CLR STXD
CLR SLATCH
MOV DPTR,#TABDIP
MOV A,33H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,32H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,31H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,30H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,37H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,36H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,35H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,34H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,3BH
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,3AH
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,39H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,38H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,3FH
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,3EH
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,3DH
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,3CH
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,43H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,42H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,41H
MOVC A,@A+DPTR
LCALL SSENDNUM
MOV A,40H
MOVC A,@A+DPTR
LCALL SSENDNUM
ACALL SLAS
POP ACC
POP 00H
RET
;************************* 读日期 ***************************
R818: NOP
MOV DPTR,#800AH
waitr: MOVX A,@DPTR
JB ACC.7,waitr
MOV R1,#TME_ADDR
;******* THIS IS S *********
; MOV DPL,#00H
; MOVX A,@DPTR
; ACALL SWHL
; INC R1
;******** THIS IS MUNITE *******
MOV DPL,#02H
MOVX A,@DPTR
ACALL SWHL
;******** THIS IS HOUR ********
MOV DPL,#04H
MOVX A,@DPTR ;小时的十位,在十二小时制时,下午时
INC R1
ACALL SWHL
INC R1
;******* THIS IS WEEK ********
MOV DPL,#06H
MOVX A,@DPTR
MOV @R1,A
;******* THIS IS DAY ***********
MOV DPL,#07H
MOVX A,@DPTR
INC R1
ACALL SWHL
;****** THIS IS MONTH ***********
INC DPTR
MOVX A,@DPTR
INC R1
ACALL SWHL
;****** THIS IS YEAR ***********
INC DPTR
MOVX A,@DPTR
INC R1
ACALL SWHL
RET
;************************* 读其他数据 ***************************
RRAM:
MOV DPTR,#8010H
MOV R1,#TADDR
MOV DPL,#10H
MOVX A,@DPTR
ACALL CHANGNUM
ACALL SWHL
INC R1
INC DPTR
MOVX A,@DPTR
ACALL CHANGNUM
ACALL SWHL
INC R1
INC DPTR
MOVX A,@DPTR
ACALL CHANGNUM
ACALL SWHL
INC R1
INC DPTR
MOVX A,@DPTR
ACALL CHANGNUM
ACALL SWHL
INC R1
INC DPTR
MOVX A,@DPTR
ACALL CHANGNUM
ACALL SWHL
INC R1
INC DPTR
MOVX A,@DPTR
ACALL CHANGNUM
ACALL SWHL
INC R1
INC DPTR
MOVX A,@DPTR
ACALL CHANGNUM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -