학습목표    1

학습주제    1

예습내용    1

실습방법    1

        1

RS232 Interrupt 처리

학습목표

RS232 통신의 인터럽트 처리를 배운다.

학습주제

PC에서 문자 “1” 보내면 B0 포트가 ON 되고 “2”=B1, “3”=B2 포트가 ON 되는 프로그램을 만든다.

예습내용

 

실습방법

   

1.       아래와 같이 통신 포트를 초기화 한다.

보기1

// 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;

 

2.       메인 프로그램에서는 연결된 LED Off 되도록 한다.

보기2

while (1)

      {

      // Place your code here

      PORTB=~0x00;    

      delay_ms(100);

      };

}

 

3.       문자가 들어오면 인터럽트로 처리하여 문자에 따라 해당 LED On 시킨다.

보기3

// USART0 Receiver interrupt service routine

interrupt [USART0_RXC] void uart0_rx_isr(void)

{

   // 전송전 문자를 받는다.

   rxd=getchar();

   // LCD 문자를 표시한다.

   lcd_gotoxy(0,0);

   lcd_putchar(rxd);

   // 문자"1"=B0 Led On  문자"2"=B1 Led On  문자"3"=B2 Led On

   if(rxd==0x31)

      PORTB=~0x01;

   else if(rxd==0x32)

      PORTB=~0x02;

   else if(rxd==0x33)

      PORTB=~0x04;

}

 

보기4

// USART0 Receiver interrupt service routine

interrupt [USART0_RXC] void uart0_rx_isr(void)

{

   // 전송전 문자를 받는다.

   rxd=getchar();

   // LCD 문자를 표시한다.

   lcd_gotoxy(0,0);

   lcd_putchar(rxd);

   // 문자"1"=B0 Led On  문자"2"=B1 Led On  문자"3"=B2 Led On

   if(rxd==0x31)

      PORTB=~0x01;

   else if(rxd==0x32)

      PORTB=~0x02;

   else if(rxd==0x33)

      PORTB=~0x04;

}

 

[주의] CodeVison 평가판에는 인터럽트 문이 쓰이지를 않으므로 사이트의 소스를 복사하여 사용하면 된다.

[전체 프로그램 보기]

처음

   

PC에서 전송된 문자를 다시 PC 전송해 주는 프로그램을 만들고 RX,TX 인터럽트로 LCD 문자를 표시한다.

[전체 프로그램 보기]