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

51單片機定時鬧鍾

發布時間:2024-01-04 06:50:06

① 怎麼用51單片機定時1個小時 好像是循環,具體匯編程序是怎樣的

簡單啊。
大致說來就是
你先開啟個定時器,根據你選用的
晶振
,計算出你要用定時器定時的基準時間,
就假設是10毫秒吧。
然後給定時器的THx,TLx寫入初值,開啟中斷,進行定時。
然後就等待中斷。
在你響應中斷的程序中,再次給單片機送入初值,
由於是10毫秒中斷一次,因此我們設置幾個「軟體計數器」
比如每此中斷,軟甲計數器+1,
例如「軟體計數器1」在中斷程序中計數100次,則是10ms*100=1s
而「軟體計數器2」在1的基礎上繼續計數100次,則是1S*100=100S
而「軟體計數器3」在2的基礎上繼續計數36次,則是100S*36=3600S=1小時。

② 試用51單片機C51編寫一電腦鍾程序,定時器用方式2中斷處理實現

第一問比較簡單,拓展功能比較繁瑣,要考慮閏年的影響,計算復雜一些。
以下是簡單的時鍾:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a=0;//中斷次數

uchar sec=0,min=0,hour=0;//時分秒
uchar date=1,mon=1, year=19;//年月日,年只計算後2 位,如2019,只考慮19
uchar tablemon[12]={31,28,31,30,31,30,31,31,30,31,30,31};//每月有多少天,2月按28天考慮
void main(void )//主程序
{
TMOD=0x01;// 定時器0工作方式一,方式2一次只能定時256us,中斷太頻繁 ,不建議使用
ET0=1;
EA=1;
TH0=(65536-50000)/256;//定時50ms
TL0=(65536-50000)%256;
TR0=1;
while(1)
{ dislpay();}//顯示子程序,與硬體連接有關
}
//中斷子程序
void Timer0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==20) {a=0;sec++;}//20次是1秒
if(sec==60) {sec=0;min++;}
if(min==60) {min=0;hour++;}
if(hour==24){hour=0;date++;}
if(date>tablemon[ mon-1]){date=1;mon++;}
if(mon==13){mon=1;year++;}
}

閱讀全文

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

熱點內容
電信校園網客戶端認證伺服器地址 瀏覽:448
掌閱怎麼看文件夾 瀏覽:341
在伴伴app裡面怎麼拜師傅 瀏覽:942
編程珠璣筆記 瀏覽:281
結束命令行 瀏覽:269
力學原理pdf 瀏覽:736
宏定義編譯後不變 瀏覽:404
如何搞免費伺服器 瀏覽:212
神經系統pdf 瀏覽:672
如何查看伺服器上的資料庫伺服器 瀏覽:195
壓縮機型號v代表什麼 瀏覽:58
旅遊類源碼 瀏覽:867
電腦伺服器類型怎麼設置 瀏覽:235
pdf炒股 瀏覽:791
伺服器地址缺少埠號什麼意思 瀏覽:535
下載需要解壓的小說用哪個軟體 瀏覽:539
廣東分布式伺服器雲主機 瀏覽:588
伺服器忙打不開怎麼辦 瀏覽:20
tif壓縮軟體 瀏覽:418
程序員那麼可愛陸漓上班第1天 瀏覽:952