Ciao.
Paolo.
Moderatore:
Paolino


main:
banksel 9Fh
movlw 80h
movwf 9Fh ; giustificazione destra del risultato ADC, -Vrif=Vss, +Vrif=Vdd
banksel 89h
bsf 89h,0 ; RE0 impostato come ingresso
banksel 188h
bsf 188h,5 ; RE0 impostato come analogico
banksel 1Fh
movlw 55h ; Fosc/8, CH=AN5, ADC ON
movwf 1Fh
ritardo:
banksel 20h
movlw 0Ah ; numero di istruzioni per ritardare il sistema di 12uS (12 istruzioni)
movwf 20h
ritardoi: ; routine ritardo sistema per aquisizione valore analogico
decf 20h,1 ; decrementa di 1 il registro 20h
btfss 03h,2 ; test di Z (STATUS): se 0 ripeti processo, se 1 avvia sistema:
goto ritardoi
convon:
bsf 1Fh,1 ; inizio conversione
test:
btfsc 1Fh,1 ; test di GO (ADCON0): se 0 è finita la conversione, se 1 la conversione è in corso
goto test
banksel 1Eh
movf 1Fh,W ; sposta parte alta risultato nell'accumulatore
movwf 110h ; sposta contenuto dell'accumulatore nel registro 110h
banksel 9Eh
movf 9Eh,W ; sposta parte bassa risultato nell'accumulatore
movwf 190h ; sposta contenuto dell'accumulatore nel registro 190h
confronto:
movfw 110h ; sposta contenuto del 110h nell'accumulatore
sublw parte alta soglia bassa; confronto tra 110h e parte alta soglia bassa
bc sottoinf
movfw 110h ; sposta contenuto del 110h nell'accumulatore
sublw parte alta soglia alta; confronto tra 110h e parte alta soglia alta
bc sottosup
soprasup:
movfw 190h ; sposta contenuto del 190h nell'accumulatore
sublw parte bassa soglia alta; confronto tra 190h e parte bassa soglia alta
btfsc 03h,0 ; test C (STATUS): se 0 attiva motorino, se 1 è sotto la soglia
goto sottosup
motorino:
banksel 05h
clrf 05h ; inizializzazione port A
banksel 188h
clrf 188h ; port A impostato come digitale
banksel 05h
movlw 17h
movwf 05h ; RA<0,2-4> uscita alte, RA<3-5,7> uscite alte
ritardo2:
banksel 21h
movlw 01h
movwf 21h
ritardoi2
decf 21h,1
btfss 03h,2 ; test Z (STATUS): se 0 ripati processo se 1 proegui programma
goto ritardoi2 ; routine per ritardo per dare un impulso di clock per far fare un passo al motore
banksel 05h
clrf 05h ; inizializzazione port A
banksel 188h
clrf 188h ; port A tutto digitale
banksel 85h
clrf 85h ; port A tutto uscita
banksel 05h
movlw 1Fh
movwf 05h ; RA<0;4> uscite alte, RA<5;7> uscite basse
goto main
sottosup:
banksel 05h
clrf 05h ; inizializzazione port A
banksel 188h
clrf 188h ; port A impostato come digitale
banksel 85h
clrf 85h ; port A impostato come uscita
banksel 05h
movlw 1Ch
movwf 05h ; RA<4;2> impostate come uscite alte, RA<7;5,1,0> come uscite basse
goto main
sottoinf:
movfw 190h ; sposta contemuto del 190h nell'accumulatore
sublw parte bassa soglia bassa; confronto tra 190h e parte bassa soglia bassa
btfss 03h,0 ; test C (STATUS): se 0 si è sopra la soglia bassa, se 1 attiva motore
goto sottosup
goto motorinoCLRF 06h
CLRF PORTB


PORTA EQU H'0005'
PORTB EQU H'0006'
PORTC EQU H'0007';----- INTCON Bits --------------------------------------------------------
GIE EQU H'0007'
PEIE EQU H'0006'
T0IE EQU H'0005'
TMR0IE EQU H'0005'
INTE EQU H'0004'
RBIE EQU H'0003'
T0IF EQU H'0002'
TMR0IF EQU H'0002'
INTF EQU H'0001'
RBIF EQU H'0000'Torna a Firmware e programmazione
Visitano il forum: Nessuno e 10 ospiti