#include <16f628a.h>
#use delay(clock=4000000)
#FUSES NOWDT
#fuses xt
#fuses noput
#fuses noprotect
#byte porta=0x05
#byte portb=0x06
#int_ext
ext_svr()
{
portb=0xff;
delay_ms(10000);
}
void main (void)
{
char cnt,temp;
set_tris_b(0x00); //왜 b포트는 되고 a포트를 입력단으로 주면 안될까요...? b를 0x01로 해서 portb.0에 외부인터럽트 걸면 되고 다 출력으로 설정하면 안되네요
set_tris_a(0x10); // 이중에 porta에서 외부인터럽트가 안걸릴 만한 사유가 있을까요?
enable_interrupts(int_ext);
ext_int_edge(L_to_h);
enable_interrupts(global);
cnt=0;
temp=0;
porta=temp;
while(1)
{
if(cnt==0) temp=0x01;
else temp=temp<<1;
portb=temp;
cnt++;
delay_ms(500);
if(cnt>7) cnt=0;
}
}
1) a, b port에서 사용하는 pin 에 맞게 레지스터를 설정하셔야 합니다.
2) 인터럽트 사용하는 pin number를 확인하신 후에, 데이터시트를 보고 설정하시기 바랍니다.
3) 이렇게 소스코드만 올려주시면 확인하는 사람도 답변을 하기 어렵습니다. (회로에 따라 다르므로)
* 관련 회로도와 데이터 쉬트를 올려주시기 바랍니다.