8051
AVR
EZLab
PIC
80C196KC
DSP
ARM
VHDL
¸¶ÀÌÅ©·Î¸¶¿ì½º
·Îº¿Ã౸
Battle ·Îº¿
·Îº¿´ëȸ
È޸շκ¿
Embeded Linux
HW/SW °­ÁÂ
RTOS
 
 

2. LED ±ô¹ÚÀ̱â

 

   Àú¹ø °­Á¿¡¼­´Â °³¹ßȯ°æÀ» ±¸ÃàÇß´Ù. ÀÌÁ¦ ±¸½½Àº ÁغñµÇ¾ú°í, ÀÌÁ¦ºÎÅÍ´Â ±¸½½À» Çϳª¾¿ ²ç¾î º¸±â·Î ÇÏÀÚ. ¿À´Ã ´Ù·ê ÁÖÁ¦´Â 8°³ÀÇ LED¸¦ ¼øÂ÷ÀûÀ¸·Î ¹Ýº¹Çؼ­ ÄÑ´Â ½ÇÇèÀÌ´Ù. ¸ÕÀú Volker Oth°¡ ¹èÆ÷ÇÑ avrgcc ÆÐÅ°Áö¿¡ º¸¸é gcctest°¡ Æ÷ÇԵǾî ÀÖ´Ù. À©µµ¿ì¿ë avr-gcc¸¦ ¼º°øÀûÀ¸·Î ¼³Ä¡ÇÑ »ç¶÷µéÀº ´Ù °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. c:\avr-gcc¿¡ avr-gcc¸¦ ¼³Ä¡ÇÏ¿´´Ù¸é ÇÏÀ§ µð·ºÅ丮¿¡ gcctest¸¦ Ç®µµ·Ï ÇÑ´Ù. ±×·¯¸é c:\avr-gcc\gcctest\gcctest1 µð·ºÅ丮 ¹Ø¿¡ ¿À´ÃÀÇ ÁÖÁ¦ ¼Ò½º ÆÄÀÏÀÌ ÀÖÀ» °ÍÀÌ´Ù. ¸ÕÀú gcctest1 µð·ºÅ丮¸¦ »ìÆ캸¸é ´ÙÀ½°ú °°Àº ÆÄÀϵéÀÌ Á¸ÀçÇÑ´Ù.

 

gcctest1.c

 À̹ø¿¡ ´Ù·ê ¼Ò½º ÆÄÀÏÀÌ´Ù.

makefile

 ¼Ò½º ÆÄÀÏÀ» ÄÄÆÄÀÏÇϴµ¥ ÇÊ¿äÇÑ ±ÔÄ¢ÆÄÀÏ, ÀÚ¼¼ÇÑ ³»¿ëÀº avr-gcc ¼³Ä¡¹ýÀ» Âü°í

 

±×¸®°í ½ÇÇè¿¡ ÀÌ¿ëµÉ ȸ·Îµµ´Â ´ÙÀ½°ú °°´Ù.

   ¸ÕÀú À§ÀÇ ±×¸²°ú °°ÀÌ PORTB¿¡ LED¸¦ 8°³ ºÎÂøÇÑ´Ù. ±×¸²Ã³·³ ±»ÀÌ 9V¸¦ ¿¬°áÇÒ ÇÊ¿ä´Â ¾ø´Ù. 5V ÆÄ¿ö ¼­ÇöóÀÌ°¡ ÀÖÀ¸¸é ¹Ù·Î ¿¬°áÇؼ­ ½áµµ ÁÁ´Ù. ±×¸®°í ±×¸² ¿ÞÆí¿¡¼­ Voltage Dector´Â ¾ø´Ù°í »ý°¢Çصµ ÁÁÀ¸¸ç, PD2, PD3¿¡ ½ºÀ§Ä¡´Â ºÎÂøÇÏÁö ¾Ê¾Æµµ ÁÁ´Ù.

   ±×¸²¿¡¼­ LED°¡ PORTB¿¡ ºÎÂøµÇ¾î ÀÖÀ¸¸ç, LEDÀÇ Ä³¼Òµå°¡ Æ÷Æ®ÇÉ¿¡ ¹°·ÁÀÖ´Ù. µû¶ó¼­ Æ÷Æ® BÀÇ Ãâ·ÂÀÌ '0'À̸é LED°¡ ÄÑÁø´Ù. PORTB¿¡ '0'¸¦ Ãâ·ÂÇϱâ À§Çؼ­´Â ´ÙÀ½°ú °°Àº °úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. PORTB´Â ÀÔ·Â/Ãâ·ÂÇÉÀ¸·Î »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ PORTB¸¦ Ãâ·ÂÀ¸·Î ¼³Á¤ÇÏ¿©¾ß ÇÑ´Ù. PORTBÀÇ ÀÔÃâ·ÂÀ» °áÁ¤ÇÏ´Â °ÍÀÌ DDRB ·¹Áö½ºÅÍ ÀÌ´Ù. 8515ÀÇ ¸Å´º¾óÀ» º¸¸é DDRB¿¡ ´ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ±â¼úÇÏ°í ÀÖ´Ù. DDRB´Â 8ºñÆ® ·¹Áö½ºÅÍ·Î½á °¢ ºñÆ®´Â PORTBÀÇ ÇÉ°ú °ü°è°¡ ÀÖ´Ù. Áï DDRBÀÇ 5¹ø° ºñÆ®¿¡ 1À» ¾²¸é PB5(PORTBÀÇ 5¹ø° ÇÉ)À» Ãâ·ÂÀ¸·Î ¼³Á¤ÇÑ´Ù. ¿ì¸®´Â PB0~PB7À» ¸ðµÎ Ãâ·ÂÀ¸·Î »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. µû¶ó¼­ DDRB¿¡ 0xFF¸¦ ½áÁÖ¸é µÈ´Ù. PORTB¿¡ ¿øÇÏ´Â °ªÀ» Ãâ·ÂÇÏ°í ½ÍÀ» ¶§´Â ¾î¶»°Ô ÇØ¾ß ÇÒ±î? ´äÀº PORTB ·¹Áö½ºÅÍ¿¡ ¿øÇÏ´Â °ªÀ» ¾²´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î PORTB¿¡ 0x02¸¦ ¾²¸é PB1¿¡ '1'ÀÌ Ãâ·ÂµÇ°í ³ª¸ÓÁö Çɵ鿡´Â '0'ÀÌ Ãâ·ÂµÈ´Ù. µû¶ó¼­ PB1¿¡ ¿¬°á±­ LED¸¦ Á¦¿ÜÇÑ ¸ðµç LED°¡ ÄÑÁú °ÍÀÌ´Ù.

   ±×·³ ÀÌÁ¦ ¾Æ·¡ÀÇ ¼Ò½º ÆÄÀÏÀ» º¸ÀÚ.

 

/*
    Title:    AVR-GCC test program #1 for the STK200 eva board
    Author:   Volker Oth
    Date:     4/1999
    Purpose:  Flashes the LEDs on Port B with a hard coded delay loop
    needed
    Software: AVR-GCC
    needed
    Hardware: ATS90S8515/8535/2313/mega on STK200/STK300 board
    Note:     To contact me, mail to
                  volkeroth@gmx.de
              You might find more AVR related stuff at my homepage:
                  http://members.xoom.com/volkeroth
*/

#include <io.h>                /* ÀÔÃâ·Â ÇÔ¼ö°¡ Á¤ÀǵǾî ÀÖ´Ù. */

typedef unsigned char  u08;

int main( void )               /* main() ÇÔ¼ö´Â ¸ðµç ÇÔ¼öÀÇ ½ÃÀÛ ÁöÁ¡ÀÌ´Ù. */
{
   u08 led, i, j, k;           
/* led : ledÀÇ »óŸ¦ ÀúÀå, i, j, j : ¾Æ·¡ÀÇ for ·çÇÁ¸¦ ¼öÇàÇÏ´Â ÇÊ¿äÇÑ º¯¼ö */

   outp(0xff, DDRB);           /* PORTBÀÇ ¹æÇâÀ» ¸ðµÎ Ãâ·ÂÀ¸·Î ¼±¾ð */

   led = 1;                    /* led¶ó´Â º¯¼ö¸¦ 1·Î ÃʱâÈ­ */

   for (;;) {                  /* ¹«ÇÑ ·çÇÁ ½ÃÀÛ */
       outp(~led, PORTB);      
/* led¶ó´Â º¯¼ö¸¦ ¹ÝÀü½ÃŲÈÄ PORTB¿¡ ±× °ªÀ» ¾´´Ù. */
       led <<= 1;              
/* led¶ó´Â º¯¼ö³»ÀÇ °ªÀ» ¿ÞÂÊÀ¸·Î 1ºñÆ® ½¬ÇÁÆ®ÇÑ´Ù. */
       if (!led)               
/* led¶ó´Â º¯¼ö°¡ 8¹ø ½¬ÇÁÆ®µÇ¸é ´Ù½Ã 1À» ÀÔ·ÂÇÑ´Ù. */
           led = 1;


       for (i=0; i<255; i++)   
/* ½Ã°£À» Áö¿¬½ÃÅ°±â À§ÇÑ ·çÇÁ */
           for(j=0; j<255;j++)
               k++;            
/* Àǹ̾øÀÌ ½Ã°£ Áö¿¬À» À§ÇÑ µ¡¼À */

    }

}

 

   À§ÀÇ ¼Ò½º ÆÄÀÏ¿¡¼­ º¸¸é »ý¼ÒÇÑ °ÍµéÀÌ ¸î°¡Áö ³ª¿Â´Ù. ¸ÕÀú io.h ÆÄÀÏÀº ÀÔÃâ·Â¿¡ °ü°èµÈ ÇÔ¼öµé°ú ·¹Áö½ºÅÍÀÇ ¾îµå·¹½º°¡ ¼±¾ðµÈ ÆÄÀÏÀÌ´Ù. ¿ì¸®ÀÇ ¿¹Á¦¿¡¼­´Â outp()¶ó´Â ÇÔ¼ö°¡ ³ª¿À´Âµ¥ ÀÌ ÇÔ¼ö°¡ io.h¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù. ±×¸®°í outp() ÇÔ¼ö¸¦ ¼³¸íÇÏ¸é ´ÙÀ½°ú °°´Ù.

outp(value, register_address);

                       value : ·¹Áö½ºÅÍ¿¡ ¾²°í ½ÍÀº °ªÀ» ÀǹÌÇÑ´Ù.
                       register_address : °ªÀ» ¹Ù²Ù°í ½ÍÀº ·¹Áö½ºÅÍÀÇ ¾îµå·¹½º¸¦ ÀǹÌÇÑ´Ù.

µû¶ó¼­, outp(0xff, DDRB); ¶ó°í Çϸé DDRB ·¹Áö½ºÅÍ¿¡ 0xff¸¦ ¾´´Ù. ±×¸®°í led¶ó´Â º¯¼ö´Â LED¸¦ Äѱâ À§ÇÑ °ªÀ» ÀúÀåÇÏ°í ÀÖ´Â º¯¼öÀÌ´Ù. óÀ½ºÎÅÍ µû¶ó°¡ º¸¸é óÀ½¿¡ led=1·Î ÃʱâÈ­µÈ´Ù. ±×¸®°í for()·çÇÁ¿¡ µé¾î°¡¼­ led°ªÀ» ¹ÝÀü½ÃŲÈÄ, Áï (1ÀÇ ¹ÝÀü=>0xFE)°¡ µÈ´Ù. À̸¦ PORTB¿¡ ¾´´Ù. ±×·¯¸é PB0¿¡ ¹°¸° LED°¡ ÄÑÁø´Ù. ±×¸®°í ledº¯¼ö¸¦ ¿ÞÂÊÀ¸·Î ½¬ÇÁÆ® 1Çϸé led=1¿¡¼­ led=2°¡ µÈ´Ù. Áï, ´ÙÀ½¹ø¿¡ ÄÑÁö´Â LED´Â PB1ÀÌ µÇ°í, ¶Ç ´Ù½Ã led°¡ ¿ÞÂÊÀ¸·Î ½¬ÇÁÆ® 1Çϸé PB2°¡ ÄÑÁø´Ù. ÀÌ·± ½ÄÀ¸·Î °è¼Ó for()·çÇÁ¸¦ ¹Ýº¹ÇÏ¸é °á±¹ led=0x80ÀÌ µÇ°í ÀÌ »óÅ¿¡¼­ ¿ÞÂÊÀ¸·Î ½¬ÇÁÆ® 1¸é led º¯¼ö°ªÀº 0°¡ µÈ´Ù. ±×·¯¸é if(!led)¶ó´Â Á¶°Ç¹®¿¡¼­ °É·Á¼­ led=1·Î ´Ù½Ã ÃʱâÈ­µÈ´Ù. ¸¶Áö¸·¿¡ ÀÖ´Â for() ·çÇÁ µÎ °³´Â ½Ã°£ µô·¹À̸¦ ¾ò±â À§ÇÑ ºÎºÐÀÌ´Ù. ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â AVRÀÇ ¸í·É¾î ¼öÇà ¼Óµµ°¡ ¸Å¿ì ºü¸£±â ¶§¹®¿¡ µô·¹À̸¦ ÁÖÁö ¾ÊÀ¸¸é LED°¡ 8°³ ¸ðµÎ ÄÑÁø °Íó·³ º¸ÀÌ°Ô µÈ´Ù.

  ´ÙÀ½ gcctest1 µð·ºÅ丮¿¡¼­ make¶ó°í Ä¡°í ¿£Å͸¦ ´©¸£¸é ÄÄÆÄÀÏÀÌ µÉ °ÍÀÌ´Ù. ÄÄÆÄÀÏ ÈÄ¿¡ »ý¼ºµÇ´Â ÆÄÀÏÀº ´ÙÀ½°ú °°´Ù.

gcctest1.o

 gcctest1.cÀ» ÄÄÆÄÀÏÇÏ¿© ¾ò¾îÁø ¿ÀºêÁ§Æ® ÆÄÀÏ.

gcctest1.lst

 gcctest1.c°¡ ¾î¼Àºí¸® ¾ð¾î·Î º¯È¯µÈ ÆÄÀÏ(¸®½ºÆ® ÆÄÀÏÀ̶ó°í ºÎ¸¥´Ù).

gcctest1.obj

 AVR-Studio¿¡¼­ »ç¿ëÇϱâ À§ÇÑ ¿ÀºêÁ§Æ® ÆÄÀÏ

gcctest1.map

 ·ÒÆÄÀÏÀÇ ±¸¼ºÀÌ ¾î¶»°Ô µÇ´ÂÁö¸¦ º¸ÀÌ´Â ¸ÊÆÄÀÏ

gcctest1.rom

 ÄÄÆÄÀÏµÈ ±â°è¾î ÄÚµå, Áï ·ÒÆÄÀÏ

gcctest1.eep

 8515³»ºÎÀÇ EEPROM µ¥ÀÌÅÍ ÄÚµå

À§¿¡¼­ *.eep ÆÄÀÏÀº ¾ÆÁ÷ ÇÊ¿ä°¡ ¾øÀ¸¸ç, ÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§Çؼ­´Â *.rom ÆÄÀÏÀ» ISP¸¦ ÀÌ¿ëÇÏ¿© Ç÷¡½¬¿¡ ÇÁ·Î±×·¥ÇÏ¸é µÈ´Ù.

   gcctest1.rom ÆÄÀÏÀ» ÇÁ·Î±×·¥Çϱâ À§Çؼ­´Â ¸ÕÀú ȨÆäÀÌÁö¿¡ ÀÖ´Â AVR_ISP¸¦ ¼³Ä¡ÇÏ¿©¾ß ÇÑ´Ù. AVR_ISP¸¦ ¸ÕÀú ½ÇÇàÇÏ°í, ¸Þ´º¿¡¼­ Project->New Project...À» ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°Àº ÂüÀÌ ¶á´Ù. ±×·¯¸é µð¹ÙÀ̽º ¼±Åà âÀÌ ¶ß°í µ¶ÀÚÀÇ È¯°æ¿¡ ¸Â´Â µð¹ÙÀ̽º¸¦ ¼±ÅÃÇÑ´Ù.

  

±×·± ´ÙÀ½ Title¿¡ ´ÙÀ½°ú °°ÀÌ gcctest1À̶ó°í ¾´´Ù.

±×·± ´ÙÀ½ ¼¼°¡Áö À©µµ¿ì(Data EEPROM Memory À©µµ¿ì, Program Memory À©µµ¿ì, Project Manager À©µµ¿ì)¿¡¼­ Program Memory À©µµ¿ì¸¦ Ŭ¸¯ÇÑ´Ù. ±×·± ´ÙÀ½ ¸Þ´º¿¡¼­ File->Load¸¦ ¼±ÅÂÇÑ ´ÙÀ½ gcctest1.romÀ» ¼±ÅÃÇÑ´Ù.

±×·¯¸é ´ÙÀ½°ú °°ÀÌ ÆÄÀÏÀÌ ¼º°øÀûÀ¸·Î ÀÐÈù´Ù.

±×¸®°í ³­ ÈÄ ¸Þ´º¿¡¼­ Options->Change Printer Port¸¦ ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°ÀÌ ÇÁ·Î±×·¡¸Ó¸¦ °¨ÁöÇÑ´Ù. ÇÊÀÚÀÇ °æ¿ì´Â STK300À» »ç¿ëÇϱ⠶§¹®¿¡ ¾Æ·¡¿Í °°ÀÌ Ãâ·ÂµÈ´Ù.

´ÙÀ½Àº F5¸¦ ´©¸£°Å³ª ¸Þ´º¿¡¼­ Program->Auto-programÀ» ¼±ÅÃÇϸé ÇÁ·Î±×·¡¹ÖÀÌ µÈ´Ù. ¼Óµµ°¡ ´À¸± °æ¿ì´Â ´ÙÀ½°ú °°ÀÌ ÇÏ¸é »¡¸® ÇÁ·Î±×·¡¹Ö ÇÒ ¼ö ÀÖ´Ù. Áï EEPROMÀº Writer¿Í Verify¸¦ ÇÒ ÇÊ¿ä°¡ ¾øÀ¸¸ç, Verify Deviceµµ »ý·«Çصµ µÈ´Ù.(´ëºÎºÐ Verify¿¡ ½Ã°£ÀÌ ¸¹ÀÌ ¼Ò¿äµÈ´Ù.)

¿©±â±îÁöÇϸé LED°¡ ¼øÂ÷ÀûÀ¸·Î ±ô¹ÚÀÌ´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¸¶Áö¸·À¸·Î ÇÁ·ÎÁ§Æ®¸¦ ÀúÀåÇÑ´Ù. Project->Save Project...¸¦ ¼±ÅÃÇÑ ÈÄ ¿øÇÏ´Â ÆÄÀϸíÀ¸·Î ÇÁ·ÎÁ§Æ®¸¦ ÀúÀåÇÏ¸é µÈ´Ù. ÇÁ·ÎÁ§Æ®´Â *.avrÀ̶ó´Â È®ÀåÀÚ·Î ÀúÀåµÈ´Ù.

 5¸¦ ÀÌ¿ëÇÏ´Â ÆíÀÌ ³ºÀ» µí ½Í´Ù. °¡°Ýµµ 6,000~7,000¿ø Á¤µµÇÏ°í 8051ÇÏ°í ¿ÜÇüÀÌ ºñ½ÁÇÏ´Ù(ÇÏÁö¸¸ ´õ °­·ÂÇÏ´Ù). ±×¸®°í ISP ÇÁ·Î±×·¡¸Ó´Â "·Ò ¶óÀÌÅÍ ¸¸µé±â" ÄÚ

 

»óÈ£ : (ÁÖ) ·Îº¸ºí·° »ç¾÷ÀÚµî·Ï¹øÈ£:214-86-56219 Åë½ÅÆǸž÷½Å°í19-2544 ´ëÇ¥: ½Å´ë¼· ÀüÈ­:(02)2679-8556 Fax :(02)2679-8557 [°³ÀÎÁ¤º¸Ã³¸®¹æħ]
º»»ç : °æ±âµµ ºÎõ½Ã ¿ø¹Ì±¸ ¾à´ëµ¿ ºÎõ Å×Å©³ëÆÄÅ© 401µ¿ 502È£     ¼­¿ï»ç¹«¼Ò : ¼­¿ï½Ã ¿µµîÆ÷±¸ ¹®·¡µ¿ 4°¡ 8-1 4Ãþ
Copyright(C) 2004, (ÁÖ) ·Îº¸ºí·° ½Ã½ºÅÛÁî All Rights Reserved E-Mail : WebMaster