📄 music.c
字号:
msc++;
}
ET0=0; //播放结束,关T1中断
PIN_MSC=1; //关输出
// temp_TH1=0xff;
// temp_TL1=0xea; //关输出(输出超声波)
// ET0=1; //开T0定时器中断
// TMOD=0x51; //T0:16位定时器、T1:16位计数器
}
//---------------------------------------------------------------------------//
/*******************歌曲模式*****************************/
bit Press_Flag;
bit Power_ON_Flag;
//延时程序
void delay(void)
{for(a=200;a>0;a--)
for(b=20;b>0;b--);
}
//音乐的开关
void door(void)
{ if(P1_1==0)
{
delay();
if(P1_1==0) EA=!EA;
while(P1_1==0);
}
}
//行和列的扫描程序
void scan( uchar temp[],uchar exchang[])
{ P2=0x0f;
if(P2!=0x0f)
{delay();
if(P2!=0x0f)
{
Press_Flag = 1;
Cnt = 0;
for(c=0,d=0;c<8;c++)
{
P2=exchang[c];
delay();
if(P2!=exchang[c])
{ temp[d]=c;
if(d==1)break;
d=d+1;
}
}
EA=1;
}
}
}
//中断程序
void t1(void) interrupt 3 using 0
{ TH1=HTH1;
TL1=LTL1;
P1_0=~P1_0;
}
void keyscan(void)
{
if(P1_1==0)
{
delay();
if(P1_1==0)
{
while(P1_1==0);
keycount++;
if(keycount>=2) keycount=0;
}
}
}
/**********************矩阵键盘模块*************************/
void MatrixKeyScan(void)
{
P2=0x7f;
if(P2!=0x7f)
{
delay();
if(P2!=0x7f)
{
switch(P2)
{ case 0x77:key=7;break;
case 0x7b:key=4;break;
case 0x7d:key=1;break;
case 0x7e:key=0;break;
}
//P0=~key;
}
}
P2=0xbf;
if(P2!=0xbf)
{
delay();
if(P2!=0xbf)
{
switch(P2)
{case 0xb7:key=8;break;
case 0xbb:key=5;break;
case 0xbd:key=2;break;
case 0xbe:key=13;break;
}
// P0=~key;
}
}
P2=0xdf;
if(P2!=0xdf)
{
delay();
if(P2!=0xdf)
{
switch(P2)
{case 0xd7:key=9;break;
case 0xdb:key=6;break;
case 0xdd:key=3;break;
case 0xde:key=14;break;
}
// P0=~key;
}
}
P2=0xef;
if(P2!=0xef)
{
delay();
if(P2!=0xef)
{
switch(P2)
{case 0xe7:key=10;break;
case 0xeb:key=11;break;
case 0xed:key=12;break;
case 0xee:key=15;break;
}
// P0=~key;
}
}
}
/**********************矩阵键盘模块*************************/
//主程序
void main(void)
{
while(1)
{
keyscan();
if(keycount==0)
{
Power_ON_Flag = 1;
TMOD=0x10;
TR1=1;
ET1=1;
PT1=1;
EA=0;
while(keycount==0)
{
door();
scan(temp,exchang);
HTH1=table[temp[0]][temp[1]-4]/256;
LTL1=table[temp[0]][temp[1]-4]%256;
TR1=1;
if(EA==1) P0=light[temp[0]][temp[1]-4];
Cnt ++;
if (Press_Flag&&(Cnt==5000))
{
Press_Flag = 0;
EA = 0;
}
keyscan();
}
}
if(keycount==1)
{
// 设置定时器--------------------------------------
TMOD = 0x11; // TMOD: 定时器1:模式1:16位;定时器2:模式1:16位 //
// TCON = 0x50; // TCON: 定时器 1运行; 定时器 2运行 //
// 设置并开启中断:
IP = 0x08; //中断优先寄存器IP:|D7_x |x|x
//|PS|PT1|PX1|PT0|D0_PX0|//
IE = 0x88; //中断允许寄存器
EA=1;
PT1=0;
ET1=0;
key=0;
//IE:|D7_EA|x|ET2|ES|ET1|EX1|ET0|D0_EX0|//
while(keycount==1)
{
MatrixKeyScan();
switch(key)
{
case 1: music_play(music_tab1);key=0;break;
case 2: music_play(music_tab2);key=0;break;
case 3: music_play(music_tab3);key=0;break;
case 12: music_play(music_tab4);key=0;break;
default :break;
}
// music_play(music_tab1);
// music_play(music_tab2);
// music_play(music_tab3);
// music_play(music_tab4);
keyscan();
}
EA=0;
key=0;
}
/* MatrixKeyScan();
if(key==1) {P0_0=0;key=0;}
if(key==2) {P0_1=0;key=0;}
if(key==3) {P0_2=0;key=0;}
if(key==4) {P0_3=0;key=0;}
if(key==5) {P0_3=0;key=0;}
if(key==6) {P0_3=0;key=0;}
if(key==7) {P0_3=0;key=0;}
if(key==9) {P0_3=0;key=0;}
if(key==10) {P0_3=0;key=0;}
if(key==11) {P0_3=0;key=0;}
if(key==12) {P0_3=0;key=0;}
if(key==13) {P0_3=0;key=0;} */
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -