微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 简易电子琴程序问题求助

简易电子琴程序问题求助

时间:10-02 整理:3721RD 点击:

  哪位好心人能帮我看看这个程序问题出在哪里,是制作一个简易电子琴,真心感谢啊!一直运行不成功

#include <reg52.h>

#include <stdio.h>

#define  uchar  unsigned  char

#define  uint   unsigned  int

sbit  buz=P0^0;

uchar  keycode;

/*各音阶对应计数器初值:1,2,3,4,5,6,7,1(高)*/

uint  toneh[8]={ 0xfc43,0xfcab,0xfd08,0xfd32,0xfd81,0xfdc7,0xfe05,oxfe21};

uchar  keymode [8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void  main()

{

   Sys_Init();

   do

  {

     keycode=Get_Key();   /*获取键值索引*/

     Play(keycode);

  }

unchar   Get_Key  ()

{

    uchar  temp,i;

    p1=0xff;

    temp=P1;

    for  (i=0;i<8;i++)

    {

        if  (temp==keymode )   return  i;

    }

    return  (8);  //无正确对应的键值,则忽略

void  sys_init()

{

    TMOD=0x10; /*启动定时器1*/

    EA=1;      /*开总中断*/

    ET1=1;     /*允许定时器1中断*/

    P1=0xff;   /*设置P1口为输入模式*/

void  play (uchar  key)

{

    if  (key==8)/*无键按下或多键按下,不响应*/

  {

       TR1=0;

       buz=0;

   }

   else

   {

       TR1=1;  /*有键按下,开中断*/

       keycode=key;   /*键值索引赋值*/

    }

void  timer 0(void)  interrupt  3  using  1      /*定时器1中断服务程序*/

{  

     buz= !buz;

     TH0=toneh[keycode]/256;   /*获取各键对应的乐音频率所需的定时器高位初值*/

     TL0=tonel[keycode]%256;   /*获取各键对应的乐音频率所需的定时器低位初值*/

请问做电子琴,用WT588D这个,键盘控制,还要单片机吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top