導航:首頁 > 操作系統 > 51單片機外部計數

51單片機外部計數

發布時間:2022-06-12 06:57:07

1. 51單片機使用T0和T1外部脈沖計數,C語言如何編程

1、使用T0和T1外部脈沖計數,控制兩個電機,到1700個脈沖電機停止,
--統計脈沖個數,用外部中斷更好。
--T0和T1,留著定時用。
用四個按鍵控制,按鍵1控制電機正轉,按鍵2控制電機反轉,按鍵3控制電機1正轉,按鍵4控制電機2正轉。


2、常式:

#include<reg51.h>
sbitk1=?;//自己定義
sbitk2=?
sbitk3=?
sbitk4=?
sbitDIAN1=?
sbitDIAN2=?
sbitDIAN3=?
sbitDIAN4=?
sbitSEN1=?
sbitSEN2=?
voiddelay(unsignedintx)
{
unsignedintm,n;
for(m=x;m>0;m--)for(n=115;n>0;n--);
}
voidmain(void)
{
TMOD=0x55;
IE=0x8a;
while(1){
if(!k1){
delay(10);
if(!k1){
while(!k1);
TH0=(65536-1700)/256;
TL0=(65536-1700)%256;
SEN1=0;
DIAN1=0;DIAN2=1;
SEN1=1;
TR0=1;
}
}
if(!k2){
delay(10);
if(!k2){
while(!k2);
TH0=(65536-1700)/256;
TL0=(65536-1700)%256;
SEN1=0;
DIAN1=1;DIAN2=0;
SEN1=1;
TR0=1;
}
}
if(!k3){
delay(10);
if(!k3){
while(!k3);
TH1=(65536-1700)/256;
TL1=(65536-1700)%256;
SEN2=0;
DIAN3=0;DIAN4=1;
SEN2=1;
TR1=1;
}
}
if(!k4){
delay(10);
if(!k4){
while(!k4);
TH1=(65536-1700)/256;
TL1=(65536-1700)%256;
SEN2=0;
DIAN3=1;DIAN4=0;
SEN2=1;
TR1=1;
}
}
}
}

2. 51單片機怎麼實現外部脈沖計數

#include<reg51.h>
#define uint unsigned int
uint dat=0,time=0;
bit flag=0;
sbit key=P1^0;
void int00() interrupt 0
{
dat++;
}
void t0isr() interrupt 1
{
time++;
if(time>=400)flag=1;
}
main()
{
TMOD=0x22;
TH0=6;
TL0=6;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x40;
ET0=1;
EX0=1;
IT0=1;
PX0=1;
EA=1;
while(1)
{
if(key==0)
{
while(key==0);
TR0=1;
while(flag==0);
TR0=0;
flag=0;
SBUF=dat;
while(TI==0);
TI=0;
SBUF=dat>>8;
while(TI==0);
TI=0;
}
}
}

3. 51單片機 對外部脈沖計數是用中斷口INT0還是定時計數器T0實現它們有什麼區別嗎

INT0中斷可以計數,但每來一個計數脈沖,程序都需要進中斷處理程序,軟體處理計數。T0計數則是每來一個計數脈沖,硬體自動計數,只有在計數器溢出時才觸發中斷處理。
所以,要計數肯定是用T0更好一些,但前提是T0沒有做別的功能用。有時用INT0計數,不是INT0好不好用的問題,是51的計數器都被佔用了,沒辦法只好用INT0加軟體計數湊合了。

4. 怎麼實現mcs-51單片機對外部脈沖的計數功能

外部脈沖接單片機的外部中斷或2
個定時/計數器都可以計數的。

5. 51單片機如何採用外部計數器進行多路舵機

現在單片機一個定時器可以產生4路同頻率PWM信號,剛好舵機的頻率又是固定的,一個定時器可以控制4個舵機,2個定時器控制8個舵機沒有壓力。高級的單片機有如STM32F4有多達14個定時器,大部分定時器都可產生4路PWM信號,控制舵機的數量更多。

6. 80C51單片機外部脈沖計數怎麼設置

把TMOD C/T設置為1就可以了

TMOD 示意表格
下面的表格列出了TMOD各個位的名字,點擊下面的1和0就可以給各個位置1或者置0,控制兩個定時器/計數器的工作方式。
7 6 5 4 3 2 1 0
GATE C/T M1 M0 GATE C/T M1 M0

然後在對應的T0,T1輸入脈沖就可以計數了
還可以通過M0,M1設置工作在什麼方式,方式同定時器。

7. 51單片機定時/計數器的定時功能和計數功能有何不同

1、產生的脈沖不同

計數功能:單片機外部觸發的脈沖。

定時功能:單片機內部在晶振的觸發下產生的脈沖。



2、工作方式不同

計數功能:當定時/計數器設置為計數工作方式時,計數器對來自輸入引腳T0(P3.4)和T1(P3.5)的外部信號計數,外部脈沖的下降沿將觸發計數,檢測一個由1到0的負跳變需要兩個機器周期。

定時功能:計數器對內部機器周期計數,每過一個機器周期,計數器增1,直至計滿溢出。

3、應用范圍不同

計數功能:對一些外部事件計數時則採用。

定時功能:需要准確計算時間時採用。

8. 我想用51單片機做一個外部計數的程序,每當高電平到來計數一次,記滿5次由單片機控制另一個引腳輸出。

利用 T1 / P3.5 輸入(下降沿計數)
初始化:

TMOD = 0x60; //計數,自裝載模式
TH1=256-5;
TL1=256-5;
TR1=1;
ET1 = 1;
EA = 1;
......
void timer1() interrupt 3 //溢出一回就把埠電平翻轉一下
{
P1 = ~P1;
}

9. 關於51單片機的計數器

首先將定時器設置為計數器模式。
其次,將外部脈沖接入到相應定時器的輸入端。
這樣就可以使用計數器了。

10. 51單片機計數器怎麼用

51單片機是基礎入門的一個單片機,還是應用最廣泛的。

51單片機的定時/計數器的概念

單片機中,脈沖計數與時間之間的關系十分密切,每輸入一個脈沖,計數器的值就會自動累加1,只要相鄰兩個計數脈沖之間的時間間隔相等,則計數值就代表了時間的流逝,因此,單片機中的定時器和計數器其實是同一個物理的電子元件,只不過計數器記錄的是單片機外部發生的事情(接受的是外部脈沖),而定時器則是由單片機自身提供的一個非常穩定的計數器,這個穩定的計數器就是單片機上連接的晶振部件;MCS-51單片機的晶振經過12分頻之後提供給單片機穩定脈沖;晶振的頻率是非常准確的,所以單片機的計數脈沖之間的時間間隔也是非常准確的。
51單片機的定時/計數器的工作原理
加1計數器輸入的計數脈沖有兩個來源,一個是由系統的時鍾振盪器輸出脈沖經12分頻後送來;一個是T0或T1引腳輸入的外部脈沖源。
作為定時器使用時,定時器計數8051單片機片內振盪器輸出經過12分頻後的脈沖個數,即:每個機器周期使定時器T0/T1的寄存器值自動累加1,直到溢出,溢出後繼續從0開始循環計數;所以,定時器的解析度是時鍾振盪頻率的1/12;
作為計數器使用時,通過引腳T0(P3.4)或T1(P3.5)對外部脈沖信號進行計數,當輸入的外部脈沖信號發生從1到0的負跳變時,計數器的值就自動加1由於檢測一個從1到0的下降沿需要2個機器周期,因此要求被采樣的電平至少要維持一個機器周期。當晶振頻率為12MHz時,最高計數頻率不超過1/2MHz,即計數脈沖的周期要大於2微秒。;計數器的最高頻率一般是時鍾振盪頻率的1/24;
由此可知,不論是定時器還是計數器工作方式,定時器T0和T1均不佔用CPU的時間,除非定時器/計數器T0和T1溢出,才可能引起CPU中斷,轉而去執行中斷處理程序。所以說,定時器/計數器是單片機中效率高而工作靈活的部件。

閱讀全文

與51單片機外部計數相關的資料

熱點內容
解壓視頻白頭小哥 瀏覽:748
cadq命令 瀏覽:954
python連接本地資料庫報錯 瀏覽:194
手機模擬加密禁卡操作 瀏覽:105
電荷數怎麼演算法 瀏覽:589
cad如何打開命令行 瀏覽:150
php圖片限制大小 瀏覽:164
程序員一夜未歸 瀏覽:593
蘋果xsmaxapp怎麼不顯示更新 瀏覽:600
蘋果app怎麼清除角標 瀏覽:483
解壓屁屁玩具臟了怎麼辦 瀏覽:670
演算法識別自動折疊 瀏覽:9
dos命令遍歷文件 瀏覽:456
翻譯整個pdf 瀏覽:198
怎麼給解壓軟體授權 瀏覽:621
怎麼換手機桌面壁紙安卓 瀏覽:957
pdf轉換閱讀器 瀏覽:344
特斯拉怎麼app預約充電 瀏覽:498
安卓怎麼錄像更清晰 瀏覽:919
怎麼伺服器輸入命令沒有顯示出來 瀏覽:799