❶ 用單片機設計定時器T1,工作方式2中斷方式優先順序為高,實現P1.0輸出1khz,占空比可調的方波
#include
<reg52.h>
unsigned
char
timer1;
sbit
Tout=P1^0;
void
system_Init()
{
TMOD|=
0x21;
//
T1為方式2定時器
TH1
=
156;
//
定時初值為18,每100微秒中斷一次。
TL1
=
156;
TR1
=
1;
IE
=0x8A;
//
允許T1中斷
EA=1;
//
開放中斷
}
void
main(void)
{
system_Init();
while(1)
{
if(timer1==5)
//
半周期500微秒
{
timer1=0;
Tout=~Tout;
//
輸出求反
}
}
}
///////////////////////////////////////////
//
T1
(0.1ms)中斷
///////////////////////////////////////////
void
T1zd(void)
interrupt
3
//3
為定時器1的中斷號
1
定時器0的中斷號
0
外部中斷1
2
外部中斷2
4
串口中斷
{
//
TH1
=
28;
//11.0592
//
TL1
=
28;
timer1++;
}
❷ 怎樣用單片機定時器設計0到9秒的循環程序
#define uint unsigned int
#define uchar unsigned char
#include <reg52.h>
uint i;
uchar code TAB[]=[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main(void)
{
TMOD=0x22; /*定時器0設置為工作方式2,基準定時(256-6)/1M=0.25ms*/
TH0 =6; //賦T0的預置值6,溢出4000次就是1秒鍾
TL0 =6;
ET0=1; //打開定時器0中斷
EA=1; //打開總中斷
TR0=1; //啟動定時器
while(1) //程序循環
{
P3=TAB[(i)];//p3送數
}
}
//定時器0中斷
void timer0(void) interrupt 1 using 1
{
static uint t; //注意t的范圍,這里涉及到C51變數取值范圍這個知識點
t++;
if(t==4000) //T0的預置值6,溢出4000次就是1秒鍾,晶振12MHz
{
t=0;
i++;
i=i%10;
}
}
❸ 單片機定時器設置步驟
搜狐網
晴 / -25°
新手入門!如何設置單片機定時器?
嵌入式資訊精選
2018-12-05
訂閱
在單片機的學習過程中,單片機定時器的合理設置和應用是非常關鍵的一步,也是剛開始接觸單片機知識的新人工程師們比較容易出錯誤的一個環節之一。在今天的文章中,我們為大家總結了單片機定時器應用過程中的兩大常見問題進行實時解析,希望能夠對各位新人工程師的學習提供一定幫助。
問題一:51單片機的T0、T1定時器四種工作方式各有什麼特點?
在單片機定時器的應用過程中,定時器在進行設置時會有四種不同的工作方式,合理選擇相應的工作方式可以幫助工程師快速完成及時設置。下面我們就來逐一講解一下這四種不同的計時方式。方式0是單片機計時器的第一種計時方式,這一方式13位計數模式。方式1則採用16位計數模式,方式2採用8位自動重裝入計數模式,這兩種技術模式也是目前在單片機應用過程中最常使用的及時方式。最後一種單片機定時器的計時方式是方式3,這一模式下只有T0有的雙8位計數模式。
❹ 單片機已知定時時間如何設計PSC和ARR的值
對於STM32F4開發板,先弄清APB1的時鍾頻率是42M,是AHB時鍾168M經4分頻得到的,由於分頻系數不為1,因此CK-INT的頻率是APB1時鍾的2倍84M,可知
定時時間 us=(ARR+1)(PSC+1)/84M
取PSC=83, 剛好一個脈沖1us,則定時時間 us=(ARR+1),
定時1000US,ARR取999 定時100US,ARR取 99
16位定時器 最大可定時 65535 US。
取PSC=167, 則一個脈沖2us
取PSC=839, 則一個脈沖10us
取PSC=8399, 則一個脈沖100us 這時最大可定時 6.5535 S。
取PSC=83999 不行,超過16位寄存器的允許范圍
對於STM32F1開發板,APB1的時鍾頻率是36M,是AHB時鍾72M經2分頻得到的,由於分頻系數不為1,因此CK-INT的頻率是APB1時鍾的2倍即72M。
❺ 單片機定時器設計程序中IE表示什麼意思
void int_server(void) interrupt 1 using 1 的含義
void←這里的void表示函數類型
interrupt 0 ←這里的0表示中斷源編號
using 1 ←這里的1表示選用的寄存器組別
在MCS-51單片機中,單片機類型不同,中斷源個數也有差別.例如8051有5個中斷源,8052有6個中斷源.現以8051為例
中斷源 中斷服務入口地址 中斷標志
外部中斷INT0 0003H IE0
定時器T0 000BH TF0
外部中斷INT1 0013H IE1
定時器T1 001BH TF1
串列口TI/RI 00023H TI/RI
中斷優先順序別從上到下依次降低
默認keil c51中的函數使用的是0寄存器組, using 後跟一個0 到3 的數,對應著 4 組工作寄存器。一旦指定工作寄存器組,默認的0工作寄存器組就不會被壓棧,這將節省 32 個處理周期,因為入棧和出棧都需要 2 個處理周期。這一做法的缺點是中斷調用的所有過程都必須使用指定的同一個寄存器組,否則參數傳遞會發生錯誤。因此對於using,在使用中需靈活取捨。