ATMEGA

10월 18일 ATMEGA

박잡스 2010. 10. 18. 15:59
FND 실습






응용실습예제
1.앞의예제를수정하여, 버튼을누르면두개의FND가동일한숫자를표시하도록하기.
#include <avr/io.h>

int main()
{
  DDRC = 0x00;

  DDRE = 0xFF;
  PORTE = 0xFF;

  volatile unsigned char i = 0;
  volatile unsigned char a = 0;
  volatile unsigned char k = 0;

  for(;;)
  {
    asm("NOP");
    i = 0;

    a = ~PINC;
  while(a>=1)
  {
    a/2;
    i++;
  }
  i=i<<4|i;
  PORTE = i;
  
  }

  return 1;
}
}

2.0~99까지순차적으로숫자를1씩증가하면서FND에표시하기

#include <avr/io.h>

int main()
{
  
  DDRE = 0xFF;
  
  PORTE = 0xFF;

  volatile unsigned int i = 0;
  volatile unsigned int j = 0;
  volatile unsigned int k = 0;
  volatile unsigned int t = 0;

  for(i=0;i<100;++i)
  {
    
    k=i%10;
    
    
    t=(i/10<<4)|k;
    PORTE=t;
    
    
    for(j=0;j<60000;j++);
    for(j=0;j<60000;j++);

  
  }

  return 1;
}


3.99~0까지순차적으로숫자를1씩감소하면서FND에표시하


#include <avr/io.h>

int main()
{
  
  DDRE = 0xFF;
  
  PORTE = 0xFF;

  volatile char i = 0;
  volatile unsigned int j = 0;
  volatile unsigned int k = 0;
  volatile unsigned int t = 0;

  for(i=99;i>=0;--i)
  {
    if(i==0)
    {
    PORTE=0x00;
    break;
    }
    k=i%10;
    
    
    t=(i/10<<4)|k;
    PORTE=t;
    
    
    for(j=0;j<60000;j++);
    for(j=0;j<60000;j++);

  }

  return 1;
}