標題: 請教大家一個關于12C5a60S2單片機自帶PWM程序問題 [打印本頁]

作者: lujuguo    時間: 2021-5-1 01:18
標題: 請教大家一個關于12C5a60S2單片機自帶PWM程序問題
我調用官方的PWM文件,直接修改CCAP0H值可以控制LED燈的暗亮,但是想用按鍵控制這個值就不能控制,大家看看是我哪里錯了,下面是我的C文件,謝謝大家的幫忙
單片機源程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sfr CCON = 0xD8;  //PCA 控制寄存器。 CF CR - - - - CCF1 CCF0 00xx,xx00
sfr CMOD = 0xD9;
sfr CL = 0xE9;
sfr CH = 0xF9;
sfr CCAP0L = 0xEA;
sfr CCAP0H = 0xFA;
sfr CCAPM0 = 0xDA;
sfr CCAPM1 = 0xDB;
sbit CR = 0xDE;
sbit key1=P3^4;
sbit key2=P3^5;

uchar aa;

void pwm();


void main(void)
{
pwm();
//aa=255;


   while(1)         ;               
{
                /* if(key1==0)
                         {
                           aa++;
                           if(aa==256)
                           aa=256;                        
                         } */


        // aa=256;
                 
         }

}


void pwm()
{
CMOD = 0x02; // Setup PCA timer            //0000 0010 空閑時不計數(shù),不產生中斷,時鐘源為fosc/2,因此輸出占用率為fosc/512
CL = 0x00;
CH = 0x00;
CCAP0L = 0xc0; //Set the initial value same as CCAP0H
CCAP0H =aa; //25% 設置為25%的占空比
CCAPM0 = 0x42; //0100,0010 Setup PCA module 0 in PWM mode  0100 0010, 8位 PWM
CR = 1; //Start PCA Timer.        //開啟PCA計數(shù)器
}



作者: wulin    時間: 2021-5-1 01:18
不是按鍵不能控制PWM,是樓主按鍵程序寫錯導致不能正?刂芇WM。
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sfr CCON = 0xD8;  //PCA 控制寄存器
  5. sfr CMOD = 0xD9;
  6. sfr CL = 0xE9;
  7. sfr CH = 0xF9;
  8. sfr CCAP0L = 0xEA;
  9. sfr CCAP0H = 0xFA;
  10. sfr CCAPM0 = 0xDA;
  11. sfr CCAPM1 = 0xDB;
  12. sbit CR = 0xDE;

  13. sbit key1=P3^4;
  14. sbit key2=P3^5;

  15. uchar aa;
  16. uchar count=0;
  17. bit sign=0;

  18. void pwm_Init();

  19. void main(void)
  20. {
  21.         pwm_Init();
  22.         aa=0x80;
  23.         while(1)
  24.         {
  25.                 if(!key1||!key2)
  26.                 {
  27.                         if(++count>=250&&sign==0)
  28.                         {
  29.                                 sign=1;
  30.                                 if(!key1 && aa>0x00)
  31.                                         aa--;//增加空比為
  32.                                 if(!key2 && aa<0xff)
  33.                                         aa++;//減少空比為
  34.                                 CCAP0H=aa;
  35.                         }
  36.                 }
  37.                 else
  38.                 {
  39.                         count=0;
  40.                         sign=0;
  41.                 }
  42.         }
  43. }

  44. void pwm_Init()
  45. {
  46.         CCON = 0x00;                        //初始化PCA控制寄存器
  47.         CMOD = 0x02;                        //設置PCA時鐘源,PWM頻率=11.0592MHZ/2/256=21.600KHZ
  48.         CL = 0x00;                                //復位PCA寄存器
  49.         CH = 0x00;                                //復位PCA寄存器
  50.         CCAP0H = CCAP0L = 0x80; //設置PWM0初始占空比為50%
  51.         CCAPM0 = 0x42;                        //允許CCP0腳用作脈寬調節(jié)輸出
  52.         CR = 1;                                        //開啟PCA計數(shù)器
  53. }
復制代碼





作者: lujuguo    時間: 2021-5-1 10:22
wulin 發(fā)表于 2021-5-1 01:18
不是按鍵不能控制PWM,是樓主按鍵程序寫錯導致不能正?刂芇WM。

謝謝了,大神。真的萬分感謝




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1