找回密码
 立即注册
楼主: vb2002

看了stc isp的软件上面的范例程序,怎么使用|已解决

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:236
  • 最近打卡:2025-05-04 07:52:37

61

主题

818

回帖

1502

积分

金牌会员

积分
1502
发表于 2024-5-27 09:55:17 | 显示全部楼层
我刚学到stc32的pmw  你这是stc哪个型号?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-05-04 01:05:06
已绑定手机

130

主题

1522

回帖

1871

积分

金牌会员

积分
1871
发表于 2024-5-27 10:13:16 | 显示全部楼层
乘风*** 发表于 2024-5-27 09:21
这是PCA型PWM模式介绍,而你在1楼帖的代码是15位增强型PWM的设置。
增强型PWM通过PWMxxT1, PWMxxT2两个寄 ...

谢谢哥,我用的8位的pwm,另一个贴,已经有点点懂了
确实是您说的这样
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-05-04 01:05:06
已绑定手机

130

主题

1522

回帖

1871

积分

金牌会员

积分
1871
发表于 2024-5-27 10:13:54 | 显示全部楼层
angm*** 发表于 2024-5-27 09:42
你是不是还用这个stc8g1k08a做实验?

stc8g1k08a是没有增强型PWM的。

对的,,我已经用的8位试了,可以
  1. #include "intrins.h"  
  2. #include <STC8G.H>  
  3.   
  4. void main()  
  5. {  
  6.     // ... 其他端口初始化代码 ...  
  7.     P0M0 = 0x00; P0M1 = 0x00;
  8.     P1M0 = 0x00; P1M1 = 0x00;
  9.     P2M0 = 0x00; P2M1 = 0x00;
  10.     P3M0 = 0x00; P3M1 = 0x00;
  11.     P4M0 = 0x00; P4M1 = 0x00;
  12.     P5M0 = 0x00; P5M1 = 0x00;
  13.     P6M0 = 0x00; P6M1 = 0x00;
  14.     P7M0 = 0x00; P7M1 = 0x00;
  15.        
  16.        
  17.     // PCA初始化  
  18.     CCON=0x00; // 清除PCA控制寄存器  
  19.     CMOD=0x08; // PCA计数模式配置(例如,定时器模式)  
  20.     CL=0x00;   // PCA计数器低位  
  21.     CH=0x00;   // PCA计数器高位  
  22.   
  23.     // 配置PCA通道1为PWM模式,并启用中断(如果需要)  
  24.     CCAPM1=0x42; // 设置PCA通道1为PWM模式,并启用中断(如果需要)  
  25.     PCA_PWM1=0x40; // 设置PCA通道1的PWM输出为高有效  
  26.   
  27.     // 设置PCA通道1的捕获/比较寄存器,用于定义PWM的占空比  
  28.     // 这里需要根据实际情况调整CCAP1L和CCAP1H的值  
  29.     CCAP1L=0xFF; // PCA通道1的捕获/比较值低位  
  30.     CCAP1H=0x02; // PCA通道1的捕获/比较值高位  
  31.   
  32.     // 启动PCA  
  33.     CR=1;  
  34.   
  35.     // ... 如果需要其他功能或配置,可以在这里添加 ...  
  36.   
  37.     while (1)  
  38.     {  
  39.             if(P32==0)
  40.                     
  41.                     CCAP1H=0x29;
  42.             else
  43.             {
  44.                                 CCAP1H=0x02;
  45.             }
  46.             
  47.         // 可以在这里添加PWM占空比或其他设置的动态更改  
  48.     }  
  49. }
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-05-04 01:05:06
已绑定手机

130

主题

1522

回帖

1871

积分

金牌会员

积分
1871
发表于 2024-5-27 10:14:47 | 显示全部楼层
zha*** 发表于 2024-5-27 09:55
我刚学到stc32的pmw  你这是stc哪个型号?

我这个不是用的增强型15位pwm,
我用的stc8g1k08a的 8位pwm
配置有点不一样,现在有点点懂了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:524
  • 最近打卡:2025-05-04 02:13:29

10

主题

1161

回帖

5133

积分

论坛元老

积分
5133
发表于 2024-5-27 11:41:22 | 显示全部楼层
给你个程序试试。


  1. #include "intrins.h"  
  2. #include <STC8G.H>  
  3. #define pulse_width_MAX 0xfa        // PWM脉宽最小值,占空比2.3%
  4. #define pulse_width_MIN 0x05        // PWM脉宽最大值,占空比98%
  5. #define STEP 0x02;                    // PWM脉宽变化步长
  6. unsigned char  pulse_width;     // PWM脉宽变量,即存入CCAP0H中的值
  7. //STC12、15、8、32都有库函数,一直就差89的延时函数。现在终于集齐了:lol
  8. /*********************************************
  9.                 程序名称        :延时函数
  10. *********************************************/
  11. //#define MAIN_Fosc 48000000L        //定义主时钟
  12. //#define MAIN_Fosc 44236800L        //定义主时钟
  13. //#define MAIN_Fosc 40000000L        //定义主时钟
  14. //#define MAIN_Fosc 36864000L        //定义主时钟
  15. //#define MAIN_Fosc 35000000L        //定义主时钟
  16. //#define MAIN_Fosc 33177600L        //定义主时钟
  17. //#define MAIN_Fosc 30000000L        //定义主时钟
  18. //#define MAIN_Fosc 27000000L        //定义主时钟
  19. #define MAIN_Fosc 24000000L        //定义主时钟
  20. //#define MAIN_Fosc 22118400L        //定义主时钟
  21. //#define MAIN_Fosc 20000000L        //定义主时钟
  22. //#define MAIN_Fosc 18432000L        //定义主时钟
  23. //#define MAIN_Fosc 12000000L        //定义主时钟
  24. //#define MAIN_Fosc 11059200L        //定义主时钟
  25. //#define MAIN_Fosc 6000000L        //定义主时钟
  26. //#define MAIN_Fosc 5529600L        //定义主时钟
  27. void Delay(unsigned int ms)                //注:ms_max=65536
  28. {
  29.     unsigned int i;
  30.     do
  31.     {
  32. //            i=MAIN_Fosc/96000L;                //STC89/90_12T
  33. //            i=MAIN_Fosc/48000L;                //STC89/90_6T
  34. //            i=MAIN_Fosc/14000;                //STC12
  35. //            i=MAIN_Fosc/13000;                //STC15
  36.             i=MAIN_Fosc/10000;                //STC8
  37. //            i=MAIN_Fosc/6030;                 //STC32
  38.             while(--i)        ;
  39.             }
  40.     while(--ms);
  41. }
  42. void PWM_OUT()
  43. {
  44.         // 占空比从最大到最小
  45.         pulse_width=pulse_width_MIN;
  46.         while(1)
  47.         {
  48.                 if (pulse_width>pulse_width_MAX)          break;
  49.                 CCAP0H=        pulse_width;
  50.                 CCAP1H=        pulse_width;
  51.                 CCAP2H=        pulse_width;
  52.                 pulse_width+=STEP;
  53.                 Delay(20);
  54.         }
  55.         // 占空比从最小到最大
  56.         pulse_width=pulse_width_MAX;
  57.         while(1)
  58.         {
  59.                 if  (pulse_width<pulse_width_MIN) break;
  60.                 CCAP0H=        pulse_width;
  61.                 CCAP1H=        pulse_width;
  62.                 CCAP2H=        pulse_width;
  63.                 pulse_width-=STEP;
  64.                 Delay(20);       
  65.         }
  66. }
  67. void main()  
  68. {  
  69.     // ... 其他端口初始化代码 ...  
  70.     P0M0 = 0x00; P0M1 = 0x00;
  71.     P1M0 = 0x00; P1M1 = 0x00;
  72.     P2M0 = 0x00; P2M1 = 0x00;
  73.     P3M0 = 0x00; P3M1 = 0x00;
  74.     P4M0 = 0x00; P4M1 = 0x00;
  75.     P5M0 = 0x00; P5M1 = 0x00;
  76.     P6M0 = 0x00; P6M1 = 0x00;
  77.     P7M0 = 0x00; P7M1 = 0x00;
  78.         
  79.         
  80.     // PCA初始化  
  81.     CCON=0x00; // 清除PCA控制寄存器  
  82.     CMOD=0x08; // PCA计数模式配置(例如,定时器模式)  
  83.     CL=0x00;   // PCA计数器低位  
  84.     CH=0x00;   // PCA计数器高位  
  85.        
  86.         //--6位PWM--
  87.     CCAPM0 = 0x42;                              //PCA模块0为PWM工作模式
  88.     PCA_PWM0 = 0x00;                            //PCA模块0输出6位PWM
  89.     CCAP0L = 0x00;                              //PWM占空比为50%[(40H-20H)/40H]
  90.     CCAP0H = 0x20;
  91.   
  92.     // 配置PCA通道1为PWM模式,并启用中断(如果需要)  
  93.     CCAPM1=0x42; // 设置PCA通道1为PWM模式,并启用中断(如果需要)  
  94.     PCA_PWM1=0x00; // 设置PCA通道1的PWM输出为高有效  
  95.   
  96.     // 设置PCA通道1的捕获/比较寄存器,用于定义PWM的占空比  
  97.     // 这里需要根据实际情况调整CCAP1L和CCAP1H的值  
  98.     CCAP1L=0xFF; // PCA通道1的捕获/比较值低位  
  99.     CCAP1H=0x02; // PCA通道1的捕获/比较值高位  
  100.     CCAPM2 = 0x42;                              //PCA模块2为PWM工作模式
  101.     PCA_PWM2 = 0xc0;                            //PCA模块2输出10位PWM
  102.     CCAP2L = 0x00;                              //PWM占空比为96.875%[(400H-20H)/400H]
  103.     CCAP2H = 0x20;
  104.   
  105.     // 启动PCA  
  106.     CR=1;  
  107.   
  108.     // ... 如果需要其他功能或配置,可以在这里添加 ...  
  109.   
  110.     while (1)  
  111.     {  
  112. //            if(P32==0)
  113. //                    
  114. //                    CCAP1H=0x29;
  115. //            else
  116. //            {
  117. //                                CCAP1H=0x02;
  118. //            }
  119.                 PWM_OUT();            // 脉宽输出
  120.                                                
  121.             
  122.         // 可以在这里添加PWM占空比或其他设置的动态更改  
  123.     }  
  124. }
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-05-04 01:05:06
已绑定手机

130

主题

1522

回帖

1871

积分

金牌会员

积分
1871
发表于 2024-5-27 21:24:32 | 显示全部楼层
angm*** 发表于 2024-5-27 11:41
给你个程序试试。

哈哈,可以呼吸了。
正好我的是P33亮。
还有代码吗?
比如手电开关那种?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-06-27 20:28:09

0

主题

2

回帖

26

积分

新手上路

积分
26
发表于 2024-6-24 22:32:37 | 显示全部楼层
vb2*** 发表于 2024-5-27 21:24
哈哈,可以呼吸了。
正好我的是P33亮。
还有代码吗?

有没有程序,我也想做一个手电筒,按键长按调整占空比
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:353
  • 最近打卡:2025-05-04 01:05:06
已绑定手机

130

主题

1522

回帖

1871

积分

金牌会员

积分
1871
发表于 2024-6-24 23:24:14 | 显示全部楼层
悠悠*** 发表于 2024-6-24 22:32
有没有程序,我也想做一个手电筒,按键长按调整占空比

没有哦,我也在研究,小白一个.最近也没什么空,小孩眼睛近视了
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-4 10:00 , Processed in 0.126203 second(s), 101 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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