8051/PIC > [PIC16F877A관련]적외선 수발광 센서를 이용한 기어드모터제어

TODAY331 TOTAL268,133
사이트 이용안내
Login▼/회원가입
포럼 동영상강좌 회원가입


▼ BASIC4MCU 후원업체 최신 정보 ▼

▲ BASIC4MCU 후원업체 최신 정보 ▲

BASIC4MCU | 8051/PIC | PIC | [PIC16F877A관련]적외선 수발광 센서를 이용한 기어드모터제어

페이지 정보

작성자 强忍熊 작성일2018-05-31 15:00 조회288회 댓글1건

본문

	

#include <16f877a.h>      // I/O PIC16F877A 헤더 파일 

 

 

void DELAY(unsigned int i) // 지연 함수

{   while(i--);   }

 

void main(void)

{  

   OPTION= 0X87;

   TRISA = 0x3f;        // 포트A 전부 입력으로 지정

   TRISB = 0x00;        // 포트B 전부 출력으로 지정

   TRISC = 0x20; // 포트C 입출력으로 지정.

   

 

   ADCON1 = 0x07; //전부 디지탈 입력

 

   PORTB = 0x00;        // 포트B 초기 설정

   PORTC = 0x00; // 포트C 초기 설정

      

 

  

  while(1){ 

  if(!(RA0)) //감지 되면.??

    {RB6 = 1; 

     DELAY(45000); 

     DELAY(45000); 

     DELAY(45000);

     DELAY(7000); //문열기    

     

     RB6 = 0; 

     DELAY(45000); 

     DELAY(45000); 

     DELAY(45000); //3초간 정지

     

     RB7 = 1; 

     DELAY(45000); 

     DELAY(45000); 

     DELAY(45000); //3초간 문닫기

     

     RB7 = 0; DELAY(4500);  //정지 

 

   } 

  }

}    

 

 위의 소스는 참고용 소스입니다. 그리고,

------------------------------------------------------------------------------------------------------------------------

#include <16F877A.h>      // I/O PIC16F877A 헤더 파일

 

#fuses XT,NOPROTECT,NOBROWNOUT,NOWDT,PUT,NOCPD,NOLVP,WRT //발진클록, 워치독타이머, 프로텍트 등 옵션 관련 퓨즈 설정(이 지시어는 컴파일에는 영향 없고 출력파일에는 들어감.)

 

#use delay (clock = 4000000)

 

#byte port_b = 7

#byte intcon = 0x0b

 

char j, k;

 

#int_ext

 

int_fck()

{

bit_clear(intcon,1);

port_a = j;

if(j==0){

    

void main() // 메인 함수(변수 없음)

{  

adcon1 = 0x07; // 전부 디지탈 입력(Set all A/D i/o lines to digital)

 

set_tris_a(0x01);        // 포트A RA0 pin을 입력으로 지정

set_tris_b(0);        // 포트B pin 전부 출력으로 지정

    ext_int_edge(H_TO_L);

 

port_b = 0; // 포트B 초기 설정

 

j = 0x01; //변수

k = 0;

 

enable_interrupts(global);

enable_interrupts(int_ext);

 

while(1){ 

if(!(RA0)){ // 감지 되면...?

RB6 = 1; 

      delay_ms(3000); // 문열기

     

   

      RB6 = 0; 

      delay_ms(3000) // 3초간 정지

     

       

      RB7 = 1;

      delay_ms(3000); // 3초간 문닫기

       

 

   } 

  }

}    

-------------------------------------------------------------------------------------------------------------------------

위 소스는 필자가 <Ultraedit-32>프로그램을 이용한 작성 및 <CCS-C(PICC)>를 이용한 컴파일링 후, PICkit 2를 이용하여 hex파일을 importing 할 수 있도록 다시 작성하려고 했지만 실력부족으로 미완성 상태의 소스입니다. 위의 2번 소스의 컨셉은 '외부 인터럽트(적외선 수광 센서-ST5811)에 의한 기어드모터 정회전 및 역회전 제어'입니다. 위의 1번 소스를 토대로 2번 소스의 형태를 갖추려고 했지만 역부족이었습니다. 실력자분들의 도움을 간절히 구해봅니다. 

 


댓글 1

조회수 288

强忍熊님의 댓글

强忍熊 작성일

참고용 소스(1번 소스)에서 사용 핀은 RA0핀과 RB6, RB7핀이 사용되었는데 글을 작성하다보니 2번 소스 컨셉 중 외부 인터럽트를 받아들일 수 있는 핀이 유일하게 RB0라는 것을 뒤늦게 발견했습니다. 따라서 2번 소스는 정말 얕은 지식으로 작성된 소스라는 것을 다시 한번 말씀드립니다.

8051/PICHOME > 8051/PIC > 전체 목록

게시물 검색

Privacy Policy
MCU BASIC ⓒ 2017