⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pulse.c

📁 这是《Keil Cx51 V7.0单片机高级语言编程与uVision2应用实践》教材各章中列出的全部程序例子。
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -