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

51單片機定時器0程序

發布時間:2023-09-15 04:20:32

『壹』 51單片機中用定時器定時1毫秒,怎麼編寫

假設晶振為12MHz,不用中斷時程序語句如下:
TMOD=0x01;//定時器0工作方式1
TH0=(65536-1000)/256;//裝入初值
TL0=(65536-1000)%256;
TF0=0;//清溢出標志;
TR0=1;//啟動定時器0
while(TF0==0);//等待定時時間到
TR0=0;
TF0=0;

『貳』 使用51單片機,晶振頻率為6MHz,使用定時器0,以 方式2,在P1.0輸出周期400us, 占空

#include<reg52.h>

sbit P1_1=P1^0;//PWM輸出
unsigned int num;//定時器計時標志位,一次40us

/*********************************************************
主函數
**********************************************************/
void main()
{
TMOD=0x02; //設置定時器0工作方式2 (00000010)
TH0=256-20;//40us@6MHz 方式2為八位初值自動裝載
TL0=256-20;
EA=1;//開總中斷
ET0=1;//開定時器0中斷
TR0=1;//啟動定時器0
// num = 0;//定時器計時標志位,一次40us
while(1);//等待

}

/********************************************************
中斷函數
********************************************************/
void time0() interrupt 1
{
// TL0 = (65536-50) % 256;
// TH0 = (65536-50) / 256; //50us @12MHz
num++;
if(num>=10)num=0;//PWM周期為 40*10=400us
if(num<1)P1_1=0xff;
else P1_1=0x00;
}

周期為:400us,40us產生一次中斷,所以占空比為1:9 。占空比為1:10則產生的波形不準確。

『叄』 51單片機的,這個程序該怎麼整呀

當完成一個問題的編程後,編譯鏈接沒有問題,這時就可以進入調試階段了,調試分軟體調試和硬體調試
軟體調試可以藉助Keil軟體調試界面,在運行後觀察相應寄存器的值與我們預想的是否一致。
軟體調試重點在寄存器的內容,或者變化,如I/O口寄存器,定時器相關寄存器,串口通信相關寄存器等。
硬體調試主要是設計一些外圍調試電路用以觀察或者顯示執行過程。
如我可以用一個I/O口(P1.0)連接一個LED燈來測試單片機能否正常工作,在串口通信的埠串接LED等,指示是否有數據傳輸等等。
還有更重要的就是使用儀器進行測量調試,萬用表和示波器是基本配置,用好示波器,對調試及故障排查解除有非常大的幫助
以上都將幫助我們快速將一個項目調試成功。
麵包板調試
麵包板調試
調試

『肆』 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單片機定時中斷C語言的寫法步驟,可追加分數

程序說明:51單片機定時器0工作於方式一,定時50ms中斷一次
晶振為12M
#include

void
main
{
TOMD
=
0X01;
//配置定時器0工作於方式一
TH1
=
(65536-50000)/256;
//高八位裝入初值
TL1
=
(65536-50000)%256;
//低八位裝入初值
ET0
=
1;
//開定時器0中斷
EA
=
1;
//開總中斷
TR0
=
1;
//啟動定時器0
while(1)
{

}
}
void
Timer0_int()
interrupt
1
{
//重新裝初值
TH1
=
(65536-50000)/256;
//高八位裝入初值
TL1
=
(65536-50000)%256;
//低八位裝入初值
}
/***************************************************************************************************************/
上面是比較好理解的。如果實在要求簡潔的話,看下面的,跟上面功能一樣
#include

void
main
{
TOMD
=
0X01;
//配置定時器0工作於方式一
TH1
=
0x3c;
//高八位裝入初值
TL1
=
0xb0;
//低八位裝入初值
IE
=
0x82;//開總中斷並開定時器0中斷
TR0
=
1;
//啟動定時器0
while(1)
{

}
}
void
Timer0_int()
interrupt
1
{
//重新裝初值
TH1
=
0x3c;
//高八位裝入初值
TL1
=
0xb0;
//低八位裝入初值}

閱讀全文

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

熱點內容
java獲取網頁url 瀏覽:622
怎麼做解壓神器泡泡版 瀏覽:964
自己動手做一個c編譯器 瀏覽:927
手機如何鏈接谷歌伺服器地址 瀏覽:135
廢掉一個程序員的武功 瀏覽:247
java樹形演算法 瀏覽:639
通達信加鎖指標源碼怎麼看 瀏覽:752
將同名文件移動到部分同名文件夾 瀏覽:401
擺盪指標加壓力線源碼 瀏覽:913
新一代單片機特徵 瀏覽:768
王者的伺服器什麼時候才修好 瀏覽:279
cad歷史命令 瀏覽:39
php博客源代碼 瀏覽:24
cng壓縮機功率 瀏覽:459
pdf批量列印怎麼設置 瀏覽:78
javamap底層 瀏覽:267
賣華為雲伺服器 瀏覽:111
中穎單片機燒錄器 瀏覽:848
pdf轉換成圖片免費軟體 瀏覽:469
編程語言怎麼做出來的 瀏覽:619