導航:首頁 > 操作系統 > 單片機脈沖指令怎麼寫

單片機脈沖指令怎麼寫

發布時間:2022-12-23 05:55:18

單片機計數器編程如何計數脈沖,用C語言

每50ms來了多少脈沖,那定時器就不能50ms中斷一次,盡量快的中斷會比較好,2個變數計數,一個計算50ms,一個累加脈沖

㈡ 求大神幫忙寫個51單片機的接收脈沖程序。

用計數器T1的中斷控制蜂鳴器發出1KHz音頻
#include<reg51.h> // 包含51單片機寄存器定義的頭文件
sbit sound=P3^7; //將sound位定義為P3.7引腳
/**************************************************************
函數功能:主函數
**************************************************************/
void main(void)
{
EA=1; //開總中斷
ET1=1; //定時器T1中斷允許
TMOD=0x10; //TMOD=0001 000B,使用定時器T1的模式1
TH1=(65536-921)/256; //定時器T1的高8位賦初值
TL1=(65536-921)%256; //定時器T1的高8位賦初值
TR1=1; //啟動定時器T1
while(1)//無限循環等待中斷
;
}
/**************************************************************
函數功能:定時器T1的中斷服務程序
**************************************************************/
void Time1(void) interrupt 3 using 0 //「interrupt」聲明函數為中斷服務函數
{
sound=~sound;
TH1=(65536-921)/256; //定時器T1的高8位重新賦初值
TL1=(65536-921)%256; //定時器T1的高8位重新賦初值
}
改改 就成了你的

㈢ 如何編程實現51單片機每隔 t 時間發出一個脈沖求C語言詳細編程。。。

給你個基本框架,根據你的具體要求再修改吧。使用定時1中斷實現,精度比較高。
#include <reg52.h>

#define PERIODH (65536l-10000l)/0X100 //設10ms中斷1次TH1初值
#define PERIODL (65536l-10000l)%0X100 //設10ms中斷1次TL1初值

sbit P1_1 = 0x91; //假設從P1.1輸出脈沖

unsigned int iCount; //延時間隔時間變數
unsigned int iPulseCount; //脈沖脈寬時間變數

void timer1() interrupt 3 using 1
{//定時器每0.01秒一次中斷

TH1 = PERIODH;
TL1 = PERIODL;

if(iCount)
{//計數未到0,計數器-1
iCount--;
}
if(iPulseCount)
{//計數未到0,計數器-1
iPulseCount--;
}

}
main()
{

TMOD = 0X10;//方式1
EA = 1;//總中斷允許
ET1 = 1;//定時器1中斷允許
TR1 = 1;//啟動定時器1

P1_1 = 0; //脈沖輸出埠,假設輸出正脈沖,預置為低電平
while(1)
{
iCount = 200;//每間隔200*10ms = 2秒一個脈沖,t值變化改此處
while(iCount);//等待2秒中
P1_1 = 1; //置為高電平,輸出正脈沖
iPulseCount = 10;//每間隔10*10ms = 100ms一個脈沖,脈寬變化改此處
while(iPulseCount);//高電平保持100ms
P1_1 = 0; //置為低電平,輸出正脈沖結束
}
}

㈣ 單片機C編程:計算脈沖數為何這么寫

程序不全,但我推測程序原理大致是這樣的,2個定時器,1個計內部脈沖是定時器,一個計外部脈沖,是計數器,定時器每中斷一次將int_flag=1
主程序里將其清0,並且讀計數器當前的值(讀之前程序里應加TR0=0),加上中斷次數所代表計數值即為總計數值(由於計數器中斷一次是65536個脈沖,所以有T0Count*65536),然後分離出個十百千萬十萬等即可,程序里只分離出個十百千是不對的,是舍大取小,如果數碼管不夠,可只顯示高位部分,除非計數器所測脈沖頻率很低,那時計數器不會溢出T0Count=0,但 sum值也有可能上萬

㈤ 單片機T0口怎麼計數脈沖,誰能給個簡單的程序

很簡單的。
比如 計o埠的脈沖,就把 o埠連到 T0 (P3.4)
假如10s計一次。
定時10s,10s到了。
你就 MOV A,TL0。
TIME2: DJNZ T_10S,time_ret ;10s
MOV T_10S,#10
MOV A,TL0 ;A放置脈沖總數

㈥ 單片機採集脈沖信號編程

樓上回答有誤,很明顯輸出入信號多於2路,用普通IO口可以。
程序中主要做好掃描和判斷,不停讀P1.0口,如果上次讀到的為1,這次讀到的是0,既可以判斷為下降沿,這時可以設一個標記位,標示1秒脈沖來了。
然後進入P11~P14的判斷,同理,判斷上次和當前次電平,每個下降沿或者上升沿計數一次(開4個變數),當P1.0的標記位沒有的時候(1秒過了),讀出變數值即為脈沖個數,也就是頻率了

㈦ 如何寫一個單片機輸入上升沿和下降沿的脈沖輸出信號的c語言程序

如果是循環中查詢的話我一般這樣做, 定義一個變數比如keyLastStatus來記錄上一次掃描周期的狀態
sbit key=P2.0; char keyLastStatus=0;
keyLastStatus=key; //初始化
while (1)
{
if(key==0 && keyLastStatus!=key) Todo(); //上升沿
if(key==1 && keyLastStatus!=key) Todo(); //下降沿
keyLastStatus=key; //記錄上一次的狀態
}

㈧ 單片機如何發出脈沖信號

利用單片機產生脈沖信號有多種方法。最簡單的方法,就是在單片機的程序中對一個引腳反復置1,清0,置1,清0....,這個引腳上就會出現脈沖信號。
當需要產生指定周期和寬度的脈沖信號時,通常使用單片機中的計數器來實現:給計數器賦於不同的計數初值,在計數到0時產生中斷去置1或清0某引腳即可。

㈨ 單片機脈沖計數

將定時器設置為外部輸入下降沿觸發,開中斷
在中斷程序里做一個變數寄存器如TOCNT
每進一次中斷t0cnt++;
if(t0cnt>10)
P1.1=~P1.1

㈩ 求單片機脈沖計數程序

,顯示的是每分鍾的脈沖個數。
----

需要等待一分鍾後,顯示出來嗎?

對1Hz的脈沖計數,顯示的數字,不就是 60 嗎?

定時5MS,是什麼意思?

閱讀全文

與單片機脈沖指令怎麼寫相關的資料

熱點內容
如何知道伺服器有什麼漏洞 瀏覽:902
java電商訂單支付源碼 瀏覽:102
android手機滑鼠 瀏覽:465
php支付項目經驗 瀏覽:929
中國人民銀行在哪裡下載app 瀏覽:560
松餅pdf 瀏覽:667
萌新如何獲得命令 瀏覽:138
java設計模式及代碼 瀏覽:7
命令恢復資料庫 瀏覽:192
linuxoracle11gr2 瀏覽:972
攜程APP簽到在哪裡 瀏覽:389
dwg解壓方法 瀏覽:422
雲伺服器數據溝通 瀏覽:849
android地圖定位源碼 瀏覽:632
鴻蒙系統如何解除app安裝限制 瀏覽:497
阿里雲伺服器應用鏡像選哪個 瀏覽:343
win7策略更新命令 瀏覽:299
android源碼分析之設計模式 瀏覽:294
qq郵箱上的文件怎麼解壓在電腦上 瀏覽:504
業余學python是如何掙錢的 瀏覽:416