📄 pulse.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 + -