Helt ny på Pic-programmering.
Programmet är tänkt att blinka en lysdiod på portC, efter att portB.5 fått en +5v signal.
Blink-delen fungerar bra, men det är själva kollen på om portB.5 blivit "hög" som inte verkar fungera. Någon vänlig själ som kan tillrättavisa mig?
Pic 16F690 är det jag använder mig av.
Kod: Markera allt
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
cblock 0x20
Delay1 ; Define two file registers for the
Delay2 ; delay loop
endc
org 0
Start:
bsf STATUS,RP0 ; select Register Page 1
bcf TRISC,0 ; make IO Pin C.0 an output
bsf TRISB,5 ;make IO Pin B.5 an input
bcf STATUS,RP0 ; back to Register Page 0
Wfportb:
BTFSS PORTB,5 ;Vänta på att port B.5 blir hög
Goto Wfportb
MainLoop:
bsf PORTC,0 ; turn on LED C0
OndelayLoop:
decfsz Delay1,f ; Waste time.
goto OndelayLoop ; The Inner loop takes 3 instructions per loop * 256 loopss = 768 instructions
decfsz Delay2,f ; The outer loop takes and additional 3 instructions per lap * 256 loops
goto OndelayLoop ; (768+3) * 256 = 197376 instructions / 1M instructions per second = 0.197 sec.
; call it a two-tenths of a second.
bcf PORTC,0 ; Turn off LED C0
OffDelayLoop:
decfsz Delay1,f ; same delay as above
goto OffDelayLoop
decfsz Delay2,f
goto OffDelayLoop
goto MainLoop ; Do it again...
end