当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

单片机用c语言编一个程序要求用内部定时计数器对30个脉冲进行

更新:02-14 整理:39baobao.com
字体:

[求一个单片机c语言音乐程序]#include#define uchar unsigned char #define uint unsigned int sbit BEEP=P3^2; // 生日快乐歌的音符频率表,不同频率由不同的延时来决定 uchar code SONG_TONE[]={212,212...+阅读

看了一下你的要求,单片机里有个GATE位的设置如果你懂得用,编这个程序就不难了。下面是我个人按照你要求刚编的程序:

/***********************

功能:内部定时/计数器记录脉冲个数和这些脉冲通过后所用的时间。

硬件:单片机用AT89c51,12M晶振。

原理:当门控位GATE为“1”时,TR0/1=1,INT0/1才能启动定时器。

利用这个特性可以测量外部输入脉冲的宽度。

分析:设外部脉冲由(P3.2)输入,T0工作于定时方式1(16位计数),

GATE设为1.测试时,应在INT0低电平时,设置TR0为1(避免检测

到正在进行的脉冲);当INT0为高电平时,就启动计数,INT0再

次变低时,停止计数。此计数值与机器周期的乘积即为被测正脉

冲的宽度。因晶振为12MHz,机器周期为1us.

************************/

#include

//sbit INT0=P3^2;//INT0在头文件里已定义为P3^2口

#define uint unsigned int

uint pulseWidth[30],num;

void init()

{

num=0;

TMOD=0x09;//选择定时器并设T0为方式1

TH0=0x00; //设计数初会为最大值

TL0=0x00;

}

main()

{

init();

while(1)

{

if(num<30) //记录30个脉冲

{

while(INT0);//等待INT0变低

TR0=1; //应在INT0低电平时,设置TR0为1

while(!INT0);//等待INT0变高,启动定时器开始计数

while(INT0); //等待INT0变低,停止定时器开始计数

TR0=0;

pulseWidth[num]=(uint)TL0;

pulseWidth[num]|=(uint)(TH0<<8);

//因机器周期为1us,故pulseWidth数组里存的数目加上单位us,

//即为所求的脉冲宽度

num++;

}

}

}

本文地址:https://www.39baobao.com/show/29_40817.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

跪求一个单片机生日快乐歌C语言程序#include <reg52.h> #define uint unsigned int #define uchar unsigned char sbit BEEP=P1^2;//接喇叭或蜂鸣器的接口 uint h,i; uint hz; uchar jiep; bit flag; uint code...

跪求基于51单片机的汇编语言音乐盒程序OUT BIT P2.3 //该引脚接蜂鸣器 ORG 0000H LJMP START ORG 000BH INC 20H ;中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH ;12M晶振,形成10毫秒中断 RETI START: MOV SP...

51单片机用汇编语言写下这个程序谢谢!小弟新手ORG 000H (1亮,0灭) go ret :MOV P2 #0000 0001 第一个灯一直亮 0000 0001 表示第一个灯,0000 0010第二个灯 MOV P2 #0000 0011 第一个灯一直亮 ACALL DELAY(延时2S) MOV P2 #00...

51单片机用汇编语言实现八个LED的全亮全灭;以89c51单片机为例,假定用P1控制LED: IO_LED EQU P1; led_0 BIT P1.0; led_1 BIT P1.1; led_2 BIT P1.2; led_3 BIT P1.3; led_4 BIT P1.4; led_5 BIT P1.5; led_6 BIT P1.6;...

51单片机汇编语言常用数据处理程序设计查表送寄存器ORG 0000H MOV DPTR,#TABLE MOV R2,A (暂存A中原来的参数) MOVC A,A+DPTR ;到表头地址加A中的偏移量处取数 MOV R0,A (把取来的第一个数放在R0中) XCH A,R2 (把原暂存的A值和和才...

单片机汇编语言编程这个是用P1口接发光管的汇编程序 ORG 0000H INITIA: LJMP 0200H ORG 0800H DELAY: MOV R7,#10 DEL1: MOV R6,#125 DEL2: MOV R5,#200 DJNZ R5,$ DJNZ R6,DEL2 DJNZ R7,DEL1...

关于51单片机汇编语言程序ORG 0000H LJMP MAIN ORG 000BH LCALL TIMER0 ORG 1000H MAIN: LCALL INIT WAIT : CJNE R0,#10,WAIT MOV R0,#0 RRC A MOV P1,A SJMP WAIT INIT MOV TMOD,#01H MOV TH0,#3CH...

用汇编语言编写一个51单片机的程序首先搞清LED管是高电平导通还是低电平导通。 如果是低电平导通,P1赋0x00时,发光管全亮,0xff时,全灭。 具体程序: #define uint unsigned int #define uchar unsigned char void d...

单片机计数程序汇编语言ORG 0H AJMP START ORG 100H START:MOV SP,#60H MOV P1,#0FFH MOV R5,#0 LOOP:JNB P3.1,LOOP0 JB P3.1,LOOP LOOP0:JNB P3.1,LOOP0 INC R5 CJNE R5,#1,LOOP1 CLR P1.0 LOOP1...