<prev>
- .......................
- SCRAMBLER DIGITALE
- 041015
- RC0 = DATA INPUT
- RC1 = LED
- RC2 = OUT B.F.
- RC3 = ING. B.F.
- RC4 = PULSANTE INC.
- RC5 = PULSANTE DEC.
- RA0 = n.c.
- RA1 = V.REF ADC
- RA2 = C.S.
- RA3 = n.c.
- RA4 = DATA OUT
- RA5 = CLOCK
- ...........................
PROCESSOR 16F1704 RADIX DEC INCLUDE "P16F1704.INC"
ERRORLEVEL -302 ERRORLEVEL -305
ORG 0170H ; 130H
INDL RES 1 INDH RES 1 LINEA RES 1 DATO_LEG RES 1 DATO_SCRI RES 1 RIT RES 2 CONTA RES 1 DIREZ RES 1 PASSATA RES 1 CONT_BIT RES 1 TEMP_L RES 1 TEMP_H RES 1
__CONFIG H'8007', H'3FA4' __CONFIG H'8008', H'1FFF'
ORG 00H
VIA
MOVLB 1 MOVLW B'00000011' MOVWF TRISA
MOVLB 0 MOVLW B'00000010' MOVWF PORTC
- MOVLB 2
- CLRF LATC
MOVLW B'00000100' MOVWF LATA
MOVLB 3 CLRF ANSELC
MOVLB 2 MOVLW B'10000000' MOVWF DAC1CON0
MOVLB 10 MOVLW B'10010010' MOVWF OPA1CON
MOVLB 1 MOVLW B'00011101' MOVWF ADCON0
MOVLW B'01100010' MOVWF ADCON1
MOVLW B'00000000' MOVWF ADCON2
MOVLW B'00111001' MOVWF TRISC
MOVLW B'11110000' ;26mS MOVWF OSCCON
BCF OPTION_REG,7 ;pull-up
- -------------------
MOVLB 3 MOVLW B'00001000' ;MOVLW B'00010000' MOVWF ANSELC ;MOVWF ANSELA
- ----------------
- INIZIALIZZO SPI
MOVLB .29 MOVLW .18 ;SDO SU RC3 MOVWF RA4PPS ; ERA RC4PPS ;ERA SU RC3 MOVLW .16 ;SCK MOVWF RA5PPS ;ERA RC4PPS
MOVLB .28 MOVLW .16 ;SDI SU RC0 MOVWF SSPDATPPS
MOVLB .4 MOVLW .1 MOVWF SSP1ADD MOVLW B'00001010' MOVWF SSP1CON1 MOVLW B'11000000' MOVWF SSP1STAT BSF SSP1CON1, 5
- -----------------------
MOVLW .255 MOVWF LINEA CLRF INDH CLRF INDL CLRF DIREZ CLRF RIT+0 CLRF RIT+1 CLRF CONTA MOVLW .3 MOVWF PASSATA
CICLO
- ---avvio nuova ADC----
MOVLB 1 BSF ADCON0,ADGO
- --avviato--
- -----leggo un byte dalla ram-------
RILEGGI
MOVLB 0 ; n° del banco BCF LATA,2 ; C.S. NOP MOVLB .4 ; n° del banco
MOVLW .03 ; comando in lettura MOVWF SSP1BUF
ANCORA1L
BTFSS SSP1STAT, 0 GOTO ANCORA1L
MOVFW INDH ; indirizzo alto MOVWF SSP1BUF
ANCORA2L
BTFSS SSP1STAT, 0 GOTO ANCORA2L
MOVFW INDL ; indirizzo basso MOVWF SSP1BUF
ANCORA3L
BTFSS SSP1STAT, 0 GOTO ANCORA3L
MOVLW .255 ; finto dato in uscita MOVWF SSP1BUF
ANCORA4L ;leggo dato in arrivo
BTFSS SSP1STAT, 0 GOTO ANCORA4L
MOVFW SSP1BUF
- MOVWF DATO_LEG ;salvo dato letto
MOVLB 0 ; n° del banco BSF LATA,2 ; C.S. NOP
- ---fine lettura----
- -----scrivo un byte nell' DAC----------
- MOVFW DATO_LEG
MOVLB 2 MOVWF DAC1CON1
- ----fine----
- -----scrivo un byte nella ram----------
RIPETI
MOVLB 0 ; n° del banco BCF LATA,2 ; C.S. NOP
MOVLB .4 ; n° del banco MOVLW .02 ; comando in scrittura MOVWF SSP1BUF
ANCORA1
BTFSS SSP1STAT, 0 GOTO ANCORA1
MOVFW INDH ; indirizzo alto MOVWF SSP1BUF
ANCORA2
BTFSS SSP1STAT, 0 GOTO ANCORA2
MOVFW INDL ; indirizzo basso MOVWF SSP1BUF
ANCORA3
BTFSS SSP1STAT, 0 GOTO ANCORA3
MOVFW DATO_SCRI ; dato da scrivere MOVWF SSP1BUF
ANCORA4
BTFSS SSP1STAT, 0 GOTO ANCORA4
MOVLB 0 ; n° del banco BSF LATA,2 ; C.S. NOP
- ----fine scrittura------
MOVLB 1 ;conversione ADC terminata ?
NON_PRONTO
BTFSC ADCON0,ADGO GOTO NON_PRONTO
MOVFW ADRESH MOVWF DATO_SCRI
- ............................
- --controllo dec/cod----
MOVLB 0 BTFSS PORTC,5 GOTO PUNTATORE
- ----decodifica tono---------
DEC_TONO
BTFSS DATO_SCRI,7 GOTO MIN_127
- MAG_127 ---semionda alta---
INCF TEMP_H BTFSS PASSATA,0 GOTO FINE_CTRL_BIT BCF PASSATA,0 BSF PASSATA,1 MOVFW TEMP_L ADDLW 256-13 ; è <= DI 10 ?? BTFSC STATUS,C GOTO MAG_7L
- MIN_7
CLRF TEMP_L INCF CONT_BIT GOTO FINE_MISURA
MAG_7L
CLRF CONT_BIT CLRF TEMP_L GOTO FINE_CTRL_BIT
MIN_127 ;---semionda bassa---
INCF TEMP_L BTFSS PASSATA,1 GOTO FINE_CTRL_BIT BCF PASSATA,1 BSF PASSATA,0 MOVFW TEMP_H ADDLW 256-13 ; è <= DI 10 ?? BTFSC STATUS,C GOTO MAG_7H
- MIN_7
CLRF TEMP_H INCF CONT_BIT GOTO FINE_MISURA
MAG_7H
CLRF CONT_BIT CLRF TEMP_H GOTO FINE_CTRL_BIT
FINE_MISURA ;semionde in arrivo
MOVFW CONT_BIT ADDLW 256-20 ; è > 20 ?? BTFSS STATUS,C GOTO FINE_CTRL_BIT CLRF CONT_BIT CLRF INDH CLRF INDL CLRF DIREZ
FINE_CTRL_BIT
- ........................
- ---puntatore memoria----
PUNTATORE
BTFSC DIREZ,0 GOTO INVERSO
INCFSZ INDL GOTO CICLO INCFSZ INDH GOTO CICLO
DECF INDL ;carico FF DECF INDH ;carico FF BSF DIREZ,0 GOTO CICLO
INVERSO
DECF INDL COMF INDL,W ; =FF ? BTFSS STATUS,Z GOTO CICLO DECF INDH COMF INDH,W ; =FF ? BTFSS STATUS,Z GOTO CICLO
BCF DIREZ,0 CLRF INDL CLRF INDH
- --controllo dec/cod----
MOVLB 0 BTFSC PORTC,5 GOTO CICLO
- ------------------------
SINCRO
CLRF CONTA MOVLB 2
SINCRO1
MOVLW .255 ; semip+ MOVWF DAC1CON1 MOVLW .3 MOVWF RIT+1
NO_ZERO1
DECFSZ RIT+0 GOTO NO_ZERO1 DECFSZ RIT+1 GOTO NO_ZERO1
MOVLW .0 ; semip- MOVWF DAC1CON1 MOVLW .3 MOVWF RIT+1
NO_ZERO2
DECFSZ RIT+0 GOTO NO_ZERO2 DECFSZ RIT+1 GOTO NO_ZERO2
INCF CONTA BTFSS CONTA,4 GOTO SINCRO1 GOTO CICLO
- --------------------
END
- ---------------------
</prev>

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)