#include <16f84a.h> //기본 정의 파일 삽입
#byte PORTA = 0x05 //포트 b 설정
#byte PORTB = 0x06 //포트 a 설정
#byte TRISA = 0x85 //trisb 설정
#byte TRISB = 0x86 //trisa 설정
#use delay (clock=4000000)
int key()
{
if(bit_test(porta,1) && bit_test(porta,2)) //porta 1번 2번 비트를 비교
{
portb = 0x03; //porta의 출력 0b00000011 (0번 LED , 1번 부저)
delay_ms(3000); //3초후
portb = 0x00; //off
if(bit_test(porta,0) && bit_test(porta,2) && bit_test(porta,3)) //porta 0번 2번 3번비트를 비교
{
portb = 0x1B; //porta의 출력 0b00011100 (2번 LED, 3번 LED , 4번 부저)
delay_ms(3000); //3초후
portb = 0x00; //off
}
}
void main()
{
set_tris_a(0x0f); //porta는 입력설정
set_tris_b(0x00); //portb는 출력설정
PORTB = 0;
while (1)
{
key();
}
}
// port A는 입력으로 설정되어 있구요 port B는 출력으로 설정했습니다.
//port A의 1번과 2번비트의 신호가 둘다 1이 들어올때만 port B의 0번과 1번비트가 on되고 3초후 off
//port A의 0번과 2번 3번의 신호가 1이들어올때만 port B의 2번 3번 4번비트가 on되고 3초후 off
//이렇게 되는 것을 만들려고 하는데... 제가 틀린부분이나 교정해야 될 부분좀 고수님께 부탁드립니다.
// port B에는 LED와 부저를 달아서 LED가 켜지면 부저도 같이 울리고 3초후 꺼지만 같이 꺼지는 걸루
//만드려고 합니다.
간절히 부탁드립니다.
직접 다운로드 해보고 안되는 소스 부분을 짚어주시면 바로 손봐드릴수 있을듯 합니다.
일단 다운로드를 해보세요 pic기기에.
3초후인데 왜 delay_ms(500); //3초후
인지 모르겠군요
500ms딜레이입니다. 이건
delay_ms(3000); 해야겠지요
아크마님말씀대로 3초루 수정하였습니다. ^^
다운로드후 테스트를 해봤는데요...입력단 RA에서는 신호가 제대로 나가는데..
포트B인 출력신호가 입력을 받았을때만 출력이 나와야 하는데...
전체적으로 1,0 이런 구형파가 입력신호를 안줘도 발생하는 문제점이 있었습니다.
1,0--1,0--1,0이런식을 계속 반복합니다. (입력단 신호와 상관없이) ㅡㅡ;