'******************************************************************************

$crystal = 22118400
$regfile = "AT51RC2.dat"
$baud = 9600
$large
$default Xram

Config Lcd = 20 * 2
Config Lcdpin = Pin , Db4 = P2.4 , Db5 = P2.5 , Db6 = P2.6 , Db7 = P2.7 , E = P3.4 , Rs = P3.3
Cursor Off                                                    


Const Min_utenze = 2                                         
Const Max_utenze = 12                                         
Const T_ok = 10                                               
Const T_lingua = 20                                           
Const T_up = 1                                                
Const T_down = 5                                              
Const T_menu = 60                                             
Const Max_disp = 20                                           
Const Max_lingua = 4                                          
Const Max_prezzo = 200                                        
Const Min_prezzo = 20                                         
Const C_load = 4032                                           
Const C_store = 4064                                          
Const Tsec8 = 600                                           
Const Max_cont = 60000                                     
Const Tsec3 = 15000                                           
Const Max_giri = 7500                                         
Const Debug = 0                                               

Dim B1 As Iram Byte
Dim B2 As Iram Byte
Dim B3 As Iram Byte
Dim B4 As Iram Byte
Dim B5 As Iram Byte
Dim Nutenza As Iram Byte                                     
Dim I As Iram Byte
Dim R As Iram Byte
Dim C As Iram Byte
Dim L As Iram Byte
Dim Nmess As Iram Byte
Dim Tasto As Iram Byte
Dim Tipo_pwd As Iram Byte                                     
Dim Pr As Iram Single
Dim Saldo As Iram Long
Dim Ok_pwd As Iram Bit                                       
Dim F_res As Iram Bit
Dim F_overflow As Bit                                        
Dim F_bck As Bit                                           
Dim Aux_pwd(4) As Iram Byte
Dim Ncont As Iram Byte
Dim Vcont As Iram Word                                       
Dim Porta As Iram Byte
Dim Free_l As Iram Byte
Dim Free_h As Iram Byte
Dim Fkw As Iram Bit
Dim Ind As Iram Long

'************** variabili da mappare in RAM
Dim Tot_utenze As Byte                                        
Dim Tipo_lingua As Byte                                       
Dim Prezzo(max_utenze) As Byte                                
Dim Pwd_oper(4) As Byte                                       
Dim Pwd_admin(4) As Byte                                      
Dim Tot_incasso_oper As Long                                  
Dim Tot_incasso_admin As Long                                 
Dim Tot_ricavo_admin As Long                                  
Dim Tot_kw_oper As Long                                       
Dim Tot_kw_admin As Long                                      
Dim Precont(max_utenze) As Word                               
Dim Bck_cont(max_utenze) As Word                              
Dim Rescont(max_utenze) As Single                             
Dim Max_kw As Word                                          
Dim Fbusy(max_utenze) As Byte
Dim Cbusy(max_utenze) As Word
Dim F_azz_auto As Byte                                       
'******************

Dim Parola As String * 20
Dim Aux_p As String * 15
Dim Tm As Long                                               
Dim Lingua(30) As String * 20                                 
Dim Moneta As Word
Dim Tasto1 As Byte
Dim Tasto2 As Byte
Dim Tt As Long
Dim Nc As Byte
Dim Ngiri As Long                                             
Dim Rcont As Single                                           

Declare Sub Stampa_ambiente()                                 
Declare Sub Ciclo()
Declare Sub Menu_principale()
Declare Sub Carica_lingua()
Declare Sub Gestione_tastiera()
Declare Sub Gestione_gettoniera()
Declare Sub Carica_italiano()
Declare Sub Carica_inglese()
Declare Sub Carica_francese()
Declare Sub Carica_tedesco()
Declare Sub Cambia_lingua()
Declare Sub Menu_azzeramento()
Declare Sub Leggi_tastiera()                                  
Declare Sub Centra()                                         
Declare Sub Menu_setup()
Declare Sub Menu_statistica()
Declare Sub Menu_lingua()
Declare Sub Menu_pwd()
Declare Sub Menu_prezzi()
Declare Sub Menu_utenze()
Declare Sub Modifica_prezzo()
Declare Sub Modifica_utenza()
Declare Sub Cancella_riga()
Declare Sub Check_pwd()
Declare Sub Cambia_pwd()
Declare Sub Stat_oper()
Declare Sub Stat_admin()
Declare Sub Visualizza_stat_admin()
Declare Sub Leggi_contatore(ncont As Byte , Vcont As Word , F_res As Bit , Saldo As Long)       
Declare Sub Scrivi_contatore(ncont As Byte , Rcont As Single )       
Declare Sub Test()
Declare Sub Visualizza_saldo(ncont As Byte , Saldo As Long)
Declare Sub Overflow_contatore(vcont As Word)
Declare Sub Calcola_kw(nc As Byte , Fkw As Bit)
Declare Sub Vis_incasso_oper()
Declare Sub Vis_prezzo()
Declare Sub Vis_quadratino(r As Byte , C As Byte)
Declare Sub Vis_ko_pwd()
Declare Sub Testa_menu
Declare Sub Attesa_tasto()                                   
Declare Sub Scrivi_free()
Declare Sub Menu_azz_auto()



Wait 1

Out 4095 , 1                                                  'reset pal
Out 3511 , 1                                                  'flag per menu pwd (rif 1)

Waitms 200

Enable Interrupts
Enable Int0
On Int0 Salva_ambiente

Parola = "CIAO"
Locate 1 , 1
Lcd Parola

End


'************************* INTERRUPT SALVA AMBIENTE*************************
Salva_ambiente:

Parola = "SALVA"
Locate 1 , 1
Lcd Parola

Return

