標題:
請教大家一個關于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。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sfr CCON = 0xD8; //PCA 控制寄存器
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;
uchar count=0;
bit sign=0;
void pwm_Init();
void main(void)
{
pwm_Init();
aa=0x80;
while(1)
{
if(!key1||!key2)
{
if(++count>=250&&sign==0)
{
sign=1;
if(!key1 && aa>0x00)
aa--;//增加空比為
if(!key2 && aa<0xff)
aa++;//減少空比為
CCAP0H=aa;
}
}
else
{
count=0;
sign=0;
}
}
}
void pwm_Init()
{
CCON = 0x00; //初始化PCA控制寄存器
CMOD = 0x02; //設置PCA時鐘源,PWM頻率=11.0592MHZ/2/256=21.600KHZ
CL = 0x00; //復位PCA寄存器
CH = 0x00; //復位PCA寄存器
CCAP0H = CCAP0L = 0x80; //設置PWM0初始占空比為50%
CCAPM0 = 0x42; //允許CCP0腳用作脈寬調節(jié)輸出
CR = 1; //開啟PCA計數(shù)器
}
復制代碼
作者:
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