⑴ 求助,51單片機定時器初值設定問題
第一句就是將,(65536-5000)的高八位賦值給TH0
第二句就是將,(65536-5000)的低八位賦值給TL0
256就是2的8次方,一個數除以256相當於右移8位。MOD是求模的意思。
⑵ 8051單片機計數器初值計算問題
TMOD=0x20 ; //定時器T1工作於方式皮鋒侍2 PCON=0; //SOMD=0 註:此處我有疑問 SCON=0xD0; //串列口工作於方式3 波特率=2^SMOD * FORC*(32*12*(256-TH1))將TH1=0F3H帶入,可以算出波特率為 4800 ,只有一半基棚 我覺得是不是搞錯燃吵了,如果SMOD的=1 的話就是 9600 了,呵呵~~
⑶ 51單片機定時器初值問題
肯定不行,你自己算一下,
由於計數器是向上計數的,定時5ms(假設1個脈沖1US,需5000個脈沖)
初值就是65536-5000,這樣再來5000個脈沖,計數器值就成了65536,產生溢出,發生中斷
因高8位(TH0)的每個1相當於256,所以它裝入的應該是(65536-5000)/256
低8位(TL0)是(65536-5000)%256,也就是不足256的部分
⑷ 8051單片機計數器初值計算問題
TMOD=0x20是使用T1作波遲敗特率發生器,初值自動載入,所以TH1=TL1, 每過(256-0xf3)=13個機器周期定時器就溢出一次,所以每s溢出1000000/6.5次,由於PCON里乎旦旦面SMOD設置為1,表示波特率倍增,所以,T1每溢出16次就會傳輸一位數據,那麼,每溢出1000000/6.5/16次發送一位數據位,所以波特率就是9615.4bps
公式是歲擾TL1 = 256- fosc(SMOD+1)/(32*12*波特率)
晶振是24MHZ,機器周期就是0.5us
⑸ 8051單片機根據波特率計算定時初值 如圖
第9位是數據校驗位,不是晌滲旁2的九次方,波特率計算喊皮公式為:
帶入數宴橡據為:
4800=11059200/(32*12*(256-T1))
T1=256-11059200/4800/32/12=250
⑹ 單片機題目
(1)分析 100Hz,周期為 10ms,半周期為 5ms,又Fosc = 12MHz,所以指令周卜旦期為 1us
所以需要跑5000個數才能跑5ms
所以定時器1工作在方式0或者方式1下才能滿足,此處採用方式1
所以初值是 65536 - 5000 = 60536 = 0xEC78
答案: 定做棗時時型胡擾間是5ms,初值是方式1下,TH0 = 0xEC,TL0 = 0x78
(2) 分析,T1在方式1下,最大可以跑65536個數字,所以最大定時時間是 65.536ms
(3)
匯編程序:
ORG 0000H
AJMP START
ORG 001BH
AJMP ISRTIMER1
START:
MOV TMOD,#10H
MOV TH1,#0ECH
MOV TL1,#78H
SETB TR1
SETB EA
SETB ET1
AJMP $
ISRTIMER1:
CPL P1.0
MOV TH1,#0ECH
MOV TL1,#78H
RETI
END
C語言程序:
#include <reg51.h>
sbit P1_0 = P1^0;
void main(void)
{
TMOD = 0x10;
TH1 = 0xEC;
TL1 = 0x78;
TR1 = 1;
ET1 = 1;
EA = 1;
while(1);
}
void ISR_Timer1(void) interrupt 3
{
P1_0 = ~P1_0;
TH1 = 0xEC;
TL1 = 0x78;
}
⑺ 單片機定時器初值問題
串口通信,波特率,可由 T1 控制。
TH1 = 0xfd;
TL1 = 0xfd;
這兩條,就是用來控褲嘩制波特率的。
0xfd,可以改成別數字,胡滲行那麼,波特率,也就變了。
----
TH0 = (65535 - 50000) / 256;
TL0 = (65535 - 50000) % 256;
這兩條,是用來定時 50ms的。
50000,可喊皮以認為是""50000微秒""。
改成別的數值,也可以。
⑻ 8051單片機計數器初值計算問題
TH1=TL1=0xf3
這正返碼個是T1為波特率世拆發生器串列速率9600的值
計算這個波特率是有公式的,
你沒看51的書嗎?
(2
SMOD)
波特率=
------------------
X
(
定時器舉哪
/
計數器1
溢出速率)
PCON中SMOD=0
n=32
n
(32或16)
PCON中SMOD=1
n=16
⑼ 假設單片機的晶體震盪器的頻率是11.0592MHz,利用定時器1採用方式1定時20ms,寫出初值
給你一個參考程序,該例題在《單片機原理與應用-基於匯編、C51及混合編程》一書的第181-183頁有匯編及C51的詳細解析。
【例7-3】設STC12C5A60S2單片機的系統時鍾頻率為12MHz,編程實現從P1.1引腳輸出周期為1s的方波。
分析:根據題目要求知,P1.1引腳的輸出應每隔500ms取反一次,即定時時間為500ms。用一個定時/計數器無法實現,可用定時/計數器T1進行10ms的攔虧定時,然後用寄存器R7對10ms定時中斷次數計數50次來實現。定時/計數器T1定時10ms,選擇對系統時鍾的12分頻模式,T1x12位為0,Tc=10ms,fosc=12MHz,可知計數次數N=10000,選擇方式1。初值X=216-10000=55536=D8F0H,則TH1=D8H,TL1=F0H。
(1)匯編程遲衡譽序:
ORG 0000H
LJMP MAIN
ORG001BH ;T1的中斷向量入口地址
LJMPT1_INT
ORG0100H
MAIN:MOVSP,#0BFH ;初始化堆棧指針
MOV TMOD,#10H ;T1工作在方式1
MOV TL1,#0F0H ;給T1寫入初值
MOV TH1,#0D8H
MOVR7,#50 ;碼段利用寄存器R7計數50次
SETB EA ;開放總中斷
SETB ET1 ;T1溢出中斷允許
SETB TR1 ;啟動T1開始工作
SJMP $
T1_INT:MOVTL1,#0F0H ;重新賦初值
MOV TH1,#0D8H
DJNZ R7,NEXT ;R7減1不為0,說明中斷次數未到50次,跳轉到NEXT
;處返回
CPL P1.1 ;已定時中斷50次, P1.1引腳取反
MOV R7,#50 ;重新賦給R7值50
NEXT:RETI
END
⑽ 一道單片機定時器賦初值的問題
建議你用一個軟體(單片機小精靈)裡面可以幫你計算初值,還能生成代碼