找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2402|回复: 12
打印 上一主题 下一主题
收起左侧

STC15W408AS单片机系列通过I/O设置PWM输出(不是使用PWM功能)程序有没有第二种思路?

[复制链接]
楼主
ID:390416 发表于 2022-5-26 09:35 | 显示全部楼层
u8 idata PWM_Write_Byte[4]=0;                                // 占空比
#define FOSC 30000000UL                                                // 声明系统频率,30M,要与STC-ISP同步设置
#define PWM_F 1000                                                        // 设置PWM频率,不宜太高。
#define PWM_D 255                                                        // 设置占空阈值,必须大于占空比的最大值,并且小于256
#define PWM_TL (256-(FOSC/12/PWM_F/PWM_D))        // 计算定时器初值(8位)

// 定时器0初始化  
void PWM_Init()
{
        TMOD &= 0xF0;                                  //配置定时器工作模式
        TMOD |= 0x02;                                          //配置定时器工作模式 8位自动重装模式
    TL0 = PWM_TL;                                    //定时器初值
    TH0 = PWM_TL;                                    //定时器重装初值
    TR0 = 1;                                        //启动定时器0
    ET0=1;                                  //允许定时器0申请中断
    EA=1;                                   //中断总闸闭合
}

//定时器0的CPU处理函数,位置任意写都行
void PWM_Display_timer0() interrupt 1
{
        static u8 pwm_t=0;                        //局部变量,不丢失数据
               
                if(pwm_t<PWM_Write_Byte[2])
        {
                        PWM_GPIO_G=0;                                  //绿                       
        }
        else PWM_GPIO_G=1;
        pwm_t++;
                pwm_t=pwm_t%PWM_D;                                        //限制占空比小于占空阈值
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表