新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)電子琴設(shè)計(jì)

單片機(jī)電子琴設(shè)計(jì)

作者: 時(shí)間:2013-04-02 來源:網(wǎng)絡(luò) 收藏

DK4A: MOV A,P3

ANL A,#0FH

XRL A,#0FH

JNZ DK4A

CLR TR0

NOKEY4:

LJMP WAIT

DELY10MS:

MOV R6,#10

D1: MOV R7,#248

DJNZ R7,$

DJNZ R6,D1

RET

INT_T0:

MOV TH0,STH0

MOV TL0,STL0

CPL P1.0

RETI

TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

TABLE1: DW 64021,64103,64260,64400

DW 64524,64580,64684,64777

DW 64820,64898,64968,65030

DW 65058,65110,65157,65178

END

7. C語言源程序

#include AT89X51.H>

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

unsigned char temp;

unsigned char key;

unsigned char i,j;

unsigned char STH0;

unsigned char STL0;

unsigned int code tab[]={64021,64103,64260,64400,

64524,64580,64684,64777,

64820,64898,64968,65030,

65058,65110,65157,65178};

void main(void)

{

TMOD=0x01;

ET0=1;

EA=1;

while(1)

{

P3=0xff;

P3_4=0;

temp=P3;

temp=temp 0x0f;

if (temp!=0x0f)

{

for(i=50;i>0;i--)

for(j=200;j>0;j--);

temp=P3;

temp=temp 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp 0x0f;

switch(temp)

{

case 0x0e:

key=0;

break;

case 0x0d:

key=1;

break;

case 0x0b:

key=2;

break;

case 0x07:

key=3;

break;

}

temp=P3;

P1_0=~P1_0;

P0=table[key];

STH0=tab[key]/256;

STL0=tab[key]%6;

TR0=1;

temp=temp 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp 0x0f;

}

TR0=0;

}

}

P3=0xff;

P3_5=0;

temp=P3;

temp=temp 0x0f;

if (temp!=0x0f)

{

for(i=50;i>0;i--)

for(j=200;j>0;j--);

temp=P3;

temp=temp 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp 0x0f;

switch(temp)

{

case 0x0e:

key=4;

break;

case 0x0d:

key=5;

break;

case 0x0b:

key=6;

break;

case 0x07:

key=7;

break;

}

temp=P3;

P1_0=~P1_0;

P0=table[key];

STH0=tab[key]/256;

STL0=tab[key]%6;

TR0=1;

temp=temp 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp 0x0f;

}

TR0=0;

}

}

P3=0xff;

P3_6=0;

temp=P3;

temp=temp 0x0f;

if (temp!=0x0f)

{

for(i=50;i>0;i--)

for(j=200;j>0;j--);

temp=P3;

temp=temp 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp 0x0f;

switch(temp)

{

case 0x0e:

key=8;

break;

case 0x0d:

key=9;

break;

case 0x0b:

key=10;

break;

case 0x07:

key=11;

break;

}

temp=P3;

P1_0=~P1_0;

P0=table[key];

STH0=tab[key]/256;

STL0=tab[key]%6;

TR0=1;

temp=temp 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp 0x0f;

}

TR0=0;

}

}

P3=0xff;

P3_7=0;

temp=P3;

temp=temp 0x0f;

if (temp!=0x0f)

{

for(i=50;i>0;i--)

for(j=200;j>0;j--);

temp=P3;

temp=temp 0x0f;

if (temp!=0x0f)

{

temp=P3;

temp=temp 0x0f;

switch(temp)

{

case 0x0e:

key=12;

break;

case 0x0d:

key=13;

break;

case 0x0b:

key=14;

break;

case 0x07:

key=15;

break;

}

temp=P3;

P1_0=~P1_0;

P0=table[key];

STH0=tab[key]/256;

STL0=tab[key]%6;

TR0=1;

temp=temp 0x0f;

while(temp!=0x0f)

{

temp=P3;

temp=temp 0x0f;

}

TR0=0;

}

}

}

}

void t0(void) interrupt 1 using 0

{

TH0=STH0;

TL0=STL0;

P1_0=~P1_0;

}


上一頁 1 2 3 下一頁

關(guān)鍵詞: 單片機(jī) 電子琴 AT89S51

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉