单片机软件实验:端口的输入输出,求指点

2019-07-15 20:13发布

编写一程序实现下列功能:KEY1 键每按下一次,30H 单元加一(30H初值为30H=0x0f),并将30H 单元内容送到8位逻辑电平显示电路显示;KEY2 键每按下一次,31H 单元加二(31H初值为31H=0x0a0),并将31H 单元内容送到8位逻辑电平显示电路显示,KEY3 键按下(键值=0FBH), 一盏指示灯连续闪烁五次;KEY4键按下(键值=0F7H),指示灯全部熄灭。
#include<c8051f020.h>
#include<stdio.h>
void tttt(void);
void ttt(void);
void tt(void);
unsigned char data0 _at_ 0x40;
unsigned char key;
sbit ZSD=P2^7;
void ttt(void)
{ int i;
for (i=0;i<300;i++){}
}
voidtt(void)
{unsigned long j;
for (j=0;((j<80000)&&((P1&0xff)!=0xf7)); j++){}
}
void main()
{
WDTCN=0x0DE ;
WDTCN=0x0AD;
OSCXCN=0x065 ;
ttt();
OSCICN|=0x08 ;
XBR2=0x040 ;
P1MDOUT=0x0FF ;
P2MDOUT=0x0FF ;
P2=0x0ff;
P1=0x0ff;
while(1)
{
while((P1&0x0f)==0x0f)
{}
key=data0=P1;
do {
ttt();
}
while((P1&0x0f)!=0x0f);
switch(key){
case 0xfe:
P2=0xfe; break;
case 0xfd:
P2=0xf9; break;
case 0xfb:
P2=0xff;
do {
ZSD=0; tt();
ZSD=1; tt();
}
while((P1&0xff)!=0xf7);
break;
case 0xf7:
P2=0xff; break;
default:
break;
}
}
}我不懂怎么改,怎么办
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。