性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

帶鬧鐘功能的電子鐘(匯編版)-更新-(C版1:1匯編)程序

好長(zhǎng)時(shí)間都沒(méi)有發(fā)帖了,這個(gè)是幫一個(gè)網(wǎng)友寫(xiě)的,人家要求是用匯編語(yǔ)言寫(xiě),現(xiàn)在貼出來(lái)給大家分享,希望大家批評(píng)指正!接通電源后,蜂鳴器連續(xù)兩次發(fā)出響聲,同時(shí)工作指示燈閃動(dòng),表示程序開(kāi)始工作,數(shù)碼管顯示0000(1)設(shè)置現(xiàn)在時(shí)間K1為設(shè)置現(xiàn)在時(shí)間功能鍵,按一下K1鍵便進(jìn)入設(shè)置現(xiàn)在時(shí)間狀態(tài),然后,按K2鍵為小時(shí)調(diào)整;按K3鍵為分鐘調(diào)整。設(shè)置完成后要按一下K4鍵,使之恢復(fù)正常的時(shí)鐘走時(shí)狀態(tài)。(2)設(shè)置鬧鈴時(shí)間走時(shí)的時(shí)間設(shè)置完成并按K4鍵,進(jìn)入正常的時(shí)鐘走時(shí)狀態(tài)后再按一次K2鍵,此時(shí)K2鍵為設(shè)置鬧鈴功能鍵,進(jìn)入設(shè)置鬧鈴時(shí)間狀態(tài)后,此時(shí)再按下K2鍵即為小時(shí)調(diào)整;按K3鍵為分鐘調(diào)整。(3)鬧鈴ON/OFF的設(shè)置鬧鈴時(shí)間設(shè)置完成后,再按K4鍵,此時(shí)的K4鍵為設(shè)置鬧鈴ON/OFF鍵,若設(shè)為ON,則啟動(dòng)鬧鈴時(shí)會(huì)聽(tīng)到連續(xù)3次發(fā)出響聲;若設(shè)為OFF,則關(guān)閉鬧鈴時(shí)會(huì)聽(tīng)到發(fā)出1次響聲。

 

xiaoguo

22

DIANZIZHONG(1).rar

 

全部回復(fù)(32)
正序查看
倒序查看
cltwolf
LV.5
2
2014-03-19 09:53

技術(shù)貼,頂頂。

除了鬧鐘,搞搞萬(wàn)年歷叻。

0
回復(fù)
2014-03-19 10:13
@cltwolf
技術(shù)貼,頂頂。除了鬧鐘,搞搞萬(wàn)年歷叻。
最近有點(diǎn)忙,空了也些個(gè)匯編的萬(wàn)年歷,C版的到處都有,我也就不去攙和了!
0
回復(fù)
cltwolf
LV.5
4
2014-03-19 10:15
@yueyunno1
最近有點(diǎn)忙,空了也些個(gè)匯編的萬(wàn)年歷,C版的到處都有,我也就不去攙和了!

呵呵,就是匯編版的試試。

我只會(huì)看匯編的,不會(huì)用匯編的,感覺(jué)匯編的人都是高大上的。

0
回復(fù)
2014-03-19 10:20
@cltwolf
呵呵,就是匯編版的試試。我只會(huì)看匯編的,不會(huì)用匯編的,感覺(jué)匯編的人都是高大上的。
呵呵!那倒不是,匯編能讓你把真?zhèn)€單片機(jī)學(xué)得很透徹,包括所有單片機(jī)的內(nèi)存你都要自己去分配,也是以后做大程序大項(xiàng)目的一個(gè)好的習(xí)慣;其次是一定要把程序模塊化,寫(xiě)得容易讀寫(xiě),做好相應(yīng)的注釋?zhuān)裁磿r(shí)候你想回來(lái)來(lái)的時(shí)候都能一目了然。C語(yǔ)言我也會(huì)寫(xiě),當(dāng)然現(xiàn)在也幾乎都是用C語(yǔ)言在寫(xiě),但是對(duì)于一個(gè)想在單片機(jī)方面有一定造詣的人最好還是去走一遍匯編,C語(yǔ)言有點(diǎn)接近于模糊寫(xiě)法了,很多東西你不用管。很多賣(mài)開(kāi)發(fā)板的人會(huì)誤導(dǎo)你讓你直接去學(xué)C,因?yàn)樗麄兊囊曨l都是C,如果要用匯編語(yǔ)言去教會(huì)一個(gè)人編寫(xiě)單片機(jī)程序會(huì)花太多的時(shí)間!
0
回復(fù)
2014-03-19 10:49
@yueyunno1
最近有點(diǎn)忙,空了也些個(gè)匯編的萬(wàn)年歷,C版的到處都有,我也就不去攙和了!

技術(shù)帖,必須頂

關(guān)注后面的新作

0
回復(fù)
cltwolf
LV.5
7
2014-03-19 11:10
@yueyunno1
呵呵!那倒不是,匯編能讓你把真?zhèn)€單片機(jī)學(xué)得很透徹,包括所有單片機(jī)的內(nèi)存你都要自己去分配,也是以后做大程序大項(xiàng)目的一個(gè)好的習(xí)慣;其次是一定要把程序模塊化,寫(xiě)得容易讀寫(xiě),做好相應(yīng)的注釋?zhuān)裁磿r(shí)候你想回來(lái)來(lái)的時(shí)候都能一目了然。C語(yǔ)言我也會(huì)寫(xiě),當(dāng)然現(xiàn)在也幾乎都是用C語(yǔ)言在寫(xiě),但是對(duì)于一個(gè)想在單片機(jī)方面有一定造詣的人最好還是去走一遍匯編,C語(yǔ)言有點(diǎn)接近于模糊寫(xiě)法了,很多東西你不用管。很多賣(mài)開(kāi)發(fā)板的人會(huì)誤導(dǎo)你讓你直接去學(xué)C,因?yàn)樗麄兊囊曨l都是C,如果要用匯編語(yǔ)言去教會(huì)一個(gè)人編寫(xiě)單片機(jī)程序會(huì)花太多的時(shí)間!

現(xiàn)在很多的單片機(jī)都是直接謝上層,所以才多了我們這些技術(shù)能力比較低的C程序猿。我只有在檢驗(yàn)程序執(zhí)行效率的時(shí)候才會(huì)反匯編看看情況。

聽(tīng)說(shuō)匯編學(xué)好了能逆天。yueyunnol老兄怕是逆天一族啊。

0
回復(fù)
2014-03-19 11:33
@電源網(wǎng)-fqd
[圖片]技術(shù)帖,必須頂關(guān)注后面的新作
不錯(cuò)都給我UP到上面了!很有信心!
0
回復(fù)
2014-03-21 13:16
@cltwolf
現(xiàn)在很多的單片機(jī)都是直接謝上層,所以才多了我們這些技術(shù)能力比較低的C程序猿。我只有在檢驗(yàn)程序執(zhí)行效率的時(shí)候才會(huì)反匯編看看情況。聽(tīng)說(shuō)匯編學(xué)好了能逆天。yueyunnol老兄怕是逆天一族啊。
你太抬舉我了,只是最開(kāi)始不懂C語(yǔ)言,其實(shí)匯編比較容易入門(mén)點(diǎn),再者匯編也只有111條指令,比較固定,靈活性不強(qiáng),容易入門(mén)些!
0
回復(fù)
cltwolf
LV.5
10
2014-03-21 14:30
@yueyunno1
你太抬舉我了,只是最開(kāi)始不懂C語(yǔ)言,其實(shí)匯編比較容易入門(mén)點(diǎn),再者匯編也只有111條指令,比較固定,靈活性不強(qiáng),容易入門(mén)些!
我入門(mén)也是匯編,只不過(guò)因?yàn)殚_(kāi)發(fā)時(shí)間緊迫的問(wèn)題,選擇了C。C的程序移植和可讀性等都比較好。特別是到了32位級(jí)別的MCU,基本上,匯編都是高手級(jí)別的才玩得轉(zhuǎn)。我們菜鳥(niǎo)的就只能拿C瞎混混。
0
回復(fù)
飛翔2004
LV.10
11
2014-03-31 21:21
@yueyunno1
不錯(cuò)都給我UP到上面了!很有信心!
匯編只在學(xué)校學(xué)過(guò),忘得差不多了,
0
回復(fù)
208971
LV.7
12
2014-04-04 16:20
@cltwolf
呵呵,就是匯編版的試試。我只會(huì)看匯編的,不會(huì)用匯編的,感覺(jué)匯編的人都是高大上的。
匯編,感覺(jué)編程來(lái)講,不必吧。
0
回復(fù)
208971
LV.7
13
2014-04-04 16:20
@208971
匯編,感覺(jué)編程來(lái)講,不必吧。
調(diào)試可以用,編程不怎么用。
0
回復(fù)
208971
LV.7
14
2014-04-04 16:20
@飛翔2004
匯編只在學(xué)校學(xué)過(guò),忘得差不多了,[圖片]
C就夠了。
0
回復(fù)
208971
LV.7
15
2014-04-04 16:21
@yueyunno1
你太抬舉我了,只是最開(kāi)始不懂C語(yǔ)言,其實(shí)匯編比較容易入門(mén)點(diǎn),再者匯編也只有111條指令,比較固定,靈活性不強(qiáng),容易入門(mén)些!
,倒是C更簡(jiǎn)單。
0
回復(fù)
208971
LV.7
16
2014-04-04 16:22
@yueyunno1
呵呵!那倒不是,匯編能讓你把真?zhèn)€單片機(jī)學(xué)得很透徹,包括所有單片機(jī)的內(nèi)存你都要自己去分配,也是以后做大程序大項(xiàng)目的一個(gè)好的習(xí)慣;其次是一定要把程序模塊化,寫(xiě)得容易讀寫(xiě),做好相應(yīng)的注釋?zhuān)裁磿r(shí)候你想回來(lái)來(lái)的時(shí)候都能一目了然。C語(yǔ)言我也會(huì)寫(xiě),當(dāng)然現(xiàn)在也幾乎都是用C語(yǔ)言在寫(xiě),但是對(duì)于一個(gè)想在單片機(jī)方面有一定造詣的人最好還是去走一遍匯編,C語(yǔ)言有點(diǎn)接近于模糊寫(xiě)法了,很多東西你不用管。很多賣(mài)開(kāi)發(fā)板的人會(huì)誤導(dǎo)你讓你直接去學(xué)C,因?yàn)樗麄兊囊曨l都是C,如果要用匯編語(yǔ)言去教會(huì)一個(gè)人編寫(xiě)單片機(jī)程序會(huì)花太多的時(shí)間!
是啊,移植性不行,開(kāi)發(fā)周期長(zhǎng)。
0
回復(fù)
2014-04-11 17:30
@208971
C就夠了。

但是還是有不會(huì)C的嘛  

0
回復(fù)
2014-04-18 15:44

支持一個(gè)

0
回復(fù)
2014-04-19 16:01

詳細(xì)講解一下本程序:

/////////////////////////////////////////////////////////

以下為電子鐘定時(shí)器部分程序分解

/////////////////////////////////////////////////////////

仿真圖:

 

0
回復(fù)
2014-04-19 16:01
@yueyunno1
詳細(xì)講解一下本程序://///////////////////////////////////////////////////////以下為電子鐘定時(shí)器部分程序分解/////////////////////////////////////////////////////////仿真圖:[圖片] 
/***********************************************************************/
/***名稱(chēng):定時(shí)器T0應(yīng)用      ********************************************/
/***功能: 讓一個(gè)LED燈每秒閃爍一次**************************************/
/***********************************************************************/

/*---------------------------------------------------------------------*/
/*--   端口定義                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
LED_GREEN	EQU P2.0
TIMER_TEMP EQU R4		
/*---------------------------------------------------------------------*/
/*--   程序開(kāi)始                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	ORG 0000H
	SJMP MAIN
	ORG 000BH
	SJMP TIMER_0
	ORG 0030H
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
MAIN:	MOV TIMER_TEMP,#0
	MOV TMOD,#01H                   ;set timer0 as mode1 (16-bit)
	MOV TH0,#3CH                    ;initial timer0 high byte
	MOV TL0,#0B0H                   ;initial timer0 low byte
	SETB TR0                        ;timer0 start running
	SETB ET0                        ;enable timer0 interrupt
	SETB EA                         ;open global interrupt switch
	SJMP $

/*---------------------------------------------------------------------*/
/*--   定時(shí)器0中斷程序          ---------------------------------------*/
/*---------------------------------------------------------------------*/
TIMER_0:
    	PUSH ACC
    	MOV TH0,#3CH
    	MOV TL0,#0B0H
	INC TIMER_TEMP
	MOV A,TIMER_TEMP
	CJNE A,#20,EXIT
	MOV TIMER_TEMP,#0
	CPL LED_GREEN
EXIT:    	POP ACC
    	RETI
/*---------------------------------------------------------------------*/
/*--   程序結(jié)束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
	END

	
0
回復(fù)
2014-04-19 16:03
@yueyunno1
/***********************************************************************//***名稱(chēng):定時(shí)器T0應(yīng)用********************************************//***功能:讓一個(gè)LED燈每秒閃爍一次**************************************//***********************************************************************//*---------------------------------------------------------------------*//*--端口定義---------------------------------------*//*---------------------------------------------------------------------*/LED_GREENEQUP2.0TIMER_TEMPEQUR4/*---------------------------------------------------------------------*//*--程序開(kāi)始---------------------------------------*//*---------------------------------------------------------------------*/ORG0000HSJMPMAINORG000BHSJMPTIMER_0ORG0030H/*---------------------------------------------------------------------*//*--主程序---------------------------------------*//*---------------------------------------------------------------------*/MAIN:MOVTIMER_TEMP,#0MOVTMOD,#01H;settimer0asmode1(16-bit)MOVTH0,#3CH;initialtimer0highbyteMOVTL0,#0B0H;initialtimer0lowbyteSETBTR0;timer0startrunningSETBET0;enabletimer0interruptSETBEA;openglobalinterruptswitchSJMP$/*---------------------------------------------------------------------*//*--定時(shí)器0中斷程序---------------------------------------*//*---------------------------------------------------------------------*/TIMER_0:PUSHACCMOVTH0,#3CHMOVTL0,#0B0HINCTIMER_TEMPMOVA,TIMER_TEMPCJNEA,#20,EXITMOVTIMER_TEMP,#0CPLLED_GREENEXIT:POPACCRETI/*---------------------------------------------------------------------*//*--程序結(jié)束---------------------------------------*//*---------------------------------------------------------------------*/END

以下為基本電子鐘程序,不帶按鍵,只有顯示。上電顯示12:00:00就開(kāi)始走時(shí)

仿真圖片:

 

0
回復(fù)
2014-04-19 16:03
@yueyunno1
以下為基本電子鐘程序,不帶按鍵,只有顯示。上電顯示12:00:00就開(kāi)始走時(shí)仿真圖片:[圖片] 
;/**********************************************************************************************/
;/************************             帶鬧鐘可調(diào)時(shí)間電子鐘          ***************************/
;/**********************************************************************************************/
;;                                            程序說(shuō)明:
;/* 接通電源后,數(shù)碼管顯示12 00 00  然后就開(kāi)始走時(shí)
;/**********************************************************************************************/
;/************************              端口定義                       *************************/
;/**********************************************************************************************/
DISP_DUAN	    EQU P0
DISP_WEI      EQU P2
DISP_WEI_SEC  EQU P1

K1	EQU P2.4
K2	EQU P2.5
K3	EQU P2.6
K4	EQU P2.7
SEC_LED	EQU P1.0
HOU	EQU 34H	//time
MIN	EQU 35H
SEC	EQU 36H

;/**********************************************************************************************/
;/************************              主程序                       ***************************/
;/**********************************************************************************************/
	ORG 0000H
	SJMP MAIN
	ORG 000BH
	LJMP TIME0
	ORG 0030H

MAIN:	LCALL INIT
LOOP:	LCALL DISPLAY
	SJMP LOOP
;/**********************************************************************************************/
;/************************              初始化程序                   ***************************/
;/**********************************************************************************************/
INIT:	MOV SP,#60H
    	MOV TMOD,#01H
    	MOV TH0,#3CH
    	MOV TL0,#0B0H
    	SETB EA
    	SETB ET0
    	SETB TR0
	MOV HOU,#12
	MOV MIN,#00
	MOV SEC,#00

	RET
;/**********************************************************************************************/
;/************************          時(shí)間顯示子程序                     *************************/
;/**********************************************************************************************/
DISPLAY:
          MOV DISP_DUAN,#0FFH
	MOV DISP_WEI,#0FFH
	MOV DISP_WEI_SEC,#0FFH
	MOV DPTR,#TABLE
	MOV R0,#34H
	MOV 40H,#2
	MOV 41H,#0
	MOV 42H,#0FEH
DISP_1:
	MOV A,@R0
	MOV B,#10
	DIV AB
	MOVC A,@A+DPTR
	MOV DISP_DUAN,A
	MOV DISP_WEI,42H
	ACALL DELAY
	MOV DISP_WEI,#0FFH
	MOV A,42H
	RL A
	MOV 42H,A

	MOV A,B
	MOVC A,@A+DPTR
	MOV DISP_DUAN,A
	MOV DISP_WEI,42H
	ACALL DELAY
	MOV DISP_WEI,#0FFH
	INC R0
	INC 41H
	MOV A,42H
	RL A
	MOV 42H,A
	DJNZ 40H,DISP_1    /*******************************************************/
//*********************************************************************************************
	MOV A,@R0		  //這段程序是秒顯示,可以不用,在原理圖中的數(shù)碼管是獨(dú)立的
	MOV B,#10
	DIV AB
	MOVC A,@A+DPTR
	MOV DISP_DUAN,A
	MOV DISP_WEI_SEC,#7FH      //////////
	ACALL DELAY
	MOV DISP_WEI_SEC,#0FFH    //////////
	//INC R0
	MOV A,42H
	RL A
	MOV 42H,A

	MOV A,B
	MOVC A,@A+DPTR
	MOV DISP_DUAN,A
	MOV DISP_WEI_SEC,#0BFH    ///////////
	ACALL DELAY
	MOV DISP_WEI_SEC,#0FFH    ///////////
//	INC R0
	MOV A,42H
	RL A
	MOV 42H,A	    /*******************************************************/
//*********************************************************************************************

	RET

;/**********************************************************************************************/
;/************************              延時(shí)子程序1S                      **********************/
;/**********************************************************************************************/
DELAY1S :	MOV 44H,#200
DELAY21:	MOV 43H,#255
	DJNZ 43H,$
	DJNZ 44H,DELAY21
	RET
;/**********************************************************************************************/
;/************************              延時(shí)子程序                       ***********************/
;/**********************************************************************************************/
DELAY :	MOV 44H,#25
DELAY1:	MOV 43H,#25
	DJNZ 43H,$
	DJNZ 44H,DELAY1
	RET

;/**********************************************************************************************/
;/************************            定時(shí)器子程序                   ***************************/
;/**********************************************************************************************/
TIME0:
	PUSH DPH
    	PUSH DPL
    	PUSH ACC
    	MOV TH0,#3CH
    	MOV TL0,#0B0H
	INC R7
	MOV A,R7
	CJNE A,#20,EXIT
	MOV R7,#0
	LCALL TIME_CALC

EXIT:    	POP ACC
    	POP DPL
    	POP DPH
    	RETI


;/**********************************************************************************************/
;/************************             定時(shí)器時(shí)間計(jì)算子程序          ***************************/
;/**********************************************************************************************/
TIME_CALC:
	MOV A,SEC
	CJNE A,#59,EXIT_TIME_SEC
	MOV SEC,#00
	MOV A,MIN
	CJNE A,#59,EXIT_TIME_MIN
	MOV MIN,#00
	MOV A,HOU
	CJNE A,#23,EXIT_TIME_HOU
	MOV HOU,#00
	SJMP EXIT_TIME_CALC

EXIT_TIME_SEC:
	MOV A,SEC
	ADD A,#1
	MOV SEC,A
	SJMP EXIT_TIME_CALC

EXIT_TIME_MIN:
	MOV A,MIN
	ADD A,#1
	MOV MIN,A
	SJMP EXIT_TIME_CALC

EXIT_TIME_HOU:
	MOV A,HOU
	ADD A,#1
	MOV HOU,A
	SJMP EXIT_TIME_CALC

EXIT_TIME_CALC:
	RET

;/**********************************************************************************************/
;/************************           數(shù)碼管斷碼表                    ***************************/
;/**********************************************************************************************/
TABLE:
	DB 0C0H  //0
	DB 0F9H  //1
	DB 0A4H  //2
	DB 0B0H  //3
	DB 99H   //4
	DB 92H   //5
	DB 82H   //6
	DB 0F8H  //7
	DB 80H   //8
	DB 90H   //9
	DB 88H   //A  10
	DB 83H   //B  11
	DB 0C6H  //C  12
	DB 0A1H  //D  13
	DB 86H   //E  14
	DB 8EH   //F  15
	DB 8BH	//h 16
	DB 89H	//H 17
	DB 0A3H 	//o 18
	DB 0C1H 	//U 19
	DB 0AAH	//M 20
	DB 0CFH	//I 21
	DB 0C8H	//N 22
	DB 0BFH	//- 23
;/**********************************************************************************************/
;/************************              程序結(jié)束                     ***************************/
;/**********************************************************************************************/
	END
0
回復(fù)
2014-04-19 16:05
@yueyunno1
;/**********************************************************************************************/;/************************帶鬧鐘可調(diào)時(shí)間電子鐘***************************/;/**********************************************************************************************/;;程序說(shuō)明:;/*接通電源后,數(shù)碼管顯示120000然后就開(kāi)始走時(shí);/**********************************************************************************************/;/************************端口定義*************************/;/**********************************************************************************************/DISP_DUANEQUP0DISP_WEIEQUP2DISP_WEI_SECEQUP1K1EQUP2.4K2EQUP2.5K3EQUP2.6K4EQUP2.7SEC_LEDEQUP1.0HOUEQU34H//timeMINEQU35HSECEQU36H;/**********************************************************************************************/;/************************主程序***************************/;/**********************************************************************************************/ORG0000HSJMPMAINORG000BHLJMPTIME0ORG0030HMAIN:LCALLINITLOOP:LCALLDISPLAYSJMPLOOP;/**********************************************************************************************/;/************************初始化程序***************************/;/**********************************************************************************************/INIT:MOVSP,#60HMOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBEASETBET0SETBTR0MOVHOU,#12MOVMIN,#00MOVSEC,#00RET;/**********************************************************************************************/;/************************時(shí)間顯示子程序*************************/;/**********************************************************************************************/DISPLAY:MOVDISP_DUAN,#0FFHMOVDISP_WEI,#0FFHMOVDISP_WEI_SEC,#0FFHMOVDPTR,#TABLEMOVR0,#34HMOV40H,#2MOV41H,#0MOV42H,#0FEHDISP_1:MOVA,@R0MOVB,#10DIVABMOVCA,@A+DPTRMOVDISP_DUAN,AMOVDISP_WEI,42HACALLDELAYMOVDISP_WEI,#0FFHMOVA,42HRLAMOV42H,AMOVA,BMOVCA,@A+DPTRMOVDISP_DUAN,AMOVDISP_WEI,42HACALLDELAYMOVDISP_WEI,#0FFHINCR0INC41HMOVA,42HRLAMOV42H,ADJNZ40H,DISP_1/*******************************************************///*********************************************************************************************MOVA,@R0//這段程序是秒顯示,可以不用,在原理圖中的數(shù)碼管是獨(dú)立的MOVB,#10DIVABMOVCA,@A+DPTRMOVDISP_DUAN,AMOVDISP_WEI_SEC,#7FH//////////ACALLDELAYMOVDISP_WEI_SEC,#0FFH////////////INCR0MOVA,42HRLAMOV42H,AMOVA,BMOVCA,@A+DPTRMOVDISP_DUAN,AMOVDISP_WEI_SEC,#0BFH///////////ACALLDELAYMOVDISP_WEI_SEC,#0FFH/////////////INCR0MOVA,42HRLAMOV42H,A/*******************************************************///*********************************************************************************************RET;/**********************************************************************************************/;/************************延時(shí)子程序1S**********************/;/**********************************************************************************************/DELAY1S:MOV44H,#200DELAY21:MOV43H,#255DJNZ43H,$DJNZ44H,DELAY21RET;/**********************************************************************************************/;/************************延時(shí)子程序***********************/;/**********************************************************************************************/DELAY:MOV44H,#25DELAY1:MOV43H,#25DJNZ43H,$DJNZ44H,DELAY1RET;/**********************************************************************************************/;/************************定時(shí)器子程序***************************/;/**********************************************************************************************/TIME0:PUSHDPHPUSHDPLPUSHACCMOVTH0,#3CHMOVTL0,#0B0HINCR7MOVA,R7CJNEA,#20,EXITMOVR7,#0LCALLTIME_CALCEXIT:POPACCPOPDPLPOPDPHRETI;/**********************************************************************************************/;/************************定時(shí)器時(shí)間計(jì)算子程序***************************/;/**********************************************************************************************/TIME_CALC:MOVA,SECCJNEA,#59,EXIT_TIME_SECMOVSEC,#00MOVA,MINCJNEA,#59,EXIT_TIME_MINMOVMIN,#00MOVA,HOUCJNEA,#23,EXIT_TIME_HOUMOVHOU,#00SJMPEXIT_TIME_CALCEXIT_TIME_SEC:MOVA,SECADDA,#1MOVSEC,ASJMPEXIT_TIME_CALCEXIT_TIME_MIN:MOVA,MINADDA,#1MOVMIN,ASJMPEXIT_TIME_CALCEXIT_TIME_HOU:MOVA,HOUADDA,#1MOVHOU,ASJMPEXIT_TIME_CALCEXIT_TIME_CALC:RET;/**********************************************************************************************/;/************************數(shù)碼管斷碼表***************************/;/**********************************************************************************************/TABLE:DB0C0H//0DB0F9H//1DB0A4H//2DB0B0H//3DB99H//4DB92H//5DB82H//6DB0F8H//7DB80H//8DB90H//9DB88H//A10DB83H//B11DB0C6H//C12DB0A1H//D13DB86H//E14DB8EH//F15DB8BH//h16DB89H//H17DB0A3H//o18DB0C1H//U19DB0AAH//M20DB0CFH//I21DB0C8H//N22DB0BFH//-23;/**********************************************************************************************/;/************************程序結(jié)束***************************/;/**********************************************************************************************/END

以下為帶按鍵的電子鐘程序,在正常顯示的情況下可以對(duì)電子鐘的時(shí)間進(jìn)行調(diào)整

仿真圖片:

0
回復(fù)
2014-04-19 16:06
@yueyunno1
以下為帶按鍵的電子鐘程序,在正常顯示的情況下可以對(duì)電子鐘的時(shí)間進(jìn)行調(diào)整仿真圖片:[圖片]
;/**********************************************************************************************/
;/************************         帶按鍵可調(diào)時(shí)間電子鐘              ***************************/
;/**********************************************************************************************/
;;                                            程序說(shuō)明:
;/* 接通電源后,數(shù)碼管顯示12 00 00  然后就開(kāi)始走時(shí),按"小時(shí)+"每按一次小時(shí)加1,按“小時(shí)-”每按一次
;/*小時(shí)減1,按"分鐘+"每按一次分鐘加1,按"分鐘-"每按一次分鐘減1
;/**********************************************************************************************/
;/************************              端口定義                       *************************/
;/**********************************************************************************************/
DISP_DUAN	    EQU P0
DISP_WEI      EQU P2
DISP_WEI_SEC  EQU P1

K1	EQU P2.4
K2	EQU P2.5
K3	EQU P2.6
K4	EQU P2.7

SEC_LED	EQU P1.0
HOU	EQU 34H	//time
MIN	EQU 35H
SEC	EQU 36H

;/**********************************************************************************************/
;/************************              主程序                       ***************************/
;/**********************************************************************************************/
	ORG 0000H
	SJMP MAIN
	ORG 000BH
	LJMP TIME0
	ORG 0030H

MAIN:	LCALL INIT
LOOP:	LCALL DISPLAY
	LCALL IN_KEY
	SJMP LOOP
;/**********************************************************************************************/
;/************************              初始化程序                   ***************************/
;/**********************************************************************************************/
INIT:	MOV SP,#60H
    	MOV TMOD,#01H
    	MOV TH0,#3CH
    	MOV TL0,#0B0H
    	SETB EA
    	SETB ET0
    	SETB TR0
	MOV HOU,#12
	MOV MIN,#00
	MOV SEC,#00

	RET

;/**********************************************************************************************/
;/************************          按鍵子程序                         *************************/
;/**********************************************************************************************/
IN_KEY:
	MOV A,DISP_WEI
	ANL A,#0F0H
	CJNE A,#0F0H,KEY_LOOP
	SJMP EXIT_KEY

KEY_LOOP:	CALL DISPLAY
	MOV A,DISP_WEI
	ANL A,#0F0H
	CJNE A,#0F0H,KEY_LOOP2
	SJMP EXIT_KEY

KEY_LOOP2:JNB K1,HOU_ADD
	JNB K2,HOU_SUBB
	JNB K3,MIN_ADD
	JNB K4,MIN_SUBB
	SJMP EXIT_KEY

;/*************************************/
HOU_ADD:	CALL DISPLAY
	JNB K1,HOU_ADD
	MOV A,HOU
	CJNE A,#23,HOU_ADD2
	MOV HOU,#00
	SJMP EXIT_KEY
HOU_ADD2:	INC HOU
	SJMP EXIT_KEY	
;/*************************************/
HOU_SUBB:	CALL DISPLAY
	JNB K2,HOU_SUBB
	MOV A,HOU
	CJNE A,#00,HOU_SUBB2
	MOV HOU,#23
	SJMP EXIT_KEY
HOU_SUBB2:SUBB A,#1
	MOV HOU,A
	SJMP EXIT_KEY	
;/*************************************/
MIN_ADD:	CALL DISPLAY
	JNB K3,MIN_ADD
	MOV A,MIN
	CJNE A,#59,MIN_ADD2
	MOV MIN,#00
	SJMP EXIT_KEY
MIN_ADD2:	INC MIN
	SJMP EXIT_KEY
;/*************************************/
MIN_SUBB:	CALL DISPLAY
	JNB K4,MIN_SUBB
	MOV A,MIN
	CJNE A,#00,MIN_SUBB2
	MOV MIN,#59
	SJMP EXIT_KEY
MIN_SUBB2:SUBB A,#1
	MOV MIN,A
	SJMP EXIT_KEY
;/*************************************/	
EXIT_KEY:	RET

;/**********************************************************************************************/
;/************************          時(shí)間顯示子程序                     *************************/
;/**********************************************************************************************/
DISPLAY:
          MOV DISP_DUAN,#0FFH
	MOV DISP_WEI,#0FFH
	MOV DISP_WEI_SEC,#0FFH
	MOV DPTR,#TABLE
	MOV R0,#34H
	MOV 40H,#2
	MOV 41H,#0
	MOV 42H,#0FEH
DISP_1:
	MOV A,@R0
	MOV B,#10
	DIV AB
	MOVC A,@A+DPTR
	MOV DISP_DUAN,A
	MOV DISP_WEI,42H
	ACALL DELAY
	MOV DISP_WEI,#0FFH
	MOV A,42H
	RL A
	MOV 42H,A

	MOV A,B
	MOVC A,@A+DPTR
	MOV DISP_DUAN,A
	MOV DISP_WEI,42H
	ACALL DELAY
	MOV DISP_WEI,#0FFH
	INC R0
	INC 41H
	MOV A,42H
	RL A
	MOV 42H,A
	DJNZ 40H,DISP_1    /*******************************************************/
//*********************************************************************************************
	MOV A,@R0		  //這段程序是秒顯示,可以不用,在原理圖中的數(shù)碼管是獨(dú)立的
	MOV B,#10
	DIV AB
	MOVC A,@A+DPTR
	MOV DISP_DUAN,A
	MOV DISP_WEI_SEC,#7FH      //////////
	ACALL DELAY
	MOV DISP_WEI_SEC,#0FFH    //////////
	//INC R0
	MOV A,42H
	RL A
	MOV 42H,A

	MOV A,B
	MOVC A,@A+DPTR
	MOV DISP_DUAN,A
	MOV DISP_WEI_SEC,#0BFH    ///////////
	ACALL DELAY
	MOV DISP_WEI_SEC,#0FFH    ///////////
//	INC R0
	MOV A,42H
	RL A
	MOV 42H,A	    /*******************************************************/
//*********************************************************************************************

	RET

;/**********************************************************************************************/
;/************************              延時(shí)子程序1S                      **********************/
;/**********************************************************************************************/
DELAY1S :	MOV 44H,#200
DELAY21:	MOV 43H,#255
	DJNZ 43H,$
	DJNZ 44H,DELAY21
	RET
;/**********************************************************************************************/
;/************************              延時(shí)子程序                       ***********************/
;/**********************************************************************************************/
DELAY :	MOV 44H,#25
DELAY1:	MOV 43H,#25
	DJNZ 43H,$
	DJNZ 44H,DELAY1
	RET

;/**********************************************************************************************/
;/************************            定時(shí)器子程序                   ***************************/
;/**********************************************************************************************/
TIME0:
	PUSH DPH
    	PUSH DPL
    	PUSH ACC
    	MOV TH0,#3CH
    	MOV TL0,#0B0H
	INC R7
	MOV A,R7
	CJNE A,#20,EXIT
	MOV R7,#0
	LCALL TIME_CALC
EXIT:    	POP ACC
    	POP DPL
    	POP DPH
    	RETI


;/**********************************************************************************************/
;/************************             定時(shí)器時(shí)間計(jì)算子程序          ***************************/
;/**********************************************************************************************/
TIME_CALC:
	MOV A,SEC
	CJNE A,#59,EXIT_TIME_SEC
	MOV SEC,#00
	MOV A,MIN
	CJNE A,#59,EXIT_TIME_MIN
	MOV MIN,#00
	MOV A,HOU
	CJNE A,#23,EXIT_TIME_HOU
	MOV HOU,#00
	SJMP EXIT_TIME_CALC

EXIT_TIME_SEC:
	MOV A,SEC
	ADD A,#1
	MOV SEC,A
	SJMP EXIT_TIME_CALC

EXIT_TIME_MIN:
	MOV A,MIN
	ADD A,#1
	MOV MIN,A
	SJMP EXIT_TIME_CALC

EXIT_TIME_HOU:
	MOV A,HOU
	ADD A,#1
	MOV HOU,A
	SJMP EXIT_TIME_CALC

EXIT_TIME_CALC:
	RET

;/**********************************************************************************************/
;/************************           數(shù)碼管斷碼表                    ***************************/
;/**********************************************************************************************/
TABLE:
	DB 0C0H  //0
	DB 0F9H  //1
	DB 0A4H  //2
	DB 0B0H  //3
	DB 99H   //4
	DB 92H   //5
	DB 82H   //6
	DB 0F8H  //7
	DB 80H   //8
	DB 90H   //9
	DB 88H   //A  10
	DB 83H   //B  11
	DB 0C6H  //C  12
	DB 0A1H  //D  13
	DB 86H   //E  14
	DB 8EH   //F  15
	DB 8BH	//h 16
	DB 89H	//H 17
	DB 0A3H 	//o 18
	DB 0C1H 	//U 19
	DB 0AAH	//M 20
	DB 0CFH	//I 21
	DB 0C8H	//N 22
	DB 0BFH	//- 23
;/**********************************************************************************************/
;/************************              程序結(jié)束                     ***************************/
;/**********************************************************************************************/
	END
0
回復(fù)
2014-04-21 16:39
@yueyunno1
;/**********************************************************************************************/;/************************帶按鍵可調(diào)時(shí)間電子鐘***************************/;/**********************************************************************************************/;;程序說(shuō)明:;/*接通電源后,數(shù)碼管顯示120000然后就開(kāi)始走時(shí),按"小時(shí)+"每按一次小時(shí)加1,按“小時(shí)-”每按一次;/*小時(shí)減1,按"分鐘+"每按一次分鐘加1,按"分鐘-"每按一次分鐘減1;/**********************************************************************************************/;/************************端口定義*************************/;/**********************************************************************************************/DISP_DUANEQUP0DISP_WEIEQUP2DISP_WEI_SECEQUP1K1EQUP2.4K2EQUP2.5K3EQUP2.6K4EQUP2.7SEC_LEDEQUP1.0HOUEQU34H//timeMINEQU35HSECEQU36H;/**********************************************************************************************/;/************************主程序***************************/;/**********************************************************************************************/ORG0000HSJMPMAINORG000BHLJMPTIME0ORG0030HMAIN:LCALLINITLOOP:LCALLDISPLAYLCALLIN_KEYSJMPLOOP;/**********************************************************************************************/;/************************初始化程序***************************/;/**********************************************************************************************/INIT:MOVSP,#60HMOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBEASETBET0SETBTR0MOVHOU,#12MOVMIN,#00MOVSEC,#00RET;/**********************************************************************************************/;/************************按鍵子程序*************************/;/**********************************************************************************************/IN_KEY:MOVA,DISP_WEIANLA,#0F0HCJNEA,#0F0H,KEY_LOOPSJMPEXIT_KEYKEY_LOOP:CALLDISPLAYMOVA,DISP_WEIANLA,#0F0HCJNEA,#0F0H,KEY_LOOP2SJMPEXIT_KEYKEY_LOOP2:JNBK1,HOU_ADDJNBK2,HOU_SUBBJNBK3,MIN_ADDJNBK4,MIN_SUBBSJMPEXIT_KEY;/*************************************/HOU_ADD:CALLDISPLAYJNBK1,HOU_ADDMOVA,HOUCJNEA,#23,HOU_ADD2MOVHOU,#00SJMPEXIT_KEYHOU_ADD2:INCHOUSJMPEXIT_KEY;/*************************************/HOU_SUBB:CALLDISPLAYJNBK2,HOU_SUBBMOVA,HOUCJNEA,#00,HOU_SUBB2MOVHOU,#23SJMPEXIT_KEYHOU_SUBB2:SUBBA,#1MOVHOU,ASJMPEXIT_KEY;/*************************************/MIN_ADD:CALLDISPLAYJNBK3,MIN_ADDMOVA,MINCJNEA,#59,MIN_ADD2MOVMIN,#00SJMPEXIT_KEYMIN_ADD2:INCMINSJMPEXIT_KEY;/*************************************/MIN_SUBB:CALLDISPLAYJNBK4,MIN_SUBBMOVA,MINCJNEA,#00,MIN_SUBB2MOVMIN,#59SJMPEXIT_KEYMIN_SUBB2:SUBBA,#1MOVMIN,ASJMPEXIT_KEY;/*************************************/EXIT_KEY:RET;/**********************************************************************************************/;/************************時(shí)間顯示子程序*************************/;/**********************************************************************************************/DISPLAY:MOVDISP_DUAN,#0FFHMOVDISP_WEI,#0FFHMOVDISP_WEI_SEC,#0FFHMOVDPTR,#TABLEMOVR0,#34HMOV40H,#2MOV41H,#0MOV42H,#0FEHDISP_1:MOVA,@R0MOVB,#10DIVABMOVCA,@A+DPTRMOVDISP_DUAN,AMOVDISP_WEI,42HACALLDELAYMOVDISP_WEI,#0FFHMOVA,42HRLAMOV42H,AMOVA,BMOVCA,@A+DPTRMOVDISP_DUAN,AMOVDISP_WEI,42HACALLDELAYMOVDISP_WEI,#0FFHINCR0INC41HMOVA,42HRLAMOV42H,ADJNZ40H,DISP_1/*******************************************************///*********************************************************************************************MOVA,@R0//這段程序是秒顯示,可以不用,在原理圖中的數(shù)碼管是獨(dú)立的MOVB,#10DIVABMOVCA,@A+DPTRMOVDISP_DUAN,AMOVDISP_WEI_SEC,#7FH//////////ACALLDELAYMOVDISP_WEI_SEC,#0FFH////////////INCR0MOVA,42HRLAMOV42H,AMOVA,BMOVCA,@A+DPTRMOVDISP_DUAN,AMOVDISP_WEI_SEC,#0BFH///////////ACALLDELAYMOVDISP_WEI_SEC,#0FFH/////////////INCR0MOVA,42HRLAMOV42H,A/*******************************************************///*********************************************************************************************RET;/**********************************************************************************************/;/************************延時(shí)子程序1S**********************/;/**********************************************************************************************/DELAY1S:MOV44H,#200DELAY21:MOV43H,#255DJNZ43H,$DJNZ44H,DELAY21RET;/**********************************************************************************************/;/************************延時(shí)子程序***********************/;/**********************************************************************************************/DELAY:MOV44H,#25DELAY1:MOV43H,#25DJNZ43H,$DJNZ44H,DELAY1RET;/**********************************************************************************************/;/************************定時(shí)器子程序***************************/;/**********************************************************************************************/TIME0:PUSHDPHPUSHDPLPUSHACCMOVTH0,#3CHMOVTL0,#0B0HINCR7MOVA,R7CJNEA,#20,EXITMOVR7,#0LCALLTIME_CALCEXIT:POPACCPOPDPLPOPDPHRETI;/**********************************************************************************************/;/************************定時(shí)器時(shí)間計(jì)算子程序***************************/;/**********************************************************************************************/TIME_CALC:MOVA,SECCJNEA,#59,EXIT_TIME_SECMOVSEC,#00MOVA,MINCJNEA,#59,EXIT_TIME_MINMOVMIN,#00MOVA,HOUCJNEA,#23,EXIT_TIME_HOUMOVHOU,#00SJMPEXIT_TIME_CALCEXIT_TIME_SEC:MOVA,SECADDA,#1MOVSEC,ASJMPEXIT_TIME_CALCEXIT_TIME_MIN:MOVA,MINADDA,#1MOVMIN,ASJMPEXIT_TIME_CALCEXIT_TIME_HOU:MOVA,HOUADDA,#1MOVHOU,ASJMPEXIT_TIME_CALCEXIT_TIME_CALC:RET;/**********************************************************************************************/;/************************數(shù)碼管斷碼表***************************/;/**********************************************************************************************/TABLE:DB0C0H//0DB0F9H//1DB0A4H//2DB0B0H//3DB99H//4DB92H//5DB82H//6DB0F8H//7DB80H//8DB90H//9DB88H//A10DB83H//B11DB0C6H//C12DB0A1H//D13DB86H//E14DB8EH//F15DB8BH//h16DB89H//H17DB0A3H//o18DB0C1H//U19DB0AAH//M20DB0CFH//I21DB0C8H//N22DB0BFH//-23;/**********************************************************************************************/;/************************程序結(jié)束***************************/;/**********************************************************************************************/END

有模塊了更清晰了,要不然我都看不懂,對(duì)我來(lái)說(shuō)程序都太長(zhǎng)了!

0
回復(fù)
2014-04-23 09:12
@yueyunno1
;/**********************************************************************************************/;/************************帶按鍵可調(diào)時(shí)間電子鐘***************************/;/**********************************************************************************************/;;程序說(shuō)明:;/*接通電源后,數(shù)碼管顯示120000然后就開(kāi)始走時(shí),按"小時(shí)+"每按一次小時(shí)加1,按“小時(shí)-”每按一次;/*小時(shí)減1,按"分鐘+"每按一次分鐘加1,按"分鐘-"每按一次分鐘減1;/**********************************************************************************************/;/************************端口定義*************************/;/**********************************************************************************************/DISP_DUANEQUP0DISP_WEIEQUP2DISP_WEI_SECEQUP1K1EQUP2.4K2EQUP2.5K3EQUP2.6K4EQUP2.7SEC_LEDEQUP1.0HOUEQU34H//timeMINEQU35HSECEQU36H;/**********************************************************************************************/;/************************主程序***************************/;/**********************************************************************************************/ORG0000HSJMPMAINORG000BHLJMPTIME0ORG0030HMAIN:LCALLINITLOOP:LCALLDISPLAYLCALLIN_KEYSJMPLOOP;/**********************************************************************************************/;/************************初始化程序***************************/;/**********************************************************************************************/INIT:MOVSP,#60HMOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBEASETBET0SETBTR0MOVHOU,#12MOVMIN,#00MOVSEC,#00RET;/**********************************************************************************************/;/************************按鍵子程序*************************/;/**********************************************************************************************/IN_KEY:MOVA,DISP_WEIANLA,#0F0HCJNEA,#0F0H,KEY_LOOPSJMPEXIT_KEYKEY_LOOP:CALLDISPLAYMOVA,DISP_WEIANLA,#0F0HCJNEA,#0F0H,KEY_LOOP2SJMPEXIT_KEYKEY_LOOP2:JNBK1,HOU_ADDJNBK2,HOU_SUBBJNBK3,MIN_ADDJNBK4,MIN_SUBBSJMPEXIT_KEY;/*************************************/HOU_ADD:CALLDISPLAYJNBK1,HOU_ADDMOVA,HOUCJNEA,#23,HOU_ADD2MOVHOU,#00SJMPEXIT_KEYHOU_ADD2:INCHOUSJMPEXIT_KEY;/*************************************/HOU_SUBB:CALLDISPLAYJNBK2,HOU_SUBBMOVA,HOUCJNEA,#00,HOU_SUBB2MOVHOU,#23SJMPEXIT_KEYHOU_SUBB2:SUBBA,#1MOVHOU,ASJMPEXIT_KEY;/*************************************/MIN_ADD:CALLDISPLAYJNBK3,MIN_ADDMOVA,MINCJNEA,#59,MIN_ADD2MOVMIN,#00SJMPEXIT_KEYMIN_ADD2:INCMINSJMPEXIT_KEY;/*************************************/MIN_SUBB:CALLDISPLAYJNBK4,MIN_SUBBMOVA,MINCJNEA,#00,MIN_SUBB2MOVMIN,#59SJMPEXIT_KEYMIN_SUBB2:SUBBA,#1MOVMIN,ASJMPEXIT_KEY;/*************************************/EXIT_KEY:RET;/**********************************************************************************************/;/************************時(shí)間顯示子程序*************************/;/**********************************************************************************************/DISPLAY:MOVDISP_DUAN,#0FFHMOVDISP_WEI,#0FFHMOVDISP_WEI_SEC,#0FFHMOVDPTR,#TABLEMOVR0,#34HMOV40H,#2MOV41H,#0MOV42H,#0FEHDISP_1:MOVA,@R0MOVB,#10DIVABMOVCA,@A+DPTRMOVDISP_DUAN,AMOVDISP_WEI,42HACALLDELAYMOVDISP_WEI,#0FFHMOVA,42HRLAMOV42H,AMOVA,BMOVCA,@A+DPTRMOVDISP_DUAN,AMOVDISP_WEI,42HACALLDELAYMOVDISP_WEI,#0FFHINCR0INC41HMOVA,42HRLAMOV42H,ADJNZ40H,DISP_1/*******************************************************///*********************************************************************************************MOVA,@R0//這段程序是秒顯示,可以不用,在原理圖中的數(shù)碼管是獨(dú)立的MOVB,#10DIVABMOVCA,@A+DPTRMOVDISP_DUAN,AMOVDISP_WEI_SEC,#7FH//////////ACALLDELAYMOVDISP_WEI_SEC,#0FFH////////////INCR0MOVA,42HRLAMOV42H,AMOVA,BMOVCA,@A+DPTRMOVDISP_DUAN,AMOVDISP_WEI_SEC,#0BFH///////////ACALLDELAYMOVDISP_WEI_SEC,#0FFH/////////////INCR0MOVA,42HRLAMOV42H,A/*******************************************************///*********************************************************************************************RET;/**********************************************************************************************/;/************************延時(shí)子程序1S**********************/;/**********************************************************************************************/DELAY1S:MOV44H,#200DELAY21:MOV43H,#255DJNZ43H,$DJNZ44H,DELAY21RET;/**********************************************************************************************/;/************************延時(shí)子程序***********************/;/**********************************************************************************************/DELAY:MOV44H,#25DELAY1:MOV43H,#25DJNZ43H,$DJNZ44H,DELAY1RET;/**********************************************************************************************/;/************************定時(shí)器子程序***************************/;/**********************************************************************************************/TIME0:PUSHDPHPUSHDPLPUSHACCMOVTH0,#3CHMOVTL0,#0B0HINCR7MOVA,R7CJNEA,#20,EXITMOVR7,#0LCALLTIME_CALCEXIT:POPACCPOPDPLPOPDPHRETI;/**********************************************************************************************/;/************************定時(shí)器時(shí)間計(jì)算子程序***************************/;/**********************************************************************************************/TIME_CALC:MOVA,SECCJNEA,#59,EXIT_TIME_SECMOVSEC,#00MOVA,MINCJNEA,#59,EXIT_TIME_MINMOVMIN,#00MOVA,HOUCJNEA,#23,EXIT_TIME_HOUMOVHOU,#00SJMPEXIT_TIME_CALCEXIT_TIME_SEC:MOVA,SECADDA,#1MOVSEC,ASJMPEXIT_TIME_CALCEXIT_TIME_MIN:MOVA,MINADDA,#1MOVMIN,ASJMPEXIT_TIME_CALCEXIT_TIME_HOU:MOVA,HOUADDA,#1MOVHOU,ASJMPEXIT_TIME_CALCEXIT_TIME_CALC:RET;/**********************************************************************************************/;/************************數(shù)碼管斷碼表***************************/;/**********************************************************************************************/TABLE:DB0C0H//0DB0F9H//1DB0A4H//2DB0B0H//3DB99H//4DB92H//5DB82H//6DB0F8H//7DB80H//8DB90H//9DB88H//A10DB83H//B11DB0C6H//C12DB0A1H//D13DB86H//E14DB8EH//F15DB8BH//h16DB89H//H17DB0A3H//o18DB0C1H//U19DB0AAH//M20DB0CFH//I21DB0C8H//N22DB0BFH//-23;/**********************************************************************************************/;/************************程序結(jié)束***************************/;/**********************************************************************************************/END

/////////////////////////////////////////////

C語(yǔ)言程序

/////////////////////////////////////////////

 

0
回復(fù)
2014-04-23 09:12
@yueyunno1
/////////////////////////////////////////////C語(yǔ)言程序/////////////////////////////////////////////[圖片] 
/**********************************************************************************************/
/************************             帶鬧鐘可調(diào)時(shí)間電子鐘          ***************************/
/**********************************************************************************************/
/*                                            程序說(shuō)明:
/* 接通電源后,蜂鳴器連續(xù)兩次發(fā)出響聲,同時(shí)工作指示燈閃動(dòng),表示程序開(kāi)始工作,數(shù)碼管顯示0000
/*(1)設(shè)置現(xiàn)在時(shí)間
//
// 	K1為設(shè)置現(xiàn)在時(shí)間功能鍵,按一下K1鍵便進(jìn)入設(shè)置現(xiàn)在時(shí)間狀態(tài),然后,按K2鍵為小時(shí)調(diào)整;按K3
//為分鐘調(diào)整。設(shè)置完成后要按一下K4鍵,使之恢復(fù)正常的時(shí)鐘走時(shí)狀態(tài)。
//(2)設(shè)置鬧鈴時(shí)間
//
//	走時(shí)的時(shí)間設(shè)置完成并按K4鍵,進(jìn)入正常的時(shí)鐘走時(shí)狀態(tài)后再按一次K2鍵,此時(shí)K2鍵為設(shè)置鬧鈴功
//鍵,進(jìn)入設(shè)置鬧鈴時(shí)間狀態(tài)后,此時(shí)再按下K2鍵即為小時(shí)調(diào)整;按K3鍵為分鐘調(diào)整。
//(3)鬧鈴ON/OFF的設(shè)置
//
//	鬧鈴時(shí)間設(shè)置完成后,再按K4鍵,此時(shí)的K4鍵為設(shè)置鬧鈴ON/OFF鍵,若設(shè)為ON,則啟動(dòng)鬧鈴時(shí)會(huì)聽(tīng)
//連續(xù)3次發(fā)出響聲;若設(shè)為OFF,則關(guān)閉鬧鈴時(shí)會(huì)聽(tīng)到發(fā)出1次響聲。
//
//新增鬧鐘查詢(xún)功能:正常顯示時(shí)間情況下,按K3可以查詢(xún)鬧鐘時(shí)間,按K4退出,返回到時(shí)間顯示
/**********************************************************************************************/
/************************              端口定義                       *************************/
/**********************************************************************************************/
#include
typedef unsigned char U8;
typedef unsigned int  U16;
/*---------------------------------------------------------------------*/
/*--   端口定義                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
#define HIGH 1
#define LOW	 0
#define DISP_WEI P2
#define DISP_WEI_SEC P1
#define DISP_DUAN P0

sbit LED_GREEN = P1^0;

sbit BEEP	   = P3^4;

sbit DISP_BITS = P1^6;
sbit DISP_TEN  = P1^7;

sbit 	KEY1 =P2^4;
sbit 	KEY2 =P2^5;
sbit 	KEY3 =P2^6;
sbit 	KEY4 =P2^7;

bit CLOCK_BUFF,CLOCK_FLAG;

U8 TIMER_TEMP,DISP_NUM;

U8 TIME_HOU,TIME_MIN,TIME_SEC;
U8 TIME_HOU_C,TIME_MIN_C,TIME_SEC_C;

bit ADJUST_TIME_FLAG,ADJUST_CLOCK_FLAG;	  //Adjust time flag    Adjust clock flag;

U8 ADJUST_TIME[4];

/*---------------------------------------------------------------------*/
/*--   延時(shí)子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void DELAY_1MS(U16 z)
{
	U16 x,y;
	for(x=z;x>0;x--)
		for(y=123;y>0;y--); 
}
/*---------------------------------------------------------------------*/
/*--   數(shù)碼管斷碼表--共陽(yáng)數(shù)碼管    ------------------------------------*/
/*---------------------------------------------------------------------*/
U8 code TABLE[]={
0xc0,   //0
0xf9,   //1
0xa4,   //2
0xb0,   //3
0x99,   //4
0x92,   //5
0x82,   //6
0xf8,   //7
0x80,   //8
0x90,   //9
0x88,   //10	A
0x83,   //11	B  
0xc6,   //12	C
0xa1,   //13	D
0x86,   //14	E
0x8e,   //15	F
0x8b,   //16	h
0x89,   //17	H
0xa3,   //18	o
0xc1,   //19	u
0xaa,   //20	M
0xcf,   //21	I
0xc8,   //22	N
0xbf    //23	-
};

/*---------------------------------------------------------------------*/
/*--   初始化子程序             ---------------------------------------*/
/*---------------------------------------------------------------------*/
void INIT()
{
	DISP_WEI_SEC=0XFF;
	DISP_DUAN=0XFF;
	TMOD=0X01;
	TH0=(65536-50000/256);
	TL0=(65536-50000%256);
	TR0=HIGH;
	ET0=HIGH;
	EA=LOW;
	EA =HIGH;

	CLOCK_BUFF=0;
	CLOCK_FLAG=0;

	ADJUST_TIME_FLAG=0;
    ADJUST_CLOCK_FLAG=0;
	TIMER_TEMP=0;
	TIME_HOU=11;
	TIME_MIN=59;
	TIME_SEC=30;

	TIME_HOU_C=12;	   //clock
	TIME_MIN_C=0;
	TIME_SEC_C=0;

	BEEP=1;
	LED_GREEN=0;
	DELAY_1MS(1000);

	BEEP=0;
	LED_GREEN=1;
	DELAY_1MS(1000);

	BEEP=1;
	LED_GREEN=0;
	DELAY_1MS(1000);
//
//	BEEP=0;
//	LED_GREEN=1;
//	DELAY_1MS(1000);


}

/*---------------------------------------------------------------------*/
/*--   顯示子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void DISPLAY()
{
	DISP_DUAN=TABLE[TIME_HOU/10];
	DISP_WEI=0XFE;
	DELAY_1MS(2);
	DISP_WEI=0XFF;		
	DISP_DUAN=TABLE[TIME_HOU%10];
	DISP_WEI=0XFD;
	DELAY_1MS(2);
	DISP_WEI=0XFF;

	DISP_DUAN=TABLE[TIME_MIN/10];
	DISP_WEI=0XFB;
	DELAY_1MS(2);
	DISP_WEI=0XFF;	
	if(CLOCK_BUFF==0)
		DISP_DUAN=TABLE[TIME_MIN%10]&0x7f;
	else	
		DISP_DUAN=TABLE[TIME_MIN%10];
	DISP_WEI=0XF7;
	DELAY_1MS(2);
	DISP_WEI=0XFF;

	DISP_DUAN=TABLE[TIME_SEC/10];
	DISP_TEN=LOW;
	DELAY_1MS(2);
	DISP_TEN=HIGH;		
	DISP_DUAN=TABLE[TIME_SEC%10];
	DISP_BITS=LOW;
	DELAY_1MS(2);
	DISP_BITS=HIGH;
}

/*---------------------------------------------------------------------*/
/*--   調(diào)整時(shí)間顯示子程序          ------------------------------------*/
/*---------------------------------------------------------------------*/
void DISP_ADJUST_TIME()
{
	DISP_DUAN=TABLE[ADJUST_TIME[0]];
	DISP_WEI=0XFE;
	DELAY_1MS(2);
	DISP_WEI=0XFF;		
	DISP_DUAN=TABLE[ADJUST_TIME[1]];
	DISP_WEI=0XFD;
	DELAY_1MS(2);
	DISP_WEI=0XFF;

	DISP_DUAN=TABLE[ADJUST_TIME[2]/10];
	DISP_WEI=0XFB;
	DELAY_1MS(2);
	DISP_WEI=0XFF;		
	DISP_DUAN=TABLE[ADJUST_TIME[2]%10];
	DISP_WEI=0XF7;
	DELAY_1MS(2);
	DISP_WEI=0XFF;
}

/*---------------------------------------------------------------------*/
/*--   按鍵子程序             ---------------------------------------*/
/*---------------------------------------------------------------------*/
void IN_KEY()
{
	U8 IN_KEY_TEMP;
	IN_KEY_TEMP=DISP_WEI&0Xf0;
	if(IN_KEY_TEMP!=0xf0)
	{   /*-------------------------*/	//時(shí)間調(diào)節(jié)
		/*-------------------------*/
		if(KEY1==0)
		{
			while(~KEY1);
			ADJUST_TIME_FLAG=0;
			ADJUST_TIME[0]=17;
			ADJUST_TIME[1]=23;
			ADJUST_TIME[2]=TIME_HOU;
			while(~ADJUST_TIME_FLAG)
			{
				DISP_ADJUST_TIME();
				if(KEY2==0)
				{
					while(~KEY2)
					{
						DISP_ADJUST_TIME();
					}
					if(TIME_HOU<23)
						TIME_HOU++;
					else
						TIME_HOU=0;

					ADJUST_TIME[0]=17;
					ADJUST_TIME[2]=TIME_HOU;
				}
				/*-------------------------*/   
				if(KEY3==0)
				{
					while(~KEY3)
					{
						DISP_ADJUST_TIME();
					}
					if(TIME_MIN<59)
						TIME_MIN++;
					else
						TIME_MIN=0;

					ADJUST_TIME[0]=20;
					ADJUST_TIME[2]=TIME_MIN;
				}

				if(KEY4==0)
				{
					while(~KEY4)
					{
						DISP_ADJUST_TIME();
					}
					ADJUST_TIME_FLAG=1;
				}
			}
		}

		/*-------------------------*/   //鬧鐘調(diào)節(jié)
		/*-------------------------*/
		if(KEY2==0)
		{
			while(~KEY2);			  //TIME_HOU_C
			ADJUST_CLOCK_FLAG=0;
			ADJUST_TIME[0]=12;
			ADJUST_TIME[1]=16;
			ADJUST_TIME[2]=TIME_HOU_C;
			while(~ADJUST_CLOCK_FLAG)
			{
				DISP_ADJUST_TIME();
				if(KEY2==0)
				{
					while(~KEY2)
					{
						DISP_ADJUST_TIME();
					}
					if(TIME_HOU_C<23)
						TIME_HOU_C++;
					else
						TIME_HOU_C=0;

					ADJUST_TIME[0]=12;
					ADJUST_TIME[1]=16;
					ADJUST_TIME[2]=TIME_HOU_C;
				}
				/*-------------------------*/   
				if(KEY3==0)
				{
					while(~KEY3)
					{
						DISP_ADJUST_TIME();
					}
					if(TIME_MIN_C<59)
						TIME_MIN_C++;
					else
						TIME_MIN_C=0;

					ADJUST_TIME[0]=12;
					ADJUST_TIME[1]=20;
					ADJUST_TIME[2]=TIME_MIN_C;
				}

				if(KEY4==0)
				{
					while(~KEY4)
					{
						DISP_ADJUST_TIME();
					}
					ADJUST_CLOCK_FLAG=1;
				}
			}
		}
//		/*-------------------------*/   //鬧鐘查詢(xún)
		if(KEY3==0)
		{
			while(~KEY3);			  //TIME_HOU_C
			ADJUST_CLOCK_FLAG=0;
			while(~ADJUST_CLOCK_FLAG)
			{
				ADJUST_TIME[0]=TIME_HOU_C/10;
				ADJUST_TIME[1]=TIME_HOU_C%10;
				ADJUST_TIME[2]=TIME_MIN_C;
				DISP_ADJUST_TIME();

				if(KEY4==0)
				{
					while(~KEY4)
					{
						DISP_ADJUST_TIME();
					}
					ADJUST_CLOCK_FLAG=1;
				}
			}
		}
		/*-------------------------*/	//鬧鐘開(kāi)關(guān)
		/*-------------------------*/
		if(KEY4==0)
		{
			while(~KEY4)
			{
				DISPLAY();
			}
			CLOCK_BUFF=~CLOCK_BUFF;
		}
		/*-------------------------*/
	}	
}
/*---------------------------------------------------------------------*/
/*--   鬧鐘子程序               ---------------------------------------*/
/*---------------------------------------------------------------------*/
void Buzzer()
{
	if(CLOCK_BUFF==0)
	{
		if(CLOCK_FLAG==1)
			BEEP=1;
		else
			BEEP=0;
	}
	else
		BEEP=0;	
}
/*---------------------------------------------------------------------*/
/*--   鬧鐘計(jì)算子程序           ---------------------------------------*/
/*---------------------------------------------------------------------*/
void CLOCK_CALC()
{
	if(TIME_MIN==TIME_MIN_C)
	{
		if(TIME_HOU==TIME_HOU_C)
			CLOCK_FLAG=1;
		else
			CLOCK_FLAG=0;			
	}
	else
		CLOCK_FLAG=0;	
}
/*---------------------------------------------------------------------*/
/*--   主程序                   ---------------------------------------*/
/*---------------------------------------------------------------------*/
void main()
{
    INIT();
	while(1)
	{
		DISPLAY();	 //顯示
		IN_KEY();	 //按鍵
		Buzzer();	 //鬧鐘
	}		
}
/*---------------------------------------------------------------------*/
/*--   定時(shí)器0中斷程序          ---------------------------------------*/
/*---------------------------------------------------------------------*/
void timer0() interrupt 1 
{
	TH0=(65536-50000/256);
	TL0=(65536-50000%256);		   //TIME_HOU,TIME_MIN,TIME_SEC

	if(TIMER_TEMP<20)	   //20
		TIMER_TEMP++;	
	else
	{
		TIMER_TEMP=0;
		LED_GREEN=~LED_GREEN;
		if(TIME_SEC<59)
		 	TIME_SEC++;	
		else
		{
			TIME_SEC=0;
			if(TIME_MIN<59)
				TIME_MIN++;
			else
			{
				TIME_MIN=0;
				if(TIME_HOU<23)
					TIME_HOU++;
				else
				{
				 	TIME_HOU=0;
				}
			}	
		}
		CLOCK_CALC();
	}
}
/*---------------------------------------------------------------------*/
/*--   程序結(jié)束                 ---------------------------------------*/
/*---------------------------------------------------------------------*/
0
回復(fù)
2014-04-23 09:52
@yueyunno1
/**********************************************************************************************//************************帶鬧鐘可調(diào)時(shí)間電子鐘***************************//**********************************************************************************************//*程序說(shuō)明:/*接通電源后,蜂鳴器連續(xù)兩次發(fā)出響聲,同時(shí)工作指示燈閃動(dòng),表示程序開(kāi)始工作,數(shù)碼管顯示0000/*(1)設(shè)置現(xiàn)在時(shí)間////K1為設(shè)置現(xiàn)在時(shí)間功能鍵,按一下K1鍵便進(jìn)入設(shè)置現(xiàn)在時(shí)間狀態(tài),然后,按K2鍵為小時(shí)調(diào)整;按K3//為分鐘調(diào)整。設(shè)置完成后要按一下K4鍵,使之恢復(fù)正常的時(shí)鐘走時(shí)狀態(tài)。//(2)設(shè)置鬧鈴時(shí)間////走時(shí)的時(shí)間設(shè)置完成并按K4鍵,進(jìn)入正常的時(shí)鐘走時(shí)狀態(tài)后再按一次K2鍵,此時(shí)K2鍵為設(shè)置鬧鈴功//鍵,進(jìn)入設(shè)置鬧鈴時(shí)間狀態(tài)后,此時(shí)再按下K2鍵即為小時(shí)調(diào)整;按K3鍵為分鐘調(diào)整。//(3)鬧鈴ON/OFF的設(shè)置////鬧鈴時(shí)間設(shè)置完成后,再按K4鍵,此時(shí)的K4鍵為設(shè)置鬧鈴ON/OFF鍵,若設(shè)為ON,則啟動(dòng)鬧鈴時(shí)會(huì)聽(tīng)//連續(xù)3次發(fā)出響聲;若設(shè)為OFF,則關(guān)閉鬧鈴時(shí)會(huì)聽(tīng)到發(fā)出1次響聲。////新增鬧鐘查詢(xún)功能:正常顯示時(shí)間情況下,按K3可以查詢(xún)鬧鐘時(shí)間,按K4退出,返回到時(shí)間顯示/**********************************************************************************************//************************端口定義*************************//**********************************************************************************************/#includetypedefunsignedcharU8;typedefunsignedintU16;/*---------------------------------------------------------------------*//*--端口定義---------------------------------------*//*---------------------------------------------------------------------*/#defineHIGH1#defineLOW0#defineDISP_WEIP2#defineDISP_WEI_SECP1#defineDISP_DUANP0sbitLED_GREEN=P1^0;sbitBEEP=P3^4;sbitDISP_BITS=P1^6;sbitDISP_TEN=P1^7;sbitKEY1=P2^4;sbitKEY2=P2^5;sbitKEY3=P2^6;sbitKEY4=P2^7;bitCLOCK_BUFF,CLOCK_FLAG;U8TIMER_TEMP,DISP_NUM;U8TIME_HOU,TIME_MIN,TIME_SEC;U8TIME_HOU_C,TIME_MIN_C,TIME_SEC_C;bitADJUST_TIME_FLAG,ADJUST_CLOCK_FLAG;//AdjusttimeflagAdjustclockflag;U8ADJUST_TIME[4];/*---------------------------------------------------------------------*//*--延時(shí)子程序---------------------------------------*//*---------------------------------------------------------------------*/voidDELAY_1MS(U16z){U16x,y;for(x=z;x>0;x--)for(y=123;y>0;y--);}/*---------------------------------------------------------------------*//*--數(shù)碼管斷碼表--共陽(yáng)數(shù)碼管------------------------------------*//*---------------------------------------------------------------------*/U8codeTABLE[]={0xc0,//00xf9,//10xa4,//20xb0,//30x99,//40x92,//50x82,//60xf8,//70x80,//80x90,//90x88,//10A0x83,//11B0xc6,//12C0xa1,//13D0x86,//14E0x8e,//15F0x8b,//16h0x89,//17H0xa3,//18o0xc1,//19u0xaa,//20M0xcf,//21I0xc8,//22N0xbf//23-};/*---------------------------------------------------------------------*//*--初始化子程序---------------------------------------*//*---------------------------------------------------------------------*/voidINIT(){DISP_WEI_SEC=0XFF;DISP_DUAN=0XFF;TMOD=0X01;TH0=(65536-50000/256);TL0=(65536-50000%256);TR0=HIGH;ET0=HIGH;EA=LOW;EA=HIGH;CLOCK_BUFF=0;CLOCK_FLAG=0;ADJUST_TIME_FLAG=0;ADJUST_CLOCK_FLAG=0;TIMER_TEMP=0;TIME_HOU=11;TIME_MIN=59;TIME_SEC=30;TIME_HOU_C=12;//clockTIME_MIN_C=0;TIME_SEC_C=0;BEEP=1;LED_GREEN=0;DELAY_1MS(1000);BEEP=0;LED_GREEN=1;DELAY_1MS(1000);BEEP=1;LED_GREEN=0;DELAY_1MS(1000);////BEEP=0;//LED_GREEN=1;//DELAY_1MS(1000);}/*---------------------------------------------------------------------*//*--顯示子程序---------------------------------------*//*---------------------------------------------------------------------*/voidDISPLAY(){DISP_DUAN=TABLE[TIME_HOU/10];DISP_WEI=0XFE;DELAY_1MS(2);DISP_WEI=0XFF;DISP_DUAN=TABLE[TIME_HOU%10];DISP_WEI=0XFD;DELAY_1MS(2);DISP_WEI=0XFF;DISP_DUAN=TABLE[TIME_MIN/10];DISP_WEI=0XFB;DELAY_1MS(2);DISP_WEI=0XFF;if(CLOCK_BUFF==0)DISP_DUAN=TABLE[TIME_MIN%10]&0x7f;elseDISP_DUAN=TABLE[TIME_MIN%10];DISP_WEI=0XF7;DELAY_1MS(2);DISP_WEI=0XFF;DISP_DUAN=TABLE[TIME_SEC/10];DISP_TEN=LOW;DELAY_1MS(2);DISP_TEN=HIGH;DISP_DUAN=TABLE[TIME_SEC%10];DISP_BITS=LOW;DELAY_1MS(2);DISP_BITS=HIGH;}/*---------------------------------------------------------------------*//*--調(diào)整時(shí)間顯示子程序------------------------------------*//*---------------------------------------------------------------------*/voidDISP_ADJUST_TIME(){DISP_DUAN=TABLE[ADJUST_TIME[0]];DISP_WEI=0XFE;DELAY_1MS(2);DISP_WEI=0XFF;DISP_DUAN=TABLE[ADJUST_TIME[1]];DISP_WEI=0XFD;DELAY_1MS(2);DISP_WEI=0XFF;DISP_DUAN=TABLE[ADJUST_TIME[2]/10];DISP_WEI=0XFB;DELAY_1MS(2);DISP_WEI=0XFF;DISP_DUAN=TABLE[ADJUST_TIME[2]%10];DISP_WEI=0XF7;DELAY_1MS(2);DISP_WEI=0XFF;}/*---------------------------------------------------------------------*//*--按鍵子程序---------------------------------------*//*---------------------------------------------------------------------*/voidIN_KEY(){U8IN_KEY_TEMP;IN_KEY_TEMP=DISP_WEI&0Xf0;if(IN_KEY_TEMP!=0xf0){/*-------------------------*///時(shí)間調(diào)節(jié)/*-------------------------*/if(KEY1==0){while(~KEY1);ADJUST_TIME_FLAG=0;ADJUST_TIME[0]=17;ADJUST_TIME[1]=23;ADJUST_TIME[2]=TIME_HOU;while(~ADJUST_TIME_FLAG){DISP_ADJUST_TIME();if(KEY2==0){while(~KEY2){DISP_ADJUST_TIME();}if(TIME_HOU
0
回復(fù)
qinzhuai
LV.3
29
2014-04-25 13:11
@yueyunno1
23_帶鬧鐘可調(diào)時(shí)電子鐘.rar
這個(gè)文件值得收藏
0
回復(fù)
wangminwr
LV.2
30
2016-02-11 19:51

學(xué)習(xí)學(xué)習(xí)

0
回復(fù)
原偉軒
LV.1
31
2016-02-18 21:12
感謝樓主了,我正需要這個(gè)資料呢
0
回復(fù)
發(fā)