?? bc7281i.asm
字號:
; this is TIMER CONTROLL USE bc7281a x5045 DS1302
; USE ;at89c4051 F=11.059MHz(24mhz)
;2006.3.19 改時間設置次序:北京時間--長度--開始時間
;2006.3.22 ;加使用限制(試用版)除霜250, 70h
;2006.4.1 加看門狗
;2007.1.12 刷新LED燈
;******************************************************************************************
clk bit p3.5 ;7281
dat bit p3.7 ;
key bit p3.3 ;
TIMECLK bit P1.3 ;1302-7
TIMEIO bit P1.2 ; 6
TIMERST bit P1.1 ; 5
cs bit p1.7 ;5045--1
sout bit p1.6 ; 2
slk bit p1.5 ; 6
sin bit p1.4 ; 5
buzzer bit p3.2 ;6--喇叭
jk2 BIT P3.4 ;8--J2 吸合除霜
jk1 BIT P3.1 ;3--J1 常閉制冷
KIN BIT P1.0 ;12--swich 外接除霜保護,低電平輸入停止除霜
;*************************BIT**************************************************
bit_huas BIT 00H ;設定化霜位
bit_del3m BIT 01H ;3分鐘延時開始
setbit bit 08h ;進入設置狀態
wrbit1 bit 09h ;25045
;************************RAM********************************************
S7281_IN data 13h
S7281_OUT data 14h
WAIT_S DATA 15H ;按鍵等待時間
key_step data 16h ;"設置"鍵操作記數
KEYRAM DATA 17H ;讀鍵值-保存
T0RAM DATA 1AH ;T0 定時
timer data 1bh ;延時單元
timer1 data 1ch ;
timer2 data 1dh ;
bit_count data 1Eh ;BC7281接收記數單元
temp data 1Fh ;
timer_h data 25h ;hou
timer_m data 26h ;min
timer_s data 27h ;sec
TIM_STOP_H DATA 28H ;關閉除霜時間
TIM_STOP_M DATA 29H ;
SUBTIMER DATA 2AH ;除霜剩余時間
;30H--4BH 通用單元
qishi data 4ch ;4CH-63H 12段設定起始時間 ROM 00H--17H
zushu data 64H ;設定控制段數 ROM 18H
changdu data 65h ;65h 設定時間長度 ROM 19H
changdu_H data 66h ;66-67H CHANGDU 的時鐘表示
changdu_M data 67h
;**********************************************************************************************************
org 0000h
start: mov sp,#68h ;at89c4051
MOV P1,#0FFH
MOV P3,#0FFH
MOV PSW,#00H
MOV IE,#00H
; ljmp flash_led ;+++++++++++++++++++++++
mov r0,#20h
mov r2,#48h
clr a
slp000: mov @r0,a
inc r0
djnz r2,slp000
LCALL DEL50MS ;延時確保7281上電復位
acall black_ALL ;全部熄滅
lcall init1302
ACALL INI7281 ;7281初始化
;************************************位掃描程序**
clr cs ;
nop ;
setb cs ;
BITSCAN: MOV TEMP,#00H
MOV R2,#5bH
BITSLOOP: mov S7281_OUT,#18h ;寫段碼寄存器指令
call semit
MOV A,TEMP ;點亮
MOV S7281_OUT,A
call semit
INC A
MOV TEMP,A
LCALL DEL50MS ; DEL50MS
clr cs ;
nop ;
setb cs ;
DJNZ R2,BITSLOOP
mov r2,#05 ;保持全亮
bilp0: Lcall DEL50MS
djnz r2,bilp0
Lcall xiang1 ;響1聲
clr cs ;
nop ;
setb cs ;
;******************************* ;讀時鐘 30h-32h***********
READCLOCK: LCALL READ_CLOCK
MOV A,30H
CLR C
SUBB A,#24H
JNC INCLOCK ;若時鐘錯誤則寫初始值
MOV A,31H
CLR C
SUBB A,#60H
JNC INCLOCK
MOV A,32H
CLR C
SUBB A,#60H
JC INCLOCKB ;正常
INCLOCK: MOV TIMER_H,#00
MOV TIMER_M,#00
mov timer_s,#00
LCALL WRIT_CLOCK ;寫時,分,秒
MOV 30H,#00
MOV 31H,#00
MOV 32H,#00
INCLOCKB: mov timer_h,30h
mov timer_m,31h
mov timer_s,32h
;********************************讀設定時間到RAM
readrom: mov r1,#00 ; rom地址:00H-1aH
mov r0,#qishi
mov r3,#1ch
clr wrbit1
readlp00: lcall readbb ;r1-r0 r3
LCALL CHAN_2BETY ;將長度變換成2字節時鐘模式
;****************************** ;檢查讀數錯誤
acall black_ALL ;全部熄滅
lcall SET_24LED ;關閉24個燈,點亮設定燈
MOV R1,#TIMER_h
lcall disp_mh ;顯示4個十進制數字,R1--數據高位地址;使用R2R3
mov r1,changdu
lcall DISP_2data_r1 ;顯示兩個數字 R1
acall WREN ;寫容許
LCALL ondog ;寫狀態積存器--啟動看門狗
;MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
main0: jb setbit,main03 ;從設置參數返回
lcall disp_changled ;從程序返回;只亮長度燈
lcall flash_sc0 ;閃爍秒燈
JB bit_del3m,main01 ;延時3分鐘到嗎
JB bit_huas,main02 ;如正在除霜
ajmp main
main01: LCALL OFFALL_LED ;關閉所有功能指示燈 ;擴展不閃爍
LCALL disp_subtim ;顯示剩余時間 SUBTIMER
ajmp main
main02: LCALL FLASH_CS ;閃爍除霜燈
LCALL disp_subtim ;顯示剩余時間 SUBTIMER
ajmp main
main03: clr setbit
mov 20h,#00 ;清位
SETB JK1 ;制冷開始(開機狀態)
SETB JK2
mov r1,changdu ;顯示時間長度
lcall DISP_2data_r1
lcall disp_changled ;只亮長度燈
lcall flash_sc0 ;閃爍秒燈
sjmp main
;-------------------------------------
main: clr cs ;
nop ;
setb cs ;
LCALL DEL200MS
lcall flash_led ;刷新LED燈 +++++++++++++++++++++++++++++++++++++++++
LCALL DEL200MS
LCALL READ_CLOCK ;讀時鐘
MOV A,31H ;分變了?
XRL A,TIMER_M
JNZ DISP_MH0 ;分變,則顯示分和時;檢查動作否;不變返回
chk_key1: jnb kin,stop_hs ;化霜保護轉
chk_key2: jb key,MAIN ;無鍵--返回
ajmp deal_key ;鍵處理
stop_hs: JNB bit_huas,chk_key2 ;不在除霜狀態不處理
lcall DEL50MS ;50ms
lcall DEL50MS ;50ms
jb kin,chk_key2 ;非低電平返回
ajmp DELAY3MINIT ;外部終止除霜
;*************************************** 分鐘小時顯
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -