|

Time1 Equ 65535-1000+5
;================================================================
LedPort Equ P1
SegCS Equ 2000H
SegDisPlay Equ 0000H
FlagUnit Equ 20H
Sec0001F Bit FlagUnit.0
Sec001F Bit FlagUnit.1
Sec01F Bit FlagUnit.2
SecondF Bit FlagUnit.3
MinuteF Bit FlagUnit.4
Sec0001 Data 22H
Sec001 Data 23H
Sec01 Data 24H
Second Data 25H
Minute Data 26H
CSNum Data 27H
LedNum Data 28H
SegNum Data 29H
;2Ah..2fh
DisBuf Equ 30H;..35h
;================================================================
Org 0000H
Ajmp Main
;================================================================
Org 001BH
Mov TL1,#Low(Time1)
Mov TH1,#High(Time1)
AJmp CTCEntry
;================================================================
CTCEntry: Setb Sec0001F
Djnz Sec0001,CTCEntryQ
Mov Sec0001,#10
Setb Sec001F
Djnz Sec001,CTCEntryQ
Mov Sec001,#10
Setb Sec01F
Djnz Sec01,CTCEntryQ
Mov Sec01,#10
Setb SecondF
Djnz Second,CTCEntryQ
Mov Second,#60
Setb MinuteF
CTCEntryQ: RetI
;================================================================
InitSysT: Mov TMod,#00000001B
Mov TL1,#Low(Time1)
Mov TH1,#High(Time1)
Setb EA
Setb ET1
Setb TR1
Mov Sec0001,#10
Mov Sec001,#10
Mov Sec01,#10
Mov Second,#10
Clr Sec0001F
Clr Sec001F
Clr Sec01F
Clr SecondF
Clr MinuteF
Ret
;================================================================
InitSeg: Mov DisBuf+0,#0
Mov DisBuf+1,#1
Mov DisBuf+2,#2
Mov DisBuf+3,#3
Mov DisBuf+4,#4
Mov DisBuf+5,#5
AJmp InitDis
;================================================================
InitLed:
Mov LedNum,#0
Ret
;================================================================
Delay: Mov R6,#0
Delay1: Mov R7,#0
Delay2: Djnz R7,Delay2
Djnz R6,Delay1
Ret
;================================================================
Ledplay: Mov Dptr,#LedTab1
Mov A,LedNum
Movc A,@A+Dptr
Mov LedPort,A
Inc LedNum
Mov A,LedNum
Cjne A,#8,LedQ
Mov LedNum,#0
LedQ: Ret
;================================================================
LedTab1: DB 11111110B
DB 11111101B
DB 11111011B
DB 11110111B
DB 11101111B
DB 11011111B
DB 10111111B
DB 01111111B
;----------------------------------------------------------------
LedTab2:
;================================================================
SegPlay: Mov A,CSNum
Mov Dptr,#SegCS
MovX @Dptr,A
Rl A
Mov CSNum,A
Mov Dptr,#DisTab
Mov R0,SegNum
Mov A,@R0
Movc A,@A+Dptr
Mov Dptr,#SegDisplay
Movx @Dptr,A
Inc SegNum
Mov A,SegNum
Cjne A,#DisBuf+6,SegPlayQ
InitDis: Mov CSNum,#00000001B
Mov SegNum,#DisBuf
SegPlayQ: Ret
;---------------------------------------------------------------
; Char "0" ,"1" ,"2" ,"3" ,"4","5","6","7","8"
DisTab: DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h
;===============================================================
Main: Mov SP,#07H
Acall Delay
Acall InitSysT
Acall InitSeg
Acall InitLed
;----------------------------------------------------------------
MainLoop : Jbc Sec0001F,DoSec0001
Jbc Sec001F,DoSec001
Jbc Sec01F,DoSec01
Jbc SecondF,DoSecond
Jbc MinuteF,DoMinute
Ajmp MainLoop
;----------------------------------------------------------------
DoSec0001:
Ajmp MainLoop
;----------------------------------------------------------------
DoSec001:
Acall SegPlay
Ajmp MainLoop
;----------------------------------------------------------------
DoSec01:
Ajmp MainLoop
;----------------------------------------------------------------
DoSecond: Acall Ledplay
Ajmp MainLoop
;----------------------------------------------------------------
DoMinute:
Ajmp MainLoop
;================================================================
End
|
|