单片机脉冲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);
}