C51单片机保存低电平宽度代码
时间: 2023-11-08 17:05:52 浏览: 41
C51单片机保存低电平宽度的代码可以使用外部中断来实现。具体的代码如下所示:
```c
#include <reg52.h>
sbit INT0 = P3^2; // 定义外部中断INT0引脚
unsigned int lowWidth = 0; // 保存低电平宽度的变量
void INT0_ISR() interrupt 0 // 外部中断0的中断服务程序
{
static unsigned int startTime = 0; // 记录低电平开始时间
if (INT0 == 0) // 外部中断0引脚为低电平
{
startTime = TH0 * 256 + TL0; // 记录低电平开始时间
}
else // 外部中断0引脚为高电平
{
lowWidth = TH0 * 256 + TL0 - startTime; // 计算低电平宽度
}
}
void main()
{
TMOD = 0x01; // 定时器0工作在模式1(16位定时器)下
IE = 0x81; // 使能外部中断0和定时器0中断
IT0 = 1; // 设置外部中断0为下降沿触发
while(1)
{
// 主程序中可以根据需要使用低电平宽度(lowWidth)进行相应的操作
}
}
```
以上代码通过外部中断INT0来检测低电平的起始和结束时间,并计算出低电平的宽度。你可以根据需要在主程序中使用`lowWidth`变量进行相应的操作。请注意,该代码仅供参考,具体实现可能需要根据你的硬件环境和需求进行适当的修改。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)