求大神帮忙写个51单片机的接收脉冲程序。
程序要求是:在一定时间内(例如2ms)接收到的脉冲数。(如果以上升沿为例就是看在2ms内接收到多少个上升沿)...
程序要求是:在一定时间内(例如2ms)接收到的脉冲数。(如果以上升沿为例就是看在2ms内接收到多少个上升沿)
展开
展开全部
用计数器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位重新赋初值
}
改改 就成了你的
#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位重新赋初值
}
改改 就成了你的
展开全部
CT DATA 30H ;CT为配合T1定时用的计数变量
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV TMOD, #15H ;T1在方式1下定时;T0在方式1下计数
MOV TH0, #00H
MOV TL0, #00H ;装载T0初值0
MOV TH1, #4CH
MOV TL1, #00H ;对应定时50ms设定T1初值
MOV CT, #20 ;设定T1循环定时次数
SETB TR1
SETB TR0 ;启动T0和T1
BACK1: JNB TF1, BACK1 ;等待定时器50ms到
CLR TF1 ;清除T1溢出标志,以便执行下次定时查询
MOV TH1, #4CH
MOV TL1, #00H ;T1重新装入初值
DEC CT ;循环次数减1
MOV A, CT
JNZ BACK1 ;A=0则定时达到1s,否则继续
CLR TR0 ;1s到,T0停止计数
MOV 40H, TL0
MOV 41H, TH0 ;结果存放在内存的通用RAM区
END
这个是一个数字频率计,输入口在P3.4。单片机的时钟频率是11.0592MHz。
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV TMOD, #15H ;T1在方式1下定时;T0在方式1下计数
MOV TH0, #00H
MOV TL0, #00H ;装载T0初值0
MOV TH1, #4CH
MOV TL1, #00H ;对应定时50ms设定T1初值
MOV CT, #20 ;设定T1循环定时次数
SETB TR1
SETB TR0 ;启动T0和T1
BACK1: JNB TF1, BACK1 ;等待定时器50ms到
CLR TF1 ;清除T1溢出标志,以便执行下次定时查询
MOV TH1, #4CH
MOV TL1, #00H ;T1重新装入初值
DEC CT ;循环次数减1
MOV A, CT
JNZ BACK1 ;A=0则定时达到1s,否则继续
CLR TR0 ;1s到,T0停止计数
MOV 40H, TL0
MOV 41H, TH0 ;结果存放在内存的通用RAM区
END
这个是一个数字频率计,输入口在P3.4。单片机的时钟频率是11.0592MHz。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询