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單片機,P2口外接8個發光二極體,4個共陽極接法,4個共陰極接法,如圖所示.要求分別用C語言
雖然看不到圖但是這種問題實在不難,給你程序等於害你,給你點思路自己寫才能幫助你:首先設定好定時器1,如果晶振是12MHz,TH1=(65536-50000)/256,TL1=(65536-50000)%6,TMOD=0x10,主要就這三步,配置好了定時器1。然後給P2一個初值0xf0,然後進入主程序死循環等待中斷,中斷函數重裝初值後,i ,當i增到20說明1s時間到,i=0,P2=~P2。具體思路給你了。
希望我的回答能幫助到你。
⑶ 51單片機定時器的使用
51單片機定時器的GATE=1時,用外部INT0啟動定時器,當INT0=0時,
定時器T1會停止計數,這個時候讀取T1的值是可以計算出高電平的寬度的。
⑷ 51系列單片機定時/計數器初始化的四個步驟
1、設置寄存器TMOD
2、計算初始值
3、開放中斷
4、啟動定時器
⑸ 51單片機代碼(定時器/計數器實驗)求詳細注釋,非常謝謝
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0_INT
ORG 0100
MAIN:
MOV TMOD,#01H ;定時器0設為模式1
MOV TH0,#0D8H ;賦初值(65536-10000)
MOV TL0,#0F0H
MOV A,#00H ;A=0
MOV P1,A ;P1=A
MOV R0,#20 ;R2=20
SETB EA ;開中斷
SETB ET0 ;開定時器0中斷
SETB TR0 ;啟動定時器0
LOOP: NOP ;空操作
LJMP LOOP ;轉LOOP
T0_INT:
MOV TH0,#0D8H ;重賦初值
MOV TL0,#0F0H
DJNZ R0,OUT ;R0減1不為0轉OUT
MOV R0,#20H ;R0重賦初值
CPL A ;A取反
MOV P1,A ;P1=A
OUT: RETI
END
;該程序結果在P1上產生周期為400毫秒的脈沖輸出,控制LED燈的話,以400毫秒周期閃爍
⑹ 關於MCS-51系列單片機定時器/計數器實驗的幾個問題
(1)計數和定時有什麼區別?怎樣選擇和設定?
(2)計數或定時初始值怎樣計算與裝入?
(3)定時器T0和T1各有哪幾種工作方式?工作原理如何?
(4)怎樣啟動定時器?
這些,夠寫十多頁了。
⑺ 51單片機實驗(關於定時器計數器)
6mz的晶振 可算出一個時鍾周期為2微秒,200毫秒去除一下2微秒就是10000,然後吧10000取16進制為 27A0 ,用 FFFF減27A0再加1 得 C860,用定時方式一,TL0 ,#60H
TH0, #C8H
⑻ 利用51單片機,4個數碼管設計一個計時器,要求在數碼管上顯示的數據從0開始每1秒鍾加1。
共陽數碼管中斷程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]=
{
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x83,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uint num,a;
uchar ,shi,ge;
void init();
void delay(uint);
void display(uchar,ucharshi,ucharge);
uint fb();
uint fs();
uint fg();
void main()
{
init();
while(1)
{
display(fb(),fs(),fg());
}
}
void init()
{
num=0;
a=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void display(uchar,ucharshi,ucharge)
{
P1=0xfd;
P0=table[];
delay(1);
P1=0xfb;
P0=table[shi];
delay(1);
P1=0xf7;
P0=table[ge];
delay(1);
}
void timeoff() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65526-50000)%256;
a++;
if(a%20==0)
{
num++;
if(num==999)
{
num=0;
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uint fb()
{
=num/100;
return ;
}
uint fs()
{
shi=num%100/10;
return shi;
}
uint fg()
{
ge =num%100%10;
return ge;
}
(8)51單片機定時器實驗擴展閱讀
2個可編程定時/計數器·5個中斷源,2個優先順序(52有6個)
一個全雙工串列通信口
外部數據存儲器定址空間為64kB
外部程序存儲器定址空間為64kB
邏輯操作位定址功能·雙列直插40PinDIP封裝
單一+5V電源供電
CPU:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能寄存器;
RAM:用以存放可以讀寫的數據,如運算的中間結果、最終結果以及欲顯示的數據;
ROM:用以存放程序、一些原始數據和表格;
I/O口:四個8位並行I/O口,既可用作輸入,也可用作輸出
T/C:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;
五個中斷源的中斷控制系統;
一個全雙工UART(通用非同步接收發送器)的串列I/O口,用於實現單片機之間或單片機與微機之間的串列通信;
片內振盪器和時鍾產生電路,石英晶體和微調電容需要外接。最佳振盪頻率為6M—12M。
參考資料來源:網路-51單片機
⑼ 51單片機的定時器是怎麼設置的
單片機定時器的設置步驟為:
1、設置定時器的工作模式,共4種工作方式,兩種模式(計數器/定時器)。比如:
MOV TMOD,#01;設置定時器0位定時器模式,工作方式1
2、根據定時時間賦初值。比如定時10毫秒,那麼如果12M晶振的話是10000個機器周期。定時器是溢出申請中斷,所以用溢出值減去定時周期為初值。
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
3、開啟中斷、定時器。
SETB ET0
SETB EA
SETB TR0
⑽ HC600S-51單片機開發板 定時器計數器實驗
看樣子是想要實現LED燈閃爍。定時器1定時時間到產生中斷,取反P1.1引腳,但是沒有中斷返回,而是一直高速取反P1.1,幾乎看不出引腳狀態變化。