導航:首頁 > 操作系統 > 單片機定時鬧鍾

單片機定時鬧鍾

發布時間:2023-09-03 04:36:34

A. 求單片機課程設計實驗 用匯編語言,基於51單片機的定時鬧鍾

MODE_RG EQU40H ;模式選擇

MODE2 EQU 60H ;MODE值

MODE3 EQU61H

MODE4 EQU62H

MODE5 EQU63H

MODE6 EQU64H

MODE1 EQU65H

HOUR EQU41H ;小時緩沖區

MIN EQU42H ;分鍾緩沖區

SEC EQU 43H ;秒緩沖區

TEMP EQU4AH

;*********鬧鍾緩沖區********************

H_ALARM EQU 6AH ;鬧鍾緩沖區

M_ALARM EQU6BH

S_ALARM EQU6CH

F_ALARM EQU6DH

;***********秒錶緩沖區******************

M_SEC EQU76H

S_SEC EQU77H

;*********LED送顯示臨時變數*************

LED0 EQU51H

LED1 EQU52H

LED2EQU53H

LED3 EQU54H

MODE_KEYEQUP3.4

UP_KEY EQUP3.3

DOWN_KEY EQUP3.5

BUF EQU49H

ORG0000H

LJMPMAIN

ORG000BH

LJMPINT_0

ORG001BH

LJMPINT_1

ORG0080H

MAIN: MOVSP,#2FH ;堆棧初始化

MOVMODE_RG,#0 ;MODE_RG寄存器值初始化

MOVLED0,#0FEH ;初始化LED

MOVLED1,#0FDH

MOVLED2,#0FBH

MOVLED3,#0F7H

MOVMODE1,#1

MOVMODE2,#2

MOVMODE3,#3

MOVMODE4,#4

MOVMODE5,#5

MOVMODE6,#6

MOVF_ALARM,#0 ;錯誤2:一開始用CLRF_ALARM,這導致在後面的時候JZF_ALARM運行錯誤,

MOVBUF,#0 ;在於JZ指令是對累加器A全為0或者全為1進行判斷,CLR只能對一位操作

MOVTMOD,#11H ;定時器初始化:定時器0,方式1,定時器1,方式1

MOVIP,#00001000B ;定時器1優先順序高

MOVTH0,#3CH ;定時50MS

MOVTL0,#0B1H

MOVTH1,#0D8H ;定時10MS

MOVTL1,#0F0H

SETBEA

SETBET0

SETBET1

SETBTR0;啟動定時器

MOVHOUR,#0 ;fortest

MOVMIN,#0

MOVSEC,#0 ;定時器計數器,50MS中斷一次,200次則剛好1S

MOVM_SEC,#0

MOVS_SEC,#0

MOVH_ALARM,#0

MOVM_ALARM,#0

MAIN1: LCALLDISPLAY12

LCALLDISPLAY34

;CLRP1.4 TEST

JNBMODE_KEY,KEY_SCAN

MOVA,MODE_RG

CJNEA,MODE6,Y1 ;MODE6秒錶

JNBDOWN_KEY,DEALDOWN ;判斷秒錶開關

JNBUP_KEY,DEALUP

Y1: MOVA,F_ALARM ;判斷鬧鍾

JNZALARM

LJMPMAIN1

;-----------------------------------秒錶開關程序---------------------------

DEALDOWN: LCALLDELY10MS

JBDOWN_KEY,MAIN1

H1: JNBDOWN_KEY,H1

CPLTR1

LJMPMAIN1

DEALUP: LCALLDELY10MS

JBUP_KEY,MAIN1

H2: JNBUP_KEY,H2

MOVM_SEC,#0

MOVS_SEC,#0

CLRTR1

LJMPMAIN1

;-----------------------------------鬧鍾掃描程序---------------------------

ALARM: MOVA,H_ALARM

CPLP1.2

CJNEA,HOUR,EXIT3

MOVA,M_ALARM

CJNEA,MIN,EXIT3

LJMPSTARTALARM

EXIT3: SETBP3.6

LJMPMAIN1

STARTALARM:CPLP3.6

JNBDOWN_KEY,OFFALARM

LJMPS1

OFFALARM: LCALLDELY10MS

JBDOWN_KEY,MAIN1

S2: JNBDOWN_KEY,S2

MOVF_ALARM,#0

SETBP3.6

LJMPMAIN1

S1: LCALLDELAY

LJMPMAIN1

;-----------------------------------鍵盤掃描程序---------------------------

KEY_SCAN: LCALLDELY10MS

JBMODE_KEY,MAIN1

INCMODE_RG

;SETBP1.4 測試

K1: JNBMODE_KEY,K1 ;按鍵直到用戶松開按鍵

K2: MOVA,MODE_RG

CJNEA,#0,DEALMODE;不是在正常顯示模式下則跳轉到模式處理程序

LJMPMAIN1 ;返回主程序

;*******************模式處理程序部分

DEALMODE: MOVTEMP,#0 ;凡轉入MODE處理,則首先清除TEMP

MOVA,MODE_RG ;有MODE_RG值不為5、0

CJNEA,MODE2,M0 ;判斷MODE_RG值,不為1跳轉

LJMPH_GLINT ;模式1,小時位閃爍

M0: CJNEA,MODE3,M1 ;不是模式2,跳轉

LJMPM_GLINT ;模式2,分鍾位閃爍

M1: CJNEA,MODE4,M2 ;不是模式3,跳轉

LJMPH_GLINT

M2: CJNEA,MODE5,M3

LJMPM_GLINT

M3: CJNEA,MODE6,M4

MOVM_SEC,#0

MOVS_SEC,#0

LJMPMAIN1

M4: CJNEA,MODE1,M5

;CLRTR1

LJMPMAIN1

M5: MOVMODE_RG,#0

LJMPMAIN1

;*****************************MODE為1,3,小時位閃爍

//MOVTEMP,HOUR ;將TEMP賦值,防止在加的時候是在隨機值的基礎上增加

H_GLINT: ;CPLP1.0

MOVR0,#28

MOVR1,#28

K4: LCALLDISPLAY12 ;分開顯示

LCALLDISPLAY34

E1: JNBMODE_KEY,K21 ;檢測是否有按鍵按下,有按下則跳轉到分鍾位閃爍

JBUP_KEY,E9 ;判斷加位有無按鍵按下

LJMPUP

E9: DJNZR0,K4

K6: LCALLDISPLAY34

JNBMODE_KEY,K21 ;檢測是否有按鍵按下,有按下則跳轉延時後進行模式判斷

LJMPG1

K21: LCALLDELY10MS ;延時後確定有MODE按鍵按下,將

JBMODE_KEY,H_GLINT

W: JNBMODE_KEY,W

INCMODE_RG

CPLP1.4

LJMPDEALMODE ;確定有按下,MODE+1後返回MODE處理程序

JNBUP_KEY,UP ;判斷加位有無按鍵按下

G1: DJNZR1,K6

LJMPH_GLINT ;調用完畢返回,實現閃爍

K3: LJMPMAIN1 ;可省略

;******************************MODE為2,4,分鍾位閃爍

M_GLINT: MOVR0,#28

MOVR1,#28

K23: CPLP1.7

LCALLDISPLAY12

LCALLDISPLAY34

JNBMODE_KEY,KK ;跳轉,確定是否有按鍵按下

JNBUP_KEY,UP ;判斷加位有無按鍵按下

MOVA,MODE_RG

CJNEA,MODE3,E2 ;在MODE5的情況下要判斷鬧鍾確認鍵有沒按下

LJMPE5

E2: JNBDOWN_KEY,F2

LJMPE5

F2: LJMPONALARM2

E5: DJNZR0,K23

K24: LCALLDISPLAY12

JNBMODE_KEY,KK ;檢測是否有按鍵按下,有按下則跳轉

JNBUP_KEY,UP ;判斷加位有無按鍵按下

MOVA,MODE_RG ;掃描鬧鍾確認鍵

CJNEA,MODE3,E7 ;在MODE5的情況下要判斷鬧鍾確認鍵有沒按下

LJMPG2

E7: JBDOWN_KEY,E8

CPLP1.3

LJMPONALARM2

E8: LJMPG2

KK: LCALLDELY10MS ;去抖

JBMODE_KEY,M_GLINT

W1: JNBMODE_KEY,W1

INCMODE_RG

CPLP1.4

LJMPDEALMODE ;確定有按下,MODE+1後返回MODE處理程序

G2: DJNZR1,K24

LJMPM_GLINT

;*************************位加,處理程序

;***************小時調整

UP: MOVR1,#20

UP11: INCTEMP

UP12: MOVA,MODE_RG ;判斷此時的MODE,根據MODE將臨時變數給對應的賦值

CJNEA,MODE2,AA0 ;不是在MODE2的情況下跳轉

MOVA,TEMP

CJNEA,#24,A_UP1

MOVTEMP,#0

A_UP1: MOVHOUR,TEMP ;為MODE2,將臨時變數賦給小時位

LJMPUP15

AA0: CJNEA,MODE4,UP13//UP13為分鍾調整入口

MOVA,TEMP

CJNEA,#24,A_UP

MOVTEMP,#0

A_UP: MOVH_ALARM,TEMP ;模式3,將臨時變數賦給鬧鍾的小時位

LJMPUP15 ;UP15為顯示入口

;****************分鍾調整入口

UP13: MOVA,MODE_RG

CJNEA,MODE3,UP14 ;不是模式2,跳轉

MOVA,TEMP

CJNEA,#60,DISOVER2

MOVTEMP,#0

DISOVER2: MOVMIN,TEMP

LJMPUP15

UP14: MOVA,TEMP ;上面判斷不是模式2,則必然是模式4

CJNEA,#60,DISOVER3

MOVTEMP,#0

DISOVER3: MOVM_ALARM,TEMP

LJMPUP15

UP15: LCALLDISPLAY12

LCALLDISPLAY34

DJNZR1,UP01

MOVR1,#1 ;

JNBUP_KEY,UP11

UP01: JNBUP_KEY,UP12

UP16: MOVA,MODE_RG ;松開鍵以後按照模式判斷該返回哪種狀態,不能返回DEALMODE函數

CJNEA,MODE2,UP17

LJMPH_GLINT

UP17: CJNEA,MODE3,UP18

MOVSEC,#0 ;每次設置完時間後將秒鍾位置零保證時間准確

LJMPM_GLINT

UP18: CJNEA,MODE4,UP19

LJMPH_GLINT

UP19: CJNEA,MODE5,UP20

LJMPM_GLINT

UP20: LJMPMAIN1

ONALARM2: LCALLDELY10MS ;延時10MS,去抖

JBDOWN_KEY,B2 ;抖動所致,返回分鍾位閃爍

LJMPK42

B2: LJMPM_GLINT

K42: JNBDOWN_KEY,K42

MOVF_ALARM,#0FFH

MOVMODE_RG,#0

LJMPMAIN1

;---------------------------------------中斷程序入口---------------------

;*******************時間中斷0*********************

;錯誤1:中斷程序EXIT處用了MAIN1,導致一直處於中斷狀態

INT_0: PUSHACC

PUSHPSW

MOVTH0,#3CH

MOVTL0,#0B1H

INCBUF

MOVA,BUF

CJNEA,#20,EXIT

TIME: MOVBUF,#0

INCSEC

MOVA,SEC

CJNEA,#60,EXIT

MOVSEC,#00H

INCMIN

MOVA,MIN

CJNEA,#60,EXIT

MOVMIN,#00H

INCHOUR

MOVA,HOUR

CJNEA,#24,EXIT

MOVHOUR,#0

RETI

EXIT: POPPSW

POPACC

RETI

;******************時間中斷1***********************

INT_1: MOVTH1,#0D8H ;定時10MS

MOVTL1,#0F0H

INCS_SEC

MOVA,S_SEC

CJNEA,#100,EXIT4

MOVS_SEC,#0

INCM_SEC

MOVA,M_SEC

CJNEA,#100,EXIT4

MOVM_SEC,#0

EXIT4: RETI

;---------------------------------------顯示-----------------------------

DISPLAY12: MOVA,MODE_RG ;判斷模式,決定是顯示鬧鍾時間還是顯示當前時間

CJNEA,MODE4,DIS0 ;模式四,顯示鬧鍾

LJMPDIS01 ;MODE4

DIS0: CJNEA,MODE5,DIS20

DIS01: MOVR7,H_ALARM ;鬧鍾模式

LJMPDIS2

DIS20: CJNEA,MODE6,DIS21

MOVR7,M_SEC ;秒錶模式,顯示秒錶高位

LJMPDIS2

DIS21: CJNEA,MODE1,DIS1

LJMPDIS22

DIS22: MOVR7,MIN

LJMPDIS2

DIS1: MOVR7,HOUR ;DISPLAY12顯示高位

DIS2: LCALLBCTD ;判斷完畢,調用顯示

;將秒、分分別轉碼,放到R4,R3

MOVA,R4

MOVR3,A

LCALLDIVIDE

MOVDPTR,#NUMTAB

MOVP2,#0FH

MOVP2,LED0

MOVA,45H ;從拆字的出口獲取值

MOVCA,@A+DPTR

MOVP0,A

LCALLDELY10MS

MOVP2,LED1

MOVA,46H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELY10MS

RET

DISPLAY34: MOVA,MODE_RG ;判斷模式,決定是顯示鬧鍾時間還是顯示當前時間

CJNEA,MODE4,DIS31

LJMPDIS32

DIS31: CJNEA,MODE5,DIS35

DIS32: MOVR7,M_ALARM

LJMPDIS34

DIS35: CJNEA,MODE6,DIS41

MOVR7,S_SEC ;秒錶模式,顯示秒錶低位

LJMPDIS34

DIS41: CJNEA,MODE1,DIS33

MOVR7,SEC

LJMPDIS34

DIS33: MOVR7,MIN ;DISPLAY34顯示低位

DIS34: LCALLBCTD

MOVA,R4

MOVR3,A

LCALLDIVIDE

MOVP2,LED2

MOVA,47H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELY10MS

MOVP2,LED3

MOVA,48H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELY10MS

SETBP2.3

RET

;--------------------二翻十:入口:R6R7出口:R2R3R4----------------------

BCTD: MOVR5,#16

CLRA

MOVR2,A

MOVR3,A

MOVR4,A

LOOP: CLRC

MOVA,R7

RLCA

MOVR7,A

MOVA,R6

RLCA

MOVR6,A

MOVA,R4

ADDCA,R4

DAA

MOVR4,A

MOVA,R3

ADDCA,R3

DAA

MOVR3,A

MOVA,R2

ADDCA,R2

DAA

MOVR2,A

DJNZR5,LOOP

RET

;-----------------------拆字:入口:R3R4出口:45H46H47H48H------------------

DIVIDE: MOVA,R3

ANLA,#0FH

MOV46H,A

MOVA,R3

ANLA,#0F0H

SWAPA

MOV45H,A;時拆字45H放時高位,46H放十低位

MOVA,R4

ANLA,#0FH

MOV48H,A

MOVA,R4

ANLA,#0F0H

SWAPA

MOV47H,A;分拆字47H放分高位,48H放分低位

RET

;------------------------------------延時----------------------------------

DELY10MS:MOVR6,#10

D1:MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

DELAY: MOV74H,#2;延時子程序,12M晶振延時1.002秒

L3: MOV72H,#10

L1: MOV73H,#249

L2: DJNZ73H,L2

LCALLDISPLAY12

LCALLDISPLAY34

JNBDOWN_KEY,OFFALARM1

LJMPS3

OFFALARM1: LCALLDELY10MS

JBDOWN_KEY,S3

S4: JNBDOWN_KEY,S4

MOVF_ALARM,#0

SETBP3.6

LJMPMAIN1

S3: DJNZ72H,L1

DJNZ74H,L3

RET

NUMTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH;碼表

END

B. 菜鳥要提問關於單片機定時鬧鍾的課程設計

程序參考

;---------------------------------------------------------------------

;文件名稱:nz.ASM

;程序功能:定時鬧鍾

;--------------------------------------------------------------------

;----------------------------程序初始化-----------------------

;定義存放計時單元地址

;....................

ALBEQU20H.0;鬧鈴設置標志

;....................

BUFEQU30H;30~33H連續4位元組存放顯示器數據

HOUREQU34H;存放小時變數

MINEQU35H;存放分鍾變數

SECEQU36H;存放秒鍾變數

DEDAEQU37H;存放5ms計數值

;....................

HHEQU38H;鬧鈴設置小時變數

MMEQU39H;鬧鈴設置分鍾變數

;....................

;按鍵輸入引腳定義

K1EQUP2.4;按鍵K1引腳定義

K2EQUP2.5;按鍵K2引腳定義

K3EQUP2.6;按鍵K3引腳定義

K4EQUP2.7;按鍵K4引腳定義

;蜂鳴器和指示燈引腳定義

SPKEQUP3.4;蜂鳴器控制信號引腳

WLEDEQUP1.0;工作指示燈引腳定義

;程序開始執行地址

ORG0H;程序代碼由地址0開始

AJMPMAIN

ORG0BH;定時器T0中斷地址設置

AJMPTO_SRV

;-------------------------------主程序-------------------------------

MAIN:;主程序標號

;...................

CLRALB;清除鬧鈴標志

;...................

ACALLBZ;蜂鳴器連續兩次鳴響一聲

ACALLBZ

ACALLLED_SD;LED閃動,表示程序開始執行

ACALLINIT;初始變化量

ACALLINIT_TIMER;設置定時器

;載入顯示器初值數據

MOVA,#0C0H

MOVP0,A

;無窮循環

LOOP:;無窮循環

ACALLCONV;轉換時時分分數據

;....................

ACALLTIME_PRO;檢查鬧鈴時間

;....................

ACALLDISP;掃描顯示

JBK1,M1;未按下K1鍵則繼續掃描

ACALLLED_SD;LED閃動

ACALLSET_TIME;設置目前時間

AJMPLOOP;跳轉到LOOP處執行

;設置鬧鈴時間

M1:JBK2,M2;未按下K2鍵則繼續掃描

;.....................

ACALLLED_SD

ACALLSET_ATIME;設置鬧鈴時間

;.....................

AJMPLOOP;跳轉到LOOP處執行

M2:JBK3,M3;未按下K3鍵則繼續掃描

AJMPLOOP;跳轉到LOOP處執行

M3:JBK4,M4;未按下K4鍵則繼續掃描

;...................

CPLALB

JNBALB,M31

;鬧鈴啟動連續3次發出響聲

ACALLBZ

ACALLBZ

ACALLBZ

;...................

AJMPLOOP;跳轉到LOOP處執行

;....................

M31:

ACALLBZ;鬧鈴停止,發出一聲響

AJMPLOOP;跳轉到LOOP處執行

;...................

M4:

AJMPLOOP;跳轉到LOOP處執行

;-------------------------定時中斷模塊-------------------

;定時器T0模式0計時

INIT_TIMER:;初始化定時器

MOVTMOD,#00000000B;設置定時器T0工作模式0

MOVIE,#10000010B;啟用定時器T0中斷產生

MOVTL0,#(8192-4900)MOD32;載入初始值

MOVTH0,#(8192-4900)/32

SETBTR0;啟動定時器T0開始計時

RET

;--------------------------

;中斷服務程序

TO_SRV:;定時器T0計時中斷程序每隔5ms中斷一次

PUSHACC;將A值壓入堆棧

MOVTL0,#(8192-4900)MOD32;重載入初始值

MOVTH0,#(8192-4900)/32

INCDEDA;加1

;秒輸出

MOVA,DEDA

CJNEA,#200,TT1;是否1s到了

MOVDEDA,#0;計數值清除為0

CPLWLED;LED燈亮滅變換

INCSEC;秒計數加1

MOVA,SEC

CJNEA,#60,TT1;是否1min到了

;分輸出

INCMIN;分計數加1

MOVSEC,#0;秒計數清除為0

MOVA,MIN

CJNEA,#60,TT1;是否1h到了

;時輸出

INCHOUR;小時計數加1

MOVMIN,#0;分計數清除為0

MOVA,HOUR

CJNEA,#24,TT1;是否24h到了

MOVSEC,#0;秒鍾變數清除為0

MOVMIN,#0;分鍾變數清除為0

MOVHOUR,#0;小時變數清除為0

TT1:

POPACC;將A值由堆棧取出

RETI

;----------------------------------------轉換十進制模塊---------------------------------

CONV:;轉換十進制子程序

;轉換小時數據

MOVDPTR,#TABLE;存表

MOVA,HOUR

MOVB,#10

DIVAB

MOVCA,@A+DPTR;查表轉換

MOVBUF,A

MOVA,B

MOVCA,@A+DPTR

MOVBUF+1,A

;轉換分鍾數據

MOVA,MIN

MOVB,#10

DIVAB

MOVCA,@A+DPTR;查表轉換

MOVBUF+2,A

MOVA,B

MOVCA,@A+DPTR;查表轉換

MOVBUF+3,A

RET

;字型數據編碼表

TABLE:

DB0C0H,0F9H,0A4H,0B0H

DB99H,92H,82H,0F8H

DB80H,90H,88H,83H

DB0C6H,0A1H,86H,8EH

;--------------------------------------掃描顯示模塊------------------------------------

DISP:;掃描顯示子程序

MOVR0,#BUF;指向顯示器顯示緩沖區起始地址

MOVR2,#4;執行4次循環

MOVACC,#11110111b;載入掃描信號初值11110111B

S1:

PUSHACC

MOVA,@R0;讀取出顯示器數據

MOVP0,A;由P0送出一位顯示器數據

POPACC

MOVP2,ACC;由P2送出掃描輸出信號

MOVR5,#2;延遲一段時間

ACALLDELAY1MS_R5

;改變掃描碼EX:XXXX1011

RRA;累加器A向右移動一位

INCR0;顯示器顯示緩沖區地址加1

DJNZR2,S1;判斷是否繼續執行循環

RET

;--------------------------------------調整時間模塊------------------------------------

SET_TIME:;設置目前時間子程序

CLRTR0;定時器工作暫停

MOVSEC,#0;秒鍾變數清除為0

L0:

ACALLDISP;掃描顯示

JBK2,L1;未按下K2鍵則繼續掃描

JNBK2,$;有按下則等待放開

;K2小時調整

INCHOUR;小時計數加1

MOVA,HOUR

CJNEA,#24,L11;是否24H到了

MOVHOUR,#0;小時變數清除為0

L11:

ACALLCONV;轉換顯示數據

ACALLDISP;掃描顯示

AJMPL0;繼續程序執行

L1:JBK3,L2;未按下K3鍵則繼續掃描

JNBK3,$;有按下則等待放開

;K3分鍾調整.

INCMIN;分鍾計數加1

MOVA,MIN

CJNEA,#60,L21;是否60min到了

MOVMIN,#0;分鍾變數清除為0

L21:

ACALLCONV;轉換顯示數據

ACALLDISP;掃描顯示

AJMPL0;跳轉到L0處執行

L2:JBK4,L0;未按下K4鍵則繼續掃描

JNBK4,$;有按下則等待放開

ACALLBZ;蜂鳴器鳴響一聲

;K4設置完成

ACALLLED_SD;LED閃動

SETBTR0;啟動定時器

RET

;-------------------------------------計時單元清零模塊-------------------------------

INIT:;計時單元清零子程序

MOVDEDA,#0;5ms計數值清除為0

MOVSEC,#0;秒鍾變數清除為0

MOVMIN,#0;分鍾變數清除為0

MOVHOUR,#0;小時變數清除為0

RET

;--------------------------------------蜂鳴器鳴響模塊--------------------------------------

BZ:;蜂鳴器鳴響一聲子程序

MOVR6,#250

B1:ACALLDEX

CPLSPK

DJNZR6,B1

MOVR5,#50

ACALLDELAY1MS_R5

RET

;-------------------------------------LED閃動模塊-------------------------------------

LED_SD:;工作指示燈閃爍子程序

MOVR4,#6

LE1:CPLWLED;位反向

MOVR5,#25

ACALLDELAY1MS_R5

DJNZR4,LE1;延遲50ms

RET

;------------------------------------------延時模塊--------------------------------------

DELAY1MS_R5:;總延遲時間2ms×R5

MOVR6,#10

D1:MOVR7,#100

DJNZR7,$

DJNZR6,D1

DJNZR5,DELAY1MS_R5

RET

;------------------------------------------短暫延時模塊---------------------------------

DEX:;短暫延時子程序

MOVR7,#180

DE1:NOP

DJNZR7,DE1

RET

;*********************增加定時鬧鈴程序部分********************

;-----------------------------------------設置鬧鈴時間模塊--------------------------------

SET_ATIME:;設置鬧鈴時間子程序

MOVHH,#0

MOVMM,#0

ACALLCONVA;載入鬧鈴時間數據

N0:

ACALLDISP

;-----------

JBK2,N1;未按下K2鍵則繼續掃描

JNBK2,$;有按下則等待放開

;K2調整小時

INCHH;小時數加1

MOVA,HH

CJNEA,#24,N11;是否24h到了

MOVHH,#0;小時清為0

N11:

ACALLCONVA;載入鬧鈴時間數據

ACALLDISP;掃描顯示

AJMPN0;跳轉到N0處執行

;------------

N1:JBK3,N2;未按下K3鍵則繼續掃描

JNBK3,$;有按下則等待放開

;K3調整分鍾

INCMM;調整分鍾數

MOVA,MM;分鍾數加1

CJNEA,#60,N21;是否60min到了

MOVMM,#0;分鍾數清為0

N21:

ACALLCONVA;載入鬧鈴時間數據

ACALLDISP

閱讀全文

與單片機定時鬧鍾相關的資料

熱點內容
華為雲伺服器登錄密碼和賬號 瀏覽:154
中世紀java程序員 瀏覽:786
什麼開發引擎使用python 瀏覽:176
sh腳本運行命令 瀏覽:316
廣聯達加密鎖怎麼看到期 瀏覽:172
cad軌跡命令 瀏覽:979
同事刷到女程序員自媒體視頻 瀏覽:571
校驗演算法的缺點是什麼 瀏覽:717
PHP商品分類功能實現 瀏覽:330
php取字元串中間 瀏覽:432
程序員經常用工具 瀏覽:837
降服主力指標源碼主圖 瀏覽:502
python實用庫 瀏覽:693
電腦默認7個文件夾 瀏覽:13
新唐單片機安裝c51後編譯錯誤 瀏覽:532
紅包源碼引流神器 瀏覽:235
學生初中畢業撕書解壓 瀏覽:748
命令方塊刷銅點教學 瀏覽:691
php郵件訂閱系統 瀏覽:999
柱樑底加密箍間距 瀏覽:31