當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] ;8位數(shù)碼管顯示;P0為段碼口、P2為位碼口;時(shí)鐘芯片:DS1302;--------------------------------------DS1302 端口位定義:IO_DATA → P1.1 ; 數(shù)據(jù)傳送總線SCLK → P1.0 ; 時(shí)鐘控制總線RST → P1.2 ; 復(fù)位總

;8位數(shù)碼管顯示
;P0為段碼口、P2為位碼口
;時(shí)鐘芯片DS1302

;--------------------------------------
DS1302 端口位定義:
IO_DATA → P1.1 ; 數(shù)據(jù)傳送總線
SCLK → P1.0 ; 時(shí)鐘控制總線

RST → P1.2 ; 復(fù)位總線
;---------------------------------------
24C04 端口位定義:
SDA → P3.6 ;24C01的串行數(shù)據(jù)線
SCLK → P3.7 ;24C01的串行時(shí)鐘線
;---------------------------------------
K1 → P1.4 ;獨(dú)立鍵
K2 → P1.5
K3 → P1.6
K4 → P1.7
;---------------------------------------
BEEP → P3.3 ;蜂鳴器
;---------------------------------------
使用8位數(shù)碼管顯示:
段碼 → P0
位碼 → P2
;---------------------------------------


開(kāi)機(jī)顯示:
08-48-58 ;實(shí)時(shí)時(shí)間的顯示,時(shí)、分、秒

K1: → 切換顯示內(nèi)容鍵,每按一下可切換顯示內(nèi)容,最后返回實(shí)時(shí)時(shí)間的顯示。

05-03-06 ;顯示 年、月、日

;--------------------------------------------------------------------
K2: → 時(shí)間與日期設(shè)定鍵,
K3: → 選擇鍵(位移鍵)
每按一下可切換設(shè)定內(nèi)容,最后返回實(shí)際時(shí)間的顯示。在設(shè)定過(guò)程中,被選中的設(shè)定位閃動(dòng)。
選擇順序: 時(shí) → 分 → 日 → 月 → 年 → 返回
K1: → UP 鍵
K2: → DOWN 鍵

;--------------------------------------------------------------------
K4: → 報(bào)警時(shí)間設(shè)定鍵。
K3: → 設(shè)定內(nèi)容選擇鍵,最后返回實(shí)際時(shí)間的顯示。在設(shè)定過(guò)程中,被選中的設(shè)定位閃動(dòng)。

1-07-30 ;07:30 為報(bào)警啟動(dòng)時(shí)間, 1 為允許報(bào)警,0 為禁止報(bào)警

K1: → UP 鍵
K2: → DOWN 鍵

;--------------------------------------------------------------------
K3: → 止鬧開(kāi)關(guān)
在報(bào)警期間內(nèi),可以控制報(bào)警開(kāi)與關(guān),其它時(shí)間無(wú)效。

報(bào)警方式:
采用繼電器吸合的方式來(lái)控制被控對(duì)象。
;**************DS1302端口位定義**************
IO_DATABITP1.1;數(shù)據(jù)傳送總線
SCLKBITP1.0;時(shí)鐘控制總線
RSTBITP1.2;復(fù)位總線

K1EQUP1.4;獨(dú)立鍵
K2EQUP1.5
K3EQUP1.6
K4EQUP1.7

BEEPEQUP3.3;蜂鳴器
RELAYEQUP3.5;繼電器

T_CONUEQU22H;中斷計(jì)數(shù)
TIME_LEQU23H;定時(shí)初值
TIME_HEQU24H

TIME_DATAEQU50H;顯示時(shí)間單元首地址
DATE_DATAEQU60H;顯示日期單元首地址
DS_DATAEQU58H;顯示定時(shí)時(shí)間單元首地址
;------------------------------------------------
ORG0000H
AJMPMAIN

ORG000BH
AJMPINT_T0

ORG0100H
;------------------------------------------------
MAIN:
MOVTMOD,#01H;T0,方式1
MOVTIME_L,#00H;50MS定時(shí)值
MOVTIME_H,#4CH
MOVT_CONU,#00H;中斷次數(shù)
MOVIE,#82H;EA=1,ET0=1

MOVA,#00H
MOVR0,#40H;從40H單元開(kāi)始
MOVR1,#40H;清64個(gè)單元
M_CLEAR:MOV@R0,A
INCR0
DJNZR1,M_CLEAR

MOV7FH,#0AH;送熄滅符
SETBBEEP
LCALLTIME_DELAY;調(diào)顯示延時(shí)
LCALLPROSET;DS1302初始化

MAIN1:
LCALLGET_TIME;從DS1302讀數(shù)據(jù)程序
LCALLCHULI;實(shí)時(shí)時(shí)間數(shù)據(jù)處理
MOVR0,#TIME_DATA;顯示時(shí)、分、秒
LCALLDISP
MOVR0,#TIME_DATA
LCALLTIME_DISPLAY
LCALLSET_KEY;鍵功能程序
LCALLCOMP;實(shí)時(shí)時(shí)間與定時(shí)時(shí)間比較
JBK1,MAIN1
CALLBEEP_BL
MAIN2:
LCALLCHULI;日期數(shù)據(jù)處理
MOVR0,#DATE_DATA
LCALLDISP;顯示年、月、日
MOVR0,#DATE_DATA
LCALLTIME_DISPLAY
JBK1,MAIN2
CALLBEEP_BL
MAIN3:
LCALLDS_CHULI;定時(shí)時(shí)間數(shù)據(jù)處理
MOVR0,#DS_DATA
LCALLDS_SP;顯示定時(shí)時(shí)間
MOVR0,#DS_DATA
LCALLDS_DISPLAY
JBK1,MAIN3
CALLBEEP_BL
AJMPMAIN1
;--------------------------------------------
;中斷服務(wù)子程序
;300MS對(duì)閃動(dòng)標(biāo)記取反一次
;--------------------------------------------
INT_T0:
PUSHACC
PUSHPSW
MOVTL0,TIME_L
MOVTH0,TIME_H
INCT_CONU
MOVA,T_CONU
CJNEA,#06H,INT_END
MOVT_CONU,#00H
CPL0AH
INT_END:
POPPSW
POPACC
RETI
;--------------------------------------------
;DS1302初始化子程序
;(R0)=數(shù)據(jù)(R1)=地址
;--------------------------------------------
PROSET:
CLRRST;DS1302復(fù)位
CLRSCLK
NOP
NOP
SETBRST

;MOVR1,#80H;寫秒寄存器
;MOVR0,#00H;啟動(dòng)振蕩器
;LCALLWRITE

;MOVR1,#82H;寫分寄存器
;MOVR0,#58H
;LCALLWRITE

;MOVR1,#84H;寫時(shí)寄存器
;MOVR0,#80H
;LCALLWRITE

MOVR1,#90H;寫充電寄存器
MOVR0,#0ABH
LCALLWRITE
RET
;===============================================
;讀時(shí)間、日期數(shù)據(jù)子程序
;存放單元40H-46H
;===============================================
GET_TIME:
MOVR1,#81H;讀秒
LCALLREAD
MOV40H,R0

MOVR1,#83H;讀分
LCALLREAD
MOV41H,R0

MOVR1,#85H;讀時(shí)
LCALLREAD
MOV42H,R0

MOVR1,#87H;讀出日期
LCALLREAD
MOV43H,R0

MOVR1,#89H;讀出月份
LCALLREAD
MOV44H,R0

MOVR1,#8BH;讀出星期
LCALLREAD
MOV46H,R0

MOVR1,#8DH;讀出年
LCALLREAD
MOV45H,R0

RET
;================================================
;寫DS1302子程序
;================================================
WRITE:
CLRSCLK
NOP
NOP
SETBRST
NOP
MOVA,R1
MOVR2,#08H
WRI_01:
RRCA;傳輸?shù)刂返紻S1302
NOP
NOP
CLRSCLK
NOP
NOP
MOVIO_DATA,C
NOP
NOP
SETBSCLK
NOP
NOP
DJNZR2,WRI_01
CLRSCLK
NOP
NOP
MOVA,R0
MOVR2,#08H
WRI_02:
RRCA;傳輸數(shù)據(jù)到DS1302
NOP
CLRSCLK
NOP
NOP
MOVIO_DATA,C
NOP
NOP
SETBSCLK
NOP
NOP
DJNZR2,WRI_02
CLRSCLK
NOP
NOP
CLRRST
NOP
NOP
RET
;=================================================
;讀DS1302子程序
;=================================================
READ:
CLRSCLK
NOP
NOP
SETBRST
NOP
NOP
MOVA,R1
MOVR2,#08H
READ_01:
RRCA
NOP;先傳輸?shù)刂返紻S1302
MOVIO_DATA,C
NOP
NOP
SETBSCLK
NOP
NOP
CLRSCLK
NOP
NOP
DJNZR2,READ_01
NOP
NOP
SETBIO_DATA
CLRA
CLRC
MOVR2,#08H
READ_02:
CLRSCLK
NOP
NOP
MOVC,IO_DATA
NOP
NOP
RRCA;再?gòu)腄S1302接收數(shù)據(jù)
NOP
NOP
SETBSCLK
NOP
NOP
DJNZR2,READ_02
MOVR0,A
CLRRST
RET
;==============================================
;實(shí)時(shí)時(shí)間、日期數(shù)據(jù)處理子程序
;==============================================
CHULI:
MOVA,40H;處理秒數(shù)據(jù)
ANLA,#0FH
MOV50H,A
MOV70H,A
MOVA,40H
ANLA,#11110000B
SWAPA
MOV51H,A
MOV71H,A
;---------------------------------------------
MOVA,41H;處理分?jǐn)?shù)據(jù)
ANLA,#0FH
MOV52H,A
MOV72H,A
MOVA,41H
ANLA,#11110000B
SWAPA
MOV53H,A
MOV73H,A
;---------------------------------------------
MOVA,42H;處理時(shí)數(shù)據(jù)
ANLA,#0FH
MOV54H,A
MOV74H,A
MOVA,42H
ANLA,#11110000B
SWAPA
MOV55H,A
MOV75H,A
;----------------------------------------------
MOVA,43H;處理日數(shù)據(jù)
ANLA,#0FH
MOV60H,A
MOV76H,A
MOVA,43H
ANLA,#11110000B
SWAPA
MOV61H,A
MOV77H,A
;---------------------------------------------
MOVA,44H;處理月數(shù)據(jù)
ANLA,#0FH
MOV62H,A
MOV78H,A
MOVA,44H
ANLA,#11110000B
SWAPA
MOV63H,A
MOV79H,A
;---------------------------------------------
MOVA,45H;處理年數(shù)據(jù)
ANLA,#0FH
MOV64H,A
MOV7AH,A
MOVA,45H
ANLA,#11110000B
SWAPA
MOV65H,A
MOV7BH,A
;----------------------------------------------
MOVA,46H;處理周數(shù)據(jù)
MOV66H,A
MOV7CH,A
RET
;=============================================
;實(shí)時(shí)時(shí)間、日期查表取數(shù)子程序
;=============================================
DISP:;MOVR0,#TIME_DATA
MOVR3,#06H
DISP1:MOVA,@R0
MOVDPTR,#TAB_NU
MOVCA,@A+DPTR
MOV@R0,A
INCR0
DJNZR3,DISP1
RET
;====================================================
;時(shí)間、日期顯示子程序
;====================================================
TIME_DISPLAY:
;MOVR0,#TIME_DATA;取得顯示單元首地址
MOVR1,#07FH;從第一個(gè)數(shù)碼管開(kāi)始
MOVR2,#08H;共8個(gè)數(shù)碼管

DISLP:MOVP0,@R0;獲得當(dāng)前單元數(shù)據(jù)
MOVA,R1
MOVP2,A;數(shù)碼顯示
JBACC.5,DISLP1;第三位數(shù)碼管顯示-
MOVP0,#0f7H
JMPDISLP3
DISLP1:JBACC.2,DISLP2;第六位數(shù)碼管顯示-
MOVP0,#0f7H
JMPDISLP3
DISLP2:INCR0
DISLP3:MOVA,R1;為下一個(gè)數(shù)準(zhǔn)備
RRA;下一個(gè)單元
MOVR1,A;保存
LCALLDELAY;為了保證數(shù)碼管亮度,延時(shí)
DJNZR2,DISLP;重復(fù)顯示,直到全部數(shù)據(jù)刷新過(guò)
RET;返回

DELAY:
MOVR4,#0AH
L15:MOVR5,#64H
L16:DJNZR5,L16
DJNZR4,L15
RET
;******************************************************
SET_KEY:
SETBK1;增加鍵
SETBK2;減少鍵
SETBK3;選擇鍵
SETBK4;定時(shí)設(shè)定功能鍵
NOP
JBK4,KEY01
LCALLBEEP_BL
JMPDS_KEY;進(jìn)入定時(shí)值設(shè)定子程序
KEY01:JBK2,KEY02
LCALLBEEP_BL
JMPSET_TIME;進(jìn)入時(shí)間設(shè)定子程序
KEY02:JBK3,KEY03
LCALLBEEP_BL
CPL20H.0;止鬧標(biāo)記取反
KEY03:RET

;-----------------------------------------------------
DS_KEY:
CALLDS_DELAY
JNBK4,$
LCALLDSSET
CALLDS_DELAY
RET
;==============================================
;實(shí)時(shí)時(shí)間設(shè)定子程序
;K1為加鍵、K2為減鍵、K3為選擇鍵
;==============================================
SET_TIME:
MOVR1,#8EH;寫保護(hù)寄存器
MOVR0,#00H;允許寫入
LCALLWRITE

MOVR1,#80H;寫秒寄存器
MOVR0,#80H;停止振蕩器工作
LCALLWRITE

SETBTR0

K001:CALLTIME_DELAY;校時(shí)
JNBK3,K001;K3為位移鍵
K010:
CALLCHULI
JNB0AH,KH01
MOV54H,7FH;送入熄滅符
MOV55H,7FH
JMPKH02
KH01:MOV54H,74H;送實(shí)時(shí)值
MOV55H,75H;送實(shí)時(shí)值
KH02:MOVR0,#TIME_DATA
CALLDISP
MOVR0,#TIME_DATA
CALLTIME_DISPLAY
JNBK1,K011A
JNBK2,K011B
JNBK3,K002
JMPK010
K011A:
MOVA,42H
ADDA,#01H
DAA
MOV42H,A
XRLA,#24H
JNZK012A
MOV42H,#00H
K012A:MOVR1,#84H;寫時(shí)寄存器
MOVR0,42H
LCALLWRITE
CALLTIME_DELAY
JMPK010

K011B:
MOVA,42H
XRLA,#00H
JZK012B
SETBC;求補(bǔ)運(yùn)算
CLRA
ADDCA,#99H;加99
SUBBA,#01H;減去減數(shù)
ADDA,42H;加被減數(shù)
DAA;十進(jìn)制調(diào)整
MOV42H,A;
XRLA,#00H
JNZK012C
K012B:MOV42H,#23H
K012C:MOVR1,#84H;寫時(shí)寄存器
MOVR0,42H
LCALLWRITE
CALLTIME_DELAY
JMPK010
;-------------------------------------------------
K002:CALLTIME_DELAY;校分
JNBK3,K002;K3為位移鍵

K020:CALLCHULI
JNB0AH,KM01

MOV52H,7FH;送入熄滅符
MOV53H,7FH
JMPKM02

KM01:MOV52H,72H;送實(shí)時(shí)值
MOV53H,73H;送實(shí)時(shí)值
KM02:MOVR0,#TIME_DATA
CALLDISP
MOVR0,#TIME_DATA
CALLTIME_DISPLAY

JNBK1,K021A
JNBK2,K021B
JNBK3,K003
JMPK020

K021A:
MOVA,41H
ADDA,#01H
DAA
MOV41H,A
XRLA,#60H
JNZK022A
MOV41H,#00H
K022A:MOVR1,#82H;寫分寄存器
MOVR0,41H
LCALLWRITE
CALLTIME_DELAY
JMPK020
;---------------------------------------------------
K021B:
MOVA,41H
XRLA,#00H
JZK022B
SETBC;求補(bǔ)運(yùn)算
CLRA
ADDCA,#99H;加99
SUBBA,#01H;減去減數(shù)
ADDA,41H;加被減數(shù)
DAA;十進(jìn)制調(diào)整
MOV41H,A;
XRLA,#00H
JNZK022C
K022B:MOV41H,#59H
K022C:MOVR1,#82H;寫分寄存器
MOVR0,41H
LCALLWRITE
CALLTIME_DELAY
JMPK020
;---------------------------------------------------
K003:CALLDATE_DELAY;校日
JNBK3,K003;K3為位移鍵

K030:CALLCHULI
JNB0AH,KR01

MOV60H,7FH;送入熄滅符
MOV61H,7FH
JMPKR02

KR01:MOV60H,76H;送實(shí)時(shí)值
MOV61H,77H;送實(shí)時(shí)值
KR02:MOVR0,#DATE_DATA
CALLDISP
MOVR0,#DATE_DATA
CALLTIME_DISPLAY
JNBK1,K031A
JNBK2,K031B
JNBK3,K004
JMPK030
K031A:
MOVA,43H
ADDA,#01H
DAA
MOV43H,A
XRLA,#32H
JNZK032A
MOV43H,#00H
K032A:MOVR1,#86H;寫日寄存器
MOVR0,43H
LCALLWRITE
CALLDATE_DELAY
JMPK030

K031B:
MOVA,43H
XRLA,#00H
JZK032B
SETBC;求補(bǔ)運(yùn)算
CLRA
ADDCA,#99H;加99
SUBBA,#01H;減去減數(shù)
ADDA,43H;加被減數(shù)
DAA;十進(jìn)制調(diào)整
MOV43H,A
XRLA,#00H
JNZK032C
K032B:MOV43H,#31H
K032C:MOVR1,#86H;寫日寄存器
MOVR0,43H
LCALLWRITE
CALLDATE_DELAY
JMPK030
;------------------------------------------------
K004:CALLDATE_DELAY;校月
JNBK3,K004;K3為位移鍵

K040:CALLCHULI
JNB0AH,KC01

MOV62H,7FH;送入熄滅符
MOV63H,7FH
JMPKC02

KC01:MOV62H,78H;送實(shí)時(shí)值
MOV63H,79H;送實(shí)時(shí)值
KC02:MOVR0,#DATE_DATA
CALLDISP
MOVR0,#DATE_DATA
CALLTIME_DISPLAY
JNBK1,K041A
JNBK2,K041B
JNBK3,K005
JMPK040
K041A:
MOVA,44H
ADDA,#01H
DAA
MOV44H,A
XRLA,#13H
JNZK042A
MOV44H,#00H
K042A:MOVR1,#88H;寫月寄存器
MOVR0,44H
LCALLWRITE
CALLDATE_DELAY
JMPK040

K041B:
MOVA,44H
XRLA,#00H
JZK042B
SETBC;求補(bǔ)運(yùn)算
CLRA
ADDCA,#99H;加99
SUBBA,#01H;減去減數(shù)
ADDA,44H;加被減數(shù)
DAA;十進(jìn)制調(diào)整
MOV44H,A;
XRLA,#00H
JNZK042C
K042B:MOV44H,#12H
K042C:MOVR1,#88H;寫月寄存器
MOVR0,44H
LCALLWRITE
CALLDATE_DELAY
JMPK040
;-----------------------------------------------
K005:CALLDATE_DELAY;校年
JNBK3,K005;K3為位移鍵

K050:CALLCHULI
JNB0AH,KY01

MOV64H,7FH;送入熄滅符
MOV65H,7FH
JMPKY02

KY01:MOV64H,7AH;送實(shí)時(shí)值
MOV65H,7BH;送實(shí)時(shí)值
KY02:MOVR0,#DATE_DATA
CALLDISP
MOVR0,#DATE_DATA
CALLTIME_DISPLAY
JNBK1,K051A
JNBK2,K051B
JNBK3,K008
JMPK050
K051A:
MOVA,45H
ADDA,#01H
DAA
MOV45H,A
XRLA,#9AH
JNZK052A
MOV45H,#00H
K052A:MOVR1,#8CH;寫年寄存器
MOVR0,45H
LCALLWRITE
CALLDATE_DELAY
JMPK050

K051B:
MOVA,45H
XRLA,#00H
JZK052B
SETBC;求補(bǔ)運(yùn)算
CLRA
ADDCA,#99H;加99
SUBBA,#01H;減去減數(shù)
ADDA,45H;加被減數(shù)
DAA;十進(jìn)制調(diào)整
MOV45H,A;
XRLA,#00H
JNZK052C
K052B:MOV45H,#99H
K052C:MOVR1,#8CH;寫年寄存器
MOVR0,45H
LCALLWRITE
CALLDATE_DELAY
JMPK050
;-------------------------------------------------
K008:JNBK3,K008
MOVR1,#80H;寫秒寄存器
MOVR0,#00H;啟動(dòng)振蕩器工作
LCALLWRITE

MOVR1,#8EH;寫保護(hù)寄存器
MOVR0,#80H;禁止寫入
LCALLWRITE

CALLDATE_DELAY
CLR0AH
CLRTR0
CALLBEEP_BL
RET
;===================================================
;定時(shí)時(shí)間設(shè)定子程序
;K1為加鍵、K2為減鍵、K3為選擇鍵
;===================================================
DSSET:
SETBTR0
DS01:LCALLDS_DELAY;定時(shí)分設(shè)定
JNBK4,$

DS010:CALLDS_CHULI
JNB0AH,DS01_1
MOV58H,7FH;送入熄滅符
MOV59H,7FH
JMPDS01_2

DS01_1:MOV58H,70H;送實(shí)時(shí)值
MOV59H,71H;送實(shí)時(shí)值
DS01_2:MOVR0,#58H
LCALLDS_SP
MOVR0,#58H
LCALLDS_DISPLAY
JNBK1,DS01A;加鍵
JNBK2,DS01B;減鍵
JNBK3,DS02
JMPDS010

DS01A:;加
MOVA,48H
ADDA,#01H
DAA
MOV48H,A
XRLA,#60H
JNZDS011
MOV48H,#00H
DS011:LCALLDS_DELAY
JMPDS010

DS01B:MOVA,48H;判48H是否為0
XRLA,#00H
JZDS012
SETBC;減
CLRA;求補(bǔ)運(yùn)算
ADDCA,#99H;加99
SUBBA,#01H;減去減數(shù)
ADDA,48H;加被減數(shù)
DAA;十進(jìn)制調(diào)整
MOV48H,A;
XRLA,#00H
JNZDS013
DS012:MOV48H,#59H
DS013:CALLDS_DELAY
JMPDS010
;----------------------------------------------
DS02:LCALLDS_DELAY;定時(shí)時(shí)設(shè)定
JNBK3,$
DS020:
CALLDS_CHULI
JNB0AH,DS02_1

MOV5AH,7FH;送入熄滅符
MOV5BH,7FH
JMPDS02_2

DS02_1:MOV5AH,72H;送實(shí)時(shí)值
MOV5BH,73H;送實(shí)時(shí)值
DS02_2:MOVR0,#58H
LCALLDS_SP
MOVR0,#58H
LCALLDS_DISPLAY
JNBK1,DS02A
JNBK2,DS02B
JNBK3,DS03
JMPDS020

DS02A:MOVA,49H;加
ADDA,#01H
DAA
MOV49H,A
XRLA,#24H
JNZDS021
MOV49H,#00H
DS021:LCALLDS_DELAY
JMPDS020

DS02B:MOVA,49H;判49H是否為0
XRLA,#00H
JZDS022
SETBC;減
CLRA;求補(bǔ)運(yùn)算
ADDCA,#99H;加99
SUBBA,#01H;減去減數(shù)
ADDA,49H;加被減數(shù)
DAA;十進(jìn)制調(diào)整
MOV49H,A;
XRLA,#00H
JNZDS023
DS022:MOV49H,#23H
DS023:CALLDS_DELAY
JMPDS020
;-------------------------------------------
DS03:CALLDS_DELAY
JNBK3,$

DS030:CALLDS_CHULI
JNB0AH,DS03_1
MOV5CH,7FH;送入熄滅符
JMPDS03_2
DS03_1:MOV5CH,74H;送實(shí)時(shí)值
DS03_2:MOVR0,#58H
LCALLDS_SP
MOVR0,#58H
LCALLDS_DISPLAY
JNBK3,DS04
JNBK1,DS03A
JMPDS030

DS03A:CPL20H.1;報(bào)警標(biāo)記取反
JNB20H.1,DS031
MOV4AH,#01H;報(bào)警標(biāo)記=1,允許報(bào)警
AJMPDS032
DS031:MOV4AH,#00H;報(bào)警標(biāo)記=0,禁止報(bào)警
DS032:LCALLDS_DELAY
JMPDS030
;--------------------------------------------
DS04:CLRTR0
CLR0AH
CALLBEEP_BL
LCALLDS_DELAY
RET

;=============================================
;定時(shí)時(shí)間數(shù)據(jù)處理子程序
;=============================================
DS_CHULI:
MOVA,48H;處理分?jǐn)?shù)據(jù)
ANLA,#0FH
MOV58H,A
MOV70H,A
MOVA,48H
ANLA,#0F0H
SWAPA
MOV59H,A
MOV71H,A

MOVA,49H;處理時(shí)數(shù)據(jù)
ANLA,#0FH
MOV5AH,A
MOV72H,A
MOVA,49H
ANLA,#0F0H
SWAPA
MOV5BH,A
MOV73H,A

MOVA,4AH;處理定時(shí)標(biāo)記
ANLA,#01H
MOV5CH,A
MOV74H,A
RET
;==================================================
;定時(shí)時(shí)間查表取數(shù)子程序
;==================================================
DS_SP:;MOVR0,#58H
MOVR3,#05H
DS_SP1:MOVA,@R0
MOVDPTR,#TAB_NU
MOVCA,@A+DPTR
MOV@R0,A
INCR0
DJNZR3,DS_SP1
RET
;==================================================
;定時(shí)時(shí)間顯示子程序
;==================================================
DS_DISPLAY:
;MOVR0,#58H;取得設(shè)定顯示單元首地址
MOVR1,#07FH;從第一個(gè)數(shù)碼管開(kāi)始
MOVR2,#07H;共7個(gè)數(shù)碼管
DSPLAY:MOVP0,@R0;獲得當(dāng)前單元數(shù)據(jù)
MOVA,R1
MOVP2,A;數(shù)碼顯示
JBACC.5,DSLP1;第三位數(shù)碼管顯示“-”
MOVP0,#0f7H
JMPDSLP3
DSLP1:JBACC.2,DSLP2;第六位數(shù)碼管顯示“-”
MOVP0,#0f7H
JMPDSLP3
DSLP2:INCR0
DSLP3:MOVA,R1;為下一個(gè)數(shù)準(zhǔn)備
RRA;下一個(gè)單元
MOVR1,A;保存
LCALLDELAY
DJNZR2,DSPLAY;重復(fù)顯示,直到全部數(shù)據(jù)刷新過(guò)
RET;返回
;====================================================
;實(shí)時(shí)時(shí)間與設(shè)定時(shí)間比較子程序

;20H.0止鬧標(biāo)記,=0,允許,=1,禁止。
;20H.1報(bào)警標(biāo)記,=1,允許,=0,禁止。
;====================================================
COMP:JNB20H.1,COMP1
MOVR0,#TIME_DATA
LCALLTIME_DISPLAY
MOVA,42H;實(shí)時(shí)時(shí)間與設(shè)定時(shí)間比較
CJNEA,49H,COMP1;先比較時(shí)后比較分
MOVA,41H
CJNEA,48H,COMP1
JB20H.0,COMP2;20H.0=1,止鬧開(kāi)關(guān),關(guān)
;LCALLBEEP_BL
CLRRELAY;繼電器吸合1分鐘
JMPCOMP3
COMP1:CLR20H.0
COMP2:SETBRELAY
COMP3:RET

;====================================================
;鍵延時(shí)子程序
;多次調(diào)用顯示程序做鍵延時(shí)
;====================================================
DS_DELAY:
MOVR6,#0AH;設(shè)定定時(shí)時(shí)間,鍵延時(shí)用
DS_KK:
LCALLDS_CHULI
MOVR0,#DS_DATA
LCALLDS_SP
MOVR0,#DS_DATA
LCALLDS_DISPLAY
DJNZR6,DS_KK
RET

TIME_DELAY:;設(shè)定時(shí)間,鍵延時(shí)用
MOVR6,#0AH
TIME_KK:
LCALLCHULI
MOVR0,#TIME_DATA
LCALLDISP
MOVR0,#TIME_DATA
CALLTIME_DISPLAY
DJNZR6,TIME_KK
RET

DATE_DELAY:;設(shè)定日期,鍵延時(shí)用
MOVR6,#0AH
DATE_KK:
LCALLCHULI
MOVR0,#DATE_DATA
LCALLDISP
MOVR0,#DATE_DATA
CALLTIME_DISPLAY
DJNZR6,DATE_KK
RET

;====================================================
;蜂鳴器響一聲子程序(適用交流蜂鳴器)
;====================================================
BEEP_BL:
MOVR6,#100
BL2:CALLDEX1
CPLBEEP
DJNZR6,BL2
MOVR5,#10
CALLDELAY_BL
RET
DEX1:MOVR7,#180
DE2:NOP
DJNZR7,DE2
RET
DELAY_BL:;(R5)*延時(shí)10MS
MOVR6,#50
DL1:MOVR7,#100
DJNZR7,$
DJNZR6,DL1
DJNZR5,DELAY_BL
RET

;*************************************************************
TAB_NU:DB28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h
DB0FFH;滅
DB30h,25h,0a9h,26h,0a1h,0b1h;A-F《共陽(yáng)數(shù)碼管》
;*************************************************************
END

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉