導航:首頁 > 操作系統 > 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單片機定時鬧鍾相關的資料

熱點內容
vs2010編譯嵌套太深 瀏覽:980
程序員面試注意事項 瀏覽:740
scratch編譯為h5 瀏覽:208
威聯通套件編譯 瀏覽:231
清刻pdf 瀏覽:982
可編程延時發生器 瀏覽:93
濱州用伺服器織夢要怎麼上傳文件 瀏覽:866
java7與java8 瀏覽:958
真空壓縮袋什麼材質好 瀏覽:935
excel批量見建文件夾 瀏覽:556
黑馬程序員就業班筆記 瀏覽:370
單片機供電自鎖電路設計 瀏覽:56
pythongui測試工具 瀏覽:834
哈曼l7功放編程 瀏覽:220
體溫單片機 瀏覽:614
快捷鍵命令不能用了 瀏覽:349
邊界層加密網格優點 瀏覽:237
linuxvi保存文件 瀏覽:536
把視頻打包出文件夾是什麼意思 瀏覽:448
如何在藏書館app上注銷賬號 瀏覽:827