|
|
P0.3和P0.2沒動作,沒找到原因,拜托大神指點
//STC15W408AS(LQFP32)
#include<reg52.h>
#define uint unsigned int
sbit led1h=P2^5; //輸出至ULN2803
sbit led1l=P2^6;
sbit led2h=P2^7;
sbit led2l=P2^2;
sbit led3h=P2^3;
sbit led3l=P2^4;
sbit led4h=P3^7;
sbit led4l=P2^0;
sbit led5h=P2^1;
sbit led5l=P3^4;
sbit led6h=P3^5;
sbit led6l=P3^6;
sbit key1=P1^3; //輸出功率強弱控制
sbit key2=P1^5;
sbit key3=P1^2;
sbit key4=P1^1;
sbit key5=P1^4;
sbit key6=P1^0;
uint h1,h2,h3,h4,h5,h6;
uint l1,l2,l3,l4,l5,l6;
uint onof; //狀態變量
sbit st=P1^6; //定時器輸出
sbit star=P1^7; //定時器啟動
sbit stop=P5^4; //定時器停止
sbit ss=P5^5; //來自遙控器,控制定時器啟動、停止
sbit yy=P0^2; //語音芯片觸發
sbit fm=P0^3; //蜂鳴器控制
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void yycan(uint m) //5段語音觸發
{
uint n;
n=0;
while(n<=m)
{
yy=1;
delayms(1);
yy=0;
delayms(1);
n++;
}
}
void keycan()
{
if(st==1&&onof==0)
{
delayms(10);
if(st==1&&onof==0)
{
led1h=h1;
led1l=l1;
led2h=h2;
led2l=l2;
led3h=h3;
led3l=l3;
led4h=h4;
led4l=l4;
led5h=h5;
led5l=l5;
led6h=h6;
led6l=l6;
onof=1;
yycan(1);
delayms(10);
}
}
/***********************************/
if(st==0&&onof==1)
{
delayms(10);
if(st==0&&onof==1)
{
h1=led1h;
l1=led1l;
h2=led2h;
l2=led2l;
h3=led3h;
l3=led3l;
h4=led4h;
l4=led4l;
h5=led5h;
l5=led5l;
h6=led6h;
l6=led6l;
led1h=1;
led1l=1;
led2h=1;
led2l=1;
led3h=1;
led3l=1;
led4h=1;
led4l=1;
led5h=1;
led5l=1;
led6h=1;
led6l=1;
onof=0;
stop=0;
delayms(200);
stop=1;
yycan(5);
fm=1;
delayms(4000);
fm=0;
delayms(10);
}
}
/********************************/
if(ss==0&&onof==0)
{
delayms(10);
if(ss==0&&onof==0)
{
star=0;
delayms(300);
star=1;
onof=1;
while(!ss);
delayms(10);
}
}
/*******************************/
if(ss==0&&onof==1)
{
delayms(10);
if(ss==0&&onof==1)
{
stop=0;
delayms(300);
stop=1;
onof=0;
while(!ss);
delayms(10);
}
}
/*******************************/
if(key1==0&&st==1)
{
delayms(10);
if(key1==0&&st==1)
{
if((led1h==1)&&(led1l==1))
{
led1h=0;
led1l=1;
while(!key1);
yycan(2);
delayms(10);
}
}
if(key1==0&&st==1)
{
if((led1h==0)&&(led1l==1))
{
led1h=1;
led1l=0;
while(!key1);
yycan(3);
delayms(10);
}
}
if(key1==0&&st==1)
{
if((led1h==1)&&(led1l==0))
{
led1h=1;
led1l=1;
while(!key1);
yycan(4);
delayms(10);
}
}
}
delayms(10);
/*********************************/
if(key2==0&&st==1)
{
delayms(10);
if(key2==0&&st==1)
{
if((led2h==1)&&(led2l==1))
{
led2h=0;
led2l=1;
while(!key2);
yycan(2);
delayms(10);
}
}
if(key2==0&&st==1)
{
if((led2h==0)&&(led2l==1))
{
led2h=1;
led2l=0;
while(!key2);
yycan(3);
delayms(10);
}
}
if(key2==0&&st==1)
{ if((led2h==1)&&(led2l==0))
{
led2h=1;
led2l=1;
while(!key2);
yycan(4);
delayms(10);
}
}
}
delayms(10);
/*******************************/
if(key3==0&&st==1)
{
delayms(10);
if(key3==0&&st==1)
{
if((led3h==1)&&(led3l==1))
{
led3h=0;
led3l=1;
while(!key3);
yycan(2);
delayms(10);
}
}
if(key3==0&&st==1)
{
if((led3h==0)&&(led3l==1))
{
led3h=1;
led3l=0;
while(!key3);
yycan(3);
delayms(10);
}
}
if(key3==0&&st==1)
{ if((led3h==1)&&(led3l==0))
{
led3h=1;
led3l=1;
while(!key3);
yycan(4);
delayms(10);
}
}
}
delayms(10);
/*********************************/
if(key4==0&&st==1)
{
delayms(10);
if(key4==0&&st==1)
{
if((led4h==1)&&(led4l==1))
{
led4h=0;
led4l=1;
while(!key4);
yycan(2);
delayms(10);
}
}
if(key4==0&&st==1)
{
if((led4h==0)&&(led4l==1))
{
led4h=1;
led4l=0;
while(!key4);
yycan(3);
delayms(10);
}
}
if(key4==0&&st==1)
{
if((led4h==1)&&(led4l==0))
{
led4h=1;
led4l=1;
while(!key4);
yycan(4);
delayms(10);
}
}
}
delayms(10);
/********************************/
if(key5==0&&st==1)
{
delayms(10);
if(key5==0&&st==1)
{
if((led5h==1)&&(led5l==1))
{
led5h=0;
led5l=1;
while(!key5);
yycan(2);
delayms(10);
}
}
if(key5==0&&st==1)
{
if((led5h==0)&&(led5l==1))
{
led5h=1;
led5l=0;
while(!key5);
yycan(3);
delayms(10);
}
}
if(key5==0&&st==1)
{
if((led5h==1)&&(led5l==0))
{
led5h=1;
led5l=1;
while(!key5);
yycan(4);
delayms(10);
}
}
}
delayms(10);
/************************************/
if(key6==0&&st==1)
{
delayms(10);
if(key6==0&&st==1)
{
if((led6h==1)&&(led6l==1))
{
led6h=0;
led6l=1;
while(!key6);
yycan(2);
delayms(10);
}
}
if(key6==0&&st==1)
{
if((led6h==0)&&(led6l==1))
{
led6h=1;
led6l=0;
while(!key6);
yycan(3);
delayms(10);
}
}
if(key6==0&&st==1)
{
if((led6h==1)&&(led6l==0))
{
led6h=1;
led6l=1;
while(!key6);
yycan(4);
delayms(10);
}
}
}
delayms(10);
}
/*************************************/
IO_Init()
{
P0M1=0x00;
P0M0=0xc0;
P1M1=0x00;
P1M0=0x80;
P2M1=0x00;
P2M0=0x00;
P3M1=0x00;
P3M0=0x00;
P5M1=0x00;
P5M0=0x10;
}
/*************************************/
void main()
{
led1h=1;
led1l=1;
led2h=1;
led2l=1;
led3h=1;
led3l=1;
led4h=1;
led4l=1;
led5h=1;
led5l=1;
led6h=1;
led6l=1;
h1=0;
l1=1;
h2=0;
l2=1;
h3=0;
l3=1;
h4=0;
l4=1;
h5=0;
l5=1;
h6=0;
l6=1;
key1=1;
key2=1;
key3=1;
key4=1;
key5=1;
key6=1;
star=1;
stop=1;
ss=1;
yy=0;
fm=0;
onof=0;
delayms(10);
while(1)
{
keycan();
delayms(5);
}
}
|
|