⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music.c

📁 一个新颖的乐器.我参加西电星火杯的作品.里面有详细的.doc说明
💻 C
字号:
#include <iom8v.h>
#include <macros.h>
#include "do_le_mi.h"
int T=0xFF00;
int N=0xFF00;

void GPIO_INIT(void)
{
  	DDRB=0x00; //定义 PB为输入
	//SFIOR&=~BIT(PUD); // SFIOR寄存器的上拉电阻控制位PUD置0,
	PORTB|=0xFF; // 将 PORT 置1,满足上拉电阻的另一个条件 
	DDRC=0x01; //定义 PC0为输出 
	//PORTC=~BIT(0); // PC0 输出高电平
	PORTC=0xFF; // PC0 输出高电平
	DDRD=0x80;
	PORTD=0x80;


}
void timer1_init(void)
{
 		TCCR1B = 0x00; //stop
		TCNT1=65535-T;
 		TCCR1A = 0x00;//can be ignored
 		TCCR1B = 0x01; //start Timer   devide 1
        //TCCR1B = 0x04; //start Timer   devide 256
}
#pragma interrupt_handler timer1_ovf_isr:9
void timer1_ovf_isr(void)
{
 TCNT1=65535-T;
 PORTC=~PORTC;
}
void main(void)

{
  char x;
  int y;
  //int a,b;
  //开中断
  CLI(); //disable all interrupts
  OSCCAL=0XBA;
  MCUCR = 0x00;
  GICR  = 0x00;
  TIMSK=0x04;
  timer1_init();
  SEI(); //re-enable interrupts
  GPIO_INIT();

  
  while(1)
  {
        
            x=read_key();	
		//x=~0xFF01;
			y=(int)x;
			
            switch(y)
            {  
                  case ~0xFF01:N=L7;break;
                  case ~0xFF02:N=M1;break;
                  case ~0xFF04:N=M2;break;
                  case ~0xFF08:N=M3;break;
                  case ~0xFF10:N=M4;break;
                  case ~0xFF20:N=M5;break;
                  case ~0xFF40:N=M6;break;
                  case ~0xFF80:N=M7;break;
                  case ~0xFF81:N=L5;break;
                  case ~0xFF42:N=L6;break;
                  case ~0xFF24:N=H1;break;
                  case ~0xFF18:N=H2;break;
                  default:N=EM;TCCR1B=0x00;PORTC=0x00;
				  /*
				  case ~0xFF01:N=400;break;
                  case ~0xFF02:N=401;break;
                  case ~0xFF04:N=402;break;
                  case ~0xFF08:N=403;break;
                  case ~0xFF10:N=404;break;
                  case ~0xFF20:N=405;break;
                  case ~0xFF40:N=406;break;
                  case ~0xFF80:N=407;break;
                  case ~0xFF81:N=408;break;
                  case ~0xFF42:N=409;break;
                  case ~0xFF24:N=410;break;
                  case ~0xFF18:N=411;break;
                  default:N=399;TCCR1B=0x00;PORTC=0x00;
				  */
            }
        if (T==N)
          ;
        else
		{
          T=N;
		  TCCR1B=0x01;
          TCNT1=65535-T;
        }    
           
      
    
  }
}
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -