基于型号为STC8A8K64D4的单片机在11.0592MHZ下使用串口输入调整占空比输出PWM的程序
时间: 2024-03-06 20:48:38 浏览: 211
stm32通过串口修改PWM波形的频率、占空比、周期的代码
5星 · 资源好评率100%
好的,下面是基于型号为STC8A8K64D4的单片机在11.0592MHZ下使用串口输入调整占空比输出PWM的程序:
```c
#include "STC8.H"
#define FOSC 11059200L
#define BAUD 9600
unsigned char TempData;
void UART1_Init()
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc
TMOD &= 0x0F; //清除定时器1的模式位
TMOD |= 0x20; //设定定时器1为8位自动重装载模式
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时初值
PCON |= 0x80; //SMOD = 1
AUXR |= 0x01; //S1 BRT 高速模式
AUXR |= 0x10; //启动定时器1
}
void PWM_Init()
{
P_SW2 = 0x80; //将P1.2映射为PWM3输出口
PWM3_MAP = 0x02;
PWM3C = 0x00; //设置PWM3计数器初值
PWM3H = 0x7F; //设置PWM3高字节初值
PWM3L = 0x00; //设置PWM3低字节初值
PWM3C = 0x80; //使能PWM3输出
}
void main()
{
UART1_Init();
PWM_Init();
EA = 1;
while(1)
{
if(RI)
{
RI = 0;
TempData = SBUF;
if(TempData >= 0x00 && TempData <= 0x7F) //将输入值限制在0-127范围内
{
PWM3H = TempData; //将输入值设置为PWM3的高字节初值
}
}
}
}
```
这个程序中,使用串口输入的数据来调整PWM的高字节初值,从而实现调整占空比的功能。其中,串口初始化函数`UART1_Init()`和PWM初始化函数`PWM_Init()`是对应的初始化函数,`main()`函数中通过不断循环判断是否有串口输入,如果有,则将输入值限制在0-127范围内,并将其设置为PWM3的高字节初值。需要注意的是,在程序中,将P1.2映射为PWM3输出口,因此需要在P_SW2寄存器中设置对应的位。
阅读全文