新聞中心

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

        單片機電子琴設計

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

        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 下一頁

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 靖边县| 五家渠市| 恭城| 罗定市| 石楼县| 郑州市| 博白县| 江油市| 翁源县| 县级市| 安阳市| 罗源县| 舒城县| 闽侯县| 海淀区| 贵南县| 乐昌市| 清水河县| 疏附县| 商河县| 马尔康县| 东安县| 裕民县| 盘锦市| 罗田县| 黄龙县| 台南市| 温州市| 鲁山县| 得荣县| 湾仔区| 汾阳市| 沂源县| 宁德市| 临邑县| 宜兴市| 繁昌县| 泽州县| 民和| 洛隆县| 英山县|