마음 속 하늘은 항상 맑음~!

PIC12f675로 만드는 스위칭. 본문

카테고리 없음

PIC12f675로 만드는 스위칭.

파르셀수스 2020. 9. 16. 12:32

 간단히 외부 센서를 통해 논리 ON/OFF를 하는 것으로, 2번핀은 외부신호 입력이고 3번핀은 출력, 그리고 7번핀은 초기화 대기 중에는 1, 초기화 후에는 0을 출력한다. 7번핀은 크게 의미가 없다. 인터럽트로 핀 입력을 감지하고 다음 입력과의 시간차를 32ms초 정도로 두어서 순식간에 점멸하는 신호에 반응하지 않도록 보완했다. 와치독 타이머를 두고 비정상 동작엔 다시 리셋하도록 되어있다.

 

program _12F675_touch;

{ Declarations section }
procedure Interrupt(); iv 0x0004; ics ICS_AUTO;
begin
  if T0IF_bit=1 then begin
    if GPIF_bit=1 then begin
      if GP5_bit=1 then begin
        GP4_bit:=not GP4_bit;
      end;
      GPIF_bit:=0;
    end;
    { reset timer0, 1000000 / 256 / 128 = 32ms }
    TMR0:=0;
    T0IF_bit:=0;
  end;
end;

begin
  CMCON:=7;
  ANSEL:=0;
  { signal IO }
  TRISIO4_bit:=0;
  GP4_bit:=0;
  { port change input }
  TRISIO5_bit:=1;
  { Interrupt }
  IOC5_bit:=1;
  GPIE_bit:=1;
  GIE_bit:=1;
  { timer1 }
  TMR1CS_bit:=0;
  T1CKPS1_bit:=1;
  T1CKPS0_bit:=0;
  TMR1ON_bit:=1;
  { timer 0 }
  PSA_bit:=1;
  PS2_bit:=1;
  PS1_bit:=1;
  PS0_bit:=1;
  T0CS_bit:=0;
  { }
  TRISIO0_bit:=0;
  GP0_bit:=1;
  Delay_100ms;
  GP0_bit:=0;
  
  
  while true do begin
    { reset watchdog }
    if T1IF_bit=1 then begin
      TMR1H:=0;
      TMR1L:=0;
      T1IF_bit:=0;
      ClrWDT;
    end;
  end;
end.