La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Pic16f84 Assembly I/O.

Presentazioni simili


Presentazione sul tema: "Pic16f84 Assembly I/O."— Transcript della presentazione:

1 Pic16f84 Assembly I/O

2 Assembly Il linguaggio Assembly è classificato come linguaggio a basso livello Un file in Assembly ha estensione .asm Una volta processato il programma scritto in assembly, viene generato un file in esadecimale con estensione .hex Il file esadecimale viene inserito nel microcontrollore Un programma in assembly, si divide in: dichiarazioni, commenti e corpo del programma Si vuole scrivere un programma per fare accendere dei led

3 Accensione di un led Per fare accendere un led tramite un microcontrollore, bisogna: Dichiarare di output il pin dove il led è collegato Porre a livello logico alto il pin dove è collegato il led Tutti questi dati vengono posti all’interno dei registri: Il registro tris per il verso dei dati (Input/Output) Il registro port per il livello logico

4 Memoria Registri Bank0 Bank1 Port a 0x05 Tris a 0x85 Port b 0x06
Tris b 0x86 Port a e port b definiscono il livello logico dei singoli pin Tris a e tris b definiscono se i pin sono di input o di output

5 Esempio Vogliamo accendere tre led due sulla porta a e uno sulla porta b; le due porte devono essere dichiarate di OUTPUT Tris a, indirizzo 0x85 Tris b, indirizzo 0x86

6 Esempio Supponiamo che i led devono essere accesi sui pi RA0 e RA2 e RB5 Port a Port b 1 1

7 Programma Movlw 0x00 Movwf 0x85 Movlw 0x05 PC 0 W 00000000 PC 1
Tris a PC 2 Port a PC=Program Counter – incrementa ogni volta che viene eseguita una riga programma

8 Bank0 e Bank1 Gli indirizzi di bank1 possono creare dei problemi nel codice assembly perché possono portare a superare i 14 bit della riga programma Per evitare ciò, si possono indirizzare i registri in base alla posizione di ria distinguendo solo i banchi Es, il registro di indirizzo 0x86 del bank1, si trova alla posizione 0x06; il suo indirizzo potrebbe essere 0x06 bank1

9 Bank0 e bank TRISB=0x86 Selezionando il bank1 TRISB=0x06 bank1

10 Bank0 e bank1 Per selezionare bank0 o bank1, bisogna lavorare sul bit 0x05 o RP0 del registro 0x03 o registro STATUS: RP0=0 si seleziona bank0 RP0=1 si seleziona bank1 In generale, per porre un bit a 1, si scrive il seguente codice: bsf indirizzo registro, indirizzo del bit Per porre un bit a zero, si scrive: bcf indirizzo registro, indirizzo del bit bsf= bit set file bcf= bit clear file Nel nostro caso: bsf 0x05, 0x03 ; si seleziona il bank1 bcf 0x05, 0x03 ; si seleziona il bank0

11 Programma per far accendere un led sul pin B0
__config 0x3D18 ORG 0x00 ;il programma parte dalla prima riga della memoria programma bsf 0x03, 0x05 ; viene posto a 1 il bit 5 dell'indirizzo 3 bank0, viene cioè ;selezionato il bank1 movlw 0x05 ;l'accumulatore acuisisce valore 5 movf 0x06 ; si passa il valore dell'accumulatore al registro 0x06 bank1=0x86 bcf 0x03, 0x05 ;viene posto a 0 il bit 5 dell'indirizzo 3 bank0,viene cioè selezionato ;il bank0 movlw 0x01 ; si pone il valore 0x01 nell'accumulatore movwf 0x06 ; si passa il valore dell'accumulatore in 0x06 del bank0 END

12 MplabX

13 New project

14 Selezionare: project embedded

15 Standalone project

16 Midrange MCU

17 Pic family

18 Simulator

19 Mpasm

20 Nome del progetto

21 Creazione del source file

22 New file

23 Assembler

24 Nome file

25

26 Scrittura programma

27 Compilazione programma

28 Visualizzazione dei file register e memoria flash

29 Simulazione: dopo l’avvio del debug, selezionare i breakpoint

30 Simulazione: per visualizzare lo stato dell’accumulatore, il bank e pc: tasto destro del mouse e run to Cursor Vengono visualizzati I registri RP0, l’accumulatore e il PC


Scaricare ppt "Pic16f84 Assembly I/O."

Presentazioni simili


Annunci Google