Il software dei microcontroller della famiglia 8051 Note, suggerimenti, esempi, mappe e locazioni sulla programmazione e simulazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Il software dei microcontroller della famiglia 8051 Note, suggerimenti, esempi, mappe e locazioni sulla programmazione e simulazione"

Transcript

1 Il software dei microcontroller della famiglia 8051 Note, suggerimenti, esempi, mappe e locazioni sulla programmazione e simulazione Assegnazioni pag. 2 Routines 3 Interruzioni 3 Pilotaggio del display a cristalli liquidi (LCD) 4 Conversione binario-bcd 5 Label (etichette) 6 Loop infinito 6 Interfacciamento di una tastiera esadecimale 6 Acquisizione dati tramite A/D converter 6 Fine programma 8 Note Modi di indirizzamento 9 Istruzioni di trasferimento dati 10 Istruzioni artimetiche 11 Istruzioni di manipolazione di bit 11 Istruzioni logiche 12 Istruzioni di rotazione 12 Istruzioni di controllo 13 Nomi assembler e relativi indirizzi in RAM 14 Codice delle istruzioni 15 Tabella delle locazioni Esempi di uso dei timer 17 precisione delle formule per il calcolo dei tempi 17 Routines di temporizzazione 17 temporizzazioni molto brevi (fino a 256 cicli macchina) 17 la temporizzazione viene richiesta una sola volta 17 la temporizzazione prosegue indefinitamente, a intervalli regolari 18 temporizzazioni fino a 65 mila cicli macchina 18 temporizzazioni per tempi fino a circa 13 secondi 19 temporizzazioni per tempi lunghi Note sull istruzione CJNE Software di simulazione 22 Assemblatore CYS direttive 25 Simulatore SIM Modifiche dei dati durante l esecuzione del programma 26 Finestra del codice 26 Finestra della memoria 26 Finestra del flusso 28 Formattazione del flusso 28 Simulazione degli interrupt esterni 29 G. Renolfi P. Vittor pag. 1

2 Note e suggerimenti per la stesura del programma per il microcontroller Il programma può essere scritto con un comune editor di testo e deve essere salvato in formato DOS ASCII, ovvero senza alcuna formattazione. Assegnazioni E consigliabile effettuare tutte le necessarie assegnazioni iniziali, utili sia per chi legge il programma, sia per facilitare il lavoro degli stessi programmatori nel modificare il programma in un secondo tempo. Ad esempio, se leggo: setb P2.3" per sapere quale funzione svolge tale pin e dove è collegato devo andare a vedere lo schema elettrico ogni volta che incontro tale indicazione. Se invece assegno a tale pin un etichetta che ne indica la funzione o la destinazione, risparmio sicuramente tempo. Ad esempio, l etichetta rs_lcd mi ricorda la funzione svolta dal pin Register Select del display a cristalli liquidi, oppure eoc_adc mi ricorda che si tratta del pin di End Of Conversion dell A/D converter, e così via. Queste assegnazioni possono essere fatte con il comando bit dell assemblatore; ad esempio: rs_lcd bit P1.2 relè_motore bit P2.7 flag_1 bit 00 (primo bit dell indirizzo 20H - area indirizzabile a bit) Sempre allo scopo di facilitare la memorizzazione della funzione svolta da particolari locazioni di memoria, dei Port oppure di determinati valori si può usare il comando equ (o anche =): parametri_iniz equ 24H (oppure: = 24H) costante_1 equ 55 (oppure: = 55) lcd_port equ P0 (oppure: = P0) tasto_1 equ b (oppure = b) valore_1 = low(7d0h) valore_2 = high(7d0h) increm_1 = valore_1 + 1 somma_1 = valore_1 + valore_ diff_1 = valore_2 Altre assegnazioni possono essere fatte tramite valori; ad esempio: variabile_1 byte 10H Si consiglia di inserire (fra le righe di programma oppure in coda alle istruzioni) opportuni commenti, che chiariscano (anche allo stesso programmatore!) la funzione di ciò che si sta facendo; tali commenti debbono essere preceduti da un punto e virgola. Esempio: ;routine di pilotaggio del motore mov P0, A setb P1.2 ;accendo il LED di segnalazione Fatte le assegnazioni iniziali, il programma va iniziato con: ;%S ;(ovvero Start) il compilatore inizia ad assemblare da questo punto G. Renolfi P. Vittor pag. 2

3 Routines E consigliabile inserire le varie routines all inizio del programma vero e proprio, e ciò sia per ritrovarle rapidamente, sia per evitare l errore di eseguirle comunque, anche se non richieste. Altrimenti bisognerebbe ricordarsi di far eseguire del salti prima di ciascuna di esse. E ovvio che, se si scrivono all inizio, il listato deve iniziare con un salto al programma principale. La struttura generale del programma diviene quindi la seguente: (assegnazioni iniziali) ;%S sjmp inizio label: (titolo delle varie routines) [routines varie] inizio: (programma principale) ;%E End Interruzioni Poiché al sopraggiungere di un interruzione il micro salta alla relativa locazione di risposta ed esegue le istruzioni che vi ci trova, è necessario scrivere in questi indirizzi le istruzioni desiderate. Come già detto per le routines, proprio allo scopo di non eseguire comunque queste istruzioni di risposta all interrupt durante la normale lettura del programma, è necessario scriverle all inizio del listato, dopo un salto al programma principale. La routine di risposta all interrupt deve essere preceduta dall indicazione della relativa locazione, con il comando ORG (Origin); ad esempio, per il primo interrupt (INT0): org 03H seguita dalle relative istruzioni (per un massimo di 8 byte, altrimenti si richiamano altre routine) e conclusa da: reti ;ritorno dall interruzione La struttura del programma diviene quindi la seguente: (assegnazioni iniziali) ;%S sjmp inizio org 03H (routine di risposta INT0) reti label: (routines di servizio) inizio: (programma principale) Se la risposta all interrupt richiede operazioni più complesse, occorre richiamare altre routines o effettuare salti ad altre parti del programma, ricordandosi di concluderli con RETI (e bypassarli con dei salti!). G. Renolfi P. Vittor pag. 3

4 Pilotaggio del display a cristalli liquidi (LCD) Prima di inviare i caratteri al display, occorre inviare innanzitutto le necessarie istruzioni, utili al fine di impostare le varie modalità operative dell LCD. Per inviare le istruzioni all LCD occorre mandare a 0 il pin RS (Register Select), e quindi inviare il byte di configurazione. Ricordarsi che l LCD leggere il byte ricevuto solo in corrispondenza di una transizione 1 -> 0 del pin di Enable. Per prima cosa occorre indicare all LCD che inviamo istruzioni e dati su 8 bit, per cui la prima istruzione sarà necessariamente quella denominata Function Set (vedi foglio tecnico dell LCD). Come avvisa il data-sheet, è consigliabile inviare due volte la stringa suddetta. In secondo luogo è necessario inviare all LCD il comando Display On/Off, seguito poi da Clear e Home, rispettando i dovuti ritardi. Per scrivere un singolo carattere sull LCD si può fare così: setb rs_lcd ;(solo per il primo carattere inviato) setb en_lcd mov p0,# b ;carattere da visualizzare (es. lettera A) (può anche essere scritta: mov p0,# A ) clr en_lcd ;lettura del dato da parte dell LCD lcall rit_40 ;ritardo di 40 µsec (tempo di esecuzione dell LCD) Per scrivere invece una serie di caratteri è possibile operare in due modi: il primo è quello di inviare i dati carattere per carattere, uno alla volta; il secondo modo (molto più sbrigativo e compatto) è invece quello di definire l intera stringa e poi di leggerne il contenuto con un ciclo che utilizza l istruzione MOVC per l indirizzamento delle tabelle nell area programmi. La sequenza di comandi può essere strutturata così: mess_1: db stringa 1', 00H ; stringa 1" è il contenuto del messaggio da visualizzare ; db per il compilatore significa Define Byte ;lo 00" finale serve per indicare la fine della stringa..... scrittura: ripeti: fine: mov dptr,#mess_1 clr A movc A,@A+dptr jz fine lcall display inc dptr sjmp ripeti ret ;copia in A il contenuto della memoria programmi con ;indirizzo A+DPTR ;esce da questa routine quando trova lo 0" di fine stringa ;routine di invio del singolo carattere all LCD (vedi sotto) ;legge il carattere successivo della stringa display: setb rs_lcd ;modalità dati per l LCD setb en_lcd mov P0,A ;invio i dati dall accumulatore al display clr en_lcd lcall rit_40 ret Tutte la sequenza di istruzioni ora vista può essere messa nella sezione routines, mentre nel programma principale è sufficiente avviare la scrittura dei singoli messaggi; ad esempio: scrivi_1: mov dptr,#mess_1 lcall ripeti ;routine di scansione di DPTR e poi di invio dati all LCD ricordarsi di pulire il display prima di inviare una nuova scritta, altrimenti verrà scritta in coda alla precedente (il controller dell LCD incrementa automaticamente la locazione di scrittura). Per scrivere un certo messaggio o un certo valore in una posizione diversa dalla coda della scritta precedente o dal primo carattere dell LCD (nel caso di utilizzo dell istruzione di Clear Display) è necessario utilizzare l istruzione 1AAAAAAA, dove al posto delle A va scritta la locazione (ovvero l indirizzo) della posizione desiderata sul display, che va da 00 a 27H per la prima riga (40 caratteri) e G. Renolfi P. Vittor pag. 4

5 da 40H a 67H (da 64 a 104 decimali) per la seconda riga. Il valore binario corrispondente alla posizione desiderata va scritto al posto delle A. Esempio: se si vuole scrivere un certo valore numerico nella quinta posizione della seconda riga (locazione 45H), è necessario utilizzare l istruzione , dove i bit che seguono il primo 1 sono l equivalente binario di 45H ovvero di 68 decimale. Conversione binario-bcd Poiché ad ogni display si deve inviare solo una cifra alla volta, si pone il problema di rappresentare valori numerici a più di una cifra, per i quali occorre quindi convertire innanzitutto i valori numerici da binario a BCD, al fine di ricavare le singole cifre da visualizzare (centinaia, decine, unità, decimi, ecc.). L esempio indicato dalla routine seguente presuppone che il dato da convertire si trovi nell accumulatore: assegnazioni: cent: ds 01 ;il comando Define Storage è dell assemblatore dec: ds 01 uni: ds 01 bin_bcd: mov B, #100 ;il registro B viene usato come appoggio per l acc. div AB mov cent,a mov a,#10 xch A,B div AB mov dec,a mov A,B mov uni,a ret Per convertire i valori numerici binari nei corrispondenti ASCII è possibile usare la seguente routine, che presuppone che il dato da convertire sia presente nella parte bassa dell accumulatore. Il corrispondente valore ASCII viene restituito nell accumulatore stesso. hexascii: numero: ambo: end: anl A,# b ;maschera i primi 4 bit cjne A,#09,ambo orl A,# b ;add A,#30h, ovvero converte in ASCII sjmp end jc numero add A,#37h ret Label A proposito di label (etichette), ricordarsi che il compilatore segnala errore se le label iniziano con un numero, oppure se hanno spazi o utilizzano segni quali *. + - ecc. Ricordarsi di usare una label una volta sola. G. Renolfi P. Vittor pag. 5

6 Loop infinito Per bloccare l esecuzione del programma in un determinato punto (utile ad esempio per avere la possibilità di verificare con il tester la combinazione dei livelli logici sui pin di un Port), è possibile scrivere ad esempio: loop: sjmp loop Interfacciamento di una tastiera esadecimale La tastiera è connessa al micro tramite 4 linee (mezzo Port) più una linea di Data Available gestita ad esempio come interruzione da INT0. Occorre abilitare INT0 con SETB EA e SETB EX0, dopodiché occorre effettuare il riconoscimento dei tasti: org 03H lcall tastiera reti ;locazione di recupero dell INT0 ;routine di risposta key_tab: db ABCDEF ;creo la tabella dei tasti tastiera: mov A,P2 ;leggo il dato inviato dal decoder di tastiera anl A,# b ;maschero i bit che non arrivano dalla tastiera mov dptr,#key_tab ;carico nel DPTR i 16 valori della tabella key_tab movc A,@A+dptr ;muovo in A il valore relativo al tasto premuto cjne A,# 1,tasto_2 ;confronto i codici ricevuti ljmp esegui_1 ;routine di risposta al tasto 1 tasto_2: cjne A,# 2, tasto_3 ljmp esegui_2 ;routine di risposta al tasto dopo tutta la scansione dei tasti... ret ;se nella routine posta in org 03h si usa un ; ljmp tastiera è (ovviamente!) necessario ;sostituire questo ret con reti Acquisizione dati tramite A/D converter fatte le necessarie assegnazioni, conviene indicare sull LCD il significato di ciò che poi verrà scritto; ad esempio, se stiamo per indicare la temperatura, possiamo scrivere: Temp =, sapendo che i dati che invieremo successivamente verranno automaticamente scritti di seguito. setb soc ;avvio conversione clr soc ;predispone per la successiva conversione mov port_adc,#0ffh ;predispone il port dell 8951 in lettura ritardo:... ;ritardo per attendere il resettaggio di EOC polling: jnb eoc,polling ;polling per vedere se l ADC ha finito ;si presuppone oe_adc sempre attivo mov A,port_adc ;leggo il dato convertito e lo pongo in A mov B,#51 ;il fondo scala letto (FFH) va rapportato a 50 C, ;ovvero: 256:51 = 50 C (arrotondato) div AB ;divido per 51 il valore ottenuto mov 21h,A ;salvo le decine di C nella locazione di Ram 21H mov A,#5 ;le unità vengono rapportate a 5 C xch A,B ;porto il resto (unità di gradi) da B ad A div AB ;divido per 5 le unità di gradi mov 22h,A ;salvo le unità di C nella locazione 22H mov A,#2 ;i decimi di C vengono rapportati a 0.5 (=*2) G. Renolfi P. Vittor pag. 6

7 xch A,B mul AB mov 23h,A mov A,21h anl A,# b add A,#30h lcall display mov A,22h anl A,# b add A,#30H lcall display lcall punto_dec mov A,23h anl A,# b add A,#30H lcall display ;porto il resto (decimi di C) da B ad A ;moltiplico per 2 il resto per ottenere i decimi ;salvo i decimi di C in 23H ;sposto le decine di C nell accumulatore ;maschero i primi 4 bit dell acc. ;sommo 30H per convertire in ASCII ;analogo a scrivere -> ORL A,# B ;chiamo la routine di invio delle decine all LCD ;sposto le unità di C nell acc. ;maschero i primi 4 bit ;converto in ASCII (oppure -> orl A,# b) ;invio dati all LCD ;sposto i decimi di C nell acc. ;maschero i primi 4 bit ;converto in ASCII per l LCD ;invio dati all LCD punto_dec: mov p2,# b ;routine che scrive il punto decimale sull LCD setb en_lcd ;la riga precedente si può anche scrivere mov a,#. clr en_lcd lcall rit_40 Per non doversi ricordare che le locazioni di Ram 21h, 22h e 23h contengono rispettivamente le decine, le unità e i decimi di grado, è possibile utilizzare una particolare istruzione dell assembler, ovvero DS (Define Storage) che riserva (a partire da una posizione specificata) il numero di byte desiderati per l impiego scelto; ad esempio: org 0008 ;a partire dalla locazione di Ram 08 adc_decine: ds 01 ;1 byte riservato per le decine convertite adc_unità: ds 01 ;1 byte per le unità convertite adc_decimi: ds 01 ;1 byte per i decimi successivamente, i salvataggi possono essere scritti in maniera più comprensibile: mov adc_decine,a anziché mov 21h,A oppure: mov A,adc_unità anziché mov A,21h Tabelle di ricerca E possibile sfruttare la modalità di indirizzamento indicizzato tramite l istruzione MOVC al fine di gestire delle tabelle all interno della memoria programmi. Vediamo due esempi: MOVC A,@A+DPTR MOVC A,@A+PC copia in A il dato puntato da (A+DPTR) copia in Ail dato puntato da (A+PC) I registri DPTR oppure PC fungono da puntatori alla base (inizio) della tabella nell area programmi, mentre l accumulatore funge da puntatore all interno della tabella, che può quindi accogliere fino ad un massimo di 256 elementi (dati). Gli elementi contenuti nella tabella vengono così numerati da 1 a 255, mentre il numero 0 non può essere utilizzato poiché coincide con la posizione occupata dall istruzione RET (indirizzo contenuto nel PC durante l esecuzione di MOVC) e quindi il valore restituito dalla lettura della tabella sarebbe nient altro che il codice operativo dell istruzione RET. Un esempio di utilizzo di questa tecnica è fornito dal sottoprogramma riportato a proposito della gestione del display LCD. G. Renolfi P. Vittor pag. 7

8 Fine programma Il programma va terminato con: ;%E end ;fine della compilazione ;fine programma Note Si ricordi sempre che: P2.0 è l LSB (bit meno significativo), e P2.7 è l MSB (bit più significativo) G. Renolfi P. Vittor pag. 8

9 Modi di indirizzamento Indirizzamento IMMEDIATO: in alcune istruzioni il byte che segue il codice operativo rappresenta direttamente il valore di una costante numerica, per cui il dato è contenuto nel codice operativo stesso. Esempio: MOV A,#30H (carica nell accumulatore il valore esadecimale 30). oppure: ADD A,#30H (il valore 30 esadecimale viene sommato all accumulatore). Indirizzamento DIRETTO: l operando viene fornito mediante l indirizzo di una locazione di memoria. Questa modalità consente una maggior flessibilità rispetto alla precedente, in quanto il valore da caricare è contenuto in un indirizzo di Ram e quindi può essere facilmente modificato sia via software sia da una periferica esterna. Possono essere indirizzati direttamente solo i primi 128 byte della RAM e i registri SFR. Esempio: MOV A,30H (il contenuto della locazione 30H viene copiato nell accumulatore) oppure: ADD A,30H (il contenuto della locazione 30H viene sommato all accumulatore). Indirizzamento INDIRETTO: nell istruzione viene specificato un registro che contiene l indirizzo dell operando (registro puntatore). Tutta la RAM dati (esterna o interna, anche i 128 byte superiori il cui indirizzo è sovrapposto all area SFR) può essere indirizzata in questa modalità. I registri puntatori possono essere R0 o R1 oppure lo Stack Pointer (per indirizzi a 8 bit), mentre per gli indirizzi a 16 bit bisogna ricorrere al registro DPTR. La locazione puntata con questa modalità può essere relativa esclusivamente all area di Ram dati, e mai ad un registro SFR. Esempio: MOV A,@R0 (copia nell accumulatore il dato che si trova nell indirizzo di RAM specificato nel registro R0). Indirizzamento a registro: alcune istruzioni possono accedere ai banchi di registri disponibili nella parte bassa della RAM. Questo metodo permette di eliminare il byte del campo indirizzo. Esempio: ADD A,R7 (il contenuto dell accumulatore viene sommato al contenuto del registro R7). Indirizzamento INDICIZZATO: tramite un registro a 16 bit (DPTR o il Program Counter) si punta all inizio di una tabella, e l accumulatore viene usato come indice all interno della tabella. L indirizzo effettivo viene ottenuto sommando al DPTR o al PC il contenuto dell accumulatore. E possibile usare questo metodo solo nella memoria programmi. Un altro tipo di indirizzamento indicizzato è rappresentato dal salto con selezione multipla, dove l indirizzo di salto viene calcolato sommando alla base il contenuto dell accumulatore. Esempio: MOVC A, A + DPTR (mette in A il contenuto della locazione di memoria di programma ricavata dalla somma di A + il contenuto del DPTR). Indirizzamento implicito: alcune istruzioni sono specifiche di alcuni registri per cui nel codice operativo è implicitamente specificato di quale registro si tratta. G. Renolfi P. Vittor pag. 9

10 Istruzioni di trasferimento dati Codice mnemonico n byte descrizione cicli MOV A,Rn 1 Copia in A il contenuto. del registro Rn 1 MOV A,direct 2 Copia in A il contenuto. della locazione direct 1 MOV A,@Ri 1 Copia in A il contenuto della locazione puntata da Ri 1 MOV A,#dato 2 Copia in A il dato 1 MOV Rn,A 1 Copia nel registro Rn il contenuto di A 1 MOV Rn,direct 2 Copia nel registro Rn il contenuto della locaz. direct 2 MOV Rn,#dato 2 Copia nel registro Rn il dato 1 MOV direct,a 2 Copia nella locazione direct il contenuto di A 1 MOV direct,rn 2 Copia nella locaz. direct il contenuto del registro Rn 2 MOV direct,@ri 2 Copia nella locazione direct il contenuto. della locazione puntata da Ri 2 MOV direct,#dato 3 Copia nella locazione direct il dato 2 MOV DPTR,#dat16 3 Copia in DPTR un dato a 16 bit 2 MOV C,bit 2 Copia nel carry il bit di indirizzo bit 1 MOV bit,c 2 Copia il carry nell'indirizzo bit 1 MOV sorg,dest 3 Copia nella locaz. dest il contenuto della locaz. sorg 2 1 Copia nella locazione puntata da Ri il contenuto di A 1 2 Copia nella locazione puntata da Ri il contenuto. della locazione direct 2 2 Copia nella locazione puntata da Ri il dato 1 MOVC A,@A+DPTR 1 Copia in A il contenuto. della memoria programma di indirizzo DPTR + A 2 MOVC A,@A+PC 1 Copia in A il contenuto. della memoria programma di indirizzo PC + A +1 2 MOVX A,@Ri 1 Copia in A il contenuto. della memoria dati esterna puntata da Ri 2 MOVX A,@DPTR 1 Copia in A il contenuto. della memoria dati esterna puntata da DPTR 2 1 Copia nella locazione di memoria dati esterna puntata da Ri il contenuto. di A 2 1 Copia nella locaz. di memoria dati esterna puntata da DPTR il contenuto. di A 2 e aumentalo Stack di una unità PUSH direct 2 Copia nella locazione puntata da SP il contenuto. della locazione direct 2 POP direct 2 Copia nella locazione direct il contenuto della locazione puntata da SP e 2 diminuisce lo Stack di una unità XCH A,direct 2 Scambia il conten. di A con quello della locaz. direct 1 XCH A,Rn 1 Scambia il contenuto di A con quello del reg. Rn 1 XCH A,@Ri 1 Scambia il contenuto. di A con quello della locazione puntata da Ri 1 XCHD A,@Ri 1 Scambia il nibble meno signif. di A con il più signif. della locaz. puntata da Ri 1 osservazione: simboli usati: Rn Ri direct dato dat16 indirizzo11 indirizzo16 rel bit l istruzione MOV Rn,Rm viene accettata dall assembler come se fosse MOV Rn,direct con direct=m, per cui l istruzione apparentemente funziona se si lavora nel banco 0, mentre indirizza in modo errato se si lavora negli altri banchi. uno dei registri di uso generale, da R0 a R7 uno dei registri indice, R0 o R1 un byte di indirizzo della memoria dati interna un dato di un byte un dato di due byte un indirizzo di 11 bit (viene indicato con un etichetta) un indirizzo di 16 bit (viene indicato con un etichetta) un byte che codifica un numero con segno in complemento a 2, quindi compreso fra 128 e +127 un byte che indica un indirizzo dei bit indirizzabili individualmente G. Renolfi P. Vittor pag. 10

11 Istruzioni aritmetiche Codice mnemonico byte Descrizione cicli AC CY OV ADD A,Rn 1 Somma ad A il contenuto del registro Rn 1 b b b ADD A,direct 2 Somma ad A il contenuto della locazione direct 1 b b b ADD A,@Ri 1 Somma ad A il contenuto della locazione puntata da Ri 1 b b b ADD A,#dato 2 Somma ad A il dato (A <- A + dato) 1 b b b ADDC A,Rn 1 Somma ad A il contenuto del registro Rn e il CY 1 b b b ADDC A,direct 2 Somma ad A il contenuto della locazione direct e il CY 1 b b b ADDC A,@Ri 1 Somma ad A il contenuto della locazione puntata da Ri e il CY 1 b b b ADDC A,#dato 2 Somma ad A il dato e il CY (A <- A + dato + C) 1 b b b SUBB A,Rn 1 Sottrae da A il contenuto del registro Rn e il CY 1 b b b SUBB A,direct 2 Sottrae da A il contenuto della locazione direct e il CY 1 b b b SUBB A,@Ri 1 Sottrae da A il contenuto della locazione puntata da Ri e il CY 1 b b b SUBB A,#dato 2 Sottrae da A il dato e il CY 1 b b b INC A 1 Aumenta di 1 il contenuto di A INC Rn 1 Aumenta di 1 il contenuto del registro Rn INC direct 2 Aumenta di 1 il contenuto della locazione direct Aumenta di 1 il contenuto della locaz. puntata da Ri INC DPTR 1 Aumenta di 1 il contenuto del registro DPTR DEC A 1 Diminuisce di 1 il contenuto di A DEC Rn 1 Diminuisce di 1 il contenuto del registro Rn DEC direct 2 Diminuisce di 1 il contenuto della locazione direct Diminuisce di 1 il contenuto della locaz. puntata da Ri MUL AB 1 Moltiplica il contenuto di A per quello di B; la parte bassa del risultato va 4-0 b in A e la parte alta va in B DIV AB 1 Divide il contenuto di A per B; il quoziente va in A e il resto in B DA A 1 Realizza l'aggiustamento decimale del contenuto di A. Utilizzando la rappresentazione in BCD le istruzioni ADD e ADDC debbono essere seguite da DA: ciò assicura che il risultato sia ancora in BCD Istruzioni di manipolazione di bit Codice mnemonico byte Descrizione cicli AC CY OV CLR C 1 azzera il flag CY 1 0 CLR bit 2 azzera il bit dell indirizzo [bit] 1 SETB C 1 pone a 1 il flag CY 1 1 SETB bit 2 pone a 1 il bit dell indirizzo [bit] 1 CPL C 1 inverte il flag CY 1 b CPL bit 2 inverte il bit dell indirizzo [bit] 1 ANL C,bit 2 AND logico fra CY e il bit dell indirizzo [bit] 2 b ANL C,/bit 2 AND logico fra CY e la negazione del bit dell indirizzo [bit] 2 b ORL C,bit 2 OR logico fra CY e il bit dell indirizzo [bit] 2 b ORL C,/bit 2 OR logico fra CY e la negazione del bit dell indirizzo [bit] 2 b G. Renolfi P. Vittor pag. 11

12 Istruzioni di logiche Codice mnemonico byte Descrizione cicli AC CY OV ANL A,Rn 1 AND logico tra A e il contenuto del registro Rn ANL A,direct 2 AND logico tra A e il contenuto della locazione direct ANL A,@Ri 1 AND logico tra A e il contenuto della locazione puntata da Ri ANL A,#dato 2 AND logico tra A e il dato ANL direct,a 2 AND logico tra il contenuto della locazione direct e dell'acc; il risultato rimane nella locazione direct ANL direct,#dato 3 AND logico tra il contenuto della locazione direct ed il dato; il risultato rimane nella locazione direct ORL A,Rn 1 OR logico tra A e il contenuto del registro Rn ORL A,direct 2 OR logico tra A e il contenuto della locazione direct ORL A,@Ri 1 OR logico tra A e il contenuto della locazione puntata da Ri ORL A,#dato 2 OR logico tra A e il dato ORL direct,a 2 OR logico tra il contenuto della locazione direct e dell'acc; il risultato rimane nella locazione direct ORL direct,#dato 3 OR logico tra il contenuto della locazione direct ed il dato; il risultato rimane nella locazione direct XRL A,Rn 1 EX-OR logico tra A e il contenuto del registro Rn 1 XRL A,direct 2 EX-OR logico tra A e il contenuto della locazione direct 1 XRL A,@Ri 1 EX-OR logico tra A e il contenuto della locazione puntata da Ri 1 XRL A,#dato 2 EX-OR logico tra A e il dato 1 XRL direct,a 2 EX-OR logico tra il contenuto della locazione direct e A, il risultato 1 rimane nella locazione direct XRL direct,#dato 3 EX-OR logico tra il contenuto della locazione direct e il dato, il risultato 2 rimane nella locazione direct CLR A 1 Azzera tutti i bit di A 1 CPL A 1 Complementa a 1 (ovvero inverte) tutti i bit di A 1 Istruzioni di rotazione Codice mnemonico byte Descrizione cicli RL A 1 ruota di un posto verso sinistra i bit di A 1 RLC A 1 ruota di un posto verso sinistra i bit di A con riporto al CY 1 RR A 1 Ruota di un posto verso destra i bit di A 1 RRC A 1 Ruota di un posto verso destra i bit di A con riporto al CY 1 SWAP A 1 scambia i due nibble dell accumulatore 1 G. Renolfi P. Vittor pag. 12

13 Istruzioni di controllo Codice mnemonico byte Descrizione cicli ACALL indirizzo11 2 manda in esecuzione una routine entro un segmento da 2K (solo in avanti) 2 LCALL indirizzo16 3 manda in esecuzione una routine (anche fuori segmento, fino a ±32K) 2 RET 1 termina l esecuzione di una routine 2 RETI 1 termina l esecuzione della routine di risposta ad un interruzione 2 AJMP indirizzo11 2 salta all indirizzo specificato entro un segmento da 2K (solo in avanti) 2 LJMP indirizzo16 3 salta all indirizzo specificato (anche fuori segmento, fino a ±32K) 2 SJMP rel 2 salta a [rel] posizioni successive del Program Counter (entro 128 e +127) 2 1 salta alla locazione di PC puntata da A + il contenuto del DPTR 2 JZ rel 2 salta alla locazione [rel] se il contenuto di A è uguale a zero 2 JNZ rel 2 salta alla locazione [rel] se il contenuto di A è diverso da zero 2 JC rel 2 salta alla locazione [rel] se il bit di CY vale 1 2 JNC rel 2 salta alla locazione [rel] se il bit di CY vale 0 2 JB bit,rel 3 salta alla locazione [rel] se il bit contenuto nell indirizzo [bit] vale 1 2 JNB bit,rel 3 salta alla locazione [rel] se il bit contenuto nell indirizzo [bit] vale 0 2 JBC bit,rel 3 salta alla locaz. [rel] se il bit contenuto nell indirizzo [bit] vale 1, e poi lo azzera 2 CJNE A,direct,rel 3 salta alla locaz. [rel] se il contenuto di A è diverso da quello di [direct]; se A è 2 minore di [direct] pone CY=1, altrimenti CY=0 CJNE A,#dato,rel 3 salta alla locaz. [rel] se il contenuto di A è diverso da quello di #dato; se A è 2 minore di #dato pone CY=1, altrimenti CY=0 CJNE Rn,#dato,rel 3 salta alla locaz. [rel] se il contenuto di A è diverso da quello di Rn; se A è minore 2 di Rn pone CY=1, altrimenti CY=0 3 salta alla locaz. [rel] se il contenuto di A è diverso da quello della locazione 2 puntata da Ri; se A è minore della locaz. pone CY=1, altrimenti CY=0 DJNZ Rn,rel 2 Diminuisce di 1 il contenuto di Rn; se Rn non diventa 0, salta a [rel] 2 DJNZ direct,rel 3 Diminuisce di 1 il contenuto della locazione [direct]; se il contenuto non diventa 0, 2 salta a [rel] NOP 1 Nessuna operazione (ritardo di un ciclo macchina) 1 osservazioni: 1 - Le istruzioni ACALL e AJMP possono causare errori se sono scritte in una delle locazioni oppure (valori binari) poiché in tal caso durante la fase di fetch il bit più significativo diventa 1 e l indirizzo a 11 bit viene aggiunto ad un bit errato. 2 - Se il salto richiesto dal valore [rel] supera 127 locazioni in avanti o 128 indietro, l assembler genera un messaggio di errore; infatti REL viene tradotto con un numero di un solo byte. Se sono richiesti salti più ampi occorre spezzarli in più salti o trovare un criterio alternativo. 3 A proposito dell istruzione CJNE primo,secondo,rel si osservi che: se primo = secondo non viene effettuato il salto, e CY viene posto a 0 se primo > secondo il salto viene effettuato, e CY viene posto a 0 se primo < secondo il salto viene effettuato, e CY viene posto a 1 G. Renolfi P. Vittor pag. 13

14 Nomi assembler e relativi indirizzi in RAM BYTE B I T B F0 B.7 B.6 B.5 B.4 B.3 B.2 B.1 B.0 F7 F6 F5 F4 F3 F2 F1 F0 ACC E0 ACC.7 ACC.6 ACC.5 ACC.4 ACC.3 ACC.2 ACC.1 ACC.0 E7 E6 E5 E4 E3 E2 E1 E0 PSW D0 C AC F0 RS1 RS0 OV _ P D7 D6 D5 D4 D3 D2 D0 IP B8 _ PS PT1 PX1 PT0 PX0 BC BB BA B9 B8 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 P3 B0 RD WR T1 T0 INT1 INT0 TXD RXD B7 B6 B5 B4 B3 B2 B1 B0 IE A8 EA ES ET1 EX1 ET0 EX0 AF AC AB AA A9 A8 P2 A0 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0 SBUF 99 Indirizzabile solo in blocco SCON 98 SM0 SM1 SM2 REN TB8 RB8 TI RI 9F 9E 9D 9C 9B 9A P1 90 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P TH1 8D Indirizzabile solo in blocco TH0 8C Indirizzabile solo in blocco TL1 8B Indirizzabile solo in blocco TL0 8A Indirizzabile solo in blocco TMOD 89 GATE M1 M0 GATE M1 M0 TCON 88 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 8F 8E 8D 8C 8B 8A PCON 87 SMOD _ GF1 GF0 PD IDL DPTH 83 Indirizzabile solo in blocco DPTL 82 Indirizzabile solo in blocco SP 81 Indirizzabile solo in blocco P0 80 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P F-00 Indirizzabile comunque a livello di byte RAM UTENTE 2F-20 Indirizzabile anche a livello di bit (indirizzi da 127 a 0) 1F-18 Registri di uso generale, da R7 a R0 (banco 3) Registri di uso generale, da R7 a R0 (banco 2) 0F-08 Registri di uso generale, da R7 a R0 (banco 1) Registri di uso generale, da R7 a R0 (banco 0) solo le scritte in grassetto sono riferite a nomi assembler; gli indirizzi sono in esadecimale G. Renolfi P. Vittor pag. 14

15 codice codice codice codice codice codice mnemonico codice codice mnemonico codice codice mnemonico oggetto mnemonico oggetto mnemonico oggetto oggetto oggetto 00 NOP 33 RLC A 67 XRL A,@R1 9A SUBB A,R2 CD XCH A,R AJMP 0011H ADDC A,#dato 68 XRL A,R0 9B SUBB A,R3 CE XCH A,R6 02 AD 16 LJMP addr16 36 ADDC A,@R0 69 XRL A,R1 9C SUBB A,R4 CF XCH A,R7 03 RR A 37 ADDC A,@R1 6A XRL A,R2 9D SUBB A,R5 D0 56 POP direct 04 INC A 38 ADDC A,R0 6B XRL A,R3 9E SUBB A,R6 D1 11 ACALL 0611H INC direct 39 ADDC A,R1 6C XRL A,R4 9F SUBB A,R7 D2 1B SETB bit 06 3A ADDC A,R2 6D XRL A,R5 A0 1B ORL C,/bit D3 SETB C 07 3B ADDC A,R3 6E XRL A,R6 A1 11 AJMP 0511H D4 DA A 08 INC R0 3C ADDC A,R4 6F XRL A,R7 A2 71 MOV C,71H D5 56 DB DJNZ direct,rel 09 INC R1 3D ADDC A,R JNZ rel A3 INC DPTR D6 XCHD A,@R0 0A INC R2 3E ADDC A,R ACALL 0311H A4 MUL AB D7 XCHD A,@R1 0B INC R3 3F ADDC A,R7 72 1B ORL C,bit A6 56 D8 EC DJNZ R0,rel 0C INC R JC rel 73 A7 56 D9 EA DJNZ R1,rel 0D INC R AJMP 0211H MOV A,#dato A8 56 MOV R0,direct DA E8 DJNZ R2,rel 0E INC R ORL direct,a MOV direct,#dato A9 56 MOV R1,direct DB E6 DJNZ R3,rel 0F INC R ORL direct,#dato AA 56 MOV R2,direct DC E4 DJNZ R4,rel 10 1B 15 JBC bit,rel ORL A,#dato AB 56 MOV R3,direct DD E2 DJNZ R5,rel ACALL 0011H ORL A,direct MOV R0,#dato AC 56 MOV R4,direct DE E0 DJNZ R6,rel 12AD 16 LCALL addr16 46 ORL A,@R MOV R1,#dato AD 56 MOV R5,direct DF DE DJNZ R7,rel 13 RRC A 47 ORL A,@R1 7A 41 MOV R2,#dato AE 56 MOV R6,direct E0 MOVX A,@DPTR 14 DEC A 48 ORL A,R0 7B 41 MOV R3,#dato AF 56 MOV R7,direct E1 11 AJMP 0711H DEC direct 49 ORL A,R1 7C 41 MOV R4,#dato B0 1B ANL C,/bit E2 MOVX A,@R0 16 4A ORL A,R2 7D 41 MOV R5,#dato B1 11 ACALL 0511H E3 MOVX A,@R1 17 4B ORL A,R3 7E 41 MOV R6,#dato B2 1B CPL bit E4 CLR A 18 DEC R0 4C ORL A,R4 7F 41 MOV R7,#dato B3 CPL C E5 56 MOV A,direct 19 DEC R1 4D ORL A,R SJMP rel B4 41 0F CJNE A,#dato,rel E6 MOV A,@R0 1A DEC R2 4E ORL A,R AJMP 0411H B CJNE A,direct,rel E7 MOV A,@R1 1B DEC R3 4F ORL A,R7 82 1B ANL C,bit B6 41 EE E8 MOV A,R0 1C DEC R4 50 1E JNC rel 83 MOVC A,@A+PC B6 41 F1 E9 MOV A,R1 1D DEC R ACALL 0211H 84 DIV AB B CJNE R0,#dato,rel EA MOV A,R2 1E DEC R ANL direct,a 85 2E 50 MOV 50H,2EH B8 41 0C CJNE R0,#dato,rel EB MOV A,R3 1F DEC R ANL direct,#dato MOV direct,@r0 B CJNE R1,#dato,rel EC MOV A,R4 20 1B 1B JB bit,rel ANL A,#dato MOV direct,@r1 BA CJNE R2,#dato,rel ED MOV A,R AJMP 0111H ANL A,direct MOV direct,r0 BB CJNE R3,#dato,rel EE MOV A,R6 22 RET 56 ANL A,@R MOV direct,r1 BC 41 FD CJNE R4,#dato,rel EF MOV A,R7 23 RL A 57 ANL A,@R1 8A 56 MOV direct,r2 BD 41 FA CJNE R5,#dato,rel F ADD A,#dato 58 ANL A,R0 8B 56 MOV direct,r3 BE 41 F7 CJNE R6,#dato,rel F1 11 ACALL 0711H ADD A,direct 59 ANL A,R1 8C 56 MOV direct,r4 BF 41 F4 CJNE R7,#dato,rel F2 26 ADD A,@R0 5A ANL A,R2 8D 56 MOV direct,r5 C0 56 PUSH direct F3 27 ADD A,@R1 5B ANL A,R3 8E 56 MOV direct,r6 C1 11 AJMP 0611H F4 CPL A 28 ADD A,R0 5C ANL A,R4 8F 56 MOV direct,r7 C2 1B CLR bit F5 56 MOV direct,a 29 ADD A,R1 5D ANL A,R MOV DPTR,#dato16 C3 CLR C F6 2A ADD A,R2 5E ANL A,R ACALL 0411H C4 SWAP A F7 2B ADD A,R3 5F ANL A,R MOV 71H,C C5 56 XCH A,direct F8 MOV R0,A 2C ADD A,R JZ rel 93 MOVC A,@A+DPTR C6 XCH A,@R0 F9 MOV R1,A 2D ADD A,R AJMP 0311H SUBB A,#dato C7 XCH A,@R1 FA MOV R2,A 2E ADD A,R XRL direct,a SUBB A,direct C8 XCH A,R0 FB MOV R3,A 2F ADD A,R XRL direct,#dato 96 SUBB A,@R0 C9 XCH A,R1 FC MOV R4,A 30 1B 18 JNB bit,rel XRL A,#dato 97 SUBB A,@R1 CA XCH A,R2 FD MOV R5,A ACALL 0111H XRL A,direct 98 SUBB A,R0 CB XCH A,R3 FE MOV R6,A 32 RETI 66 XRL A,@R0 99 SUBB A,R1 CC XCH A,R4 FF MOV R7,A rel può essere qualsiasi byte da 00H a FFH; viene interpretato come numero con segno da 128 a +127 G. Renolfi P. Vittor pag. 15

16 Tabella delle locazioni dell 8751 indiri BANCHI DEI REGISTRI zzi Banco 0 Banco 1 Banco 2 Banco 3 R0 00H 08H 10H 18H R1 01H 09H 11H 19H R2 02H 0AH 12H 1AH R3 03H 0BH 13H 1BH R4 04H 0CH 14H 1CH R5 05H 0DH 15H 1DH R6 06H 0EH 16H 1EH R7 07H 0FH 17H 1FH AREA INDIRIZZABILE A BIT 20H 00H 01H 02H 03H 04H 05H 06H 07H 21H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 22H 10H 11H 12H 13H 14H 15H 16H 17H 23H 18H 19H 1AH 1BH 1CH 1DH 1EH 1FH 24H 20H 21H 22H 23H 24H 25H 26H 27H 25H 28H 29H 2AH 2BH 2CH 2DH 2EH 2FH 26H 30H 31H 32H 33H 34H 35H 36H 37H 27H 38H 39H 3AH 3BH 3CH 3DH 3EH 3FH 28H 40H 41H 42H 43H 44H 45H 46H 47H 29H 48H 49H 4AH 4BH 4CH 4DH 4EH 4FH 2AH 50H 51H 52H 53H 54H 55H 56H 57H 2BH 58H 59H 5AH 5BH 5CH 5DH 5EH 5FH 2CH 60H 61H 62H 63H 64H 65H 66H 67H 2DH 68H 69H 6AH 6BH 6CH 6DH 6EH 6FH 2EH 70H 71H 72H 73H 74H 75H 76H 77H 2FH 78H 79H 7AH 7BH 7CH 7DH 7EH 7FH AREA INDIRIZZABILE A BYTES 30H 40H 50H 60H 70H 31H 41H 51H 61H 71H 32H 42H 52H 62H 72H 33H 43H 53H 63H 73H 34H 44H 54H 64H 74H 35H 45H 55H 65H 75H 36H 46H 56H 66H 76H 37H 47H 57H 67H 77H 38H 48H 58H 68H 78H 39H 49H 59H 69H 79H 3AH 4AH 5AH 6AH 7AH 3BH 4BH 5BH 6BH 7BH 3CH 4CH 5CH 6CH 7CH 3DH 4DH 5DH 6DH 7DH 3EH 4EH 5EH 6EH 7EH 3FH 4FH 5FH 6FH 7FH G. Renolfi P. Vittor pag. 16

17 ESEMPI DI USO DEI TIMER DELL 8751 Occorre tenere presente che i Timer sono incrementati ogni ciclo macchina e pertanto, supponendo frequenza di clock = 12 MHz, la cadenza di conteggio risulta essere 1 µsec. Se servono tempi piuttosto lunghi, è possibile ottenerli in due modi diversi: I. Via software, conteggiando in un registro le interruzioni richieste, e confrontando il valore memorizzato nel registro con il valore desiderato II. Via hardware, usando il timer come contatore di impulsi esterni, e collegando il piedino Tx con una sorgente di clock con una frequenza più bassa. Gli esempi che seguono azionano una specie di sveglia, che dopo un intervallo di tempo prestabilito interrompe temporaneamente un programma che la CPU sta eseguendo, forza la CPU ad effettuare altre operazioni e poi torna al programma interrotto. In questi esempi sono previste due possibilità: 1) La temporizzazione viene richiesta una volta sola 2) La temporizzazione prosegue indefinitamente, ad intervalli regolari Bisogna poi distinguere il caso delle temporizzazioni molto brevi (fino a 256 µsec con clock di 12 MHz), per le quali conviene usare il modo 2 (conteggio a 8 bit con possibilità di ricaricamento automatico), da quelle più lunghe, per le quali può essere più conveniente il modo 1 con conteggio a 16 bit. Precisione delle formule per il calcolo dei tempi La risposta alla richiesta di interrupt proveniente dal timer parte con tre cicli-macchina di ritardo rispetto al tempo in cui avviene l overflow dei timer. Infatti TFx è testato il ciclo successivo a quello in cui viene settato; il salto alla locazione di risposta, con salvataggio nello stack della locazione di ritorno e aggiornamento dello stack pointer, richiede altri due cicli. Nel modo 2 il ricaricamento automatico di TLx, tuttavia, avviene nello stesso ciclo in cui avviene il traboccamento, per cui il nuovo conteggio riparte già prima che parta la routine di risposta, e l errore di tre cicli è limitato alla prima chiamata dopo il settaggio di TRx. Nel modo 1, invece, la routine di risposta parte quando il timer segna già 0003, ed occorrono altri due cicli per ricaricare thx e due per TLx, per cui il conteggio partirà da quando sono già trascorsi 7 cicli dal settaggio di TRx. Inoltre la risposta all interrupt non parte prima di aver completato l istruzione in corso, e quindi vi è un altro tempo di ritardo se la richiesta è pronta per essere accolta nel primo ciclo di un istruzione che ne impiega due (peggio ancora nel caso di MUL e DIV che durano 4 cicli-macchina). Ultima considerazione: le correzioni precedenti in genere riguardano errori che possono essere inferiori a quelli dovuti ai limiti di precisione della frequenza del clock, e quindi possono essere superflue. Routines di temporizzazione Temporizzazioni molto brevi (fino a 256 cicli-macchina) 1) La temporizzazione viene richiesta una volta sola In questo esempio, Numero è definito con la pseudoistruzione EQU ed è calcolato con la formula Numero = 259 (td fclk) / 12 Dove td è il tempo di ritardo desiderato e fclk è la frequenza di clock del sistema. ;%s sjmp inizia org 0BH ; routine di risposta all'overflow di Timer0 G. Renolfi P. Vittor pag. 17

18 inizia: main: clr TR0 ; blocca la sveglia... ; esegue le operazioni richieste dopo la temporizzazione reti ; inizializzazione e partenza del timer mov TMOD,#2 ; Timer0 in modo 2 mov TL0,#Numero ; "carica la sveglia" per il tempo voluto ; TH0 non viene usato setb EA ; abilitazione generale delle interruzioni setb ET0 ; abilitazione dell'interrupt chiesto da Timer0 ; programma principale... ; prima parte del programma principale setb TR0 ; parte la "sveglia"... ; proseguimento del programma principale ;%e end 2) La temporizzazione prosegue indefinitamente, ad intervalli regolari In questo esempio, Numero è calcolato con la formula: Numero = 256 (td fclk) / 12 Dove td è il tempo di ritardo desiderato ed fclk è la frequenza di clock del sistema Si noti che la prima routine di risposta partirà con un ritardo di 3 cicli-macchina rispetto al valore di td inizia: MAIN: ;%s sjmp inizia org 0BH ; posizione della routine di risposta all'overflow di Timer0... ; esegue le operazioni richieste dopo la temporizzazione reti ; inizializzazione e partenza del timer mov TMOD,#2 ; Timer0 in modo 2 mov TL0,#Numero ; "carica la sveglia" per il tempo voluto mov TH0,#Numero ; TH0 ricaricherà automaticamente TL0 setb EA ; abilitazione generale delle interruzioni setb ET0 ; abilitazione dell'interrupt chiesto da Timer0 setb TR0 ; parte la "sveglia"... ; esegue il programma principale... ;%e end Temporizzazioni fino a cicli-macchina Negli esempi seguenti, NH e NL sono definiti dalla formula: t = (256 NH + NL) cicli-macchina in cui NH ed NL si calcolano nel modo seguente: Posto: N = (td fclk) / 12 Dove td è il tempo di ritardo desiderato ed fclk è la frequenza di clock del sistema NH = N / 256 NL = resto della divisione presedente Con il clock di 12 MHz, con la routine seguente si può arrivare fino a circa 65 msec (Tale valore può essere aumentato usando con un quarzo di frequenza più bassa). In questo modello la temporizzazione prosegue indefinitamente, ad intervalli regolari G. Renolfi P. Vittor pag. 18

19 inizia: MAIN: ;%s sjmp Inizia org 0BH ; routine di risposta all'overflow di Timer0 mov TL0,#NL ; "ricarica la sveglia" mov TH0,#NH... ; esegue le operazioni richieste dopo la temporizzazione reti ; Inizializzazione e partenza del timer mov TMOD,#1 ; Timer0 in modo 1 mov TL0,#NL ; "carica la sveglia" per il tempo voluto mov TH0,#NH setb EA ; abilitazione generale delle interruzioni setb ET0 ; abilitazione dell'interrupt chiesto da Timer0 setb TR0 ; parte la "sveglia"... ; esegue il programma principale ;%e end Temporizzazioni per tempi fino a circa 13 sec. Negli esempi seguenti, NR, NH e NL sono definiti dalle formule seguenti: t = NR [65543 (256 NH + NL)] cicli macchina N.B. NR = 0 si comporta come se fosse NR = 256 Con: NH = 60 ed NL = 183 si ottiene t = NR 50 msec con frequenza di clock di 12 MHz Calcolando comunque NH ed NL in modo da ottenere, con le formule della routine precedente: t d = 50 msec abbiamo, con t espresso in secondi: NR = 20 t In questo modello la temporizzazione prosegue indefinitamente, ad intervalli regolari ;%s sjmp Inizia org 0BH mov TL0,#NL mov TH0,#NH djnz R7, Torna ; routine di risposta all'overflow di Timer0 ; "ricarica la sveglia" ; le operazioni di risposta sono effettuate solo se ; sono già trascorsi NR volte ; ( x NH - NL) cicli-macchina... ; esegue le operazioni richieste dopo la temporizzazione mov R7,#NR ; R7 è usato per contare quante volte viene eseguito il ciclo ; temporizzato dal registro a 16 bit TH0 -TL0 TORNA: reti inizia: ; inizializzazione e partenza del timer mov TMOD,#1 ; Timer0 in modo 1 mov TL0,#NL ; "carica la sveglia" per il tempo voluto mov TH0,#NH mov R7,#NR setb EA ; abilitazione generale delle interruzioni MAIN: setb ET0 setb TR0 ; abilitazione dell'interrupt chiesto da Timer0 ; parte la "sveglia"... ; esegue il programma principale ;%e end G. Renolfi P. Vittor pag. 19

20 Temporizzazioni per tempi lunghi. NR, NH e NL sono definiti dalla formula: t = NR1 NR2 [65536 (256 NH + NL)] cicli-macchina N.B. NR1 = 0, NR2 = 0 si comportano come se fossero: NR1 = 256, NR2 = 256 Calcolando comunque NH ed NL in modo da ottenere, con le formule della routine precedente: t d = 50 msec abbiamo, con t espresso in secondi: NR = 20 t Si possono ottenere tempi fino a più di un ora. Con: NR1 = 20 NR2 = 60 t = 1 minuto NR1 = 200 NR2 = 60 t = 10 minuti NR1 = 200 NR2 = 180 t = 30 minuti Calcolando NH ed NR per t d = 60 msec, con NR1 = 234, NR2 = 96 t = 1 ora In questo modello la temporizzazione prosegue indefinitamente, ad intervalli regolari torna: inizia: MAIN: ;%s sjmp Inizia org 0BH ; routine di risposta all'overflow di Timer0 mov TL0,#NL ; "ricarica la sveglia" mov TH0,#NH djnz R7, Torna mov R7,#NR1 djnz R6, Torna... ; esegue le operazioni richieste dopo la ; temporizzazione mov R7,#NR1 mov R6,#NR2 reti ; inizializzazione e partenza del timer mov TMOD,#1 ; Timer0 in modo 1 mov TL0,#NL ; "carica la sveglia" per il tempo voluto mov TH0,#NH mov R7,#NR1 mov R6,#NR2 setb EA ; abilitazione generale delle interruzioni setb ET0 ; abilitazione dell'interrupt chiesto da Timer0 setb TR0 ; parte la "sveglia"... ; esegue il programma principale ;%e end G. Renolfi P. Vittor pag. 20

21 Note sull istruzione CJNE Nella famiglia 8051, CJNE è l unica istruzione che permette di effettuare il confronto fra due valori. CJNE significa Compare and Jump if Not Equal cioè confronta e salta se non è uguale. Generalmente, nei microprocessori confrontare due termini significa eseguire la loro sottrazione, ma non mostrarne il risultato. L unico effetto rimane l azione sui flag, che vengono modificati in accordo con le conseguenze che sarebbero scaturite dalla sottrazione vera e propria. Sotto questo aspetto, l 8051 con CJNE si comporta in modo parzialmente anomalo. Il flag di Carry viene resettato se il primo termine del confronto è maggiore o uguale al secondo, settato se è minore, indicando così che la sottrazione è stata effettuata prendendo un prestito. Invece non esiste un flag di zero, per cui i due termini vengono confrontati direttamente. La sintassi è: CJNE primo_termine, secondo_termine, label Il microprocessore confronta direttamente i due termini, bit per bit e, se non sono uguali, somma al Program Counter un numero di 1 byte. Ne risulta che il massimo salto che può essere eseguito è di 127 locazioni in avanti e 128 indietro. Vediamo nella figura a fianco il diagramma di flusso delle operazioni eseguite; per compattare il disegno, primo_termine è stato indicato con P, secondo_termine con S. P può essere il contenuto dell accumulatore, ed allora S può essere qualsiasi byte od il contenuto di qualsiasi locazione della RAM interna. P può anche essere il contenuto di uno degli otto registri o di una locazione puntata da uno dei due registri indice, ed allora il confronto è possibile solo con un dato numerico del tipo #byte. L istruzione genera comunque un salto se i due termini di confronto sono diversi. Se interessa invece che il salto venga eseguito quando uno dei due termini è maggiore o minore dell altro, occorre ricorrere anche ad un ulteriore salto condizionato dal Carry, usando l istruzione JC oppure JNC. Vediamo un elenco dei casi possibili: 1) Salta se il primo termine P è diverso dal secondo termine S. Si tratta del caso più banale, e si traduce in una sola riga: CJNE P,S,label Prosegui (istruzione seguente) 2) Salta se P è uguale a S. Il codice può essere: CJNE P,S,avanti SJMP label avanti: Prosegui (istruzione seguente) G. Renolfi P. Vittor pag. 21

22 3) Salta se P è maggiore di S CJNE P,S,etich SJMP avanti etich: JNC label avanti: Prosegui (istruzione seguente) 4) Salta se P è minore di S CJNE P,S,etich etich: JC label Prosegui (istruzione seguente) 5) Salta se P è minore o uguale a S CJNE P,S,etich SJMP label etich: JC label Prosegui (istruzione seguente) 6) Salta se P è maggiore o uguale a S CJNE P,S,etich etich: JNC label Prosegui (istruzione seguente) SOFTWARE DI SIMULAZIONE 1) l assemblatore CYS8051 è un software che gira su sistemi MS DOS e permette di sviluppare ed assemblare programmi per la famiglia 8051 partendo da un file nomefile.asm scritto in linguaggio assembly e memorizzato in codice ASCII puro (testo non formattato). 2) il simulatore SIM8051 è un software che gira su sistemi MS DOS e permette di utilizzare i corrispondenti file nomefile.hex e nomefile.lst creati dal CYS8051. Il file nomefile.hex viene utilizzato per simulare l'esecuzione di un programma in codicemacchina dell'8051. Il relativo file nomefile.lst viene utilizzato per visualizzare le istruzioni durante la loro esecuzione e l'eventuale diagramma di flusso. Poiché la rappresentazione è combinata in un'unica visualizzazione con tre finestre, si ottiene un potente sistema di debug, senza dover uscire ed utilizzare un circuito di emulazione. G. Renolfi P. Vittor pag. 22

23 Elenco dei registri visualizzati: SP Stack pointer BS Banco di registri selezionato R0..R7 Registri del banco selezionato P0...P3 Porte di I/O CC Contatore di cicli C0..C2 Contatori/temporizzatori PC Program counter PD Puntatore di dati AC Accumulatore PS Registro della parola di stato ASSEMBLATORE CYS8051 Se si vuole assemblare un proprio file nomefile.asm, questo deve essere già scritto e salvato prima di lanciare il programma assemblatore. Il file sorgente deve essere in codice ASCII puro; per scriverlo si può usare il Blocco Note di Windows o l editor del DOS. Se si usa invece un word processor, occorre salvare il file in formato ASCII, altrimenti verrebbero aggiunti codici di controllo particolari che l'assemblatore non è in grado di riconoscere. Subito dopo il lancio appare una schermata con l'elenco dei comandi. Tale schermata è la stessa che si ottiene col comando HELP. Il prompt del programma è rappresentato dal simbolo > in fondo allo schermo. Quando questo è presente vuol dire che il programma è pronto ad accettare un comando. Il comando per assemblare è ASM51 nomefile. L'assemblatore genera altri due file: nomefile.hex e nomefile.lst. nomefile.hex è il vero e proprio codice-oggetto INTEL, in formato esadecimale; e viene usato dal SIM8051 per effettuare la simulazione. Può anche essere stampato e soprattutto utilizzato per programmare il microcontroller. nomefile.lst è un listato del sorgente unito ai codici macchina esadecimali, che mostra tutte le locazioni ed i valori delle etichette. Può essere stampato ed usato come documentazione. Viene utilizzato dal simulatore SIM8051 per visualizzare, durante l'esecuzione, i codici sorgente ed il diagramma di flusso. Per uscire dal programma e tornare al DOS, usare il comando EXIT. Formato del file sorgente (nomefile.asm) Ciascuna linea del file sorgente sarà considerata un comando, e l'assemblatore tenterà di tradurla. Oltre alle linee di codice di istruzioni 8051, possono esistere linee vuote di soli commenti, di direttive (comandi) per l'assemblatore, che non producono però codice-oggetto. Il formato generale di ciascuna linea, divisa in quattro campi, è il seguente: Etichetta Comando Argomenti ;Commenti Ad esempio: Label: MOV R5,P1 ;Copia nel registro R5 il dato proveniente dalla porta P1 Alcuni dei quattro campi sopra indicati (o anche tutti) possono mancare, per cui vi possono essere righe bianche (o di solo commento o di solo codice) senza etichetta e senza commento. Ciascuna linea deve terminare con un codice di "ritorno-carrello (invio)" seguito da uno di "una linea in G. Renolfi P. Vittor pag. 23

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Esempio di moltiplicazione come somma e spostamento

Esempio di moltiplicazione come somma e spostamento Esempio di moltiplicazione come somma e spostamento Implementare una moltiplicazione coinvolge algoritmi di shift e somma Istruzioni di Shift:movimento di bit: ROL Rd ROR Rd LSL Rd LSR ASR Rd Rd 22 x 35

Dettagli

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica L Assembler 8086 M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Si suddividono in: istruzioni per il calcolo binario istruzioni

Dettagli

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Dettagli

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014

Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Lezione 1: L architettura LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 10 Marzo 2014 Ricorda... Il ciclo di esecuzione di un istruzione è composto da sei fasi: FETCH DECODE ADDRESS

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Architettura degli elaboratori (A)

Architettura degli elaboratori (A) Laurea in Informatica a.a. 2010-2011 Laboratorio del corso di Architettura degli elaboratori (A) Modulo 1: l Architettura dell 8086 Valeria Carofiglio Linguaggi a vari livelli e loro relazioni Programma

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 4 La CPU e l esecuzione dei programmi 1 Nelle lezioni precedenti abbiamo detto che Un computer è costituito da 3 principali componenti:

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

4. Operazioni aritmetiche con i numeri binari

4. Operazioni aritmetiche con i numeri binari I Numeri Binari 4. Operazioni aritmetiche con i numeri binari Contare con i numeri binari Prima di vedere quali operazioni possiamo effettuare con i numeri binari, iniziamo ad imparare a contare in binario:

Dettagli

Esercizi per il recupero del debito formativo:

Esercizi per il recupero del debito formativo: ANNO SCOLASTICO 2005/2006 CLASSE 3 ISC Esercizi per il recupero del debito formativo: Disegnare il diagramma e scrivere la matrice delle transizioni di stato degli automi a stati finiti che rappresentano

Dettagli

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine. Quinto Homework 1) Si vuole progettare una cache a mappatura diretta per un sistema a 32 bit per una memoria da 2 GB (quindi sono solo 31 i bit utili per gli indirizzi) e blocchi di 64 byte. Rispondere

Dettagli

MANUALE EDICOLA 04.05

MANUALE EDICOLA 04.05 MANUALE EDICOLA 04.05 Questo è il video che si presenta avviando il programma di Gestione Edicola. Questo primo video è relativo alle operazioni di carico. CARICO Nello schermo di carico, in alto a sinistra

Dettagli

Programmazione dello Z80

Programmazione dello Z80 Il microprocessore si incarica di: gestire il programma e i suoi dati di eseguire i calcoli richiesti. Le azioni appena elencate rendono necessario che il microprocessore abbia da qualche parte, al suo

Dettagli

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello): Architettura (10/9003) Pag. 1/6 Esame di Architettura (matr.0-1) del 10/9003 Per Fondamenti di Architettura NON rispondere Per le domande a risposta multipla cerchiare la risposta scelta. Non alle domande

Dettagli

DISPLAY REMOTO PILOTATO DALLA SERIALE. LCD_SERv10

DISPLAY REMOTO PILOTATO DALLA SERIALE. LCD_SERv10 DISPLAY REMOTO PILOTATO DALLA SERIALE su CPU18LCD LCD_SERv10 035-693737 1 FUNZIONI del sistema: Il sistema è composto da: 1. una scheda con a bordo ÄÅ Un regolatore 12Vcc / 7Vcc Ä a 5Vcc ÄÇ Un microprocessore

Dettagli

CPU. Maurizio Palesi

CPU. Maurizio Palesi CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Dettagli

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa. La finestra di Excel è molto complessa e al primo posto avvio potrebbe disorientare l utente. Analizziamone i componenti dall alto verso il basso. La prima barra è la barra del titolo, dove troviamo indicato

Dettagli

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896 2 Esercizio 2.2 La rappresentazione esadecimale prevede 16 configurazioni corrispondenti a 4 bit. Il contenuto di una parola di 16 bit può essere rappresentato direttamente con 4 digit esadecimali, sostituendo

Dettagli

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Funzioni di Esportazione Importazione 1 Indice AIRONE GESTIONE RIFIUTI... 1 FUNZIONI DI ESPORTAZIONE E IMPORTAZIONE... 1 INDICE...

Dettagli

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO

CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO CLASSE III A I.T.I. (ABACUS) SISTEMI DI ELABORAZIONE E TRASMISSIONE DEI DATI VERIFICA DI RECUPERO 1 Domanda [1 punto] Dato il formato in virgola mobile su 32 bit così definito (precisione singola): o 1

Dettagli

Calcolatori Elettronici Parte X: l'assemblatore as88

Calcolatori Elettronici Parte X: l'assemblatore as88 Anno Accademico 2013/2014 Calcolatori Elettronici Parte X: l'assemblatore as88 Prof. Riccardo Torlone Università Roma Tre L'assemblatore as88 Disponibile presso: CD-ROM allegato al libro di testo del corso

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Dettagli

Architettura del calcolatore

Architettura del calcolatore Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale

Dettagli

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti Il processore: unità di lo Architetture dei Calcolatori (lettere A-I) L unità di lo L unità di lo è responsabile della generazione dei segnali di lo che vengono inviati all unità di elaborazione Alcune

Dettagli

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro, EXCEL PER WINDOWS95 1.Introduzione ai fogli elettronici I fogli elettronici sono delle applicazioni che permettono di sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area

Dettagli

Powered by: Relators:

Powered by: Relators: Powered by: Hacking Group Como www.hgcomo.org Relators: Beretta Matteo, matteo@hgcomo.org Pizzagalli Diego Ulisse ulisse@hgcomo.org Atmel AVR Studio 4 integra al suo interno un ambiente di programmazione

Dettagli

Utilizzo delle formule in Excel

Utilizzo delle formule in Excel Utilizzo delle formule in Excel Excel è dotato di un potente motore di calcolo che può essere utilizzato per elaborare i dati immessi dagli utenti. I calcoli sono definiti mediante formule. Ogni formula

Dettagli

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,

Dettagli

Testi di Esercizi e Quesiti 1

Testi di Esercizi e Quesiti 1 Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica

Dettagli

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno Parte II Indice Operazioni aritmetiche tra valori rappresentati in binario puro somma sottrazione Rappresentazione di numeri con segno modulo e segno complemento a 2 esercizi Operazioni aritmetiche tra

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4 ARCHITETTURE MICROPROGRAMMATE. 1 Necessità di un architettura microprogrammata 1 Cos è un architettura microprogrammata? 4 Struttura di una microistruzione. 5 Esempi di microprogrammi 9 Esempio 1 9 Esempio

Dettagli

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica prof. ing. Corrado Santoro Schema a blocchi di una CPU Arithmetic Logic Unit Control Unit Register File BUS Control

Dettagli

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS CONTENUTI: CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS Creazione database vuoto Creazione tabella Inserimento dati A) Creazione di un database vuoto Avviamo il programma Microsoft Access. Dal menu

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio AXO Architettura dei Calcolatori e Sistema Operativo processo di assemblaggio linguaggio assembly è il linguaggio simbolico che consente di programmare un calcolatore utilizzando le istruzioni del linguaggio

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Dettagli

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri 1 Da base 2 a base 10 I seguenti esercizi richiedono di convertire in base 10 la medesima stringa binaria codificata rispettivamente

Dettagli

TEST: Word & Excel. 2014 Tutti i diritti riservati. Computer Facile - www.computerfacile.webnode.it

TEST: Word & Excel. 2014 Tutti i diritti riservati. Computer Facile - www.computerfacile.webnode.it TEST: Word & Excel 1. Come viene detta la barra contenente il nome del documento? A. barra del titolo B. barra di stato C. barra del nome D. barra dei menu 2. A cosa serve la barra degli strumenti? A.

Dettagli

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche Input/Output n Grande varietà di periferiche gestiscono quantità di dati differenti a velocità diverse in formati diversi n Tutti più lenti della CPU e della RAM n Necessità di avere moduli di I/O Moduli

Dettagli

Editor vi. Editor vi

Editor vi. Editor vi Editor vi vi 1 Editor vi Il vi è l editor di testo standard per UNIX, è presente in tutte le versioni base e funziona con qualsiasi terminale a caratteri Permette di visualizzare una schermata alla volta

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

RISOLUTORE AUTOMATICO PER SUDOKU

RISOLUTORE AUTOMATICO PER SUDOKU RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU

Dettagli

LABORATORIO DI SISTEMI

LABORATORIO DI SISTEMI ALUNNO: Fratto Claudio CLASSE: IV B Informatico ESERCITAZIONE N : 1 LABORATORIO DI SISTEMI OGGETTO: Progettare e collaudare un circuito digitale capace di copiare le informazioni di una memoria PROM in

Dettagli

MODULO 4: FOGLIO ELETTRONICO (EXCEL)

MODULO 4: FOGLIO ELETTRONICO (EXCEL) MODULO 4: FOGLIO ELETTRONICO (EXCEL) 1. Introduzione ai fogli elettronici I fogli elettronici sono delle applicazioni che permettono di sfruttare le potenzialità di calcolo dei Personal computer. Essi

Dettagli

Invio SMS. DM Board ICS Invio SMS

Invio SMS. DM Board ICS Invio SMS Invio SMS In questo programma proveremo ad inviare un SMS ad ogni pressione di uno dei 2 tasti della DM Board ICS. Per prima cosa creiamo un nuovo progetto premendo sul pulsante (Create new project): dove

Dettagli

1. Le macro in Access 2000/2003

1. Le macro in Access 2000/2003 LIBRERIA WEB 1. Le macro in Access 2000/2003 Per creare una macro, si deve aprire l elenco delle macro dalla finestra principale del database: facendo clic su Nuovo, si presenta la griglia che permette

Dettagli

CALCOLATORI ELETTRONICI II

CALCOLATORI ELETTRONICI II CALCOLATORI ELETTRONICI II L ASSEMBLATORE Microsoft MASM MASM Argomenti della lezione Faremo riferimento al linguaggio sorgente accettato dall assemblatore Microsoft MASM nelle versioni successive alla

Dettagli

MERIDESTER SOFTWARE DI COMUNICAZIONE PER PC

MERIDESTER SOFTWARE DI COMUNICAZIONE PER PC MERIDESTER SOFTWARE DI COMUNICAZIONE PER PC Requisiti del sistema sistema operativo Windows XP o Vista processore Pentium 4 o equivalente RAM 512 Mb Video 1024x768 Porta USB USB 1.1 o 2.0 full speed Scheda

Dettagli

Memorie ROM (Read Only Memory)

Memorie ROM (Read Only Memory) Memorie ROM (Read Only Memory) Considerando la prima forma canonica, la realizzazione di qualsiasi funzione di m variabili richiede un numero di porte AND pari al numero dei suoi mintermini e di prolungare

Dettagli

Il microprocessore 8086

Il microprocessore 8086 1 Il microprocessore 8086 LA CPU 8086 Il microprocessore 8086 fa parte della famiglia 80xxx della INTEL. Il capostipite di questa famiglia è stato l 8080, un microprocessore ad 8 bit che ha riscosso un

Dettagli

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 In questo documento vengono illustrate brevemente le operazioni aritmetiche salienti e quelle logiche ad esse strettamente collegate.

Dettagli

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare. Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare. E stato previsto l utilizzo di uno specifico prodotto informatico (denominato

Dettagli

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico) Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico) 1 Aprire Access Appare una finestra di dialogo Microsoft Access 2 Aprire un

Dettagli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

Sistemi di Numerazione

Sistemi di Numerazione Fondamenti di Informatica per Meccanici Energetici - Biomedici 1 Sistemi di Numerazione Sistemi di Numerazione I sistemi di numerazione sono abitualmente posizionali. Gli elementi costitutivi di un sistema

Dettagli

Manuale Terminal Manager 2.0

Manuale Terminal Manager 2.0 Manuale Terminal Manager 2.0 CREAZIONE / MODIFICA / CANCELLAZIONE TERMINALI Tramite il pulsante NUOVO possiamo aggiungere un terminale alla lista del nostro impianto. Comparirà una finestra che permette

Dettagli

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015 COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO. 2015 e PARAMETRI2015 Vicenza, 3 giugno 2015 Gentile cliente, si ricorda che a partire dall aggiornamento PROFIS 2011.1 è stato automatizzato

Dettagli

MANUALE D USO DEL CONTATEMPO

MANUALE D USO DEL CONTATEMPO MANUALE D USO DEL CONTATEMPO Accendere il dispositivo con l apposito interruttore, l alimentazione può essere data dalla rete a 220V o, in mancanza, da batterie tampone ricaricabili almeno 40 minuti 1

Dettagli

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. *+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Come modificare la propria Home Page e gli elementi correlati

Come modificare la propria Home Page e gli elementi correlati Come modificare la propria Home Page e gli elementi correlati Versione del documento: 3.0 Ultimo aggiornamento: 2006-09-15 Riferimento: webmaster (webmaster.economia@unimi.it) La modifica delle informazioni

Dettagli

PD32. Interfacciamento con i dispositivi di I/O (V)

PD32. Interfacciamento con i dispositivi di I/O (V) PD32 Interfacciamento con i dispositivi di I/O (V) Interazione CPU - dispositivi Soluzioni possibili Busy Waiting Utilizzabile quando CPU esegue solo il task di dialogo con la periferica Interruzioni D.M.A.

Dettagli

Parte II.2 Elaboratore

Parte II.2 Elaboratore Parte II.2 Elaboratore Elisabetta Ronchieri Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Dicembre 1, 2015 Elisabetta Elisabetta Ronchieri II Software Argomenti

Dettagli

Database 1 biblioteca universitaria. Testo del quesito

Database 1 biblioteca universitaria. Testo del quesito Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole

Dettagli

Dispensa di Informatica I.1

Dispensa di Informatica I.1 IL COMPUTER: CONCETTI GENERALI Il Computer (o elaboratore) è un insieme di dispositivi di diversa natura in grado di acquisire dall'esterno dati e algoritmi e produrre in uscita i risultati dell'elaborazione.

Dettagli

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO INTERFACCE TESTUALI INTERFACCE TESTUALI FUNZIONI DEL SISTEMA OPERATIVO INTERFACCE GRAFICHE

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO INTERFACCE TESTUALI INTERFACCE TESTUALI FUNZIONI DEL SISTEMA OPERATIVO INTERFACCE GRAFICHE IL SISTEMA OPERATIVO Insieme di programmi che opera al di sopra della macchina fisica, mascherandone le caratteristiche e fornendo agli utenti funzionalità di alto livello. PROGRAMMI UTENTE INTERPRETE

Dettagli

ESERCIZIO 1 1. Traccia 1. Analisi 2. Codifica programma 7. frame nel seguente modo: il primo byte dice la lunghezza complessiva del frame,

ESERCIZIO 1 1. Traccia 1. Analisi 2. Codifica programma 7. frame nel seguente modo: il primo byte dice la lunghezza complessiva del frame, ESERCIZIO 1 1 Traccia 1 Analisi 2 Codifica programma 7 Esercizio 1 Traccia IL microprocessore riceve dati dalla porta di indirizzo 30H. I dati sono organizzati in frame nel seguente modo: il primo byte

Dettagli

5-1 FILE: CREAZIONE NUOVO DOCUMENTO

5-1 FILE: CREAZIONE NUOVO DOCUMENTO Capittol lo 5 File 5-1 FILE: CREAZIONE NUOVO DOCUMENTO In Word è possibile creare documenti completamente nuovi oppure risparmiare tempo utilizzando autocomposizioni o modelli, che consentono di creare

Dettagli

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera WORD per WINDOWS95 1.Introduzione Un word processor e` come una macchina da scrivere ma con molte più funzioni. Il testo viene battuto sulla tastiera ed appare sullo schermo. Per scrivere delle maiuscole

Dettagli

Von Neumann. John Von Neumann (1903-1957)

Von Neumann. John Von Neumann (1903-1957) Linguaggio macchina Von Neumann John Von Neumann (1903-1957) Inventore dell EDVAC (Electronic Discrete Variables AutomaFc Computer), la prima macchina digitale programmabile tramite un soiware basata su

Dettagli

Introduzione al Foglio Elettronico

Introduzione al Foglio Elettronico Microsoft Excel Introduzione al Foglio Elettronico Il Foglio Elettronico Si presenta come una grande tabella su un foglio di carta Le celle contengono differenti dati Numeri Testo Date Ecc I dati possono

Dettagli

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1

La microarchitettura. Didattica della strumentazione digitale e sistemi a microprocessore anno accademico 2006 2007 pagina 1 La microarchitettura. anno accademico 2006 2007 pagina 1 Integer Java virtual machine Ogni microprocessore può avere una microarchitettura diversa, ma la modalità di funzionamento per certi aspetti è generale.

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

Dettagli

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte. I TUTORI Indice Del Manuale 1 - Introduzione al Manuale Operativo 2 - Area Tutore o Area Studente? 3 - Come creare tutti insieme i Tutori per ogni alunno? 3.1 - Come creare il secondo tutore per ogni alunno?

Dettagli

Guida all uso di Java Diagrammi ER

Guida all uso di Java Diagrammi ER Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con

Dettagli

G S M C O M M A N D E R Duo S

G S M C O M M A N D E R Duo S Il GSM Commander Duo S permette, di attivare indipendentemente o contemporaneamente due contatti elettrici, Contatto1 (C1) e Contatto2 (C2), attraverso una chiamata telefonica a costo zero al numero della

Dettagli

Introduzione. Macro macro istruzione. Sequenza di comandi memorizzati programma

Introduzione. Macro macro istruzione. Sequenza di comandi memorizzati programma Introduzione Macro macro istruzione Sequenza di comandi memorizzati programma Scopo: eseguire più volte una sequenza di operazioni che a mano sarebbero noiose e ripetitive, se non proibitive Le macro Le

Dettagli

MANUALE PARCELLA FACILE PLUS INDICE

MANUALE PARCELLA FACILE PLUS INDICE MANUALE PARCELLA FACILE PLUS INDICE Gestione Archivi 2 Configurazioni iniziali 3 Anagrafiche 4 Creazione prestazioni e distinta base 7 Documenti 9 Agenda lavori 12 Statistiche 13 GESTIONE ARCHIVI Nella

Dettagli

Operazioni fondamentali

Operazioni fondamentali Foglio elettronico Le seguenti indicazioni valgono per Excel 2007, ma le procedure per Excel 2010 sono molto simile. In alcuni casi (per esempio, Pulsante Office /File) ci sono indicazioni entrambe le

Dettagli

PROTOCOLLO INFORMATICO

PROTOCOLLO INFORMATICO PROTOCOLLO INFORMATICO OGGETTO: aggiornamento della procedura Protocollo Informatico dalla versione 03.05.xx alla versione 03.06.00 Nell inviarvi quanto in oggetto Vi ricordiamo che gli aggiornamenti vanno

Dettagli

DMA Accesso Diretto alla Memoria

DMA Accesso Diretto alla Memoria Testo di rif.to: [Congiu] - 8.1-8.3 (pg. 241 250) 08.a DMA Accesso Diretto alla Memoria Motivazioni Organizzazione dei trasferimenti DMA Arbitraggio del bus di memoria Trasferimento di un blocco di dati

Dettagli

www.filoweb.it STAMPA UNIONE DI WORD

www.filoweb.it STAMPA UNIONE DI WORD STAMPA UNIONE DI WORD Molte volte abbiamo bisogno di stampare più volte lo stesso documento cambiando solo alcuni dati. Potremmo farlo manualmente e perdere un sacco di tempo, oppure possiamo ricorrere

Dettagli

Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo

Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo - la durata del mutuo in anni - l importo del mutuo

Dettagli

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica Consiglio regionale della Toscana Regole per il corretto funzionamento della posta elettronica A cura dell Ufficio Informatica Maggio 2006 Indice 1. Regole di utilizzo della posta elettronica... 3 2. Controllo

Dettagli

Parte 1. Vettori di bit - AA. 2012/13 1.1

Parte 1. Vettori di bit - AA. 2012/13 1.1 1.1 Parte 1 Vettori di bit 1.2 Notazione posizionale Ogni cifra assume un significato diverso a seconda della posizione in cui si trova Rappresentazione di un numero su n cifre in base b: Posizioni a n

Dettagli

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000

AXO Achitettura dei Calcolatori e Sistema Operativo. Instruction Set Architecture (ISA) e 68000 AXO Achitettura dei Calcolatori e Sistema Operativo Instruction Set Architecture (ISA) e 68000 introduzione a ISA ISA - Instruction Set Architecture insieme delle istruzioni (instruction set) che possono

Dettagli