按LEDUP键,占空比加大,按LEDDOWM,占空比减小,以下是我的程序,但是按键没反应,求帮助,谢谢~~
#include"reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
//sfr AUXR=0x8e;
//sfr P_SW1=0xA2;
sfr CCON=0xD8;
sbit CCF0=CCON^0;
sbit CCF1=CCON^1;
sbit CF=CCON^7;
sfr CMOD=0xD9;
sfr CL=0xE9;
sfr CH=0xF9;
sfr CCAPM0=0xDA;
sfr CCAP0L=0xEA;
sfr CCAP0H=0xFA;
sfr PCAPWM0=0xF2;
sbit CR=CCON^6;
sbit LEDDOWN=P2^7;
sbit LEDUP=P2^5;
sbit key=P2^6;
//unsigned int counter;
//unsigned char flag;
unsigned char PWMduty=0;
unsigned char PWMduty1=0;
unsigned char temp=25;
unsigned char code DutyDC[] = {
5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,
145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255
};
void Delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
key=1;
CCON=0;
CL=0;
CH=0;
CMOD=0x00;//系统时钟,SYS/12,禁止中断//
PCAPWM0=0x00;
CCAP0H=CCAP0L=DutyDC[25];//50%占空比0X80//
CCAPM0=0x42;
CR=0;
while(1)
{
if(key==0)
{
CR=1;
if(LEDDOWN==0)
{
PWMduty++;
if(PWMduty==500)
{
PWMduty=0;
temp++;
CCAP0H=CCAP0L=DutyDC[temp++];
}
}
else if(LEDUP==0)
{
PWMduty1++;
if(PWMduty1==500)
{
PWMduty1=0;
temp--;
CCAP0H=CCAP0L=DutyDC[temp--];
}
}
}
}
}
|