1、时钟程序如下:org 0000h
extrn code (display8) buffer data 40h
ljmp main
org 000bh
ljmp intt0
org 0100h
main:
mov sp,#60h
mov r0,#buffer; mov buffer,#00h mov buffer+1,#00h mov buffer+2,#11h mov buffer+3,#00h mov buffer+4,#00h mov buffer+5,#11h mov buffer+6,#00h mov buffer+7,#00h
mov tmod,#01h; mov th0,#3ch;
mov tl0,#0b0h
mov 50h,#00;
mov 51h,#00
mov 52h,#00
mov r1,#00h ;
clr a
setb et0
setb ea
setb tr0
l1:
ljmp l1
intt0:
mov th0,#3ch
mov tl0,#0b0h push psw;
inc r1
cjne r1,#014h,return mov r1,#00h
mov a,#01
add a,50h
da a
mov 50h,a
mov r2,a
;/****************************/
mov a,50h
anl a,#0fh
mov buffer,a
mov a,50h
anl a,#0f0h
swap a
mov buffer+1,a
;/*********************************** **/
cjne r2,#60h,return
mov 50h,#00h
mov a,#01
add a,51h
da a
mov 51h,a
mov r2,a
;/****************************/
mov a,51h
anl a,#0fh
mov buffer+3,a
mov a,51h
anl a,#0f0h
swap a
mov buffer+4,a
;/*********************************** **/
cjne r2,#60h,return
mov 51h,#00h
mov a,#01
add a,52h
da a
mov 52h,a
mov r2,a
;/***************************/
mov a,52h
anl a,#0fh
mov buffer+6,a
mov a,52h
anl a,#0f0h
swap a
mov buffer+7,a
;/**********************************/ cjne r2,#24h,return
mov 52h,#00h
return:
lcall display8
pop psw
reti
end
2、秒表程序如下:
extrn code (display8)
buffer data 40h
org 0000h
ljmp main
org 000bh
ljmp intt0
org 0100h
main:
mov sp,#60h
mov r0,#buffer·
mov 50h,#00h;//ms
mov 51h,#00h
mov 52h,#00h
mov 53h,#00h;//s
mov 54h,#00h
mov 55h,#00h;//minute
mov 56h,#00h
lcall zcx0
mov tmod,#02;
mov tl0,#06h;0.5ms
mov th0,#06h
mov r0,#02h
setb et0
setb ea
clr tr0
loop:
mov C,P1.1;
MOV 20H.0,C
jb 20H.0,main
mov C,P1.2;
MOV 20H.1,C
jNb 20H.1,loop1 clr tr0
ljmp loop2
loop1:
setb tr0
loop2:
ljmp loop
intt0:
push psw
djnz r0,return; mov r0,#02h
inc 50h
mov r1,50h
cjne r1,#0ah,return mov 50h,#00h
inc 51h
mov r2,51h
cjne r2,#0ah,return mov 51h,#00h
inc 52h
mov r3,52h
cjne r3,#0ah,return mov 52h,#00h
inc 53h
mov r4,53h
cjne r4,#0ah,return mov 53h,#00h
inc 54h
mov r5,54h
cjne r5,#06h,return mov 54h,#00h
inc 55h
mov r6,55h
cjne r6,#0ah,return mov 55h,#00h
inc 56h
mov r7,56h
cjne r7,#06h,return
mov 56h,#00h
return:
lcall zcx0
pop psw
reti
zcx0:
mov buffer,50h
mov buffer+1,51h
mov buffer+2,52h
mov buffer+3,53h
mov buffer+4,54h
mov buffer+5,55h
mov buffer+6,56h
mov buffer+7,#00h
;lcall display8
ret
end
3、带初值设置的时钟如下:org 0000h
extrn code (getbcdkey)
buffer1 data 30h
extrn code (display8)
buffer data 40h
ljmp main
org 000bh
ljmp intt0
org 0100h
main:
;mov 30h,#22h
;mov 31h,#32h
;mov 32h,#05h
mov sp,#60h
clr psw.1
mov r0,#buffer1
mov a,#06h
lcall getbcdkey |
mov r0,#buffer
mov buffer+2,#11h
mov buffer+5,#11h
;/*****************************/ mov a,30h
anl a,#0fh
mov buffer,a
mov a,30h
anl a,#0f0h
swap a
mov buffer+1,a
mov a,31h
anl a,#0fh
mov buffer+3,a
mov a,31h
anl a,#0f0h
swap a
mov buffer+4,a
mov a,32h
anl a,#0fh
mov buffer+6,a
mov a,32h
anl a,#0f0h
swap a
mov buffer+7,a
;/*********************************** **/
mov tmod,#01h;
mov th0,#3ch;//6mhz
mov tl0,#0b0h
mov 50h,30h;ˉ
mov 51h,31h
mov 52h,32h
mov r1,#00h
clr a
setb et0
setb ea
setb tr0
l1:
ljmp l1
intt0:
mov th0,#3ch
mov tl0,#0b0h
push psw;
inc r1
cjne r1,#14h,return;
mov r1,#00h
mov a,#01
add a,50h
da a
mov 50h,a
mov r2,a
; /***************************/
mov a,50h
anl a,#0fh
mov buffer,a
mov a,50h
anl a,#0f0h
swap a
mov buffer+1,a
;/*********************************** **/
cjne r2,#60h,return
mov 50h,#00h
mov a,#01
add a,51h
da a
mov 51h,a
mov r2,a
;/*****************************/
mov a,51h
anl a,#0fh
mov buffer+3,a
mov a,51h
anl a,#0f0h
swap a
mov buffer+4,a
;/*********************************** **/
cjne r2,#60h,return
mov 51h,#00h
mov a,#01
add a,52h
da a
mov 52h,a
mov r2,a
;/****************************/
mov a,52h
anl a,#0fh
mov buffer+6,a
mov a,52h
anl a,#0f0h
swap a
mov buffer+7,a
;/**********************************/ cjne r2,#24h,return
mov 52h,#00h
return:
lcall display8
pop psw
reti
end