導航:首頁 > 操作系統 > 51單片機定時器程序

51單片機定時器程序

發布時間:2022-04-24 11:29:03

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

開啟定時器作為時間基準,
然後再設置幾個軟體計數器,
比如,你設定定時器每隔10毫秒中斷一次,
軟體計數器a加1,當a數值=100時,就已經定時1秒了,
軟體計數器b這時+1,當b數值=60時,就已經定時1分了,
軟體計數器c這時+1,當c數值=60時,就已經定時1小時了。
就是這樣累積的定時,
明白?

② 51單片機定時器初始化程序的基本步驟

1.設置工作方式即TMOD的值
2.計算初值寫TH TL的值
3.開啟定時器中斷和總中斷
4.啟動定時器。

③ 51單片機定時器的匯編語言程序編程,

LED BIT P1.0 ;定義LED的引腳
ORG 0000H

LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H ;定時器0工作模式1
MOV TH0,#HIGH(65536-50000) ;初值,50毫秒中斷一次
MOV TL0,#LOW(65536-50000)
SETB TR0 ;啟動定時器
SETB ET0 ;啟動定時器中斷
SETB EA ;開總中斷
MOV R2,#40 ;中斷計數初始值
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E ;R2減到0重新賦值,否則退出
MOV R2,#40
CPL LED ;LED亮滅轉換
T0E:
RETI
END

④ 試用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單片機定時器中斷程序

再次重新啟動。

⑥ 51單片機定時器編程

10ms中斷後次,計中斷的200次求反P1.1、P1.2
ORG 0000H
START: LJMP MAIN
ORG 001BH
LJMP CTC1 ……1分
ORG 0100H
MAIN : MOV TMOD,#00H ……3分
MOV R0,#200
MOV TH1, #0CH
MOV TL1, #78H
SETB EA ……3分
SETB ET1
LOOP: SETB TR1
HERE: SJMP $

CTC1: MOV TH1, #0CH ……3分
MOV TL1, #78H
DJNZ R0,RTI
MOV R0,#200
CPL P1.1
CPL P1.2
RTI: RETI
END

⑦ 51單片機定時器問題

你5ms中斷一次,而你在中斷程序里向液晶屏寫數據,耗時遠超5ms,因此中斷次序被打亂,時間就不準了。解決辦法一是加大定時時長50ms中斷一次,二是可以將寫液晶屏操作放入主程序中。中斷程序一定要短小精悍,只進行一些重要的操作,將那些耗時長的不重要的操作放主程序中,像寫液晶屏,即使被打斷,顯示錯誤的幾率是很小的。

⑧ 51單片機 定時器程序 是怎麼走的

你說的沒錯,那句主循環上面的代碼只會執行一次,執行後下面就進入了while(1)無限循環中,執行循環的指令,在循環過程中,定時器也在運行,當定時器溢出引起中斷時,程序就跳轉到中斷服務函數繼續執行,中斷服務結束後繼續在主循環中循環,並不是從主函數的最上面開始運行。

閱讀全文

與51單片機定時器程序相關的資料

熱點內容
單片機狀態周期 瀏覽:620
lua中的android 瀏覽:441
加密貴還是植發貴 瀏覽:662
陽光壓縮機繼電器 瀏覽:969
修改阿里雲伺服器密碼 瀏覽:815
lk4102加密晶元 瀏覽:588
怎麼更改app店面 瀏覽:489
設備部門如何做好伺服器 瀏覽:849
androido下載 瀏覽:478
神奇高量戰法副圖源碼 瀏覽:830
匯編語言設計凱撒密碼加密器 瀏覽:392
主次梁加密是加在哪裡 瀏覽:664
模板匹配演算法matlab 瀏覽:825
外地程序員去北京 瀏覽:24
安卓機換蘋果12如何轉移數據 瀏覽:420
互聯網ntp伺服器地址及埠 瀏覽:613
pdf到word轉換器 瀏覽:269
飛行解壓素材 瀏覽:498
51單片機指令用背嗎 瀏覽:936
unityai演算法 瀏覽:834