Sie sind auf Seite 1von 8

INCLUDE REG_51.

PDF
DAY_RST EQU
DAY_CLK EQU

P3.2
P3.3

MON_RST EQU
MON_CLK EQU

P3.4
P3.5

UP
DOWN
SELECT EQU

EQU
P1.1

DATE_RST
DATE_CLK

EQU
EQU

P1.2
P1.3

DATE2
DATE3
DATE4
DATE1

EQU
EQU
EQU
EQU

P1.4
P1.5
P1.6
P1.7

MON1
MON2

EQU
EQU

P3.0
P3.1

DSEG
ORG
20H
DATES: DS
DAY:
MONTH: DS
SEL:
TEMP:
STACK:
CSEG

; This is internal data memory


; Bit adressable memory
1
DS
1
1
DS
1
DS
1
DS
1
; Stack begins here
; Code begins here

EQU
P1.0

P3.7

;black
;white
;red

;---------==========----------==========---------=========--------;
PROCESSOR INTERRUPT AND RESET VECTORS
;---------==========----------==========---------=========--------ORG
00H
; Reset
; ---------==========----------==========---------=========--------; Main routine
; ---------==========----------==========---------=========--------SETB P3.1
SETB P3.0
SETB DATE1
for date
CLR DATE2
CLR DATE3
CLR DATE4
SETB MON1
CLR MON2
CLR DAY_CLK
CLR DATE_CLK
CLR MON_CLK
SETB DAY_RST
SETB DATE_RST
SETB MON_RST

;Switch on first column

NOP
CLR DAY_RST
CLR DATE_RST
CLR MON_RST
MOV
MOV
MOV
MOV
UPO:

SEL,#01H
DAY,#01H
DATES,#01H
MONTH,#01H

SETB SELECT
SETB UP
SETB DOWN

JNB SELECT,HJ1
JNB UP,HJ2
JNB DOWN,HJ34
AJMP UPO
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;
SELECT BUTTON
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
HJ34:
AJMP HJ3
HJ1:
JNB SELECT,$
;SELECT BUTTON
CALL DELAY
JNB SELECT,$
MOV A,SEL
CJNE A,#03H,FG1
MOV SEL,#00H
FG1:
INC SEL
AJMP UPO
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;
UP BUTTON
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
HJ2:
JNB UP,$
CALL DELAY
JNB UP,$
MOV A,SEL
CJNE A,#01H,FVB1
INC DAY
;day
MOV A,DAY
CJNE A,#08H,BN1
;chk for day is 8
SETB DAY_RST
NOP
CLR DAY_RST
MOV DAY,#01H
AJMP UPO
BN1:
SETB DAY_CLK
CALL DELLAY
CLR DAY_CLK
AJMP UPO
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
FVB1:
CJNE A,#02H,FVB2
;date
DCD2:
INC DATES
MOV A,DATES
CJNE A,#01,CVS1

CVS1:

SETB DATE_RST
NOP
CLR DATE_RST
SETB DATE1
CLR DATE2
CLR DATE3
CLR DATE4
AJMP DDVN
CJNE A,#11,CVS2
SETB DATE2
CLR DATE1
CLR DATE3
CLR DATE4
AJMP DDVN

CVS2:

CJNE A,#21,CVS3
SETB DATE3
CLR DATE1
CLR DATE2
CLR DATE4
AJMP DDVN

CVS3:

CJNE A,#31,CVS4
SETB DATE4
CLR DATE1
CLR DATE2
CLR DATE3
AJMP DDVN

CVS4:

CJNE A,#32,DDVN
SETB DATE1
CLR DATE4
CLR DATE2
CLR DATE3

CLR DATE_CLK
SETB DATE_RST
NOP
CLR DATE_RST
MOV DATES,#01H
AJMP DSD2
DDVN:
SETB DATE_CLK
CALL DELLAY
CLR DATE_CLK
DSD2:
AJMP UPO
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
FVB2:
CJNE A,#03H,DSD2
INC MONTH
MOV A,MONTH
CJNE A,#01,CVS91
SETB MON_RST
NOP
CLR MON_RST
SETB MON1
CLR MON2
AJMP DADVN
CVS91: CJNE A,#11,CVS92

;month

SETB MON2
CLR MON1
AJMP DADVN
CVS92: CJNE A,#13,DADVN
SETB MON1
CLR MON2
CLR MON_CLK
SETB MON_RST
NOP
CLR MON_RST
MOV MONTH,#01H
AJMP UPO
DADVN: SETB MON_CLK
CALL DELLAY
CLR MON_CLK
AJMP UPO
HJ3:

CALL HDAY_DELAY
CALL THIRTY0NE
CALL THIRTY
CALL THIRTY0NE
CALL THIRTY
CALL THIRTY0NE
CALL THIRTY0NE
CALL THIRTY
CALL THIRTY0NE
CALL THIRTY
CALL THIRTY0NE
AJMP HJ3

;march
;April
;may
;june
;july
;august
;sep
;oct
;NOV
;DEC

HDAY_DELAY:
MOV TMOD,#01H

;time delay for

1 Day
MOV R4,#03
;count f
or 1 DAY (24 for 1 day)
AP21: MOV R5,#60
;count for 1 hour (60 for 1 Hour)
AP1:
MOV R6,#60
;count for 1 min
(60 FOR 1 MIN)
AP:
MOV R7,#20
;start timer for
1 SEC (20 for 1 Sec (50ms X 20=1 sec)
AP2:
MOV TL0,#0AAH
MOV TH0,#3CH
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R7,AP2
DJNZ R6,AP
DJNZ R5,AP1
DJNZ R4,AP21
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;
THIRTY ONE DAYS
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
THIRTY0NE:

ACVS1:

INC DATES
MOV A,DATES
CJNE A,#01,ACVS1
SETB DATE_RST
NOP
CLR DATE_RST
SETB DATE1
CLR DATE2
CLR DATE3
CLR DATE4
AJMP ADDVN
CJNE A,#11,ACVS2
SETB DATE2
CLR DATE1
CLR DATE3
CLR DATE4
AJMP ADDVN

ACVS2:

CJNE A,#21,ACVS3
SETB DATE3
CLR DATE1
CLR DATE2
CLR DATE4
AJMP ADDVN

ACVS3:

CJNE A,#31,ACVS4
SETB DATE4
CLR DATE1
CLR DATE2
CLR DATE3
AJMP ADDVN

ACVS4:

CJNE A,#32,ADDVN
SETB DATE1
CLR DATE4
CLR DATE2
CLR DATE3

ADDVN:

CLR DATE_CLK
SETB DATE_RST
NOP
CLR DATE_RST
MOV DATES,#01H
CALL INC_MONTH
CALL DAY_DELAY
RET
SETB DATE_CLK
CALL DELLAY
CLR DATE_CLK

ADSD2:

BNA1:

INC DAY
MOV A,DAY
CJNE A,#08H,BNA1
SETB DAY_RST
NOP
CLR DAY_RST
MOV DAY,#01H
AJMP UPO1
SETB DAY_CLK

;day
;chk for day is 8

CALL DELLAY
CLR DAY_CLK
AJMP UPO1
UPO1:

CALL DAY_DELAY
AJMP THIRTY0NE
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;
THIRTY DAY PROGRAM
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
THIRTY:
INC DATES
MOV A,DATES
CJNE A,#01,CACVS1
SETB DATE_RST
NOP
CLR DATE_RST
SETB DATE1
CLR DATE2
CLR DATE3
CLR DATE4
AJMP CADDVN
CACVS1:
CJNE A,#11,CACVS2
SETB DATE2
CLR DATE1
CLR DATE3
CLR DATE4
AJMP CADDVN
CACVS2:

CJNE A,#21,CACVS3
SETB DATE3
CLR DATE1
CLR DATE2
CLR DATE4
AJMP CADDVN

CACVS3:

CJNE A,#31,CADDVN
SETB DATE1
CLR DATE4
CLR DATE2
CLR DATE3

CADDVN:

CLR DATE_CLK
SETB DATE_RST
NOP
CLR DATE_RST
MOV DATES,#01H
CALL INC_MONTH
CALL DAY_DELAY
RET
SETB DATE_CLK
CALL DELLAY
CLR DATE_CLK

CADSD2:
INC DAY
MOV A,DAY
CJNE A,#08H,CBNA1
SETB DAY_RST
NOP

;day
;chk for day is 8

CBNA1:

CLR DAY_RST
MOV DAY,#01H
AJMP CUPO1
SETB DAY_CLK
CALL DELLAY
CLR DAY_CLK
AJMP CUPO1

CUPO1: CALL DAY_DELAY


AJMP THIRTY
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
INC_MONTH:
INC MONTH
MOV A,MONTH
CJNE A,#01,ACVS91
SETB MON_RST
NOP
CLR MON_RST
SETB MON1
CLR MON2
AJMP ADADVN
ACVS91: CJNE A,#11,ACVS92
SETB MON2
CLR MON1
AJMP ADADVN
ACVS92: CJNE A,#13,ADADVN
SETB MON1
CLR MON2
CLR MON_CLK
SETB MON_RST
NOP
CLR MON_RST
MOV MONTH,#01H
AJMP AUPO
ADADVN: SETB MON_CLK
CALL DELLAY
CLR MON_CLK
AUPO:
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
DAY_DELAY:
MOV TMOD,#01H

;time delay for

1 Day
MOV R4,#24
;count f
or 1 DAY (24 for 1 day)
TP2:
MOV R5,#60
;count for 1 hour (60 for 1 Hour)
TP1:
MOV R6,#60
;count for 1 min
(60 FOR 1 MIN)
TP:
MOV R7,#20
;start timer for
1 SEC (20 for 1 Sec (50ms X 20=1 sec)
UP2:
MOV TL0,#0AAH
MOV TH0,#3CH

SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R7,UP2
DJNZ R6,TP
DJNZ R5,TP1
DJNZ R4,TP2
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;********************************************************************
;
DELAY PROGRAMS
;********************************************************************
DELLAY:
MOV R5,#0FFH
DJNZ R5,$
RET
;********************************************************************
DELAY: MOV R0,#1FH
INLOP: MOV R1,#0FFH
DJNZ R1,$
DJNZ R0,INLOP
RET
;********************************************************************
END