Notice
Recent Posts
Recent Comments
마음 속 하늘은 항상 맑음~!
PIC12f675로 만드는 스위칭. 본문
간단히 외부 센서를 통해 논리 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.