stc8h1k28 p34pwm呼吸灯代码
时间: 2023-09-24 08:09:54 浏览: 244
以下是STC8H1K28单片机使用P34作为PWM控制呼吸灯的代码示例:
```c
#include <STC8.H>
#define LED P34
void delay(unsigned int t)
{
while(t--);
}
void main()
{
unsigned int i = 0;
P3M0 = 0x00;
P3M1 = 0x00;
TMOD = 0x01; // 定时器0工作在16位自动重载模式
TH0 = 0xFC; // 定时器初值,10ms
TL0 = 0x18;
TF0 = 0; // 清除定时器0溢出标志
TR0 = 1; // 启动定时器0
while(1)
{
for(i = 0; i < 100; i++) // 呼吸灯逐渐变亮
{
LED = i;
delay(5000);
}
for(i = 100; i > 0; i--) // 呼吸灯逐渐变暗
{
LED = i;
delay(5000);
}
}
}
void timer0_isr() interrupt 1
{
static unsigned char cnt = 0;
static bit flag = 0;
TH0 = 0xFC; // 定时器初值,10ms
TL0 = 0x18;
cnt++;
if(cnt > 100) // 1s
{
cnt = 0;
flag = ~flag;
LED = flag ? 0 : 100;
}
}
```
这段代码中,使用定时器0作为计时器,每10ms检测一次是否到了1s,如果到了就将LED的亮度切换,并在循环中逐渐变亮变暗。需要注意的是,P34口是推挽输出模式,需要将其设置为准双向口才能使用PWM功能。
阅读全文