ny8呼吸灯代码
时间: 2023-07-03 16:15:51 浏览: 175
Program_补光灯程序_NY8A051_冷暖_
5星 · 资源好评率100%
以下是ny8呼吸灯的代码,可以参考一下:
```
#include<ny8.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
uchar count = 0; //计数器
uchar pwmVal = 0; //占空比
uchar ledPin = 4; //LED控制引脚
void TIM0_int() interrupt 1
{
TH0 = 0xfc; //重新加载计时器初值
TL0 = 0x67;
count++; //计数器加1
if(count > pwmVal) P14 = 0; //占空比判断
else P14 = 1;
if(count == 255) count = 0; //计数器清零
}
void main()
{
P1ASF = 0x00; //P1口设为数字口
P1 = 0xff; //P1口上拉
P14 = 0; //LED初始状态设置
TMOD = 0x01; //T0为模式1
TH0 = 0xfc; //计时器初值
TL0 = 0x67;
ET0 = 1; //允许T0中断
EA = 1; //允许总中断
TR0 = 1; //启动计时器
while(1)
{
for(pwmVal = 0;pwmVal <= 255;pwmVal++) //呼吸灯
{
delay(10);
}
for(pwmVal = 255;pwmVal >= 0;pwmVal--)
{
delay(10);
}
}
}
void delay(uint x)
{
uint i,j;
for(i = x;i > 0;i--)
for(j = 110;j > 0;j--);
}
```
该代码中使用计数器 count 和占空比 pwmVal 来控制 LED 的亮度,通过不断改变占空比的大小,实现呼吸灯效果。其中,定时器中断函数 TIM0_int() 用于更新计数器 count 的值,达到控制 LED 亮灭的目的。
阅读全文