找回密码
 立即注册
查看: 50|回复: 11

Ai8G1K08 16PIN 的pwm输出管脚怎么指定

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:51:22
已绑定手机

3

主题

9

回帖

35

积分

新手上路

积分
35
发表于 前天 15:47 | 显示全部楼层 |阅读模式
第一次使用这个芯片,在官方例程已经手册当中没有找到关于pwm输出到哪个管脚的设置寄存器,图片中手册的位置应该是增强型的pwm,但是我用这款应该不支持,那普通的3个通道的pwm在手册哪里?这个手册风格一时没有习惯过来

截图202507301546455651.jpg

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:51:22
已绑定手机

3

主题

9

回帖

35

积分

新手上路

积分
35
发表于 前天 16:00 | 显示全部楼层
#include "reg51.h"
#include "intrins.h"

#define CYCLE       0x1000
sfr     P_SW1   =   0xa2;
sfr     P_SW2   =   0xba;

sfr     PWMSET      =   0xF1;
sfr     PWMCFG01    =   0xF6;
sfr     PWMCFG23    =   0xF7;
sfr     PWMCFG45    =   0xFE;

#define PWM0C       (*(unsigned int  volatile xdata *)0xFF00)
#define PWM0CH      (*(unsigned char volatile xdata *)0xFF00)
#define PWM0CL      (*(unsigned char volatile xdata *)0xFF01)
#define PWM0CKS     (*(unsigned char volatile xdata *)0xFF02)
#define PWM0TADC    (*(unsigned int  volatile xdata *)0xFF03)
#define PWM0TADCH   (*(unsigned char volatile xdata *)0xFF03)
#define PWM0TADCL   (*(unsigned char volatile xdata *)0xFF04)
#define PWM0IF      (*(unsigned char volatile xdata *)0xFF05)
#define PWM0FDCR    (*(unsigned char volatile xdata *)0xFF06)
#define PWM00T1     (*(unsigned int  volatile xdata *)0xFF10)
#define PWM00T1H    (*(unsigned char volatile xdata *)0xFF10)
#define PWM00T1L    (*(unsigned char volatile xdata *)0xFF11)
#define PWM00T2H    (*(unsigned char volatile xdata *)0xFF12)
#define PWM00T2     (*(unsigned int  volatile xdata *)0xFF12)
#define PWM00T2L    (*(unsigned char volatile xdata *)0xFF13)
#define PWM00CR     (*(unsigned char volatile xdata *)0xFF14)
#define PWM00HLD    (*(unsigned char volatile xdata *)0xFF15)

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;

void PWM0_Isr() interrupt 22
{
    static bit dir = 1;
    static int val = 0;

    if (PWMCFG01 & 0x08)
    {
        PWMCFG01 &= ~0x08;                      //清中断标志
        if (dir)
        {
            val++;
            if (val >= CYCLE) dir = 0;
        }
        else
        {
            val--;
            if (val <= 1) dir = 1;
        }
        _push_(P_SW2);
        P_SW2 |= 0x80;
        PWM00T2 = val;
        _pop_(P_SW2);
    }
}

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;

    PWMSET = 0x01;                              //使能PWM0模块(必须先使能模块后面的设置才有效)

    //P_SW1 = 0x80;
    PWM0CKS = 0x00;                             // PWM0时钟为系统时钟
    PWM0C = CYCLE;                              //设置PWM0周期
    PWM00T1= 0x0000;
    PWM00T2= 0x0001;
    PWM00CR= 0x80;                              //使能PWM00输出
    P_SW1 = 0x00;

    PWMCFG01 = 0x0c;                            //启动PWM0模块并使能PWM0中断
    EA = 1;

    while (1);
}

上面的代码是我从官方例程改过的,但是也没实现预期的效果,就是不能进入中断,官方例程也不靠谱??
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:82
  • 最近打卡:2025-07-30 16:03:14

34

主题

1254

回帖

2866

积分

超级版主

积分
2866
发表于 前天 16:03 | 显示全部楼层
截图202507301602159930.jpg

截图202507301603012546.jpg
深圳国芯人工智能有限公司-工具软件  https://www.stcai.com/gjrj
STC官网:https://www.stcai.com/
QQ:2593903262
微信号:18106296598
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:165
  • 最近打卡:2025-07-31 09:56:17

16

主题

502

回帖

2752

积分

超级版主

积分
2752
发表于 前天 16:03 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:513
  • 最近打卡:2025-07-31 08:58:47
已绑定手机

87

主题

5532

回帖

1万

积分

超级版主

DebugLab

积分
10123
发表于 前天 16:05 | 显示全部楼层
截图202507301605258726.jpg
截图202507301605518410.jpg

DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:51:22
已绑定手机

3

主题

9

回帖

35

积分

新手上路

积分
35
发表于 前天 16:08 | 显示全部楼层
AI*** 发表于 2025-7-30 16:03
https://www.stcaimcu.com/data/download/Datasheet/STC8H.pdf

官方的hex文件写进去都没办法运行,都不能进入中断,
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:51:22
已绑定手机

3

主题

9

回帖

35

积分

新手上路

积分
35
发表于 前天 16:10 | 显示全部楼层
国芯人*** 发表于 2025-7-30 15:48
关于STC8G1K08 16PIN芯片的PWM输出管脚配置问题,以下是专业说明:

STC8G1K08是STC公司推出的一款基于8051 ...

AI
也是捣乱,你看看你提供的寄存器地址都不对,别捣乱
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:51:22
已绑定手机

3

主题

9

回帖

35

积分

新手上路

积分
35
发表于 前天 16:11 | 显示全部楼层

我用的貌似不是这款
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:51:22
已绑定手机

3

主题

9

回帖

35

积分

新手上路

积分
35
发表于 前天 16:15 | 显示全部楼层
AI-32*** 发表于 2025-7-30 16:03
深圳国芯人工智能有限公司-工具软件  https://www.stcai.com/gjrj

用的芯片是STC8G1K08-38I-SOP16 这个工具上貌似没有针对这的例程呢?

点评

[attachimg]110372[/attachimg] 8G1k08是没有PCA部分(3路PWM的那个)的,所以想用PWM的话,只能用定时器软件模拟生成了 或者可以更换成8g1k08A 这个型号带有ADC和PCA,功能更多一些  详情 回复 发表于 前天 17:24
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:532
  • 最近打卡:2025-07-31 14:15:17
已绑定手机
已实名认证

116

主题

2499

回帖

6450

积分

版主

积分
6450
发表于 前天 17:24 | 显示全部楼层
bnrm*** 发表于 2025-7-30 16:15
用的芯片是STC8G1K08-38I-SOP16 这个工具上貌似没有针对这的例程呢?

截图202507301723007769.jpg

8G1k08是没有PCA部分(3路PWM的那个)的,所以想用PWM的话,只能用定时器软件模拟生成了
或者可以更换成8g1k08A
这个型号带有ADC和PCA,功能更多一些
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-1 01:52 , Processed in 0.150607 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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