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

熱點內容
程序員掉入能力陷阱 瀏覽:669
中百超市多點app如何充值 瀏覽:331
仙劍奇俠傳4codex未加密 瀏覽:194
如何搭建伺服器ss埠 瀏覽:56
國外代理伺服器地址伺服器埠密碼 瀏覽:754
phpthrownew 瀏覽:681
java從入門到精通pdf百度雲 瀏覽:55
linuxhdf5安裝 瀏覽:469
java繼承編程練習題 瀏覽:652
雲記app怎麼寫字視頻 瀏覽:598
如何進入我的世界臟小豆的伺服器 瀏覽:42
哪裡找到轉轉app 瀏覽:580
蘋果二次app怎麼注冊 瀏覽:587
國際服體驗服伺服器為什麼爆滿 瀏覽:114
微信商城模板源碼 瀏覽:436
網頁的源碼怎麼讀取 瀏覽:402
ubuntu命令打開軟體 瀏覽:761
如何實現對講頻道加密 瀏覽:351
福州8000的程序員去深圳多少 瀏覽:645
保存加密是什麼意思 瀏覽:43