본문내용
,NotOverFlow;60이 아니면 함수를 빠져나감
movMinuite,#00;Minuite 초기화
;ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
movA,Hour;Hour를 A에 저장
addA,#01;A에 1을 Plus 함
daA;A의 값을 BCD로 포맷
movHour,A;Hour에 저장
cjneA,#24H,NotOverFlow;24가 아니면 함수를 빠져나감
movHour,#00;Hour 초기화
NotOverFlowret
;#######################################################################################################
;시계의 내용을 FND에 Display하는 프로그램
;#######################################################################################################
DisplayClock1jb AlarmSet,NotOver1 ;알람 시간 설정시 시계 표시 정지
movR1,#FND ;R1에 FND값 저장
movA,Second ;Second를 A에 저장
movB,#10H ;레지스터 B에 10 저장
divAB ;10으로 나누어 목은 십 단위로 나머지는 분단위로 저장
movR0,A ;십의 단위 R0에 저장
movA,B ;A에 일의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND에 표시
incR1 ;R1 = FND+1
movA,R0 ;A에 십의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+1에 표시
;ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
inc R1 ;R1 = FND+2
movA,Minuite ;Minuite를 A에 저장
movB,#10H ;레지스터 B에 10 저장
divAB ;10으로 나누어 목은 십 단위로 나머지는 분단위로 저장
movR0, A ;십의 단위 R0에 저장
movA,B ;A에 일의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+2에 표시
incR1 ;R1 = FND+3
movA,R0 ;A에 십의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+1에 표시
;ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
inc R1 ;R1 = FND+4
movA,Hour ;Hour를 A에 저장.
movB,#10H ;레지스터 B에 10 저장
divAB ;10으로 나누어 목은 십 단위로 나머지는 분단위로 저장
movR0, A ;십의 단위 R0에 저장
movA,B ;A에 일의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+4에 표시
incR1 ;R1 = FND+5
movA,R0 ;A에 십의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+1에 표시
NotOver1ret
;#######################################################################################################
;알람의 내용을 FND에 Display하는 프로그램
;#######################################################################################################
DisplayClock2jnb AlarmSet,NotOver2 ;알람 설정용 시계 표시
movR1,#FND ;R1에 FND값 저장
movA,A_Second ;Second를 A에 저장
movB,#10H ;레지스터 B에 10 저장
divAB ;10으로 나누어 목은 십 단위로 나머지는 분단위로 저장
movR0,A ;십의 단위 R0에 저장
movA,B ;A에 일의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND에 표시
incR1 ;R1 = FND+1
movA,R0 ;A에 십의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+1에 표시
;ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
inc R1 ;R1 = FND+2
movA,A_Minuite ;Minuite를 A에 저장
movB,#10H ;레지스터 B에 10 저장
divAB ;10으로 나누어 목은 십 단위로 나머지는 분단위로 저장
movR0, A ;십의 단위 R0에 저장
movA,B ;A에 일의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+2에 표시
incR1 ;R1 = FND+3
movA,R0 ;A에 십의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+1에 표시
;ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
inc R1 ;R1 = FND+4
movA,A_Hour ;Hour를 A에 저장.
movB,#10H ;레지스터 B에 10 저장
divAB ;10으로 나누어 목은 십 단위로 나머지는 분단위로 저장
movR0, A ;십의 단위 R0에 저장
movA,B ;A에 일의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+4에 표시
incR1 ;R1 = FND+5
movA,R0 ;A에 십의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+1에 표시
NotOver2ret
;#######################################################################################################
;시간 지연 함수 20ms
;#######################################################################################################
Delay20m mov R5,#18
Loop1 mov R4,#0FFH
Loop2 nop
nop
djnz R4,Loop2
djnz R5,Loop1
ret
;ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
End
movMinuite,#00;Minuite 초기화
;ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
movA,Hour;Hour를 A에 저장
addA,#01;A에 1을 Plus 함
daA;A의 값을 BCD로 포맷
movHour,A;Hour에 저장
cjneA,#24H,NotOverFlow;24가 아니면 함수를 빠져나감
movHour,#00;Hour 초기화
NotOverFlowret
;#######################################################################################################
;시계의 내용을 FND에 Display하는 프로그램
;#######################################################################################################
DisplayClock1jb AlarmSet,NotOver1 ;알람 시간 설정시 시계 표시 정지
movR1,#FND ;R1에 FND값 저장
movA,Second ;Second를 A에 저장
movB,#10H ;레지스터 B에 10 저장
divAB ;10으로 나누어 목은 십 단위로 나머지는 분단위로 저장
movR0,A ;십의 단위 R0에 저장
movA,B ;A에 일의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND에 표시
incR1 ;R1 = FND+1
movA,R0 ;A에 십의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+1에 표시
;ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
inc R1 ;R1 = FND+2
movA,Minuite ;Minuite를 A에 저장
movB,#10H ;레지스터 B에 10 저장
divAB ;10으로 나누어 목은 십 단위로 나머지는 분단위로 저장
movR0, A ;십의 단위 R0에 저장
movA,B ;A에 일의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+2에 표시
incR1 ;R1 = FND+3
movA,R0 ;A에 십의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+1에 표시
;ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
inc R1 ;R1 = FND+4
movA,Hour ;Hour를 A에 저장.
movB,#10H ;레지스터 B에 10 저장
divAB ;10으로 나누어 목은 십 단위로 나머지는 분단위로 저장
movR0, A ;십의 단위 R0에 저장
movA,B ;A에 일의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+4에 표시
incR1 ;R1 = FND+5
movA,R0 ;A에 십의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+1에 표시
NotOver1ret
;#######################################################################################################
;알람의 내용을 FND에 Display하는 프로그램
;#######################################################################################################
DisplayClock2jnb AlarmSet,NotOver2 ;알람 설정용 시계 표시
movR1,#FND ;R1에 FND값 저장
movA,A_Second ;Second를 A에 저장
movB,#10H ;레지스터 B에 10 저장
divAB ;10으로 나누어 목은 십 단위로 나머지는 분단위로 저장
movR0,A ;십의 단위 R0에 저장
movA,B ;A에 일의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND에 표시
incR1 ;R1 = FND+1
movA,R0 ;A에 십의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+1에 표시
;ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
inc R1 ;R1 = FND+2
movA,A_Minuite ;Minuite를 A에 저장
movB,#10H ;레지스터 B에 10 저장
divAB ;10으로 나누어 목은 십 단위로 나머지는 분단위로 저장
movR0, A ;십의 단위 R0에 저장
movA,B ;A에 일의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+2에 표시
incR1 ;R1 = FND+3
movA,R0 ;A에 십의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+1에 표시
;ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
inc R1 ;R1 = FND+4
movA,A_Hour ;Hour를 A에 저장.
movB,#10H ;레지스터 B에 10 저장
divAB ;10으로 나누어 목은 십 단위로 나머지는 분단위로 저장
movR0, A ;십의 단위 R0에 저장
movA,B ;A에 일의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+4에 표시
incR1 ;R1 = FND+5
movA,R0 ;A에 십의 단위 저장
xchdA,@R1 ;A의 하위 4비트를 FND+1에 표시
NotOver2ret
;#######################################################################################################
;시간 지연 함수 20ms
;#######################################################################################################
Delay20m mov R5,#18
Loop1 mov R4,#0FFH
Loop2 nop
nop
djnz R4,Loop2
djnz R5,Loop1
ret
;ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
End