Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
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
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.