pulse.c

来自「KEILC51程序实例和配套硬件目标板,很详细,程序有注释」· C语言 代码 · 共 36 行

C
36
字号
#include <reg52.h>
#include <stdio.h>
#define ulong unsigned long

unsigned int T0_ISR_count = 0;		/* 定义T0中断次数 */

/*************************** 定时器T0中断服务函数 ***********************/
void T0_ISR (void) interrupt 1 {  	
T0_ISR_count++;					/* 每次T0中断时,中断次数加1 */
TF0 = 0;                       
}

/*******************************   主函数 *******************************/
void main (void) {
SCON  = 0x50;          			/* 串行口初始化 */
TMOD |= 0x20;					/* 利用定时器T1作为波特率发生器 */
TH1   = 0xFA;					/* 晶振为11.0592MHz时波特率为9600 */
TR1   = 1;
TI    = 1;
PCON |= 0x80;
printf ("\nPulse Width Example Program\n\n"); /* 输出标题信息 */
ET0 = 1;		 					
EA = 1;							/* 开中断 */
TMOD = (TMOD & 0xF0) | 0x09; 	/* 设置T0为16位定时器方式 */
while (1) {
 		T0_ISR_count = 0; TH0 = 0; TL0 = 0;			  		
  		TR0 = 1;
  		printf ("\nStart a pulse.\n"); 	/* 输出提示信息 */
  		while (!INT0);					/* 等待脉冲上升沿,开始测量 */
  		while (INT0);					/* 等待脉冲下降沿,停止测量 */
	 		/* 以每个T0计数值为1μs计算脉冲宽度并输出 */
  		printf ("The width pulse is: %ld uSec\n",
          	(ulong)((TH0 << 8) | TL0 | ((ulong)T0_ISR_count << 16)));
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?