导航:首页 > 操作系统 > 单片机脉冲计数实验

单片机脉冲计数实验

发布时间:2023-06-06 17:19:06

㈠ 用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
;
;
中断返回

㈡ 51单片机怎么实现外部脉冲计数

#include<reg51.h>
#define uint unsigned int
uint dat=0,time=0;
bit flag=0;
sbit key=P1^0;
void int00() interrupt 0
{
dat++;
}
void t0isr() interrupt 1
{
time++;
if(time>=400)flag=1;
}
main()
{
TMOD=0x22;
TH0=6;
TL0=6;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x40;
ET0=1;
EX0=1;
IT0=1;
PX0=1;
EA=1;
while(1)
{
if(key==0)
{
while(key==0);
TR0=1;
while(flag==0);
TR0=0;
flag=0;
SBUF=dat;
while(TI==0);
TI=0;
SBUF=dat>>8;
while(TI==0);
TI=0;
}
}
}

㈢ 如何用单片机记脉冲数

1、用单片机产生200ms,占空比为50%的周期信号,即高低电平各100ms;
2、将该200ms信号接到INT0或INT1上,将外部脉冲信号接到T0或T1上,注意要对应接,即INT0与TO一起用或INT1和T1一起用。
3、设置定时器/计数器工作方式控制寄存器TMOD的GATE = 1(门控方式) ,C/T = 1 (计数方式)。
这样,就可以用100ms作为一个控制门,在这个门有效(相应外部中断)时,外部计数脉冲就可以进入这个门,定时器/计数器计数初值设为加1就溢出,中断服务程序中计数就可以了。

㈣ 单片机脉冲计数

将定时器设置为外部输入下降沿触发,开中断
在中断程序里做一个变量寄存器如TOCNT
每进一次中断t0cnt++;
if(t0cnt>10)
P1.1=~P1.1

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

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

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

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

(5)单片机脉冲计数实验扩展阅读:

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

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

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

㈥ 51单片机脉冲计数

你好!

那就用外部中断来检测吧,速度快精度高

void outside() interrupt 0
{
T0count++;
}
然后将计数,通过液晶显示出来就可

㈦ 单片机定时/计数器实验--脉冲计数器

这是个简易频率计,程序如下:

;---------------------------------

ORG0000H

JMPSTART

ORG000BH

JMPT0_INT

;---------------------------------

START:

MOVTMOD,#51H;/*01010001T1计数,T0定时*/

MOVTH0,#HIGH(65536-50000);50ms@12MHz

MOVTL0,#LOW(65536-50000)

MOVTH1,#0

MOVTL1,#0

SETBTR0

SETBTR1

SETBET0

SETBEA

MOVR7,#20

SJMP$

;---------------------------------

T0_INT:;50ms执行一次

MOVTL0,#LOW(65536-50000);重新写入初始值

MOVTH0,#HIGH(65536-50000);50ms@12MHz

DJNZR7,T0_END

MOVR7,#20

MOVP1,TL1

MOVP2,TH1

MOVTL1,#0

MOVTH1,#0

T0_END:

RETI

;---------------------------------

用PROTEUS仿真如下图。

图中信号的频率是5000Hz,显示的是16进制,这是题目中要求的形式。

阅读全文

与单片机脉冲计数实验相关的资料

热点内容
彩虹六号如何人工服务器 浏览:632
mc服务器地址怎么登入 浏览:556
苹果app怎么扫描二维码下载 浏览:959
css文件在线解压 浏览:154
36岁程序员近况 浏览:283
哪里可以下载不加密的歌 浏览:934
隐藏文件夹是什么梗 浏览:918
插件注册命令 浏览:497
梁一端加密一端不加密规范 浏览:82
代码行数统计命令 浏览:104
单片机中2K表示什么 浏览:482
紫禁城为什么会断开服务器 浏览:580
华为手机的方舟编译器在哪呢 浏览:123
下载压缩虐杀原形2 浏览:906
linux脚本cd 浏览:167
间架结构pdf 浏览:843
重庆农村商业银行app怎么老出问题 浏览:471
慧编程配置要求 浏览:674
数控机床编程与操作视频 浏览:461
文件夹资料误删怎么办 浏览:88