單片機脈沖c語言
⑴ 用單片機對外來脈沖計數(c語言程序)
要設定16位定時讀數器T0或T1,工作方式1、2、3,計數值最大為65536=0xFFFFH,即給高低位分別裝入計數初始值TH0(TH1)=FFH,TL0=FFH,可設為中斷函數,當計數溢出後自動引發中斷,在程序運行時調用即可~
鍵盤設置到處都有,搜一下就行了
⑵ 單片機如何測量脈沖頻率用C語言!!!
一般測量頻率有2中方法:\
1,你用T1定時1S(只用T1是無法達到定時1s的目的的,因為時間太長,你還可以藉助別的單元+1,+1的形式),然後用T0記數在這1s內通過的方波個數,這個方法不是很精確
2,用外部中斷,選擇下降沿觸發,程序響應中斷後馬上開啟定時器,在下個下降沿來臨的時候關掉定時器就可以了(記得定時器先清零)
⑶ 51單片機c語言脈沖計數並顯示程序
TMOD=0x05;
TH0=0;TL0=0;
TR0=1;
while(1)
{
a=TH0*256+TL0;
display(a);
}
⑷ 單片機脈沖計數問題(C語言)
設計數值為num
num=0;
P0^0=jishu;
jishu=1;檢測低電平IO要設置高
main()
{
if(jishu==0)
{
num++;
whlie(jishu==0);為了防止P0^0一直為低電平num一直在加
}
if(num==9990)
{
P0^1=0;
num=0;繼續下一輪計數
}
}
⑸ 如何寫一個單片機輸入上升沿和下降沿的脈沖輸出信號的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; //記錄上一次的狀態
}
⑹ 51單片機使用T0和T1外部脈沖計數,C語言如何編程
使用T0和T1外部脈沖計數,控制兩個電機,到1700個脈沖電機停止,
--統計脈沖個數,用
外部中斷
更好。
--T0和T1,留著定時用。
用四個按鍵控制,按鍵1
控制電機
正轉
,按鍵2控制電機反轉,按鍵3控制電機1正轉,按鍵4控制電機2正轉,怎麼用
C語言編程
?
--編程前,要先設計出來電路。
⑺ c語言編寫單片機計數脈沖
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint times,freq;
sbit p35=P3^5;
main()
{
TMOD=0x01;
TH0=0;
TL0=0;
while(1)
{
while(p35);
TR0=1;
while(!p35);
while(p35);
TR0=0;
times=TH0*256+TL0;
freq=1000000/times;
//處理頻率,自己做
}
}
⑻ 怎麼用C語言編寫51單片機測脈寬的程序~ 跪求完整程序!
#include<reg51.h>
#define uint unsigned int
uint width;
sbit pulse=P3^2;
main()
{
TMOD=0x09; //定時器0模式1,GATE=1
TH0=0;
TL0=0;
while(pulse); //等待P3.2變低
TR0=1; //啟動定時器0
while(!pulse); //等待脈沖變高
while(pulse); //等待脈沖變低
TR0=0; //關閉定時器0
pulse=TH0*256+TL0; //取定時值。
while(1);
}
⑼ 單片機C語言實現紅外脈沖計數計算車速
以51單片機 12MHz晶振情況下為例
#define STAYTIME 781//定時200ms 其他時間可以自己算
int tcount,p_count;
double speed;
void t0_init(void)
{
TH0=0x00;
TL0=0x00;
TMOD|=0x02;
ET0=1;
TR0=1;
IT0=1;//外部中斷下降沿觸發
EX0=1;
}
void pulse_int(void) interrupt 0
{
p_count++;
}
void t0_int(void) interrupt 1
{
tcount++;
if(tcount>STAYTIME){
tcount=0;
EX0=0;//關輸入脈沖的中斷
ET0=0;
speed=p_count/20;//單位就是 轉/秒
//下面重新開始
p_count=0;
ET0=1;
EX0=1;
}
}
}
void main()
{
t0_init();
EA=1;
while(1);
}