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

TODAY574 TOTAL153,515
사이트 이용안내
Login▼/회원가입
포럼 동영상강좌 회원가입


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

페이지 정보

작성자 master 작성일2018-05-31 15:10 조회59회 댓글0건

본문

	

 

// DateTime : 2018-05-31 오후 3:12:45
// by Ok-Hyun Park
//
#include <16f877a.h>
//
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=1DELAY(45000); DELAY(45000); DELAY(45000); DELAY(7000); //문열기
      RB6=0DELAY(45000); DELAY(45000); DELAY(45000); //3초간 정지
      RB7=1DELAY(45000); DELAY(45000); DELAY(45000); //3초간 문닫기
      RB7=0DELAY(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=1delay_ms(3000); // 문열기
          RB6=0delay_ms(3000); // 3초간 정지
          RB7=1delay_ms(3000); // 3초간 문닫기
        }
      }
    }

 

함수 안에서 함수를 선언하면 안됩니다.

기본 예제들을 많이 공부하셔야겠습니다.

 

댓글 0

조회수 59

등록된 댓글이 없습니다.

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

게시물 검색

Privacy Policy
                   MCU BASIC ⓒ 2017 모바일버전으로보기