用上PWM1OAL PWM1OEN 写一个用九齐单片机的ny8tm52d芯片呼吸灯思路的代码
时间: 2024-02-23 18:59:50 浏览: 84
T11.CE.NET OAL开发(1).pdf
好的,下面是用九齐单片机ny8tm52d芯片实现呼吸灯的代码,使用了PWM1OAL和PWM1OEN进行控制:
```c
#include <ny8.h>
#define LED_PIN 2 //LED连接的IO口
#define PWM1OAL 0x80 //PWM控制寄存器
#define PWM1OEN 0x81 //PWM使能寄存器
#define PWM1PRD 0x82 //PWM周期寄存器
#define PWM1DTY 0x83 //PWM占空比寄存器
void delay(unsigned int t)
{
while(t--);
}
void main()
{
unsigned char i;
unsigned char pwmValue = 0; //PWM占空比变量
unsigned char flag = 0; //呼吸灯变化方向标志位
PWM1OAL = 0x01; //设置PWM控制寄存器,选择PWM1输出AL
PWM1OEN = 0x80; //设置PWM使能寄存器,使能PWM1
while(1)
{
if(flag == 0) //呼吸灯渐暗
{
pwmValue--;
if(pwmValue == 0)
{
flag = 1;
}
}
else //呼吸灯渐亮
{
pwmValue++;
if(pwmValue == 255)
{
flag = 0;
}
}
PWM1PRD = 0xFF; //设置PWM周期为255
PWM1DTY = pwmValue; //设置PWM占空比为pwmValue
delay(500); //延时一段时间
}
}
```
上述代码中,通过设置PWM1OAL和PWM1OEN寄存器来选择PWM1输出AL并使能PWM1,然后使用PWM1PRD寄存器设置PWM周期为255,PWM1DTY寄存器设置PWM占空比为pwmValue,从而实现呼吸灯效果。其中delay()函数用于延时一段时间,可以根据需要进行调整。
阅读全文