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

📄 main._c

📁 一个关于AVR单片机的例程
💻 _C
字号:
//ICC-AVR application builder : 2007-5-16 5:50:45
// Target : M16
// Crystal: 4.0000Mhz

#include <iom16v.h>
#include <macros.h>
extern void delay_ms (int time);
void port_init(void)
{
 PORTA = 0x00;
 DDRA  = 0xFF;
 PORTB = 0xF0;
 DDRB  = 0x0F;
 PORTC = 0x80; //m103 output only
 DDRC  = 0x80;
 PORTD = 0x04;
 DDRD  = 0x00;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
 //stop errant interrupts until set up
 CLI(); //disable all interrupts
 port_init();

 MCUCR = 0x00;
 GICR  = 0x40;
 TIMSK = 0x00; //timer interrupt sources
 SEI(); //re-enable interrupts
 //all peripherals are now initialized
}


const unsigned char table[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x77,0x1f,0x4e,0x3d,0x4f,0x47};
unsigned char position[]={0x80,0x80,0x80,0x80};
unsigned char key;
void main(void)
{

init_devices();
while(1)
{
 PORTA=table[key];
 }
}
/*
void main(void)
{
init_devices();
 for(;;)
 {
  unsigned char i;
  for(i=0;i<4;i++)
  {PORTC|=position[i];
   PORTA=table[key];
   delay_ms(2); 
  }
 }
} 
#pragma interrupt_handler scan_key:2
 void scan_key(void)
 { CLI();
  switch(PINB)
   {
    case 0x70:key=0;break;
    case 0xb0:key=1;break;
    case 0xd0:key=2;break;
    case 0xe0:key=3;break;
   }
  PORTB=0x0F;
  DDRB=0xF0;
  delay_ms(1);
  switch(PINB&0X0F)
    {
	case 0x07:key=key+0;break;
	case 0x0b:key=key+4;break;
	case 0x0d:key=key+8;break;
	case 0x0e:key=key+12;break;
	}
	PORTB=0xF0;
    DDRB=0x0F;
	SEI();
 }
*/
#pragma interrupt_handler scan_key:2
 void scan_key(void)
{
NOP();
 NOP();
	PORTB=0xF0;
    DDRB=0x0F;
  NOP();
  if(PINB!=0xF0)
  {
  delay_ms(10);
  if(PINB!=0xF0)
  {
  //key=0;
   switch(PINB)
   {
    case 0x70:key=0;break;
    case 0xb0:key=1;break;
    case 0xd0:key=2;break;
    case 0xe0:key=3;break;
	default: break;
   }
  PORTB=0x0F;
  DDRB=0xF0;
  NOP();
  switch(PINB&0X0F)
    {
	case 0x07:key=key+0;break;
	case 0x0b:key=key+4;break;
	case 0x0d:key=key+8;break;
	case 0x0e:key=key+12;break;
	default: break;
	}
  NOP();
  NOP();
  }
  }
}

⌨️ 快捷键说明

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