#include <16F887.h> #USE DELAY(clock=400000000) #FUSES INTRC,NOWDT,NOPUT,NOMCLR,NOPROTECT,NOCPD,NOBROWNOUT,NOIESO,NOFCMEN,NOLVP #byte porta=0x07 #byte portb=0x06 #byte portd=0x08 //스페셜 레지스터의 portd가 0x08번지입니다. void main() { int val,timing; set_tris_a(0xff); set_tris_b(0xff); //portb all input set_tris_d(0x00); //portd를 모두 출력으로 선택 setup_adc_ports(all_analog); //모든 포트 아날로그 setup_adc(adc_clock_div_8); //클럭을 8분주 해서 사용 set_adc_channel(0); //()번 채널 선택 val=1; portd=0; goto sequential; sequential: for(;;){ delay_us(timing);delay_us(timing);delay_us(timing);delay_us(timing); portd=val; val=val*2; if(val==0b100000000){ val=1; } if(bit_test(portb,0)==1){ goto reverse; } //이부분을 손봐야 합니다. //아예 sequential과 reverse를 함수로 만들어버릴까.. timing=2*read_adc(); } reverse: for(;;){ delay_us(timing);delay_us(timing);delay_us(timing);delay_us(timing); if(val==0b00000001){ val=0b10000000; } portd=val; val=val/2; if(val==1){ val=0b10000000; } if(bit_test(portb,0)==1){ goto sequential; } timing=2*read_adc(); } }
'(예전취미)전자회로 공부 > PIC-44Pindemoboard' 카테고리의 다른 글
Hello, PortD(F0) (0) | 2010.05.24 |
---|---|
Timer0 (0) | 2010.03.01 |
Reversible 풀이중2 (0) | 2010.03.01 |
SETUP_ADC_PORTS() (0) | 2010.03.01 |
Debounce 풀이 (0) | 2010.02.24 |
Debounce 풀이중... (0) | 2010.02.11 |
VS Rotate (0) | 2010.02.11 |
A2D (0) | 2010.02.11 |