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

熱點內容
演算法的空間復雜度c語言 瀏覽:92
android異常處理框架 瀏覽:563
程序員總是用404調侃 瀏覽:710
後台如何安裝app 瀏覽:953
程序員殺病毒 瀏覽:435
linuxc編程的書 瀏覽:714
如何進入清風神奇寶貝伺服器 瀏覽:220
findone源碼 瀏覽:580
在線教育平台源碼該走向何處 瀏覽:910
調整標簽大小命令 瀏覽:866
proteuspdf 瀏覽:861
linux查看計算機名 瀏覽:585
如何在美圖app查看圖片尺寸 瀏覽:761
dos命令自動關機 瀏覽:58
希望之村私人伺服器怎麼買 瀏覽:488
送餓了外賣app怎麼操作 瀏覽:997
演算法崗在什麼部門 瀏覽:660
容聲冰箱有電壓縮機不工作了 瀏覽:911
linuxsftp查看用戶 瀏覽:394
collectionssort演算法 瀏覽:558