핵심 재료 : USB 조이스틱, PIC 44PIN DEMO BOARD

port b 의 bit값에 대한 해설(와이어 배선을 어떻게 하느냐에 따라 다르지만...

상위 네 비트 7, 6, 5, 4가 각각 RP, RK, LK, LP에 해당하고,

하위 네 비트 3, 2, 1, 0이 각각 좌, 하, 우, 상의 방향키에 해당한다.


#include <16f887.h>
#byte portb=0x06
#byte portd=0x08
#use delay(clock=4000000)

void main()
{
   set_tris_b(0x0f);
   set_tris_d(0x00);
   portd=0xff;
   
   for(;;){
      if(bit_test(portb,0)==0){	//rb0 푸시 버튼이 눌리면 실행
         portd=0b11110111;	//<= 방향 입력
         delay_ms(30);		//딜레이
         portd=0xff;		//레버 중립
         delay_ms(30);		//딜레이
         portd=0b01110011;	//<= ↓ RP 입력
         delay_ms(100);		//딜레이. 무족초 발동 중인 상태
         portd=0xff;		//레버 중립
         delay_ms(530);		//딜레이.
      }
   }
}

44pin demo board에 와이어만 따서 연결했음

rb0 푸시 버튼을 누를 때 마다 기원초가 나간다.

코드 사이 사이 delay를 잘못 주면 무족초가 안나가고 기원권이 나간다.

딜레이를 너무 길게 주면 초풍 발동 속도가 느려지고, 딜레이를 너무 짧게 주면 기원권이 발동된다는 문제

나름 실험을 통해 딜레이 최적값을 찾았음

핵심 포인트 = 최적의 딜레이

Posted by 공돌이pooh
,