Appunti per Scuola e Universitą
humanisticheUmanistiche
Appunti e tesine di tutte le materie per gli studenti delle scuole medie riguardanti le materie umanistiche: dall'italiano alla storia riguardanti le materie umanistiche: dall'italiano alla storia 
sceintificheScientifiche
Appunti, analisi, compresione per le scuole medie suddivisi per materie scientifiche, per ognuna troverai appunti, dispense, esercitazioni, tesi e riassunti in download.
tecnicheTecniche
Gli appunti, le tesine e riassunti di tecnica amministrativa, ingegneria tecnico, costruzione. Tutti gli appunti di AppuntiMania.com gratis!
Appunti
informatica
CComputerDatabaseInternetJava
Linux unixReti


AppuntiMania.com » Informatica » Appunti di computer » Codice sorgente

Codice sorgente




Visite: 1170Gradito:apreciate stela [ Picolo appunti ]
Leggi anche appunti:

Protezione e Sicurezza


Protezione e Sicurezza        Si parla di protezione in presenza di meccanismi, messi

Algoritmo del banchiere


ALGORITMO DEL BANCHIERE Il nome di questo algoritmo di deve al fatto che esso

Controlli a logica programmata


CONTROLLI A LOGICA PROGRAMMATA SISTEMI A LOGICA CABLATA Per realizzare
immagine di categoria

Scarica gratis Codice sorgente

CODICE SORGENTE


list p=16f684 ; list directive to define processor

#include <P16F684.inc> ; processor specific variable definitions


__CONFIG 0x3FC4

RS equ .5

EN equ .4

DB4 equ .0

DB5 equ .3

DB6 equ .1

DB7 equ .2

cblock 0x020

conta

conta1

cifra

asterix  

combinazione

cifre

temp

puntatore

pin

num

n_sec

endc


ORG 0x000

goto inizio

ORG 0x005

inizio

clrf PORTA

clrf PORTC

movlw .7

movwf CMCON0

bsf STATUS,RP0

movlw b'10000011'

movwf OPTION_REG

movlw b'00010000'

movwf ADCON1

movlw b'000001';RA0 analogico

movwf ANSEL

clrf TRISC

movlw b'101101'

movwf TRISA

bcf STATUS,RP0

clrf PORTA

clrf PORTC


;inserimento codice PIN di confronto nella memoria (non utilizzo EEPROM per cambiare codice)


movlw .1

movwf 0x030

movlw .2

movwf 0x031

movlw .3

movwf 0x032

movlw .4

movwf 0x033

movlw .5

movwf 0x034


;INIZIALIZZAZIONE LCD


movlw .50

call delay

bcf PORTC,RS

bsf PORTC,DB4

bsf PORTC,DB5

bcf PORTC,DB6

bcf PORTC,DB7

bsf PORTC,EN

movlw .5

call delay

bcf PORTC,EN

movlw .1

call delay

bsf PORTC,EN

movlw .1

call delay

bcf PORTC,EN

movlw .1

call delay

bsf PORTC,EN

movlw .1

call delay

bcf PORTC,EN

movlw .1

call delay

bcf PORTC,DB4

bsf PORTC,DB5

bcf PORTC,DB6

bcf PORTC,DB7

bsf PORTC,EN

movlw .1

call delay

bcf PORTC,EN

movlw .1

call delay

movlw 0x028 ;USO MULTIPLEX

call invia

movlw 0x006 ;INCREMENTA CARATTERE

call invia

movlw 0x00C ;SPOSTAMENTO A SX AD OGNI DATO

call invia





;SCRITTE INIZIALI


;AZZERA DISPLAY


movlw .1

call invia

movlw .2

call delay


;INSERIMENTO SCRITTA A SCORRERE


movlw 0x082

call invia

movlw 'F'

call dati

movlw 'E'

call dati

movlw 'D'

call dati

movlw 'E'

call dati

movlw 'R'

call dati

movlw 'I'

call dati

movlw 'C'

call dati

movlw 'O'

call dati

movlw ' '

call dati

movlw 'L'

call dati

movlw 'A'

call dati

movlw ' '

call dati

movlw 'M'

call dati

movlw 'A'

call dati

movlw 'T'

call dati

movlw 'T'

call dati

movlw 'I'

call dati

movlw 'N'

call dati

movlw 'A'

call dati



movlw 0x0C2 ; CARATTERI SULLA SECONDA RIGA DELL'LCD

call invia

movlw 'B'

call dati

movlw 'E'

call dati

movlw 'N'

call dati

movlw 'T'

call dati

movlw 'O'

call dati

movlw 'R'

call dati

movlw 'N'

call dati

movlw 'A'

call dati

movlw 'T'

call dati

movlw 'O'


movlw .10

call sec ;mantenimento scritte iniziali per 10s






;GESTIONE TASTIERA


programma


clrf PORTA

movlw 0x040

movwf FSR

clrf cifre

movlw 0x0C7 ;posizionamento primo *

movwf asterix


;AZZERA DISPLAY


movlw .1

call invia

movlw .2

call delay


;INSERIMENTO SCRITTA A SCORRERE


movlw 0x080

call invia

movlw 'I'

call dati

movlw 'N'

call dati

movlw 'S'

call dati

movlw 'E'

call dati

movlw 'R'

call dati

movlw 'I'

call dati

movlw 'R'

call dati

movlw 'E'

call dati

movlw ' '

call dati

movlw 'C'

call dati

movlw 'O'

call dati

movlw 'D'

call dati

movlw 'I'

call dati

movlw 'C'

call dati

movlw 'E'

call dati

movlw ' '

call dati

movlw 'P'

call dati

movlw 'I'

call dati

movlw 'N'

call dati








;accensione convertitore A/D


movlw b'00000001'

movwf ADCON0

movlw .50

call delay


;lettura tastiera

tastiera


A_D

bsf ADCON0,GO

btfsc ADCON0,GO

goto $-1

movfw ADRESH

movwf combinazione


;DECIFRAZIONE TASTO PREMUTO


movlw .10

subwf combinazione,0

btfss STATUS,C

goto tastiera


;nessun tasto premuto:si torna alla lettura


;se viene premuto un tasto attendo 200ms perchč si assesti la tensione all'ingresso dell'A/D e poi rifaccio la conversione


movlw .200

call delay

bsf ADCON0,GO

btfsc ADCON0,GO

goto $-1

movfw ADRESH

movwf combinazione


;confronti in sucessione per trovare il pulsante premuto


movlw .20

subwf combinazione,0

btfss STATUS,C

goto tasto_1


movlw .40

subwf combinazione,0

btfss    STATUS,C

goto tasto_2


movlw .70

subwf combinazione,0

btfss STATUS,C

goto tasto_3


movlw .90

subwf combinazione,0

btfss    STATUS,C

goto tasto_4


movlw .120

subwf combinazione,0

btfss STATUS,C

goto tasto_5


movlw .140

subwf combinazione,0

btfss    STATUS,C

goto tasto_6


movlw .165

subwf combinazione,0

btfss STATUS,C

goto tasto_7


movlw .190

subwf combinazione,0

btfss    STATUS,C

goto tasto_8


goto tasto_9 ; il tasto 9 non necessita di un range per il controllo



;Assegnazione cifra tasto premuto


tasto_0

movlw .0

movwf cifra

goto asterisco


tasto_1

movlw .1

movwf cifra

goto asterisco


tasto_2

movlw .2

movwf cifra

goto asterisco


tasto_3

movlw .3

movwf cifra

goto asterisco


tasto_4

movlw .4

movwf cifra

goto asterisco


tasto_5

movlw .5

movwf cifra

goto asterisco


tasto_6

movlw .6

movwf cifra

goto asterisco


tasto_7

movlw .7

movwf cifra

goto asterisco


tasto_8

movlw .8

movwf cifra

goto asterisco


tasto_9

movlw .9

movwf cifra

goto asterisco


asterisco



;ho tolto questa parte di programma lasciandola vuota; se volessi aggiungerla metto asterisco al posto di asterix

;all' inizio

;nella dichiarazione delle variabili


;inserisco le cifre nella memoria in modo indiretto a partire da 0x040


movfw cifra

movwf INDF

incf FSR,1


;sull'LCD faccio comparire degli asterisco al posto delle cifre (tolto nel programma base)


bsf PORTA,1 ;accendi buzzer

movlw .100

call delay

movfw asterix ;posiziona sull'LCD l'inserimento di un carattere

call invia

movlw .48

iorwf cifra,0 ;istruzione di prova visualizza le cifre

; movlw '*' ;inserisce * al posto delle cifre digitate

call dati

incf asterix,1 ;incrementa sull'LCD la posizione dell'*

incf cifre,1

bcf PORTA,1 ;spegni buzzer

movlw .300

call delay

movlw .5

xorwf cifre,0 ;verifica inserzione completa codice pin

btfsc    STATUS,Z

goto test_pin

goto tastiera




test_pin


;inserisco programma di confronto tra pin digitato e quello memorizzato


movlw 0x040

movwf pin

movlw 0x030

movwf puntatore

controllo

movfw puntatore

movwf FSR

movfw INDF

movwf num

movfw pin

movwf FSR

movfw num

xorwf INDF,0

btfss    STATUS,Z

goto programma

incf pin,1

incf puntatore,1

movlw 0x035

xorwf puntatore,0

btfss STATUS,Z

goto controllo


;apertura cassaforte (LED VERDE + eventuale scatto relais)


bsf PORTA,2

movlw .10

call sec

goto programma


;GESTIONE DATI E COMANDI DELL'LCD

;invia dati all'LCD


dati

bsf PORTC,RS

call invia_byte

return


;invia comandi all'LCD


invia

bcf PORTC,RS

call invia_byte

return



;salva dati inviati


invia_byte

movwf temp

bcf PORTC,DB4

bcf PORTC,DB5

bcf PORTC,DB6

bcf PORTC,DB7

btfsc temp,4

bsf PORTC,DB4

btfsc temp,5

bsf PORTC,DB5

btfsc temp,6

bsf PORTC,DB6

btfsc temp,7

bsf PORTC,DB7

bsf PORTC,EN

movlw .1

call delay

bcf PORTC,EN

movlw .1

call delay

bcf PORTC,DB4

bcf PORTC,DB5

bcf PORTC,DB6

bcf PORTC,DB7

btfsc temp,0

bsf PORTC,DB4

btfsc temp,1

bsf PORTC,DB5

btfsc temp,2

bsf PORTC,DB6

btfsc temp,3

bsf PORTC,DB7

bsf PORTC,EN

movlw .1

call delay

bcf PORTC,EN

movlw .1

call delay

return








;Ritardo espresso in secondi

sec

movwf n_sec

secondi

clrf conta

ciclo1

bcf INTCON,T0IF

clrf TMR0

btfss INTCON,T0IF

goto $-1

decfsz conta,1

goto     ciclo1

decfsz n_sec,1

goto secondi

return


;Ritardo espresso in millisecondi


delay

movwf conta1

clrf conta

ciclo

nop

nop

decfsz conta,1

goto ciclo

decfsz conta1,1

goto ciclo

return



END ; directive 'end of program'

Scarica gratis Codice sorgente
Appunti su:



Scarica 100% gratis e , tesine, riassunti



Registrati ora

Password dimenticata?
  • Appunti superiori
  • In questa sezione troverai sunti esame, dispense, appunti universitari, esercitazioni e tesi, suddivisi per le principali facoltą.
  • Universitą
  • Appunti, dispense, esercitazioni, riassunti direttamente dalla tua aula Universitaria
  • all'Informatica
  • Introduzione all'Informatica, Information and Comunication Tecnology, componenti del computer, software, hardware ...