查看: 928|回复: 4

STC8G1K08单片机输出PWM问题

[复制链接]

1

主题

8

帖子

63

积分

注册会员

Rank: 2

积分
63
QQ
发表于 2022-11-27 17:01:18 | 显示全部楼层 |阅读模式
麻烦问下有没有高手帮忙看下,STC8G1K08-TSSOP20单片机P10用这个程序,P10一直是高电平不变,具体是什么原因?谢谢!
回复

使用道具 举报

1

主题

8

帖子

63

积分

注册会员

Rank: 2

积分
63
QQ
 楼主| 发表于 2022-11-27 17:03:23 | 显示全部楼层
#define PWM_DUTY_MAX 1000//PWM最大占空比值

#include <STC8HX.h>
uint32 sys_clk = 11059200;//设置PWM、定时器、串口、EEPROM频率参数
#include "lib/PWM.h"
#include "lib/delay.h"

void setup()
{
  P1M1&=~0x011M0|=0x01;//推挽输出
  pwm_init(PWM1P_P10, 1000, 10);//pwm初始化三个参数分别是引脚、频率、占空比10/PWM_DUTY_MAX
}

void loop()
{
  pwm_init(PWM1P_P10, 1000, 10);//pwm初始化三个参数分别是引脚、频率、占空比10/PWM_DUTY_MAX
  delay(100);
  pwm_init(PWM1P_P10, 1000, 50);//pwm初始化三个参数分别是引脚、频率、占空比10/PWM_DUTY_MAX
  delay(100);
}

void main(void)
{
  setup();
  while(1){
    loop();
  }
}
回复

使用道具 举报

0

主题

1

帖子

8

积分

注册会员

Rank: 2

积分
8
发表于 2022-12-4 12:05:32 | 显示全部楼层
请问一下您的问题解决了吗
我也遇到这个问题了
回复

使用道具 举报

1

主题

8

帖子

63

积分

注册会员

Rank: 2

积分
63
QQ
 楼主| 发表于 2022-12-27 20:22:59 | 显示全部楼层
纪云 发表于 2022-12-4 12:05
请问一下您的问题解决了吗
我也遇到这个问题了

#include "reg51.h"
#include "intrins.h"

#define T38K4HZ     (11059200L / 2 / 38400)

sfr     CCON    =   0xd8;
sbit    CF      =   CCON^7;
sbit    CR      =   CCON^6;
sbit    CCF2    =   CCON^2;
sbit    CCF1    =   CCON^1;
sbit    CCF0    =   CCON^0;
sfr     CMOD    =   0xd9;
sfr     CL      =   0xe9;
sfr     CH      =   0xf9;
sfr     CCAPM0  =   0xda;
sfr     CCAP0L  =   0xea;
sfr     CCAP0H  =   0xfa;
sfr     PCA_PWM0 =  0xf2;
sfr     CCAPM1  =   0xdb;
sfr     CCAP1L  =   0xeb;
sfr     CCAP1H  =   0xfb;
sfr     PCA_PWM1 =  0xf3;
sfr     CCAPM2  =   0xdc;
sfr     CCAP2L  =   0xec;
sfr     CCAP2H  =   0xfc;
sfr     PCA_PWM2 =  0xf4;

sfr     P0M1    =   0x93;
sfr     P0M0    =   0x94;
sfr     P1M1    =   0x91;
sfr     P1M0    =   0x92;
sfr     P2M1    =   0x95;
sfr     P2M0    =   0x96;
sfr     P3M1    =   0xb1;
sfr     P3M0    =   0xb2;
sfr     P4M1    =   0xb3;
sfr     P4M0    =   0xb4;
sfr     P5M1    =   0xc9;
sfr     P5M0    =   0xca;

unsigned int value;

void PCA_Isr() interrupt 7
{
    CCF0 = 0;
    CCAP0L = value;
    CCAP0H = value >> 8;
    value += T38K4HZ;
}

void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;

    CCON = 0x00;
    CMOD = 0x08;                                //PCA时钟为系统时钟
    CL = 0x00;
    CH = 0x00;
    CCAPM0 = 0x4d;                              //PCA模块0为16位定时器模式并使能脉冲输出
    value = T38K4HZ;
    CCAP0L = value;
    CCAP0H = value >> 8;
    value += T38K4HZ;
    CR = 1;                                     //启动PCA计时器
    EA = 1;

    while (1);
}

解决了 用STC 官网的参考程序 可以输出PWM
回复

使用道具 举报

0

主题

1

帖子

18

积分

注册会员

Rank: 2

积分
18
发表于 2023-9-14 07:47:57 | 显示全部楼层
没人了吗 ?库呢
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2024-3-28 22:54 , Processed in 0.320092 second(s), 23 queries .

Powered by Discuz!

© 2001-2024 Comsenz Inc.

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