『壹』 求單片機脈沖計數程序
,顯示的是每分鍾的脈沖個數。
----
需要等待一分鍾後,顯示出來嗎?
對1Hz的脈沖計數,顯示的數字,不就是 60 嗎?
定時5MS,是什麼意思?
『貳』 如何寫一個單片機輸入上升沿和下降沿的脈沖輸出信號的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單片機測量脈沖寬度程序
假設用定時器0,一個完整過程是
TH0=0;TL0=0;
whiIe(IN==1);∥等待當前高電平過去
while(IN==0);∥等待高電平來到
TR0=1;∥啟動計時
while(IN==1);∥等待高電平結結束
TR0=0;∥停止計時
HIGH=TH0*256+TL0;∥存計時結果
TH0=0;TL0=0;∥清0
『肆』 向51單片機里寫發出脈沖信號的c程序怎麼編啊
//用ADC0808控制PWM輸出
//通過可變電阻調節脈沖寬度
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit CLK =P2^4;
sbit ST=P2^5;
sbit EOC=P2^6;
sbit OE=P2^7;
sbit PWM=P3^0;
//延時
void Delay(uchar x)
{
uchar i;
while(x--)
for(i=0;i<40;i++);
}
void main()
{
uchar Val;
TMOD=0x02;//定時器T0工作於方式2自動重裝8位計數器
TH0=0x14;
TL0=0x00;
IE=0x82; //允許T0中斷
TR0=1; //啟動定時器
while(1)
{
ST=0;ST=1;ST=0; //啟動A/D轉換
while(!EOC); //等待轉換完成
OE=1;
Val=P1; //讀取轉換結果
OE=0;
if(Val==0) //PWM輸出占空比為0
{
PWM=0;
Delay(0xff);
continue;}
if(Val==0xFF) // PWM輸出占空比為100%
{
PWM=1;
Delay(0xff);
continue;
}
PWM=1;
Delay(Val); //PWM輸出占空比
PWM=0;
Delay(0xff-Val);
}
}
//--------------------------------
//T0定時器中斷給ADC0808提供時鍾信號
//---------------------------------
void Timer0_INT() interrupt 1
{
CLK=!CLK; //ADC0808時鍾
}
能看明白嗎?我也是剛學的,照書上寫的
『伍』 單片機紅外脈沖程序
//這一段是用來檢測紅外脈沖的低電平時間的
unsigned int Ir_Get_Low()
{
TL1=0; //清0計數器低8位
TH1=0; //清0計數器高8位
TR1=1; //打開計數器
while(!Ir_Pin && (TH1&0x80)==0); //如果IR管腳一直為低電平就一直在這里等待,讓計數器一直計數
TR1=0; //管腳為高電平時關閉計數器
return TH1*256+TL1; //返回計數值,高8位乘256因為2的8次方為256