학습목표    1

학습주제    1

예습내용    1

실습방법    1

        1

마이크로프로세서와 PC통신

학습목표

마이크로프로세서와 RS232통신을 제작하여 현장에서 실시간 제어에 활용 한다.

학습주제

PIC16F877 PC사이에 RS232C 통신을 하여 문자 1(0X31), 2(0X32) 전송됨에 따라 LED1,2 ON 되도록 한다.

예습내용

PIC16F877에서 RS232 통신 프로그램

실습방법

 

1. 마이크로프로세서 프로그램 작성

아래는 마이크로프로세서 프로그램이다. 간단하게 RS232C 테스트 있는 프로그램이다. 16F877 PC RS232C 케이블로 연결하고 16F877 C1(Pin번호16), C2(Pin번호17), C4(Pin번호23) Anode 형태로 LED 연결한다.

16F877 동작하면 C4 LED 점멸함으로 동작의 상태를 있다. 통신으로 문자 1(아스키코드 0x31) 들어오면 16F877 C1 접지(0) 시켜 LED ON 되고, 문자 2(아스키코드 0x32) 들어오면 16F877 C2 접지(0) 시켜 LED ON 된다.

 

//intrs232.c

 

#include <16F877.H>

#include <math.h>

#fuses   XT,NOPROTECT,NOWDT

 

#use delay(clock=20000000) // 20MHz Clock 사용

#define HIGH_START 20

#use rs232(BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7,Parity=N,BITS=8) // 9600 bps 통신 설정

#use standard_io(B)

#byte port_b=6

byte seconds, high_count,in;

 

#int_rda                               // RS232C 통신이 들어오면 아래 함수가 시작된다.

void serial_isr() {

   in = getchar();

   output_high(PIN_C1);       // LED1,2 초기화 한다. (OFF 초기화)

   output_high(PIN_C2);

   if(in==0x31)                     // 문자1 들어오면 C1 포트의 LED ON

      output_low(PIN_C1);

   else if(in==0x32)                            // 문자1 들어오면 C2 포트의 LED ON

      output_low(PIN_C2);

}

 

main()

{

              enable_interrupts(global);

            enable_interrupts(int_rda);     // RS232C 인터럽트 설정

 

              while(1) {                              //  C4 포트의 LED 100mS 간격으로 점등한다.

                             output_low(PIN_C4);

                             delay_ms(100);

                             output_high(PIN_C4);

                             delay_ms(100);

              }

}

 

처음

   

PC에서 Visual C++프로그램으로 1,2 버튼을 만들고 버튼을 ON/OFF 때마다 LED 동작하도록 만든다.