scarica Inserito: 24 ottobre 2005 Segnala Inserito: 24 ottobre 2005 Salve ragazzi questo è il mio primo post su questa sezione ed avrei bisogno di una spiegazione riguardo la simulazione con MPLAB del sorgente ASM. che più sotto ho riportatoIn realtà la prova consiste nel testare il comportamento dei registri TRISA/PORTA TRISB/PORTBe visualizzare atraverso la WiNDOW dei FSR di MPLAB il cambio di stato dei bit interessatiQuando simulo il progetto attraverso il tasto STEP INTO noto che quando arrivo alla lineaBSF PORTB,LED1 il bit RB0 nel registro PORTB non mi cambia di stato ma rimane al valore 0IDEM per tutte le altre.Ho fatto anche altre prove con altri sorgenti ASM sempre orientati a testare le porte simulando interruttori e LED che si accendono ma ottengo lo stesso comportamento non corretto in particolar modo sul registro PORTA/BSbaglio forse a configurare MPLAB?Ho commetto un sbaglio di concetto ?L'esempio che ho riportato è preso da corso di TanzilliL'MPLAB che uso è la versione 6.60 utilizzando il simulatore SIM.Questo che segue è il sorgente. ---------------------------------------------------------------------------------------------------------- processor 16F84 RADIX DEC INCLUDE "P16F84.INC" errorlevel -302 ;Setup of PIC configuration flag;XT oscillator;Disable watch dog timer ;Enable power up timer;Disable code protect __config 3FF1HLED1 EQU 0LED2 EQU 1LED3 EQU 2LED4 EQU 3SW1 EQU 4SW2 EQU 5SW3 EQU 6SW4 EQU 7 ORG 00H ; Reset Vector (Punto di inizio del programma al reset del Pic) BSF STATUS,RP0 ; SWICTH BANCO 1; Definizione delle linee di I/O (0=uscita I=Ingresso) ; Definizione della porta A le linee da RA0 a RA4 vengono programmate in ingresso MOVLW b'0000' MOVWF TRISA ;Definizione della porta B le linee da RB0 a RB3 vengono programmate in uscita per essere collegate ai 4 LED. ;Le linee da RB4 a RB7 vengono programmate in ingresso per essere collegate ai 4 pulsanti MOVLW b'11111111' MOVWF TRISB BCF STATUS,RP0 ; SWICT BANCO 0MainLoop;spengi tutti i led CLRF PORTB;Se è premuto il pulsante SW1 accende il LED1 BTFSS PORTB,SW1 BSF PORTB,LED1;Se è premuto il pulsante SW2 accende il LED2 BTFSS PORTB,SW2 BSF PORTB,LED2;Se è premuto il pulsante SW3 accende il LED3 BTFSS PORTB,SW3 BSF PORTB,LED3;Se è premuto il pulsante SW4 accende il LED4 BTFSS PORTB,SW4 BSF PORTB,LED4 goto MainLoop END-----------------------------------------------------------------------------------Un saluto a tutti da Scarica
sfinge Inserita: 24 ottobre 2005 Segnala Inserita: 24 ottobre 2005 Ciao!Io vedo però dal codice che tu hai scritto, che la PORTB è confugurata interamente come ingressi digitali e non come uscite.(Forse è li l'errore).
ifachsoftware Inserita: 24 ottobre 2005 Segnala Inserita: 24 ottobre 2005 ;Definizione della porta B le linee da RB0 a RB3 vengono programmate in uscita per essere collegate ai 4 LED. ;Le linee da RB4 a RB7 vengono programmate in ingresso per essere collegate ai 4 pulsantiMOVLW b'11111111'MOVWF TRISB
scarica Inserita: 26 ottobre 2005 Autore Segnala Inserita: 26 ottobre 2005 esatto ........l'errore è quello da voi segnalato........grazie mille Ho un'altro quesito da porvi su queste righe di ASM del tutto inventate riguardanti sempre il comportamento delle porte del PIC ................. ................ BSF STATUS,RP0 ; Select bank 1 (selezione del banco 1) 1) MOVLW 0xFF ;\ 0xFF = 1111 1111 porte B tutte in INPUT 2) MOVWF TRISB ;/ BCF STATUS,RP0 ; Select bank0 3) MOVWF PORTB ; poi le pongo tutte alla stato 1 BSF STATUS,RP0 ; Select bank 1 (selezione del banco 1) 4) MOVLW 0x00 ;\ 5) MOVWF TRISB ; Poi le configuro come OUT ................che senso ha configurare una porta (nell'esempio la in INPUT righe 1) e 2)e poi mettere i pin tutti alla stato 1 riga 3)Di fatto simulando queste righe di programma con MPLAB se il registro PORTBvaleva 0x00, quando arrivo alla riga 3) non mi cambia nel valore 0xFF ma rinaneinchiodato a 0X00. Solo quando eseguo le righe 4) e 5) allora vedo cambiare contemporaneamenteanche il registro PORTB a 0xFFQuesto comportamento è conseguenza della presenza del Data-Latch implementato su ogni bit del registro PORTB che memorizzaogni transizione di stato di tali bit?Il valore che si vuole scrivere sul registro PORTB con la 3) rimane memorizzato su questo D-LACH lungo 8bit per poi essere successivamente scritto quando la configurazione di TRISB è coerente (OUT riga 5)?Scusate per tutto questo giro di parole ma non trovavo altro modo di porre il problema.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora