導航:首頁 > 操作系統 > 51單片機fc

51單片機fc

發布時間:2022-06-10 09:12:36

① 51單片機定時器的使用

51單片機定時器的GATE=1時,用外部INT0啟動定時器,當INT0=0時,
定時器T1會停止計數,這個時候讀取T1的值是可以計算出高電平的寬度的。

② 51單片機如何實現精確的定時數據採集

在定時器溢出中斷得到響應時,停止定時器計數,讀出計數值(反映了中斷響應的延遲時間),根據此計數值算出到下一次中斷時,需多長時間,由此來重裝載和啟動定時器。例如定時周期為1ms,則通常定時器重裝載值為-1000(0FC18H)。下面的程序在計算每個定時周期的精確重裝載值時,考慮了由停止計數(CLR TR1)到重新啟動計數(SETB TR1)之間的7個機器周期時間。程序中#LOW(-1000+7)和#HIGH(-1000+7)是匯編符號,分別表示-1000+7=0FC1FH這個立即數的低位位元組(1FH)和高位位元組(0FCH)。
CLR EA ;禁止所有中斷
CLR TR1 ;停止定時器T1
MOV A,#LOW(-1000+7) ;期望數的低位位元組
ADD A,TL1 ;進行修正
MOV TL1,A ;重裝載低位位元組
MOV A,#HIGH(-1000+7) ;對高位位元組處理
ADDC A,TH1
MOV TH1,A
SETB TR1 ;重啟動定時器
SETB EA ;重開中斷
此方法適用於各種原因造成的定時誤差的情況,為通用方法。
資料來源於互聯網。

③ 一、怎樣 採用51單片機(AT89C51晶元)內部定時器實現8秒計時,每 隔8秒蜂鳴器報警

#include "reg51.h"

void initTimer(void)
{
TMOD=0x1;
TH0=0xfc;
TL0=0x18;
}
uint i=0;
void timer0(void) interrupt 1
{
TH0=0xfc;
TL0=0x18;
//add your code here.
i++;
if(i>8000) //蜂鳴器響
}

void main(void)
{
initTimer();
TR0=1;
ET0=1;
//EA=1;
}

④ MSC-51單片機的計數器設置一個初值後,如FC18H,是在此基礎上進行加計數還是減計數

設置值後只要使能計數位TR0就會立即進行加計數,當計滿後變為0時就會產生中斷例如設置為8位計數器時,計數到0xff時還不會產生中斷只有在加一變為oxoo時才會溢出產生中斷

⑤ 51單片機藍牙模塊程序,哪裡錯了,好像我把0xfc換為0x00就可以。

中斷函數應該對接受、發送標志都清零,
if(TI) TI=0;else{ temp=SBUF; RI=0; SBUF=0x00;
}
還有應該在中斷裡面接收數據,在主循環裡面發送數據

⑥ 一塊51單片機如何輸出4個程序,執行4個不同功能

1、首先要明白pwm的含義,pwm就是輸出不同占空比的脈沖,
2、普通51單片機io口輸出pwm的話,可以用定時器去計時,比如要輸出100hz的占空比50%的pwm。可以配置1ms的定時器中斷,在中斷中計數,一個中斷就是1ms,100hz的脈沖,周期是10ms,50%的占空比,可以計數到5的時候把io口取反;程序如下
void
main()
{
tmod
=
0x01;
th0
=
0xfc;
tl0
=
0x18;
//
晶振選擇12mhz,配置定時器中斷1ms
et0
=
1;
tr0
=1;
ea=
1;
while(1);
//程序停止在這里,,接下來就是去響應中斷
}
void
timer0()
interrupt
1
{
static
unsigned
char
t
=
0;
th0
=
0xfc;
tl0
=
0x18;
//重新裝入初值;
t++;
if(t
<5)
{
io
=
0;
}
else
if(t
<
10)
{
io
=
1;
}
else
{
t
=
0;
}
}
上面的程序就是周期是10ms,占空比為50%的輸出了,,,需要調節占空比的話,只要改變io口電平電話的時間就可以了;
3、多個io口
輸出不同占空比的pwm;
原理是和1個的是一樣的,
多用幾個時間變數去計時,判斷就可以了。
4、上面說的是普通的51單片機,現在有很多增強型單片機,內部有pwm模塊,可以直接使用,賦值一個周期值,比如30000到特定的寄存器裡面;
然後改變第一次電平變化的時間和第二次電平變化的時間
就可以實現不同的占空比調節了。具體的可以參考下單片機的數據手冊都會有常式說明的,。如果是使用內部pwm模塊的話,需要選擇含有多路pwm功能的單片機來滿足設計要求了。

⑦ 簡述51單片機堆棧進棧和出棧操作規則

1.堆棧用於響應中斷或調用子程序時保護斷點地址,也可通過棧操作指令(push
和pop保護和恢復現場)其中入棧時先SP+1再將內容壓入當前SP所指示的堆棧單元
中,出棧則先將SP所指示的內部ram單元中內容送入直接地址定址的單元中,再將
SP減1.
2.中斷允許寄存器的功能是控制CPU對中斷的開放和屏蔽以及每個中斷源是否允許
中斷結構包括EA(CPU中斷總允許位),ES(串列口中斷允許位)ET1(定時器1中
斷允許位)EX1(外部中斷1中斷允許位)ET0(定時器0中斷允許位)EX0(外部中
斷0中斷允許位)
3.T機=12/fosc=12/(6*E6)=2us
X=2*E13-T/T機=8192-200/2=8092=1F9CH=1111
1100
1110
0B
因為TL1的高3位未用,
修正後X=1111
1100
0001
1100B=FC1CH
4.LJMP為長轉移指令,可轉向64KB程序存儲器的任一單元;SJMP為相對轉移指令
,偏移范圍-128~+127共259位元組;AJMP為絕對轉移指令,轉移目的在指令後一個
存儲單位所在2K區間內。
5.按鍵抖動:在觸點抖動期間檢測按鍵的通與斷狀態,可能導致判斷出錯,即按
鍵一次按下或釋放被錯誤認為是多次操作。
6.汽車的溫控系統,測控系統,防盜報警等多項系統中應用單片機。汽車電子中
涉及A/D和D/A轉換的模塊基本都會有單片機的存在。以下以汽車倒車雷達為例,
雷達控制部分由89C51單片機構成,前端數據採集由超聲波測距,系統由發射和接
收裝置來獲取數據,根據所測得的距離來判斷是否調用聲音報警程序,距離小於
預置點時,調用報警模塊。

⑧ 51單片機定時器FC18H H什麼意思

表示的是16進制,B表示二進制,D表示十進制,等同c語言的0xFC18

⑨ 51單片機可以做8位FC游戲機嗎

非常勉強,網上好像有驅動彩屏的俄羅斯方塊,開發fc這樣的游戲起碼也要用stm32或者樹莓派吧,不過51做個打地鼠機還是不錯的

⑩ 12MHZ51單片機定時1ms,應該是TH0=0xfc的,這段程序模擬的效果是TH0=0xfd,程序該如何改正啊急急急急

1 mS 應該用
TH0=(65536-1000)/256; // 定時時間 1mS
TL0=(65536-1000)%256;

(65536-1000) 與 -1000 不是一個概念
(65536-1000) = 64536 十六進制 為 0xFC18
-1000 為 負 1000 編譯後的 十六進制 會變成 0xFB18

閱讀全文

與51單片機fc相關的資料

熱點內容
手機程序加密有什麼作用 瀏覽:178
求黑馬程序員python教程 瀏覽:528
androidmvvm優缺點 瀏覽:894
unix下編譯庫文件 瀏覽:633
程序員的u盤 瀏覽:237
android根據經緯度獲取城市 瀏覽:564
python使用解釋器還是編譯器 瀏覽:358
以下關於有加密演算法及密鑰描述 瀏覽:219
linuxgethostname 瀏覽:416
程序員多數有對象 瀏覽:131
單片機延時程序計算 瀏覽:444
編譯原理語法翻譯 瀏覽:504
pr編譯出錯渲染存在偏移 瀏覽:262
如何製作自家的app 瀏覽:199
推薦一個解壓軟體rar解壓幫手 瀏覽:210
wd文檔加密器 瀏覽:748
伺服器上傳壓縮包一般是什麼格式 瀏覽:333
發送加密文件密碼幾位數 瀏覽:160
樹洞app怎麼樣 瀏覽:175
vivo編譯時間可以改么 瀏覽:150