Problem med skiftregister
Postat: 2 januari 2011, 19:48:33
Hej!
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:
Klockan är kopplad till RB6, clear till RB7 och a och b är kopplade till RB5. Delayen är på 0,197 sekunder villket borde räcka som jag förstått det om jag läsa databladet för skiftregistret rätt. Jag funderar dock på om man kan klocka på detta sättet, men det borde väl inte vara några problem? den skiftar när clear är hög och när man går från låg till hög (0v till +5v) på klockpinnen vilket jag gör eller?
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