當前位置:首頁 » 存儲配置 » 51單片機秒錶存儲時間

51單片機秒錶存儲時間

發布時間: 2022-03-31 07:35:48

① 單片機怎麼存儲時間和數據

ROM,FLASH等掉電可存儲的單元。

② 51單片機的定時器和計數器分別定時和計數的周期是多長時間,這個脈沖周期有規定嗎

定時器/計數器本質上都是計數器,只不過數的東西不一樣.
定時器/計數器做為定時器來用的時候,是數的單片機時鍾的脈沖個數,也就是說,單片機的時鍾做為定時器/計數器的時鍾源,因為單片機的時鍾一般比較固定,因此,我們就知道一個脈沖佔多長時間,因為根據脈沖的個數,就能推算出時間,就能做定時器用.
比如:12MHz的傳統51單片機,一個脈沖周期是1us,如果定時器數了10個脈沖周期就中斷了,說明10us時間到了.

而作為計數器的時候,數的是來自引腳上的脈沖,也就是說,是引腳上的脈沖做為定時器/計數器的時鍾源,如果這個脈沖是規律的,周期是固定的,那麼,也可以實現定時,比如,如果引腳的脈沖是10KHz的,那麼,一個脈沖周期是100us,如果定時器/計數器數了10個脈沖周期就中斷,說明1ms時間到了.

但是,如果引腳上的脈沖頻率不固定,時高時低,那麼,就沒辦法根據脈沖個數算出時間來,此時,就只是單純的計數功能.

總而言之,定時器/計數器本質都是對脈沖計數,只是作為定時器,數的是內部的脈沖,做為計數器,數的是外部的脈沖,如果脈沖固定,外部脈沖也可以用來定時.贊同0|評論

③ 用51單片機實現時鍾功能程序

anEQUP0;

weiEQUP2;

keyBITP3.7;

ORG0000H

AJMPMAIN;絕對轉移指令,2kb范圍(11位)內跳轉LJMP16位64kb范圍內跳轉

;短轉移指令的功能是先使程序計數器PC加1兩次(即:取出指令碼),然後把加2後的地址和rel相加作為目標轉移地址。因此,短轉移指令是一條相對轉移指令,是一條雙位元組雙周期指令

ORG0030H;指明後面的程序從程序存儲器的0030H單元開始存放

DELAY200US:;@11.0592MHz

NOP

NOP

NOP

PUSH30H

PUSH31H

MOV30H,#2

MOV31H,#179

NEXT:

DJNZ31H,NEXT

DJNZ30H,NEXT

POP31H

POP30H

RET

ORG0060H

;DISPLAY子程序

DISPLAY:

PUSHACC;不能寫A,此處ACC代表地址,push後跟地址,代表把地址內的內容壓入棧中

PUSH00H;R0

PUSH06H;R6

PUSH07H;R7

PUSH83H;DPH

PUSH82H;DPL

MOVR6,#01H;位選數據,01指的是緩沖區最低位數據

MOVR7,#08H;循環次數

FLAG:

MOVan,#0x00;消影

MOVA,R6

CPLA;取反

MOVwei,A;位選

MOVA,#disBufDat

ADDA,R7

SUBBA,#0X08

MOVR0,A

MOVA,@R0;讀出要顯示的數據到A

MOVDPTR,#disTab

MOVCA,@A+DPTR;從rom取數據,取出要顯示的數據對應的段碼

MOVan,A;段選

MOVA,R6

RLA

MOVR6,A;更新下一次位選

LCALLDELAY200US

DJNZR7,FLAG

POP82H;DPL

POP83H;DPH

POP07H

POP06H

POP00H

POPACC

RET

ORG0100H

;定時器中斷0初始化

T0_INIT:

MOVTMOD,#0X01

MOVTH0,#0X3C

MOVTL0,#0XB0

SETBEA

SETBTR0

SETBET0

RET

ORG0130H

;T0中斷處理程序

INT_TIMERE0:

PUSHACC

SETBRS0

MOVTH0,#0X3C

MOVTL0,#0XB0

INCR0

MOVA,R0

SUBBA,#0X14

JBCY,SECFLAG

MOVR0,#0x00

INCsec

SECFLAG:

CLRRS0

POPACC

RETI

ORG000BH;定時器/計數器T0入口地址

LJMPINT_TIMERE0;跳轉到定時器/計數器中斷服務程序中去

disTab:DB0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40;0-f,空白,橫杠的段選數據

disBufDatEQU47H;定義顯示緩沖數據變數區,8個

disBufDatHeadEQU40H//單片機上顯示在最左邊

secEQU48H

;主程序

ORG0180H

MAIN:

MOVSP,#0X60;將0x60到0x7f設為堆棧區

LCALLT0_INIT

MOVdisBufDatHead,#0X00

MOVdisBufDatHead+1,#0X00

MOVdisBufDatHead+2,#0X11

MOVdisBufDatHead+3,#0X11

MOVdisBufDatHead+4,#0X11

MOVdisBufDatHead+5,#0X11

MOVdisBufDatHead+6,#0X11

MOVdisBufDatHead+7,#0X11

MOVsec,#0X3A

WHILE:

JBkey,KEYSCAN

MOVsec,0x00

KEYSCAN:

MOVA,sec

SUBBA,#3CH;超過60s歸零

JBCY,CLEAR

MOVsec,#0X00;clr加ram地址無效

CLEAR:

MOVA,sec

MOVB,#0AH

DIVAB;A/B,商存到A中,余數存B中

MOVdisBufDatHead,A

MOVdisBufDatHead+1,B

LCALLDISPLAY

LJMPWHILE;循環

END;

(3)51單片機秒錶存儲時間擴展閱讀

51機器周期和指令周期

1、機器周期是指單片機完成一個基本操作所花費的時間,一般使用微秒來計量單片機的運行速度,51單片機的一個機器周期包括12個時鍾振盪周期,也就是說如果51單片機採用12MHz晶振,那麼執行一個機器周期就只需要1μs;如果採用的是6MHz的晶振,那麼執行一個機器周期就需要2μs。

2、指令周期是指單片機執行一條指令所需要的時間,一般利用單片機的機器周期來計量指令周期。在51單片機里有單周期指令(執行這條指令只需一個機器周期),雙周期指令(執行這條指令只需要兩個機器周期),四周期指令(執行這條指令需要四個機器周期)。

除了乘、除兩條指令是四周期指令,其餘均為單周期或雙周期指令。也就是說,如果51單片機採用的是12MHz晶振,那麼它執行一條指令一般只需1~2微秒的時間;如果採用的是6MH晶振,執行一條指令一般就需2~4微秒的時間。

④ 設計一個單片機秒錶,該秒錶可顯示0.0到59.9秒的時間

P3接字碼,P2接位碼。沒有加按鍵功能。

#include<reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

//數碼管字型表,對應0,1,2,3,4,5,6,7,8,9//

ucharTable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uintData[2]={0,0};

dataBuffer[1]={0};

uintTIME=0;//倒計時時間

uintj;

sbitBEEP=P1^2;

sbitPoint=P3^7;

voidDelayMs(uinti)

{

for(;i!=0;i--)

{for(j=100;j!=0;j--){;}}

}

voidDisplay(uint*p)//動態顯示函數,參數p為待顯示的數組名

{

P2=0xfe;

P3=Table[p[2]];//送字型碼

DelayMs(3);

P2=0xfb;

P3=Table[p[1]];//送字型碼

Point=0;

DelayMs(3);//顯示延時

P2=0xfd;

P3=Table[p[0]];

DelayMs(3);

}

voidProcess(uinti,uint*p)

{

p[0]=i/100;

i=i%100;

p[1]=i/10;

p[2]=i%10;

}

voidmain(void)

{

EA=1;IT1=1;ET0=1;

TMOD=0x01;//T0方式1計時0.01秒

TH0=65536-5000/256;

TL0=65536-5000%256;

TR0=1;//開中斷,啟動定時器

while(1)

{

Process(TIME,Data);

Display(Data);

if(TIME>599)

{

TIME=0;

}

}

}

/*定時計數器0的中斷服務子程序*/

voidintserv1(void)interrupt1using1

{

TH0=65536-5000/256;

TL0=65536-5000%256;

Buffer[0]=Buffer[0]+1;//定時器T0的低四位賦值

if(Buffer[0]==10)//百分秒進位

{

TIME+=1;

Buffer[0]=0;

}

}

⑤ 51單片機在電子鍾程序中添加秒錶(c語言) 答對100追分。

就在定時器中斷裡面再計算一個秒錶時間值的if判斷就行了,上學的時候做過

⑥ 用51單片機做電子秒錶,要求能多次計時,能查詢計時時間

你好!是模擬還是有實物,顯示用什麼?程序是c語言寫嗎

⑦ 用51單片機1602做一個可以存儲系統的秒錶

儲存系統?掉電保存嗎?
這樣的話,單片機要帶有EEPROM的,沒有的話就要外加一個EEPROM晶元。

秒錶不難做啊

⑧ 51單片機怎麼實現計時

嘿嘿 還是讓俺來幫你解決吧
1 關於定時器定時時間的計算問題:
如果使用的是12M晶振計算,指令周期1uS,定時器是加1計數器,即是對內部時鍾即指令周期脈沖計數 每當1uS到時,計數器加1。
假設 定時器的初始值=X,則每到1uS 計數器的值就加1 ,則計數器值=X+1+1+...+1 值越來越大,最後達到FFFFH+1 就會產生溢出 結果計數器值回0(FFFFH+1=65536)
可以推出 定時時間=計數的1的個數×1uS=(65536—X )1 uS
結論: 定時時間跟初始值即時間常數X有關。
如果要定時0.5毫秒=500uS 根據定時時間公式 500=(65536—X )
即X=(65536-500) 一般把高8位送TH0 即 (65536-500)/256
把 (65536-500)%256即除上256後的余數 即低8位數送給TL0
每當定時時間到 計數器值都回0 必須重新送時間常數X
2每條指令的時間怎麼算? 答復:
可以查指令表 每一條指令的執行時間的周期數 都是固定的 如 NOP 為一個機器周期
MOV R6,#200; 為2個機器周期
機器周期=12/晶振頻率 如果晶振頻率=12MHZ 則機器周期=1 uS
就可以知道 ; 執行NOP指令的執行時間為 1 uS
執行MOV R6,#200指令的執行時間為 2 uS
因此 是可以精確計算出指令的延時時間的
呵呵 就介紹這些吧 滿意就 給加分吧

⑨ 51單片機 定時時間

65535*2=131070微秒,每個周期為2微秒*65535個周期。你算算就對了,我是記住的12M時周期為1微秒,6M就為2微秒,24M為0.5微秒

⑩ 關於51單片機 的秒錶/時鍾計時器設計摘要

本設計以AT89S51單片機為核心晶元,與型號為1602的液晶顯示器構成數字電子時鍾電路。AT89S51是一個低功耗,高性能CMOS 8位單片機,片內含4K Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件採用ATMEL公司的高密度、非易失性存儲技術製造,兼容標准MCS-51指令系統及AT89C51引腳結構,晶元內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應用系統提供高性價比的解決方案.液晶顯示器以其微功耗、體積小、顯示內容豐富、超薄輕巧的諸多優點,在袖珍式儀表和低功耗應用系統中得到越來越廣泛的應用。

熱點內容
c語言的認識 發布:2025-02-01 11:58:03 瀏覽:520
svn連接伺服器地址 發布:2025-02-01 11:51:31 瀏覽:416
對源程序為什麼要編譯 發布:2025-02-01 11:47:46 瀏覽:218
sql表添加記錄 發布:2025-02-01 11:22:08 瀏覽:864
word編輯加密 發布:2025-02-01 11:18:53 瀏覽:571
php變數文本 發布:2025-02-01 11:10:46 瀏覽:426
音悅台上傳mv 發布:2025-02-01 11:05:02 瀏覽:516
微信如何設置訪問限制 發布:2025-02-01 10:43:06 瀏覽:335
b站緩存視頻下架還有嗎 發布:2025-02-01 10:37:52 瀏覽:940
e卡通初始密碼是多少 發布:2025-02-01 10:31:55 瀏覽:127