Professional Documents
Culture Documents
$mod51
$noprint
$include(mypaulm2.equ)
dseg at 20h
flag1: ds 1
tick: ds 1
sec: ds 1
min: ds 1
hour: ds 1
timer1: ds 1
timer2: ds 1
timer3: ds 1
timer4: ds 1
command: ds 1
cseg at 8000h
jmp main
org 8100h
; 10ms tick
; ____|____|____|____|____
;
wait_tick:
jnb tf0,$
clr tf0
orl th0,#0dch
inc tick
ret
update_clock:
mov a,tick
cjne a,#100,exit_clock
mov tick,#0
mov a,sec
add a,#1
da a
mov sec,a
cjne a,#60h,exit_clock
mov sec,#0
mov a,min
add a,#1
da a
mov min,a
cjne a,#60h,exit_clock
mov min,#0
mov a,hour
add a,#1
da a
mov hour,a
cjne a,#24h,exit_clock
mov hour,#0
exit_clock:
ret
tick_led:
jnb flag1.1,exit1
clr led
inc timer1
mov a,timer1
cjne a,#5,exit1
setb led
clr flag1.1
mov timer1,#0
exit1: ret
getchar:
jnb ri,exit2
clr ri
mov a,sbuf
mov command,a
ret
print_time:
jnb flag1.0,exit_print_time
clr flag1.0
print_time1:
mov a,#cr
call cout
mov a,hour
call phex
mov a,#':'
call cout
mov a,min
call phex
mov a,#':'
call cout
mov a,sec
call phex
exit_print_time:
ret
hour_key:
mov a,command
cjne a,#'h',exit_hour_key
mov a,hour
add a,#1
da a
mov hour,a
cjne a,#24h,skip_clear_hour
mov hour,#0
skip_clear_hour:
call print_time1
exit_hour_key:
ret
min_key:
mov a,command
cjne a,#'m',exit_min_key
mov a,min
add a,#1
da a
mov min,a
cjne a,#60h,skip_clear_min
mov min,#0
skip_clear_min:
call print_time1
exit_min_key:
ret
print_time_lcd:
print_time_lcd1:
mov a,#00h ; a = x
mov b,#00h ; b = y
call goto_xy
mov a,hour
call print_byte
mov a,#':'
call putch_lcd
mov a,min
call print_byte
mov a,#':'
call putch_lcd
mov a,sec
call print_byte
exit_print_lcd:
ret
check_next_key:
jb acc.5, exit_check_key
mov a,#2
ret
exit_check_key:
mov a,#-1
ret
call print_time_lcd1
exit_hour_key1:
ret
mov a,min
add a,#1
da a
mov min,a
cjne a,#60h,skip_clear_min1
mov min,#0
skip_clear_min1:
call print_time_lcd1
exit_key2:
ret
exit_scan: ret
call initlcd
end