📄 main4.c
字号:
#include "AT89C51SND1_REG.H"
#include "MCU_UART.H"
#define LED P3_5
#define EKB 0x10
#define SLESONG 1
#define VOLUME 2
#define TONE 3
unsigned char CurrentFun = SLESONG;
unsigned char NowPlaying = 1;
unsigned char RegVolume = 15;
unsigned char RegTone = 15;
unsigned char flag = 0;
void KeyBoardInit()
{
P1 |= 0x0f;
KBCON = 0x00;
IEN1 |=EKB;
}
void Next()
{
switch (CurrentFun)
{
case SLESONG: NowPlaying++;
if(NowPlaying>10)
NowPlaying=1;
flag=2;
break;
case VOLUME : RegVolume++;
if(RegVolume>31)
RegVolume=31;
flag=3;
break;
case TONE : RegTone++;
if(RegTone>31)
RegTone=31;
flag=4;
break;
}
}
void Prev()
{
switch (CurrentFun)
{
case SLESONG: NowPlaying--;
if(NowPlaying==0)
NowPlaying=10;
flag=2;
break;
case VOLUME : if(RegVolume!=0)
RegVolume--;
flag=3;
break;
case TONE : if(RegTone!=0)
RegTone--;
flag=4;
break;
}
}
void key_interrupt() interrupt 11
{
unsigned char i,j,k;
k = KBSTA&0x0f;
for(i=0;i<50;i++)
for(j=0;j<200;j++);
if(k==(~P1&0x0f))
switch (k)
{
case 1 : CurrentFun++;
if(CurrentFun>3)
CurrentFun=1;
flag = 1;
break;
case 2 : Next();
break;
case 4 : Prev();
break;
case 8 : LED = ~LED;
break;
default : break;
}
k = KBSTA;
return;
}
main()
{
KeyBoardInit();
EA = 1;
init_uart();
printu("JMBIE MP3 EXP4: KeyPad Interrupt.\n");
printu("Please press the Key on the MP3 Board.\n");
while(1)
{
switch(flag)
{
case 0 : break;
case 1 : printuf("Current Function is 0x%x\n",CurrentFun);
flag= 0;
break;
case 2 : printuf("Now play the song No.%d\n",NowPlaying);
flag= 0;
break;
case 3 : printuf("The volume is %d\n",RegVolume);
flag= 0;
break;
case 4 : printuf("The tone is %d\n",RegTone);
flag= 0;
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -