导航:首页 > 操作系统 > 51单片机脉冲任务

51单片机脉冲任务

发布时间:2023-03-02 16:13:00

1. 51单片机能否实现光电编码器的脉冲采集任务光电编码器转一圈是5000个脉冲。

51的处理能力应该不够,外加计数器不知道能不能行,我用16位飞思卡尔xs128单片机做的,将光电编码器接在计数器上,普通IO口不行

2. 用C51单片机统计脉冲次数

举例解答如下:
利用定时器T1,对外部脉冲(P3.5引脚输入)计数,
每输入200次脉冲产生一次中断,累加器+1,
选用T1,计数器模式,方式2(自动重装初值8位计数器),
TMOD
=0110
0000B
=60H
计数初值
=2^8
-200
=256
-200
=56d
=38H,
编程序如下:
;
;
主程序:
MAIN:
CLR
A
;
;
累加器清零
MOV
TMOD,
#60H
;
;置T1计数模式、方式2
MOV
TL1,
#38H
;
;
写入计数初值
MOV
TH1,
#38H
;
;
写入留待自动重装的初值
SETB
TR1
;
;
启动T1计数
SETB
ET1
;
;
允许T1中断
SETB
EB
;
;
CPU开中断
SJMP
$
;
;
等待一轮对外部脉冲计数溢出中断
;
;
以下是T1中断处理子程序:
T1_INT:
INC
A
;
;
累加器加1
RETI
;
;
中断返回

3. 求大神帮忙写个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位重新赋初值
}
改改 就成了你的

4. 51单片机怎么产生外部脉冲

用外部中断,按一次加一,不能用外部中断控制计数器,这样不是加一,而是启动定时器,会加很多一。。。

5. 如何编程实现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; //置为低电平,输出正脉冲结束
}
}

6. 如何用51系列单片机发射脉冲

51单片机本身就有两个自带的可编程定时器/计数器T1,T2有四种工作方式,只要写入控制字和设置记数初值,就可以输出不同频率的脉冲.51单片机的为6M
HZ,所以存入的值可以计算的为0F0H,选用方式1,控制字
MOV
TMOD,#01H
;选用方式1
MOV
TL0,#0F0H
;装入初值
SETB
TR0
;启动
SETB
ET0
;允许中断
SETB
EA
;CUP开放中断

7. 51单片机如何用计数器检测脉冲信号(高低电平),程序怎么做!没有思路!

可以利用51单片机的计数器T0、T1,例如用计数器0的外部计数脉冲输入端T0计数,当计满100个脉冲数量后,触发中断。进入计数服务中断程序。

如果有脉冲信号,经过电容微分后,在下降沿会产生一个向下的尖端脉冲,电阻R2是作为一个偏置,当有向下的尖端脉冲来后,反相端的电压会低于同向端的电压。

从而比较器输出高电平,这个电路图要注意的两个参数是,1,比较器的选择,你可以选LM339,要加上拉电阻。

(7)51单片机脉冲任务扩展阅读:

通向输入端的那两个电阻是用来产生一个参考电压的,电容用来微分你的PWM波,你可以用示波器在反向输入端观察微分信号。

主程序中可根据不同运行状态调用部分子函数。需要开机按键设置时,优先执行按键程序,其它需要设置以后才能运行的子函数暂时不调用,减少单片机被占用过多。

设置后,不需要按键了,就不调用按键程序了。如果需要随时按键都要反应,可以把按键接到外部中断上,以中断方式响应按键,不受其他子函数影响。

8. 51单片机处理接收的脉冲

核心的思想就是在一个时间段内计算脉冲的数量。可以用外部中断,有下降沿的时候找个标记位标记一下。程序外通过扫描标记位,对脉冲进行计数。
对脉冲计数的时候可以根据脉冲宽度进行一下过滤。脉冲的计数周期也需要根据脉冲输出特性进行调整。

9. 51单片机keil4中,怎么查看脉冲信号

1、首先打开51单片机进入到keil4中。
2、其次点击设置进入,然后找到多功能。
3、最后即可查看脉冲信号。

阅读全文

与51单片机脉冲任务相关的资料

热点内容
php多个分隔符分割 浏览:374
表格怎么转移到另一个文件夹 浏览:923
同态加密gpu 浏览:216
程序员告诉你网赌为什么赢不了 浏览:971
程序员最帅操作 浏览:72
云服务器可以随时更换吗 浏览:489
老款车在哪里可以买到app 浏览:460
程序员事业单位 浏览:68
特来电需要用哪个App 浏览:881
电脑如何共享其他服务器 浏览:260
php网站性能优化 浏览:354
被子收纳袋压缩真空 浏览:30
h1z1选什么服务器 浏览:484
苹果版三国杀怎么在安卓上下载 浏览:728
安润国际app在哪里下载 浏览:438
iospdf教程下载 浏览:332
加密货币换手率300表示什么 浏览:727
手机wps新建文件夹存照片 浏览:399
单片机rgbled 浏览:963
怎么通过文件加密后发给微信好友 浏览:90