ÇнÀ¸ñÇ¥    1

ÇнÀÁÖÁ¦    1

¿¹½À³»¿ë    1

½Ç½À¹æ¹ý    1

°ú    Á¦    6

2°³ÀÇ Ä«¿îÅÍ¿Í ¼öÀÚÇ¥½Ã

ÇнÀ¸ñÇ¥

Ä«¿îÅÍ 2°³·Î °¢°¢ ¼öÀÚ¸¦ Ç¥½ÃÇϰí 2¼öÀÚÀÇ Â÷¸¦ ´Ù¸¥ ¼öÀÚÇ¥½Ã¿¡ ³ªÅ¸³½´Ù.

ÇнÀÁÖÁ¦

¾Õ¿¡¼­ Á¦ÀÛÇÑ Ä«¿îÅ͸¦ 1°³ Ãß°¡ÇÏ°í ¼öÀÚÇ¥½Ã´Â 3°³¸¦ »ç¿ëÇÑ´Ù.

¿¹½À³»¿ë

 

½Ç½À¹æ¹ý

¸ñ    Â÷

Ä«¿îÅÍ º»Ã¼ ȸ·Îµµ ÀÌ´Ù. LCD´Â ¸®¾ó½Ã½º ȸ»ç Á¦Ç°À» »ç¿ëÇÑ´Ù. ±×¸®°í ±ÙÁ¢¼¾¼­´Â 24V¸¦ »ç¿ëÇϰí 12V»ç¿ë½Ã¿¡´Â R3,R5ÀÇ Å©±â¸¦ 1/2·Î ÀÛ°Ô ÇÏ¸é µÈ´Ù.

1.       Ä«¿îÅÍ º¸µå Á¦ÀÛ

¾Æ·¡ ±×¸²°ú °°ÀÌ º¸µå¸¦ Á¦ÀÛÇÑ´Ù. ÀÌ ¶§ LCD¸¦ ¡°A¡±Ã¤³Î¿¡ ¿¬°áÇÏ¿© Á¦ÀÛÇÑ´Ù.

2. Ä«¿îÅÍ ÇÁ·Î±×·¥

INT0,1 µÎ°³ÀÇ ÀÎÅÍ·´Æ® ÇÔ¼ö¸¦ ¸¸µé°í UART0¿¡¼­ RX,TX ÀÎÅÍ·´Æ® ÇÔ¼ö¸¦ ¸¸µç´Ù. ³ª¸ÓÁö´Â Àü ´Ü¿ø°ú °°ÀÌ ¼±ÅÃÇÑ´Ù.

 

Ä«¿îÆ® ÇÁ·Î±×·¥

Åë½ÅÀÇ ½ÃÀÛÀº 0x02¸¦ º¸³»°í Ä«¿îÆ® µÈ ¼öÀÚ´Â 4°³ÀÇ ¹®ÀÚ·Î ¹Ù²Ù¾î¼­ Àü¼ÛÇÏ¿© 4°³ÀÇ 7¼¼±×¸ÕÆ®°¡ µ¿ÀÛÇϵµ·Ï ÇÑ´Ù.

#include <mega128.h>

#include <stdio.h>

#include <delay.h>

 

// Alphanumeric LCD Module functions

#asm

   .equ __lcd_port=0x1B

#endasm

#include <lcd.h>

 

void SendData();

 

char sbuf[20];

int count0=0,count1=0;

 

// External Interrupt 0 service routine

interrupt [EXT_INT0] void ext_int0_isr(void)

{

              count0++;

              SendData();

}

 

// External Interrupt 1 service routine

interrupt [EXT_INT1] void ext_int1_isr(void)

{

              count1++;             

              SendData();

}

 

#define RXB8 1

#define TXB8 0

#define UPE 2

#define OVR 3

#define FE 4

#define UDRE 5

#define RXC 7

 

#define FRAMING_ERROR (1<<FE)

#define PARITY_ERROR (1<<UPE)

#define DATA_OVERRUN (1<<OVR)

#define DATA_REGISTER_EMPTY (1<<UDRE)

#define RX_COMPLETE (1<<RXC)

 

// USART0 Receiver buffer

#define RX_BUFFER_SIZE0 8

char rx_buffer0[RX_BUFFER_SIZE0];

unsigned char rx_wr_index0,rx_rd_index0,rx_counter0;

// This flag is set on USART0 Receiver buffer overflow

bit rx_buffer_overflow0;

 

// USART0 Receiver interrupt service routine

#pragma savereg-

interrupt [USART0_RXC] void uart0_rx_isr(void)

{

char status,data;

#asm

    push r26

    push r27

    push r30

    push r31

    in   r26,sreg

    push r26

#endasm

status=UCSR0A;

data=UDR0;

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)

   {

   rx_buffer0[rx_wr_index0]=data;

   if (++rx_wr_index0 == RX_BUFFER_SIZE0) rx_wr_index0=0;

   if (++rx_counter0 == RX_BUFFER_SIZE0)

      {

      rx_counter0=0;

      rx_buffer_overflow0=1;

      };

   };

#asm

    pop  r26

    out  sreg,r26

    pop  r31

    pop  r30

    pop  r27

    pop  r26

#endasm

}

#pragma savereg+

 

#ifndef _DEBUG_TERMINAL_IO_

// Get a character from the USART0 Receiver buffer

#define _ALTERNATE_GETCHAR_

#pragma used+

char getchar(void)

{

char data;

while (rx_counter0==0);

data=rx_buffer0[rx_rd_index0];

if (++rx_rd_index0 == RX_BUFFER_SIZE0) rx_rd_index0=0;

#asm("cli")

--rx_counter0;

#asm("sei")

return data;

}

#pragma used-

#endif

 

// USART0 Transmitter buffer

#define TX_BUFFER_SIZE0 8

char tx_buffer0[TX_BUFFER_SIZE0];

unsigned char tx_wr_index0,tx_rd_index0,tx_counter0;

 

// USART0 Transmitter interrupt service routine

#pragma savereg-

interrupt [USART0_TXC] void uart0_tx_isr(void)

{

#asm

    push r26

    push r27

    push r30

    push r31

    in   r26,sreg

    push r26

#endasm

if (tx_counter0)

   {

   --tx_counter0;

   UDR0=tx_buffer0[tx_rd_index0];

   if (++tx_rd_index0 == TX_BUFFER_SIZE0) tx_rd_index0=0;

   };

#asm

    pop  r26

    out  sreg,r26

    pop  r31

    pop  r30

    pop  r27

    pop  r26

#endasm

}

#pragma savereg+

 

#ifndef _DEBUG_TERMINAL_IO_

// Write a character to the USART0 Transmitter buffer

#define _ALTERNATE_PUTCHAR_

#pragma used+

void putchar(char c)

{

while (tx_counter0 == TX_BUFFER_SIZE0);

#asm("cli")

if (tx_counter0 || ((UCSR0A & DATA_REGISTER_EMPTY)==0))

   {

   tx_buffer0[tx_wr_index0]=c;

   if (++tx_wr_index0 == TX_BUFFER_SIZE0) tx_wr_index0=0;

   ++tx_counter0;

   }

else UDR0=c;

#asm("sei")

}

#pragma used-

#endif

 

// Standard Input/Output functions

#include <stdio.h>

 

// Declare your global variables here

 

void main(void)

{

// Declare your local variables here

 

// Input/Output Ports initialization

// Port A initialization

// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In

// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T

PORTA=0x00;

DDRA=0x00;

 

// Port B initialization

// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In

// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T

PORTB=0x00;

DDRB=0x00;

 

// Port C initialization

// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In

// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T

PORTC=0x00;

DDRC=0x00;

 

// Port D initialization

// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In

// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T

PORTD=0x00;

DDRD=0x00;

 

// Port E initialization

// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In

// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T

PORTE=0x00;

DDRE=0x00;

 

// Port F initialization

// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In

// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T

PORTF=0x00;

DDRF=0x00;

 

// Port G initialization

// Func0=In Func1=In Func2=In Func3=In Func4=In

// State0=T State1=T State2=T State3=T State4=T

PORTG=0x00;

DDRG=0x00;

 

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

ASSR=0x00;

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

 

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// OC1C output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

OCR1CH=0x00;

OCR1CL=0x00;

 

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

 

// Timer/Counter 3 initialization

// Clock source: System Clock

// Clock value: Timer 3 Stopped

// Mode: Normal top=FFFFh

// OC3A output: Discon.

// OC3B output: Discon.

// OC3C output: Discon.

TCCR3A=0x00;

TCCR3B=0x00;

TCNT3H=0x00;

TCNT3L=0x00;

OCR3AH=0x00;

OCR3AL=0x00;

OCR3BH=0x00;

OCR3BL=0x00;

OCR3CH=0x00;

OCR3CL=0x00;

 

// External Interrupt(s) initialization

// INT0: On

// INT0 Mode: Rising Edge

// INT1: On

// INT1 Mode: Rising Edge

// INT2: Off

// INT3: Off

// INT4: Off

// INT5: Off

// INT6: Off

// INT7: Off

EICRA=0x0F;

EICRB=0x00;

EIMSK=0x03;

EIFR=0x03;

 

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

ETIMSK=0x00;

 

// USART0 initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART0 Receiver: On

// USART0 Transmitter: On

// USART0 Mode: Asynchronous

// USART0 Baud rate: 9600

UCSR0A=0x00;

UCSR0B=0xD8;

UCSR0C=0x06;

UBRR0H=0x00;

UBRR0L=0x67;

 

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

// Analog Comparator Output: Off

ACSR=0x80;

SFIOR=0x00;

 

// LCD module initialization

lcd_init(16);

 

// Global enable interrupts

#asm("sei")

 

sprintf(sbuf,"START");

lcd_gotoxy(0,0);      

lcd_puts(sbuf);

 

while (1)

      {

      // Place your code here

};

}

 

void SendData()

{

              char string[12]="12345678912";

              sprintf(sbuf,"T:%d A:%d B:%d",count0,count1,count0-count1);

             lcd_gotoxy(0,0);

             lcd_puts(sbuf);

              

             sprintf(string,"%c%4d%4d%4d",0x02,count0,count1,count0-count1);

             puts(string);

}

 

3. µð½ºÇ÷¹ÀÌ º¸µåÀÇ Á¦ÀÛ

¾Æ·¡ ±×¸²Àº ¼öÀÚÇ¥½Ã º¸µåÀÇ È¸·ÎµµÀÌ´Ù.

FÆ÷Æ®ÀÇ ÇÏÀ§4°³´Â Ãâ·ÂÀ¸·Î 4°³ ¼öÀÚÀÇ µµÆ®¸¦ Á¦¾îÇÏ°í »óÀ§ 4°³´Â ÀÔ·ÂÀ¸·Î ÀÌ ½Ã½ºÅÛÀÇ ID¸¦ ÇÁ·Î±×·¥ ½ÃÀÛÇÒ ¶§ ÀÐ¾î ¿Â´Ù.

 

4. ¼öÀÚÇ¥½Ã ÇÁ·Î±×·¥

 

¼öÀÚÇ¥½Ã ÇÁ·Î±×·¥

0x02ÀÇ ¹®ÀÚ°¡ ¿À¸é 4°³ÀÇ ¹®ÀÚ¸¦ ¹Þ¾Æ 4ÀÚ¸®ÀÇ 7¼¼±×¸ÕÆ®·Î Ç¥½ÃÇÑ´Ù.

0023°ú °°ÀÌ ¾Õ¿¡ 0ÀÌ ¾Õ¿¡ ¿À¸é À̴ ǥ½ÃÇÏÁö ¾Ê°Ô Çß´Ù.

#include <mega128.h>

#include <stdio.h>

#include <string.h>

#include <delay.h>

#include <stdlib.h>

 

#define RXB8 1

#define TXB8 0

#define UPE 2

#define OVR 3

#define FE 4

#define UDRE 5

#define RXC 7

 

#define FRAMING_ERROR (1<<FE)

#define PARITY_ERROR (1<<UPE)

#define DATA_OVERRUN (1<<OVR)

#define DATA_REGISTER_EMPTY (1<<UDRE)

#define RX_COMPLETE (1<<RXC)

 

#define sbit(x,y) (x |= (1<<y))  //BIT 1     

#define cbit(x,y) (x &= ~(1<<y)) //BIT 0

#define tbit(x,y) (x & (1<<y))   //BIT CHECK

                

void DispalyNumber();

 

// USART0 Receiver buffer

#define RX_BUFFER_SIZE0 15

char rx_buffer0[RX_BUFFER_SIZE0];

unsigned char rx_wr_index0,rx_rd_index0,rx_counter0;

// This flag is set on USART0 Receiver buffer overflow

bit rx_buffer_overflow0;

 

char sbuf[10],rmCount,ID=1;

int i,j;

char string[4];

 

// USART0 Receiver interrupt service routine

#pragma savereg-

interrupt [USART0_RXC] void uart0_rx_isr(void)

{

char status,data;

#asm

    push r26

    push r27

    push r30

    push r31

    in   r26,sreg

    push r26

#endasm

status=UCSR0A;

data=UDR0;

 

if(data == 0x02) {//Àü¼Û½ÃÀÛ Ç¥½Ã

              rx_wr_index0 = 0;  

              rmCount = 0;

} 

 

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)

   {

   rx_buffer0[rx_wr_index0]=data;

   if (++rx_wr_index0 == RX_BUFFER_SIZE0) rx_wr_index0=0;

   if (++rx_counter0 == RX_BUFFER_SIZE0)

      {

      rx_counter0=0;

      rx_buffer_overflow0=1;

      };

   };

#asm

    pop  r26

    out  sreg,r26

    pop  r31

    pop  r30

    pop  r27

    pop  r26

#endasm

 

if(rx_buffer0[0]==0x02 && rmCount==12) {

              //ÃʱâÈ­

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

                             string[i]=0x00;

              j=0;

              switch(ID) {

                             case 1:

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

                                                       if(rx_buffer0[i+1]!=0x20)

                                                                      string[j++]=rx_buffer0[i+1];

                                           break;

                             case 2:

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

                                                       if(rx_buffer0[i+5]!=0x20)

                                                                      string[j++]=rx_buffer0[i+5];

                                           break;

                             case 3:

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

                                                       if(rx_buffer0[i+9]!=0x20)

                                                                      string[j++]=rx_buffer0[i+9];

                                           break;

              }

              DispalyNumber();

}

rmCount++;

 

}

#pragma savereg+

 

#ifndef _DEBUG_TERMINAL_IO_

// Get a character from the USART0 Receiver buffer

#define _ALTERNATE_GETCHAR_

#pragma used+

char getchar(void)

{

char data;

while (rx_counter0==0);

data=rx_buffer0[rx_rd_index0];

if (++rx_rd_index0 == RX_BUFFER_SIZE0) rx_rd_index0=0;

#asm("cli")

--rx_counter0;

#asm("sei")

return data;

}

#pragma used-

#endif

 

// USART0 Transmitter buffer

#define TX_BUFFER_SIZE0 8

char tx_buffer0[TX_BUFFER_SIZE0];

unsigned char tx_wr_index0,tx_rd_index0,tx_counter0;

 

// USART0 Transmitter interrupt service routine

#pragma savereg-

interrupt [USART0_TXC] void uart0_tx_isr(void)

{

#asm

    push r26

    push r27

    push r30

    push r31

    in   r26,sreg

    push r26

#endasm

if (tx_counter0)

   {

   --tx_counter0;

   UDR0=tx_buffer0[tx_rd_index0];

   if (++tx_rd_index0 == TX_BUFFER_SIZE0) tx_rd_index0=0;

   };

#asm

    pop  r26

    out  sreg,r26

    pop  r31

    pop  r30

    pop  r27

    pop  r26

#endasm

}

#pragma savereg+

 

#ifndef _DEBUG_TERMINAL_IO_

// Write a character to the USART0 Transmitter buffer

#define _ALTERNATE_PUTCHAR_

#pragma used+

void putchar(char c)

{

while (tx_counter0 == TX_BUFFER_SIZE0);

#asm("cli")

if (tx_counter0 || ((UCSR0A & DATA_REGISTER_EMPTY)==0))

   {

   tx_buffer0[tx_wr_index0]=c;

   if (++tx_wr_index0 == TX_BUFFER_SIZE0) tx_wr_index0=0;

   ++tx_counter0;

   }

else UDR0=c;

#asm("sei")

}

#pragma used-

#endif

 

// Standard Input/Output functions

#include <stdio.h>

 

// Declare your global variables here

 

void main(void)

{

// Declare your local variables here

 

// Input/Output Ports initialization

// Port A initialization

// Func0=Out Func1=Out Func2=Out Func3=Out Func4=Out Func5=Out Func6=Out Func7=Out

// State0=0 State1=0 State2=0 State3=0 State4=0 State5=0 State6=0 State7=0

PORTA=0x00;

DDRA=0xFF;

 

// Port B initialization

// Func0=Out Func1=Out Func2=Out Func3=Out Func4=Out Func5=Out Func6=Out Func7=Out

// State0=0 State1=0 State2=0 State3=0 State4=0 State5=0 State6=0 State7=0

PORTB=0x00;

DDRB=0xFF;

 

// Port C initialization

// Func0=Out Func1=Out Func2=Out Func3=Out Func4=Out Func5=Out Func6=Out Func7=Out

// State0=0 State1=0 State2=0 State3=0 State4=0 State5=0 State6=0 State7=0

PORTC=0x00;

DDRC=0xFF;

 

// Port D initialization

// Func0=Out Func1=Out Func2=Out Func3=Out Func4=Out Func5=Out Func6=Out Func7=Out

// State0=0 State1=0 State2=0 State3=0 State4=0 State5=0 State6=0 State7=0

PORTD=0x00;

DDRD=0xFF;

 

// Port E initialization

// Func0=In Func1=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In

// State0=T State1=T State2=T State3=T State4=T State5=T State6=T State7=T

PORTE=0x00;

DDRE=0x00;

 

// Port F initialization

// Func0=Out Func1=Out Func2=Out Func3=Out Func4=Out Func5=Out Func6=Out Func7=Out

// State0=0 State1=0 State2=0 State3=0 State4=0 State5=0 State6=0 State7=0

PORTF=0x00;

DDRF=0x0F;

 

// Port G initialization

// Func0=In Func1=In Func2=In Func3=In Func4=In

// State0=T State1=T State2=T State3=T State4=T

PORTG=0x00;

DDRG=0x00;

 

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

ASSR=0x00;

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

 

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// OC1C output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

OCR1CH=0x00;

OCR1CL=0x00;

 

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

 

// Timer/Counter 3 initialization

// Clock source: System Clock

// Clock value: Timer 3 Stopped

// Mode: Normal top=FFFFh

// OC3A output: Discon.

// OC3B output: Discon.

// OC3C output: Discon.

TCCR3A=0x00;

TCCR3B=0x00;

TCNT3H=0x00;

TCNT3L=0x00;

OCR3AH=0x00;

OCR3AL=0x00;

OCR3BH=0x00;

OCR3BL=0x00;

OCR3CH=0x00;

OCR3CL=0x00;

 

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

// INT3: Off

// INT4: Off

// INT5: Off

// INT6: Off

// INT7: Off

EICRA=0x00;

EICRB=0x00;

EIMSK=0x00;

 

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

ETIMSK=0x00;

 

// USART0 initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART0 Receiver: On

// USART0 Transmitter: On

// USART0 Mode: Asynchronous

// USART0 Baud rate: 9600

UCSR0A=0x00;

UCSR0B=0xD8;

UCSR0C=0x06;

UBRR0H=0x00;

UBRR0L=0x67;

 

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

// Analog Comparator Output: Off

ACSR=0x80;

SFIOR=0x00;

 

// Global enable interrupts

#asm("sei")

 

PORTF=0x0f;

 

//ID¸¦ Àд´Ù.

ID=0x00;

if(PINF.4)

              sbit(ID,0);

if(PINF.5)

              sbit(ID,1);

if(PINF.6)

              sbit(ID,2);

if(PINF.7)

              sbit(ID,3);

itoa(ID,string);

DispalyNumber();

delay_ms(1000);

 

while (1)

      {

      // Place your code here

     

      };

}

 

 

void DispalyNumber()

{

                             //Æ÷Æ® ÃʱâÈ­

      PORTA=0;

      PORTB=0;

      PORTC=0;

      PORTD=0;

     

      PORTA.4=1;

      PORTA.5=1;

      PORTA.6=1;

      

      PORTB.4=1;

      PORTB.5=0;

      PORTB.6=1;

     

      PORTC.4=1;

      PORTC.5=0;

      PORTC.6=1;

     

      PORTD.4=1;

      PORTD.5=0;

      PORTD.6=1;

      

     

      j=strlen(string);

      i=0;  

      while(j>0) {

          switch(i) {

                        case 0 :

                                      PORTA=string[j-1];

                                      break;

                        case 1 :

                                      PORTB=string[j-1];

                                      PORTB.5=1;

                                      break;

                       case 2 :

                                      PORTC=string[j-1];

                                      PORTC.5=1;

                                      break;

                       case 3 :

                                      PORTD=string[j-1];

                                      PORTD.5=1;

                                     break;

          }

          j--;

          i++;

      }

 

}

 

óÀ½

°ú    Á¦