contraves print preset
contraves D2 D3
contraves proprietà d2 d3

BCD_Binary_Switch ciclo lettura , count up e count down

Aggiungo la scritta “Preset”, all’inizio della prima riga del Display LCDI2C1 con Cursor 0,0 e con PrintString (“Preset”).

Nella simulazione, non avendo a disposizione un deviatore, utilizzo due interruttori; nella pratica, la medesima operazione, la farò con un solo deviatore, a zero centrale, che commuta dalla fase “Preset” a quella di “Conteggio”, spostando la levetta da una parte all’altra.

Per trasferire il contenuto della variabile “Totale”, che rappresenta il numero decimale impostato con i BCD_Binary_Switch, utilizzo un deviatore collegato al pin2 della porta D.

Dal menu “Input”, inserisco nella “dashboard” due deviatori:

  • sw_slide_sub_pcb1, collegato al pin3 della porta D; “Start”, inizio conteggio .
  • sw_slide_sub_pcb2,collegato al pin 2 della porta D che utilizzo per “read”; lettura del “Preset”.
contraves nuove variabili

collegamento dei deviatori read” e “Start”.

nuove variabili

  • Read - di tipo Bool; legge la posizione del deviatore Read.
  • Start - di tipo Bool; legge la posizione del deviatore Start.
  • count - di tipo UInt ;utilizzata per il conteggio

Conteggio up

contraves macro conteggio

L’operazione di conteggio, avviene con la macro “conteggio”.

dal menu “MACRO”, creo la macro “conteggio” che contiene la funzione “Calcolo”  con  l’espressione

count = count + 1

per richiamare la macro “Conteggio”, utilizzerò l’Interrupt TRM1.

contraves D2 read
contraves print totale

La funzione “Input Read” controlla lo stato del deviatore sw_slide_sub_pcb2.

Se il deviatore è spostato a destra:  if  Read= 1

Il programma esegue il ciclo di lettura dei BCD_Binary_Switch.

Se il deviatore è spostato a sinistra:  if Read = 0

Il programma prosegue il percorso verso il basso visualizzando il contenuto della variabile “totale”, sulla riga inferiore del display alla posizione Cursor 1,10; questo valore è visibile in Count Down.

impostazione “Preset”

contraves start conteggio

ciclo ”conteggio up”, da zero al valore di preset.

contraves count up

con “count up”, il display mostra il contenuto di “count”

sposto sw_slide_sub_pcb2 (load) su OFF e sw_slide_sub_pcb1 (start). su ON.

la funzione “Decisione” :                          Start” = 1    (D3 -> ON),  abilita TMR1  che  richiama la macro “Conteggio”.

la funzione “Decisione”:                           if totale = count

controlla il contenuto della variabile “totale” .

quando                                                  totale = count  (il conteggio raggiunge il valore di Preset) 

la funzione                                            “Output” : 1 -> D2

accende il led collegato all’uscita 2 della porta D.

l’istruzione successiva disabilita TMR1, bloccando il conteggio.

  • sw_slide_sub_pcb1, collegato al pin3 della porta D; “Start”, inizio conteggio .
  • sw_slide_sub_pcb2,collegato al pin 2 della porta D che utilizzo per “read”; lettura del “Preset”.

ClearLine(1)

pulisce la linea 1 del display

per predisporre un nuovo count down

video  “ count up”

C Code

Riccardo Monti