Vicus Inserita: 18 giugno 2016 Autore Segnala Share Inserita: 18 giugno 2016 MikroC, me lo hai suggerito tu. Il codice ce l'ho sull'altro pc, appena lo finisco lo pubblico. Link al commento Condividi su altri siti More sharing options...
dott.cicala Inserita: 18 giugno 2016 Segnala Share Inserita: 18 giugno 2016 //############################################################################## // Main Loop //############################################################################## while(1){ if (((portb&0X0F)!=0X0F)&((portb&0X0F)!=MASK)) { porta=0; MASK= portb&0X0F; delay_ms(100); } switch (MASK){ case 14: porta=1; break; case 13: porta=2; break; case 11: porta=4; break; case 7: porta=8; break; } } Il codice pubblicato mesi fa era corretto. Non andava d'accordo con lo schema che prevedeva i pulsanti su ingressi diversi. Dimenticavo che lavoriamo in logica negata per via del pull up e quindi il pulsante chiude verso massa, di conseguenza il valore da riconoscere è lo zero. Qui sopra ho introdotto il ritardo richiesto. I valori della maschera andranno adattai allo schema elettrico adottato. Link al commento Condividi su altri siti More sharing options...
Vicus Inserita: 21 giugno 2016 Autore Segnala Share Inserita: 21 giugno 2016 Ecco il codice che utilizzerò se avete consigli sono i benvenuti. //****************************************************************************** // Project : PlcForum Switcher // Author : S.T. // Date : 26/03/2016 // MCU : PIC16F88 - INT.OSC. 4MHz // Compiler: MikroC PRO for PIC V6.6.2 //****************************************************************************** //****** TAGs ****************************************************************** // Inputs sbit P1 at RB4_BIT; sbit P2 at RB5_BIT; sbit P3 at RB6_BIT; sbit P4 at RB7_BIT; // Stat unsigned int MASK; unsigned int MASK_OLD; //****************************************************************************** //****************************************************************************** // Main program //****************************************************************************** void main() { //****************************************************************************** // Registro configurazione Oscillatore //****************************************************************************** OSCCON = 0x4D; // Int Osc 4 MHz //****************************************************************************** // Registri configurazione PORT[A] - PORT[B] //****************************************************************************** ADCON0 = 0x00; // Ingressi Anaogici OFF ADCON1 = 0x00; // Ingressi Anaogici OFF ANSEL = 0x00; // Ingressi Anaogici OFF TRISA = 0xF0; // RA0-RA3=OUT TRISB = 0xF0; // RB4-RB7=INPUT RB0-RB3=OUTPUT PORTA = 0x00; // Clear PORT[A] all'accensione PORTB = 0x00; // Clear PORT[B] all'accensione //****************************************************************************** // OPTION REGISTER //****************************************************************************** OPTION_REG = 0X07; //****************************************************************************** // INTCON REGISTER //****************************************************************************** INTCON = 0X00; //****************************************************************************** // Registri configurazione INTERRUPTS //****************************************************************************** PIE1 = 0X00; // PERIPHERAL INTERRUPT ENABLE REGISTER 1 PIE2 = 0X00; // PERIPHERAL INTERRUPT ENABLE REGISTER 2 PIR1 = 0X00; // PERIPHERAL INTERRUPT REQUEST REGISTER 1 PIR2 = 0X00; // PERIPHERAL INTERRUPT REQUEST REGISTER 2 PCON = 0X00; // POWER CONTROL REGISTER //############################################################################## // Main Loop //############################################################################## while(1){ MASK= portb & 0xf0; if (MASK==MASK_OLD) MASK=0; switch (MASK){ case 224: porta=0; delay_ms(10); porta=1; portb=portb&0xF0; portb=portb|0x0E; MASK_OLD=MASK; break; case 208: porta=0; delay_ms(10); porta=2; portb=portb&0xF0; portb=portb|0x0D; MASK_OLD=MASK; break; case 176: porta=0; delay_ms(10); porta=4; portb=portb&0xF0; portb=portb|0x0B; MASK_OLD=MASK; break; case 112: porta=0; delay_ms(10); porta=8; portb=portb&0xF0; portb=portb|0x07; MASK_OLD=MASK; break; } } } Link al commento Condividi su altri siti More sharing options...
gabri-z Inserita: 21 giugno 2016 Segnala Share Inserita: 21 giugno 2016 Consigli ? Ecco uno : Fa andare 'sto coso prima che mi dimentichi cosa diceva il tuo primo messaggio ! Link al commento Condividi su altri siti More sharing options...
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