AT89C51单片机输出两路频率为30khz的PWM信号,采用按键控制两个输出口哪个输出
时间: 2023-05-28 10:07:22 浏览: 40
PWM信号,以下是AT89C51单片机的代码实现:
```
#include <REG51.h>
sbit LED1 = P1^0; // 第1个LED
sbit LED2 = P1^1; // 第2个LED
sbit KEY1 = P3^0; // 按键1,控制LED1
sbit KEY2 = P3^1; // 按键2,控制LED2
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = t; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main()
{
TMOD = 0x01; // 定时器0工作在模式1
TH0 = 0xFC; // 定时器初值,30KHz
TL0 = 0x66;
TR0 = 1; // 启动定时器0
while (1)
{
if (!KEY1) // 按键1按下,控制LED1
{
LED1 = ~LED1;
delay(500);
}
if (!KEY2) // 按键2按下,控制LED2
{
LED2 = ~LED2;
delay(500);
}
}
}
```
在程序中,我们使用定时器0输出30KHz的PWM信号,利用按键控制LED1和LED2的亮灭。当按下按键1时,LED1会闪烁;当按下按键2时,LED2会闪烁。