1 Istruzioni Assembler
|
|
|
- Marisa Marrone
- 7 anni fa
- Visualizzazioni
Transcript
1 Codici Assembler 1 Istruzioni Assembler Sono riportate le istruzioni assembler più comuni utilizzate nella programmazione del microcontrollore 16F628A: Caricamento e spostamento dati: MOVLW n W = n MOVWF reg (reg) = W MOVF reg,d d = (reg) SWAPF reg,d d = swap nibbles (reg) CLRF reg (reg) = 0 CLRW W = 0 Istruzioni aritmetiche: ADDLW n W = W + n ADDWF reg,d d = W + (reg) SUBLW n W = n - W SUBWF reg,d d = (reg) - W INCF reg,d d = (reg) + 1 DECF reg,d d = (reg) - 1 Istruzioni logiche: ANDLW n W = W AND n ANDWF reg,d d = W AND (reg) IORLW n W = W OR n IORWF reg,d d = W OR (reg) XORLW n W = W XOR n XORWF reg,d d = W XOR (reg) COMF reg,d d = NOT (reg) Rotazioni e set/reset di singoli bit: RLF reg,d d = rlf (reg) RRF reg,d d = rrf (reg) BCF reg,b Bit b di (reg) = 0 BSF reg,b Bit b di (reg) = 1 Istruzioni di controllo sistema: CLRWDT SLEEP NOP Azzera watch dog timer Standby mode Nessuna operazione Controllo flusso e salti: 1
2 BTFSC reg,b Skip se bit b di (reg) = 0 BTFSS reg,b Skip se bit b di (reg) = 1 INCFSZ reg,d d = (reg) + 1 Skip se d = 0 DECFSZ reg,d d = (reg) - 1 Skip se d = 0 GOTO addr Salto all indirizzo addr CALL addr Chiamata di subroutine Ritorno da subroutine RETLW n Ritorno da subr.con valore in W RETFIE Ritorno da interrupt 2 Operazioni aritmetiche complesse Di seguito sono riportati i codici Assembler appositamente scritti, ad eccezione della divisione a 16 bit, che permettono la creazione di operazione aritmetiche complesse. Queste sono state utilizzate all interno del programma completo (vedi 3) per calcolare ad ogni pressione dei tasti UP e DOWN il nuovo valore da caricare all interno del registro TMR Sottrazione a 16 bit ;[H,L]=[H,L]-[Hc,Lc] SOT16b movf Lc,W subwf L movf Hc,W btfss STAT,0 incfsz Hc,W subwf H 2.2 Moltiplicazione per 10 di un numero a 16 bit Indicando con X il moltiplicando a 16 bit, con Y il moltiplicatore e con C il fattore si ha: = [ 7 ] 15 Z = X Y = [L x, H x ] L y = a i 2 i + a i 2 i [ a i 2 i i=0 i=0 i=8 7 b j 2 j = j=0 [ 7 ] 15 = a i 2 i + a i 2 i ( ) = i=0 i=8 [ ] a i 2 ]+ i 2 3 a i 2 i a i 2 i = [L c, H c ] i=0 In binario la moltiplicazione per una potenza di due corrisponde alla traslazione dei bit del moltiplicando di un numero di step pari all esponente della potenza nella direzione da quello meno significativo al più significativo. Di seguito è riportato il codice che, per mezzo dell istruzione rlf, implementa quanto formulato: i=8 i=8 2
3 ;10*[H,L]=[Hc,Lc] mol10_16b clrf La clrf Ha clrf Lb clrf Hb clrf Lc clrf Hc clrf Lha clrf Lhb bc STAT,0 ;H*2^1 rlf H, W movwf Ha ;H*2^3 rlf H, W movwf Hb rlf Hb, F rlf Hb, W addwf Ha, W ;W=Ha+W=Ha+Hb movwf Hc ;L*2^1 rlf L, W movwf La bsf Lha,0 ;non incrementi perchè è un roll-->bsf! ;L*2^3 rlf L, W movwf Lb bsf Lhb,2 rlf Lb, F bsf Lhb,1 rlf Lb, F bsf Lhb,0 movf Lha, W addwf Lhb, W movwf Lh movf Lb, W addwf La, W movwf Lc incf Lh, F movf Lh, W addwf Hc, F 3
4 2.3 Divisione intera 16 bit senza segno Il presente codice non è stato steso dal sottoscritto ma prelevato dal sito http: //stor.altervista.org/pic/div/div.htm. <<Il procedimento consiste nell allineare le cifre del divisore a sinistra sotto il dividendo, effettuare una sottrazione per vedere se il divisore e maggiore del dividendo, segnarsi uno 0 nel caso in cui lo sia e un 1 nel caso in cui non lo sia, dopo di che shiftare il divisore a destra di una posizione e ripetere l operazione. Gli 0 e gli 1 che si ottengono come risultato della sottrazione si aggiungono mano a mano sulla destra del quoziente facendolo scorrere verso sinistra. Essendo una divisione a 16 bit occorre usare una coppia di registri da 8 bit anziche uno solo. Queste coppie sono chiamate QH:QL per il quoziente, VH:VL per il divisore ecc... L unico registro a 8 bit singolo che rimane e il contatore di ciclo per le sottrazioni, infatti al massimo verranno eseguite 16 sottrazioni.>> ;----- Divisione 16 bit intera senza segno ; QH:QL=DH:DL/VH:VL DH:DL=resto ; IN: DH:DL=dividendo VH:VL=divisore ; OUT: QH:QL=quoziente DH:DL=resto ; CL = contatore di ciclo FL = salvataggio flag DIV16 CLRF QH ;Azzera quoziente CLRF QL CLRF CL ;Azzera contatore di ciclo DIV16_2 INCF CL,F ;CL=CL+1 BTFSC VH,7 ;Se bit 7 di VH=0 skip GOTO DIV16_3 ;altrimenti vai a DIV16_3 BCF STAT,0 ;Azzera carry RLF VL,F ;Ruota divisore a sinistra RLF VH,F GOTO DIV16_2 ;Vai a DIV16_2 DIV16_3 CALL SUB16 ;Chiama sottraz. DH:DL-VH:VL RLF QL,F ;Ruota carry a destra nel quoziente RLF QH,F BTFSS QL,0 ;Se non overflow skip CALL RESTORING ;altrimenti chiama somma DH:DL+VH:VL BCF STAT,0 ;Azzera carry RRF VH,F ;Ruota divisore a destra RRF VL,F DECFSZ CL,F ;Decrementa contat.ciclo, skip se 0 GOTO DIV16_3 ;altrimenti vai a DIV16_3 ;Fine subroutine SUB16 BSF FL,4 ;Imposta a 1 il bit 4 di FL MOVF VL,W ;W=parte bassa divisore SUBWF DL,F ;ao sottrae a parte bassa dividendo BTFSC STAT,0 ;Se overflow skip GOTO SUB16_2 ;altrimenti vai a SUB16_2 MOVLW 1 SUBWF DH,F ;Sottrae 1 a parte alta dividendo SWAPF STAT,W ;Salva i flag in FL MOVWF FL SUB16_2 MOVF VH,W ;W=parte alta divisore SUBWF DH,F ;la sottrae a parte alta dividendo BTFSS FL,4 ;Controlla bit 4 di FL, se 1 skip BCF STAT,0 ;altrimenti resetta carry 4
5 RESTORING MOVF VL,W ;W=parte bassa divisore ADDWF DL,F ;la somma a parte bassa dividendo BTFSC STAT,0 ;Se non overflow skip INCF DH,F ;altrimenti incrementa parte alta dividendo MOVF VH,W ;W=parte alta divisore ADDWF DH,F ;la somma a parte alta dividendo 3 Codice progetto oscillatore Di seguito è riportato l intero codice Assembly per il progetto di un oscillatore variabile da 0.1 a 5.0 Hz a passi di 0.1 Hz. TITLE fout_var_4mhzinterno list F=INHX8M,P=16F628A config b ; ;RB0=square(2*pi*fout*t) RB1=square(2*pi*fout*t+pi) ; PCLATH EQU 0AH TMR0 EQU 01H ; Real Time Clock Counter TMR1L EQU 0EH TMR1H EQU 0FH STAT EQU 03H ; Registro di stato PORTA EQU 05H ; Porta A PORTB EQU 06H ; Porta B INTCON EQU 0BH ; Registro abilitazione interrupt TR_A EQU 85H ; Tris A TR_B EQU 86H ; Tris B OPTIO EQU 81H ; Registro OPTION CMCON EQU 1FH ; Reg comparatori PCON EQU 8EH ; Registro Power Control (contiene f_intosc) PIE1 EQU 8CH ; PIR1 EQU 0CH ; T1CON EQU 10H ; PCL EQU 02H ; Program counter WTEMP EQU 20H ; Buffer per salvataggio W in interrupt STATEM EQU 21H ; Buffer per salvataggio STAT in interrupt REGUP EQU 34H ; Ritardo REGDN EQU 36H INDS EQU 31H ; Indice sinistro INDD EQU 32H ; Indice destro KL EQU 33H ; K=fosctmr1/(2*pretmr1) KH EQU 35H ; K=fosctmr1/(2*pretmr1) F10 EQU 4BH QH EQU 38H ; QL EQU 39H DH EQU 3AH ; DL EQU 3BH ; VH EQU 3CH ; VL EQU 3DH ; CL EQU 3EH FL EQU 3FH L H EQU 40h EQU 41h 5
6 La EQU 42h Ha EQU 43h Lb EQU 44h Hb EQU 45h Lc EQU 46h Hc EQU 47h Lha EQU 48h Lhb EQU 49h Lh EQU 4Ah CALC EQU 4Bh T1LAP EQU 4Ch T1HAP EQU 4Dh #define UP PORTA,5 ; Pulsante UP #define DN PORTB,3 ; Pulsante DOWN #define DISPSX PORTB,5 ; Abilitazione display 1 #define DISPDX PORTB,2 ; Abilitazione display 2 ; Def costanti display catodo comune ZERO EQU 0CFH ; Codifica numero 0: UNO EQU 088H ; Codifica numero 1: DUE EQU 0D6H ; Codifica numero 2: TRE EQU 0DCH ; Codifica numero 3: QUATTR EQU 099H ; Codifica numero 4: NC CINQUE EQU 05DH ; Codifica numero 5: SEI EQU 05FH ; Codifica numero 6: SETTE EQU 0C8H ; Codifica numero 7: OTTO EQU 0DFH ; Codifica numero 8: NOVE EQU 0DDH ; Codifica numero 9: ; ; ORG 0 goto START ;Reset vector nop nop nop movwf WTEMP swapf STAT,W movwf STATEM btfss PIR1,0 ; Interrupt da overflow TMR1? se si skip goto endin ; movlw b ; Carica W xorwf PORTB,1 ; PORTB=XOR(PORTB,W) ; ricavo TMR1 bcf PIR1,0 ; Clear flag TMR1IF endin swapf STATEM,w movwf STAT swapf WTEMP,f swapf WTEMP,w retfie ;----- Sottraz 16bit [H,L]=[H,L]-[Hc,Lc] SOT16b movf Lc,W subwf L movf Hc,W btfss STAT,0 incfsz Hc,W 6
7 subwf H ;----- Divisione 16 bit intera senza segno ; QH:QL=DH:DL/VH:VL DH:DL=resto ; IN: DH:DL=dividendo VH:VL=divisore ; OUT: QH:QL=quoziente DH:DL=resto ; CL = contatore di ciclo FL = salvataggio flag DIV16 CLRF QH ;Azzera quoziente CLRF QL CLRF CL ;Azzera contatore di ciclo DIV16_2 INCF CL,F ;CL=CL+1 BTFSC VH,7 ;Se bit 7 di VH=0 skip GOTO DIV16_3 ;altrimenti vai a DIV16_3 BCF STAT,0 ;Azzera carry RLF VL,F ;Ruota divisore a sinistra RLF VH,F GOTO DIV16_2 ;Vai a DIV16_2 DIV16_3 CALL SUB16 ;Chiama sottraz. DH:DL-VH:VL RLF QL,F ;Ruota carry a destra nel quoziente RLF QH,F BTFSS QL,0 ;Se non overflow skip CALL RESTORING ;altrimenti chiama somma DH:DL+VH:VL BCF STAT,0 ;Azzera carry RRF VH,F ;Ruota divisore a destra RRF VL,F DECFSZ CL,F ;Decrementa contat.ciclo, skip se 0 GOTO DIV16_3 ;altrimenti vai a DIV16_3 ;Fine subroutine SUB16 BSF FL,4 ;Imposta a 1 il bit 4 di FL MOVF VL,W ;W=parte bassa divisore SUBWF DL,F ;ao sottrae a parte bassa dividendo BTFSC STAT,0 ;Se overflow skip GOTO SUB16_2 ;altrimenti vai a SUB16_2 MOVLW 1 SUBWF DH,F ;Sottrae 1 a parte alta dividendo SWAPF STAT,W ;Salva i flag in FL MOVWF FL SUB16_2 MOVF VH,W ;W=parte alta divisore SUBWF DH,F ;la sottrae a parte alta dividendo BTFSS FL,4 ;Controlla bit 4 di FL, se 1 skip BCF STAT,0 ;altrimenti resetta carry RESTORING MOVF VL,W ;W=parte bassa divisore ADDWF DL,F ;la somma a parte bassa dividendo BTFSC STAT,0 ;Se non overflow skip INCF DH,F ;altrimenti incrementa parte alta dividendo MOVF VH,W ;W=parte alta divisore ADDWF DH,F ;la somma a parte alta dividendo ; Moltiplicazione 10*16bit 10*[H,L]=[Hc,Lc] mol10_16b clrf La clrf Ha clrf Lb clrf Hb clrf Lc 7
8 clrf Hc clrf Lha clrf Lhb ;H*2^1 rlf H, W movwf Ha ;H*2^3 rlf H, W movwf Hb rlf Hb, F rlf Hb, W addwf Ha, W ;W=Ha+W=Ha+Hb movwf Hc ;L*2^1 rlf L, W movwf La bsf Lha,0 ;non incrementi perchè è un roll-->bsf! ;L*2^3 rlf L, W movwf Lb bsf Lhb,2 rlf Lb, F bsf Lhb,1 rlf Lb, F bsf Lhb,0 movf Lha, W addwf Lhb, W movwf Lh movf Lb, W addwf La, W movwf Lc incf Lh, F movf Lh, W addwf Hc, F ;----RICAVO TMR TM1 btfss CALC,0 goto NOCALC movf INDS,W ; W=INDS movwf L ; L=INDS clrf H ; H=0 call mol10_16b movf Lc,W ; W=Lc addwf INDD, W ; W=Lc+INDD=INDS*10+INDD movwf F10 ; F10=W=INDS*10+INDD movf KL,W ;faccio Q=K/F10 8
9 movwf DL ;QH:QL=DH:DL/VH:VL movf KH,W movwf DH movf F10,W movwf VL clrf VH call DIV16 ; [QH,QL]=Q movf QL,W ; faccio Q*10...W=QL movwf L ; L=QL movf QH,W ; W=QH movwf H ; H=QH call mol10_16b ; [Hc,Lc]=Q*10 movlw b ; TMR1max=65535 movwf L ; in realtà sarebbe ma movlw b ; dovrei rappresentarlo a 17bit movwf H ; call SOT16b ; [H,L]=tmr1max-k*10/f10 movf L,W ; W=L movwf TMR1L ; movwf T1LAP movf H,W ; W=H movwf TMR1H ; movwf T1HAP bcf CALC,0 goto ENDCAL NOCALC movf T1LAP,W ; W=L movwf TMR1L ; movf T1HAP,W ; W=H movwf TMR1H ; ENDCAL ; display DISP addwf PCL,1 ; Sommo w al program counter retlw ZERO ; Visualizza 0 retlw UNO ; Visualizza 1 retlw DUE ; Visualizza 2 retlw TRE ; Visualizza 3 retlw QUATTR ; Visualizza 4 retlw CINQUE ; Visualizza 5 retlw SEI ; Visualizza 6 retlw SETTE ; Visualizza 7 retlw OTTO ; Visualizza 8 retlw NOVE ; Visualizza 9 ; subroutine gestione multiplexer VISSX bcf DISPDX ; Disabilita disp dx movf INDS,0 ; W=IND call DISP ; movwf PORTA ; bsf DISPSX ; Abilita disp sx return VISDX bcf DISPSX ; Disabilita disp sx movf INDD,0 ; W=IND call DISP ; Numero dx su porta B movwf PORTA ; bsf DISPDX ; Abilita disp dx 9
10 return ; ; ritardo DELA10 ; btfsc UP ; Testo stato UP per pressione bsf REGUP,0 ; btfss UP ; Testo stato UP per rilascio bcf REGUP,1 ; btfsc DN ; Testo stato DN per pressione bsf REGDN,0 ; btfss DN ; Testo stato DN per rilascio bcf REGDN,1 ; btfss INTCON,2 ; goto DELA10 ; movlw.255 ; movwf TMR0 ; bcf INTCON,2 return ; Ritorna dopo la CALL ; ; START PROGRAM ; START bcf STAT,5 ; banco 0 movlw b ; Disabilita comparatori e abilita I/O movwf CMCON ; movlw b ; osc ext pretmr1=4 e non sincronizzo movwf T1CON ; bsf STAT,5 ; banco 1 bsf PIE1,0 ; enables TMR1 interr overflow bsf PCON,3 ; f_intosc=4mhz movlw b ; RA5 in movwf TR_A ; movlw b ; movwf TR_B ; movlw b ; Prescaler 1:256 movwf OPTIO ; Copia W in OPTION (INTDG=0)(Rpull_up enable) bcf STAT,5 ; banco 0 movlw b ; k=32768/(2*pretmr1)=4096= movwf KL ; movlw b ; movwf KH ; movlw.0 ; movwf INDS ; movlw.1 ; movwf INDD ; bsf CALC,0 clrf PORTA ; RA=0 movlw b ; RB0=0 RB1=1 (pilotano braccetto) movwf PORTB ; movlw b ; GIE=1 interr da perif movwf INTCON ; movlw.217 movwf TMR0 bcf INTCON,2 10
11 ; main program MAIN bcf REGUP,0 ; Clear memoria P2 pressione bsf REGUP,1 ; Clear memoria P2 rilascio bcf REGDN,0 ; Clear memoria P2 pressione bsf REGDN,1 ; Clear memoria P2 rilascio call VISSX call DELA10 ; Subroutine ritardo 10mS call VISDX call DELA10 btfss REGUP,0 ; Testo UP per pressione goto GOUP ; Vai alla routine GOUP btfsc REGUP,1 ; Testo UP per rilascio bcf REGUP,2 ; Resetta memoria incremento effettuato btfss REGDN,0 ; Testo UP per pressione goto GODN ; Vai alla routine GODN btfsc REGDN,1 ; Testo UP per rilascio bcf REGDN,2 ; Resetta memoria decremento effettuato goto MAIN ; GOUP btfsc REGUP,2 ; goto MAIN ; bsf REGUP,2 ; Setto memoria toggle movlw.5 subwf INDS,0 ; W=INDS-5 btfss STAT,0 ;If INDS=5 skip goto GOUP2 movlw.0 ; movwf INDS ; movlw.1 ; movwf INDD ; bsf CALC,0 ; goto MAIN GOUP2 movlw.9 subwf INDD,0 ; W=INDD-9 btfss STAT,0 ; If INDD=9 skip goto GOUP3 incf INDS,F ; incrementa INDS movlw.0 ; movwf INDD ; bsf CALC,0 ; goto MAIN GOUP3 incf INDD,F bsf CALC,0 ; goto MAIN GODN btfsc REGDN,2 ; goto MAIN ; bsf REGDN,2 ; Setto memoria toggle movf INDS,0 ; W=INDS sublw 0 ; W=0-INDS ; Se INDS>0-->[C]=0 Se INDS<=0-->[C]=1 goto GODN2 movf INDD,0 ; W=INDD 11
12 sublw 0 ; W=0-INDD btfss STAT,0 ; Se INDD>0-->[C]=0 Se INDD<=0-->[C]=1 goto GODN3 decf INDS,F movlw.9 ; movwf INDD ; bsf CALC,0 ; goto MAIN GODN2 movf INDD,0 ; W=INDD sublw.1 ; W=0-INDS btfss STAT,0 ; Se INDS>1-->[C]=0 Se INDS<=1-->[C]=1 goto GODN3 movlw.5 ; movwf INDS ; movlw.0 ; movwf INDD ; bsf CALC,0 ; goto MAIN GODN3 decf INDD,F ; bsf CALC,0 ; goto MAIN END ;
PIC Set istruzioni. Sintassi Descrizione Microchip Operazione equivalente Effetto su STATUS
PIC Set istruzioni Questo è il set completo delle istruzioni dei Microchip PIC: Sintassi Descrizione Microchip Operazione equivalente Effetto su STATUS ADDLW k Add Literal and W W = W + k C, DC, Z ADDWF
Lezione 8. Figura 1. Configurazione del registro INTCON
Lezione 8 In questa puntata, ci dedicheremo all'impiego dei cosiddetti "interrupt", che tanto incutono temore ai più inesperti. Ma che cosa sono questi interrupt? Come abbiamo già visto, un programma non
; Registro abilitazione interrupt TR_A EQU 85H ; Tris A TR_B EQU 86H ; Tris B
Lezione 3 Poichè al termine della seconda lezione ci siamo lasciati con un piccolo compito da svolgere, vediamo subito come potevamo implementare un led lampeggiante con frequenza di 2Hz, ovvero un secondo
Lezione 4. Figura 1. Schema di una tastiera a matrice di 4x4 tasti
Lezione 4 Uno degli scogli maggiori per chi inizia a lavorare con i microcontroller, è l'interfacciamento con tastiere a matrice. La cosa potrebbe a prima vista sembrare complessa, ma in realtà è implementabile
Lezione 6 L'hardware dedicato.
Lezione 6 Come già anticipato nelle prime lezioni, il PIC16C84 non solo ha la memoria di programma in tecnologia EEPROM, ma possiede anche 64 registri da 8 bit di identica struttura. Questo vuol dire che,
Lezione 1 Caratteristiche principali del PIC16C84 L'hardware
Lezione 1 Nella prima lezione del corso, cercheremo di comprendere come sia fatto internamente il controller più conosciuto di Microchip, ovvero il PIC16C84 poi evoluto nel PIC16F84. Sebbene i microcontroller
NOZIONI BASE DI ASSEMBLER PER PIC16C84
NOZIONI BASE DI ASSEMBLER PER PIC16C84 Aggiornato al 09 settembre 2005 Ermes ZANNONI ([email protected]) (http://www.zannoni.to.it) Indice : 1. Introduzione 2. Cosa è un PIC 3. Achitettura interna 3.1
CIRCUITO DI TEST E SOFTWARE UTILIZZATI
CIRCUITO DI TEST E SOFTWARE UTILIZZATI Circuito di Test Nello schema elettrico di figura A è rappresentato un circuito, realizzabile anche senza l ausilio di un circuito stampato, che consente di testare
PUNTATORE LASER AUTOMATICO CON COMANDO VIA ETHERNET
Canzian Sara Liberali Marco 5AT A.S.2007/2008 PUNTATORE LASER AUTOMATICO CON COMANDO VIA ETHERNET Questo sistema permette di posizionare una luce laser in una determinata posizione data dalle coordinate
Esercizi di verifica del debito formativo:
Esercizi di verifica del debito formativo: Disegnare il diagramma e scrivere la tabella delle transizioni di stato degli automi sequenziali a stati finiti che rappresentano il comportamento dei seguenti
Microcontrollori. L ultima parte del corso prevede un approfondimento sui microprocessori, in particolare sul PIC 16F876.
111 Microcontrollori L ultima parte del corso prevede un approfondimento sui microprocessori, in particolare sul PIC 16F876. In elettronica digitale il microcontrollore è un dispositivo elettronico integrato
Lezione 2. Figura 1. Schema del circuito necessario per le prove
Lezione 2 Inizializzazione porte Il primo argomento che tratteremo è la prima operazione da effettuare quando si programma un microcontrollore ovvero settare correttamente le porte ed inizializzare i registri
ESERCIZI SUI SISTEMI DI NUMERAZIONE
ESERCIZI SUI SISTEMI DI NUMERAZIONE 1 ) Convertire in base 10 i seguenti numeri rappresentati nelle basi indicate: (1000101) 2 [R. 69] (477) 8 [R. 319] (40F) 16 [R. 1039] (5778) 9 [R. 4283] (126) 9 [R.
PROCESSOR 16F84A. ;configurazione FUSES: oscillatore XT, WDT disabilitato PWRT abilitato, CP disabilitato config 0x3FF1
---- ; Programma per ROBOT MDB3F2004-05 Evolution ; Autore: MICCI Antonello copyright 2005 ---- ------------------------- ;Piedino RA0 ingresso fotocellula dx livello basso rilevazione ostacolo ;Piedino
GESTIONE DEI TEMPI CON IL TIMER1 DEL PIC16F876
GESTIONE DEI TEMPI CON IL TIMER1 DEL PIC16F876 6.0 TIMER1 MODULE The Timer1 module is a 16-bit timer/counter consisting of two 8-bit registers (TMR1H and TMR1L), which are readable and writable. The TMR1
Programmazione del microcontrollore PIC 16F84
Programmazione del microcontrollore PIC 16F84 2 Indice Capitolo 1: Set di istruzioni del PIC 16F84 1.1 Descrizione sintetica 1.2 Simbologia adottata 1.3 Sintassi 1.4 Descrizione completa Capitolo 2: Variabili,
MICROCONTROLLORE PIC16F84A
MICROCONTROLLORE PIC16F84A Il microcontrollore pic16f84a, a differenza di un computer normale e' dotato in un unico integrato di tutti gli elementi fondamentali di un computer, che sono la Cpu, unita'
Nicola Amoroso. Corso introduttivo sui microcontrollori A. S La programmazione dei PIC.
Corso introduttivo sui microcontrollori A. S. 2007 2008 La programmazione dei PIC Nicola Amoroso [email protected] NA L3 1 Il software per il PIC Come per qualsiasi sistema a microprocessore, anche
Assembly PIC16F8X. Dispensa di elettronica sull uso del microcontrollore PIC 16F8X
Dispensa di elettronica sull uso del microcontrollore PIC 16F8X Anno scolastico 2010/2011 Corso di Sistemi, specializzazione elettronica ITIS Galileo Ferraris Prof. Aniello Celentano L obiettivo della
List p=16f84 ;Tipo di processore include "P16F84.INC" ;Definizioni di registri interni. goto Inizio
ESEMPIO 1.1 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione Sommare due valori immediati (p.e. 5+7) il risultato va depositato nella posizione 0x10 List p=16f84 Tipo
Microcontrollori PIC Teoria, Esperimenti, Esercizi HARDWARE DEL PIC SOFTWARE DEL PIC MPLAB MEMORIA PORTE-IO TIMER DISPLAY AUDIO ADC INTERRUPT EEPROM
Microcontrollori PIC Teoria, Esperimenti, Esercizi HARDWARE DEL PIC SOFTWARE DEL PIC MPLAB MEMORIA PORTE-IO TIMER DISPLAY AUDIO ADC INTERRUPT EEPROM HARDWARE DEL PIC Il PIC6F684 (PIC=Peripheral Interface
PROGRAMMAZIONE ASSEMBLER
PROGRAMMAZIONE ASSEMBLER Esempio di semplice lampeggiatore a LED 072805 Sistemi Elettronici Dicembre 2006 Ultimo aggiornamento: 11 dicembre 2006 1 OBBIETTIVI 1 Discutere delle metodologie di progetto e
Pilotare un motore passo-passo, in questo caso il modello della Sanyo le cui caratteristiche principali sono quelle di figura1.
10. Pilotaggio unipolare di un motore passo-passo Scopo della prova Pilotare un motore passo-passo, in questo caso il modello 103-547-52500 della Sanyo le cui caratteristiche principali sono quelle di
Applicazioni dei microcontrollori PIC
Applicazioni dei microcontrollori PIC In questa unità vengono esposte le modalità di realizzazione di un circuito hardware con il microcontroller PIC16C84 (o PIC16F84), per la prova dei programmi presentati
ESERCIZI NEL LINGUAGGIO ASSEMBLATIVO DEL MICROCONTROLLORE PIC 16F84
ESERCIZI NEL LINGUAGGIO ASSEMBLATIVO DEL MICROCONTROLLORE PIC 16F84 1 ) Calcolare in binario e convertire in decimale il contenuto del registro W dopo l esecuzione delle seguenti istruzioni: MOVLW 150
PIC Esempi - LED. Per i primi esempi viene utilizzato soltanto un LED sulla porta B (PortB), successivamente si utilizzano più LED.
PIC Esempi - LED Per i primi esempi viene utilizzato soltanto un LED sulla porta B (PortB), successivamente si utilizzano più LED. 1.1 Questo semplice programma esegue uno switch ripetutamente su tutti
Gestione Degli INTERRUPT
Gestione Degli INTERRUPT Il PIC 16F876 possiede vari tipi di Interrupt. Si parla di 14 differenti sorgenti di interrupt, ma molto facilmente nella programmazione se ne terranno in considerazione ben pochi:
Introduzione. Corso di Informatica Applicata. Università degli studi di Cassino
Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Introduzione Ing. Saverio De Vito e-mail: [email protected] Tel.:
SISTEMA DI SVILUPPO MC-16
SISTEMA DI SVILUPPO MC-16 per microcontrollori PIC16F84 - PIC16F876 o MANUALE DI PROGRAMMAZIONE 2 Il sistema MC-16 contiene: Scheda di sviluppo a microcontrollore con PIC16F84 e PIC16F876. Unità di programmazione
APPUNTI DI ASM PER PIC
APPUNTI DI ASM PER PIC Prefazione: questi sono gli appunti di un profano che ha iniziato a studiarsi l asm per pic senza avere nessuno o quasi conoscenza pregressa, mi scuso pertanto di eventuali imprecisioni
G&G ESEMPIO1 PROGRAMMAZIONE Progetto FACILEPLC Pag. 1 di 6
G&G ESEMPIO1 PROGRAMMAZIONE Progetto FACILEPLC Pag. 1 di 6 Alcuni esempi di programmazione nei vari linguaggi di una piccola funzione logica per comprendere la complessità del linguaggio assembler con
Maurizio Del Corso Tiziano Galizia. Conoscere ed usare. Progettare con i microcontrollori PIC in modo facile e veloce
Maurizio Del Corso Tiziano Galizia Conoscere ed usare PICmicro Progettare con i microcontrollori PIC in modo facile e veloce Titolo: Conoscere ed usare PICmicro Prima Edizione - Marzo 2005 ISBN 88-901665-0-9
APPUNTI SUL PIC16F84
APPUNTI SUL PIC16F84 Gianluca 'gurutech' Mascolo v0.1 04/04/2004 mailto: gurutech_at_gurutech.it Hackit04 Il PIC16F84 è un microcontrollore a 8-bit dotato di due porte di I/O digitali, una da 5 bit e una
DECODER DTMF CON UN SOLO PIC
francopic DECODER DTMF CON UN SOLO PIC 13 December 2016 Introduzione Ciao a tutti. Eccomi ancora una volta a parlarvi del pic 16F1705 e delle sue straordinarie capacità, questa volta nelle vesti di decodificatore
LO HAI MAI REALIZZATO CON UN PIC? UN APPROCCIO AI TIMER DEI PICMICRO 1
Paolo Rognoni (Paolino) LO HAI MAI REALIZZATO CON UN PIC? UN APPROCCIO AI TIMER DEI PICMICRO 18 March 2010 Sebbene i timer siano dispositivi molto semplici, in relazione a tutte le periferiche disponibili
CORSO di AUTOMAZIONE INDUSTRIALE
CORSO di AUTOMAZIONE INDUSTRIALE (cod. 8469-21029) APPELLO del 22 Giugno 2011 Prof. Andrea Cataldo Soluzioni Esercizio 1 (Domande generali) 1.a) Controllo Logico Dire se il seguente programma SFC è sintatticamente
Capitolo X del Testo Ettore Panella Giuseppe Spalierno Corso di Elettronica 3 Edizioni Cupido MICROCONTROLLORE PIC 16F84
Microcontrollore PIC 16F84 1 1. Generalità Capitolo X del Testo Ettore Panella Giuseppe Spalierno Corso di Elettronica 3 Edizioni Cupido MICROCONTROLLORE PIC 16F84 I microcontrollori sono dei circuiti
Controllo di un asse
ITIS M. PLANCK ( LANCENIGO DI VILLORBA TV) CORSO SERALE ( Classe 5 /STE ) Area di progetto anno scolastico 2006/2007 Allievo: Crema Claudio Tutor : Prof. Italo Zaniol Controllo di un asse Indice: Descrizione
Corso di Informatica Applicata. Lezione 7. Università degli studi di Cassino
Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Lezione 7 Ing. Saverio De Vito e-mail: [email protected] Tel.: +39
I MICROCONTROLLORI PIC (Microchip) PARTE I
I MICROCONTROLLORI PIC (Microchip) PARTE I Prof. Angelo Monfroglio Questa dispensa, ad uso degli studenti degli indirizzi Elettronica e Informatica e di tutti i progettisti e studiosi interessati, fornisce
Il precedente programma è scritto in linguaggio Assembly per Z80. Il programma indicato sopra deve essere tradotto in codice Assembly per PIC
[LABEL:] CODICE OP1[,OP2][COMMENTO] MNEM LD E,0H PIO EQU 0CH ORG 100H LD E,0 ciclo: IN A,(PIO) LD B,A IN A,(PIO) LD C,A LD A,E ADD A,B SUB C CP 8CH JRZ (ciclo) LD A,1 OUT (PIO),A HALT END Il precedente
INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI
LUCIDI LEZIONI SISTEMI ELETTRONICI INDUSTRIALI www.dismi.unimo.it (People Associated Pavan ) www.microchip.com com (Datasheet PIC - DS30292) (Mid Range Family Manual DS33023) Università degli Studi di
Nicola Amoroso. Corso introduttivo sui microcontrollori A. S La programmazione dei PIC TIMERS.
Corso introduttivo sui microcontrollori A. S. 2007 2008 TIMERS Nicola Amoroso [email protected] NA L7 1 Timers I timer sono precisi contatori, che possono essere configurati per incrementarsi su fronti
I microcontrollori. In sostanza i pic hanno le seguenti caratteristiche:
I microcontrollori Con il termine di microcontrollori si intende un sistema integrato simile ad un microprocessore ma contente su un unico chip oltre la CPU, anche la memoria RAM, memoria dati, memoria
Davide Gennaretti, Matteo Nicolini
Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II Facoltà di Ingegneria Elettronica Cesena Cosa sono i microcontrollori? Piccoli computer concentrati in un chip Un Datapath
I microcontrollori PIC parte III
I microcontrollori PIC parte III In questa terza parte parliamo brevemente dell ultima famiglia nata: i potenti PIC32, in particolare il PIC32MX795F512H. Accenniamo anche al nuovo sistema di sviluppo MPLABX
Il µcontrollore PIC 16F84
Il µcontrollore PIC 16F84 Microchip Tecnology D. Ch. 1 Il grande successo dei microcontrollori ha indotto tutte le grandi case costrutrici di semiconduttori come la Intel, la Philips Semiconductors, la
ENCODER DTMF CON PIC 16F1705
francopic ENCODER DTMF CON PIC 16F1705 18 February 2016 Introduzione La storia continua, ancora un articolo al sapore di pic. Neanche io pensavo di dovermene più occupare ma sbagliavo. E stato un mio caro
Il precedente programma è scritto in linguaggio Assembly per Z80. Il programma indicato sopra deve essere tradotto in codice Assembly per PIC
[LABEL:] CODICE OP1[,OP2][COMMENTO] MNEM LD E,0H PIO EQU 0CH ORG 100H LD E,0 ciclo: IN A,(PIO) LD B,A IN A,(PIO) LD C,A LD A,E ADD A,B SUB C CP 8CH JRZ (ciclo) LD A,1 OUT (PIO),A HALT END Il precedente
Marcia e Arresto di un Motore elettrico
Marcia e Arresto di un Motore elettrico Si vuole realizzare un circuito elettronico gestito da un microcontrollore PIC16F876 che sia in grado di pilotare un motore elettrico AC 220 volt utilizzando i classici
Nel microprocessore 8086 abbiamo una gran quantità di registri
I registri del microprocessore 8086 Nel microprocessore 8086 abbiamo una gran quantità di registri AH AL AX 1 1 1 1 1 1 1 0 0 1 0 1 1 1 0 1 B H B L BX 1 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 C H C L CX 1 0 1 1
PERIFERICHE INTELLIGENTI colleghiamo un display LCD
PERIFERICHE INTELLIGENTI colleghiamo un display LCD Sulla schedina sperimentale che abbiamo costruito c'è un connettore a 14 poli da flat cable per poter collegare un display lcd. I pin di controllo del
Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j
L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):
Istruzioni assembler Istruzione N Registri
Istruzioni assembler Istruzione N Registri Aritmetica add a, b, c a = b+c addi a, b, num a = b + sub a, b, c a = b - c mul a, b, c a = b*c div a, b, c a = b/c utilizzati Descrizione 3 Somma. Somma b e
I PIC Partendo da Zero By link_89
I PIC Partendo da Zero By link_89 Indice: 1. Introduzione 2. Che cosa serve 3. I più usati 4. I registri 5. Il Primo progetto Introduzione Con questa guida non pretendo di insegnarvi a usare perfettamente
CONTROLLO NUMERICO DI UN TORNIO DI TIPO DIDATTICO
CONTROLLO NUMERICO DI UN TORNIO DI TIPO DIDATTICO ELETTRONICA E TELECOMUNICAZIONI AREA DI PROGETTO TESINA PLURIDISCIPLINARE ISTITUTO TECNICO INDUSTRIALE STATALE MAX PLANCK o LANCENIGO VILLORBA (TV) CLASSE
Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi
Somma di numeri floating point Algoritmi di moltiplicazione e divisione per numeri interi Standard IEEE754 " Standard IEEE754: Singola precisione (32 bit) si riescono a rappresentare numeri 2.0 10 2-38
Università degli studi di Roma La Sapienza. Laboratorio di Automatica
Università degli studi di Roma La Sapienza DIS Dipartimento di Informatica e Sistemistica Laboratorio di Automatica Implementazione di un controllore PID digitale per il controllo di posizione di un motore
Assembly. Modello x86
Assembly Modello x86 1 Il microprocessore Un MICROPROCESSORE è un circuito integrato dotato di una struttura circuitale in grado di attuare un prefissato SET di ISTRUZIONI 2 Caratteristiche del microprocessore
Architettura degli Elaboratori
Moltiplicazione e divisione tra numeri interi: algoritmi e circuiti slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello Operazioni aritmetiche e logiche Abbiamo visto che le ALU sono in grado
release 3 Il microcontrollore PIC16F877A di Ippolito Perlasca Presentazione
release 3 Il microcontrollore PIC16F877A di Ippolito Perlasca Presentazione Questa è una dispensa sul microcontrollore PIC16F877A. Non è completa: manca la descrizione di alcune periferiche, ma le più
0ROWLSOLFD]LRQHH'LYLVLRQH WUDQXPHULUHODWLYL
0ROWLSOLFD]LRQHH'LYLVLRQH WUDQXPHULUHODWLYL Salvatore Orlando & Marta Simeoni Arch. Elab. - S. Orlando 1 0ROWLSOLFD]LRQHWUDQXPHULLQWHUL Oltre ai circuiti per realizzare somme e sottrazioni di interi, è
Moltiplicazioni e Divisioni. G. Michele Pinna (1)
Moltiplicazioni e Divisioni G. Michele Pinna (1) moltiplicazione Abbiamo 3 versioni: Alu a 64 bit, due registri a 64 bit ed uno a 32 Alu a 32 bit, un registro a 64 e due a 32 Alu a 32 bit, un registro
Programmazione in linguaggio assembly per architetture Intel 8088
Programmazione in linguaggio assembly per architetture Intel 8088 Marco Di Felice 1 Università of Bologna Dipartimento di Scienze dell Informazione Corso di Architettura degli Elaboratori mail: [email protected]
Lezione 7 ALU: Moltiplicazione e divisione
Architettura degli Elaboratori e delle Reti Lezione 7 ALU: Moltiplicazione e divisione F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 7 1/34 Sommario! Sommatori
OPERAZIONI ARITMETICHE
OPERAZIONI ARITMETICHE Merker speciali: SM1.0 risultato uguale a zero SM1.1 overflow SM1.2 risultato negativo SM1.3 divisione per zero Tabella riassuntiva (codici operativi in IL) INTERI (16 Bit) DOUBLE
Moltiplicazione e Divisione tra numeri relativi
Moltiplicazione e Divisione tra numeri relativi Salvatore Orlando & Marta Simeoni Arch. Elab.A M. Simeoni 1 Moltiplicazione tra numeri interi Oltre ai circuiti per realizzare somme e sottrazioni di interi,
Moltiplicazione tra numeri interi. Moltiplicazione e Divisione tra numeri relativi. Moltiplicazione: algoritmo carta e penna (base 2)
Arch. Elab.A M. Simeoni 1 Moltiplicazione tra numeri interi Moltiplicazione e Divisione tra numeri relativi Salvatore Orlando & Marta Simeoni Oltre ai circuiti per realizzare somme e sottrazioni di interi,
Firmware Multiplier. Sommario
Firmware Multiplier Prof. lberto Borghese Dipartimento di Informatica [email protected] Università degli Studi di Milano Riferimenti sul Patterson 5a ed.: B.6 & 3.4 /33 Sommario Il moltiplicatore firmware
Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche
3 tipi di istruzioni macchina Linguaggio macchina e assembler 1) trasferimento tra RAM e registri di calcolo della CPU 2) operazioni aritmetiche: somma, differenza, moltiplicazione e divisione 3) operazioni
DEDALO. Motori passo-passo Ruota motrice n.1 Ruota motrice n.2. Ruota di snodo. avanti
DEDALO Dedalo è il nome di un progetto nato con l intento di realizzare automa in grado di riconoscere labirinti (creati con strisce di colore nero su pavimenti o cartoncino bianco, aventi incroci perpendicolari)
