Jag tänkte testa mig på att styra ett skiftregiester med hjälp av min pic16f690 vilket jag inte tyckte verka så svårt. Får dock inget på utportarna som jag hoppades på. Det blir 0v om man mäter mellan utpinnarna och jord.
Skiftregistret är: 73-689-07
Denna kod använder jag:
Kod: Markera allt
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
#define Delay1 0x20
#define Delay2 0x21
Start:
bsf STATUS,RP0 ; select Register Page 1
CLRF TRISB ; make all IO Pin B an output
bcf STATUS,RP0 ; back to Register Page 0
CLRF PORTB ; Clearar PORTB samt 8:a reg.
MOVWF PORTB
call Delay ; delay
MOVLW B'11110000' ;clear hög, klocka hög, a och b höga
MOVWF PORTB
call Delay ; delay
goto $ ; LOOP
; Delay Function. Enter with number 771uS delays in Wreg
Delay
movwf Delay2 ;
DelayLoop:
decfsz Delay1,f ; Waste time.
goto DelayLoop ; 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 DelayLoop ; (768+3) * 256 = 197376 instructions / 1M instructions per second = 0.197 sec.
; call it a two-tenths of a second.
return
end