HOLTEK时钟程序
以下程序为HOLTEK的部分时钟程序,有需要的具体程序请到单片机基地参考
# include ht48ra0-2.inc
;=====================================
;Define area
debounce_num equ 16
scl equ pb.1 ;serial clock data input
sda equ pb.0 ;Serial data I/O
read_out equ [3ch] ;write register
write_in equ [3dh] ;Read register
word_address equ [3eh]
data_8 equ [3fh]
;---------------------------
;---------------------------
;Define Macro
;Delay Macro,delay 100us
d_1 macro
local label
mov a,64h
mov delay,a
label:
sdz delay
jmp label
endm
;*************************************************************
SAMPLE .SECTION 'DATA'
;; --- Temp RAM ---
a_sr10 db ? ;;WORK Temp Register
a_sr11 db ? ;;
temp_num db ?
;;------CODE RAM---------
array_data db 8 dup (?) ;;8 byte password
;;--------- Program RAM --------
column db ? ;;Scan Key column Step Number
key_code0 db ? ;;Save Previous Key Number
key_code db ? ;;Scan Key Number
col_value db ? ;;Read on column value to a_COL_value
kd_temp db ? ;;Key Debounce Check Times
nkd_temp db ? ;;Key Release Confirm Times
Key_data db ? ;;PA temp register
Key_data1 db ?
delay db ?
delay0 db ?
delay1 db ?
t_count db ?
t_count1 db ?
release_num db ? ;;count release key
;;--- User FLAG define ---
fg_SendActive dbit ;;VALIDITY KEY Flag
fg_PressRec dbit ;;Check Column Multi_Key Flag
fg_repeat dbit ;;REPEAT KEY Flag
fg_Multi_Key dbit ;;INVALID KEY Flag
release_flg dbit ;;release flag
flg_chang_key dbit
flg_chang_personal dbit
flg_chang_manage dbit
flg_chang dbit
;*************************************************************
code .section at 0 'code'
org 00h
START:
set pa
mov a, 20H
mov mp0, a
mov a, 50H
CLR_RAM:
clr r0
inc mp0
sdz acc
jmp clr_ram
mov a,070h
mov t_count,a
mov a,050h
mov t_count1,a
mov a,07fh
mov release_num,a
ini_clock:
mov a, offset personal_clock
mov tblp,a
mov a,00h ;write 00H to eeprom address,it is personal password
mov word_address,a
ini_personal_clock:
tabrdl write_in
call ht24_write
inc TBLP
inc word_address
mov a,offset personal_clock+8
xor a,TBLP
sz acc
jmp ini_personal_clock
mov a, offset manage_clock
mov tblp,a
mov a,010h ;write 10H to eeprom address,it is administration password
mov word_address,a
ini_manage_clock:
tabrdl write_in
call ht24_write
inc TBLP
inc word_address
mov a,offset manage_clock+8
xor a,TBLP
sz acc
jmp ini_manage_clock
clr pa.1
clr pa.2
mov a, offset array_data
mov mp0, a
;@*********** Polling System Event ***********
MAIN_PROC:
call scan_key_proc ;SCAN KEY PROCEDURE
mov a,0bh ;* key
xor a,key_code
sz acc
jmp $+2
jmp release_proc
sz fg_repeat
jmp sleep
sz fg_Multi_Key ;Check Invalid Key
jmp main_proc ;
mov a,0ch ;red key
xor a,key_code
sz acc
jmp $+4
set flg_chang_key
set flg_chang_personal
jmp main_proc
mov a,0ah ;"0" key
xor a,key_code
sz acc
jmp $+4
clr flg_chang_personal
set flg_chang_manage
jmp main_proc
sz key_code ;Check NO Key Press
jmp judge
jmp sleep
judge:
set pa.1
call delay30ms
clr pa.1
mov a,070h
mov t_count,a
mov a,050h
mov t_count1,a
sz release_flg
jmp release_proc ;;deal with “*” key
sz flg_chang_key
jmp manage_code ;;input mange password
sz flg_chang_manage
jmp chang_manage_proc ;;change mange password
sz flg_chang_personal
jmp chang_personal_proc ;;change personal password
jmp personal_code ;;input personal password
发表时间:2007年1月22日19:58:55