'**************************************************************** '* Name : UNTITLED.BAS * '* Author : [select VIEW...EDITOR OPTIONS] * '* Notice : Copyright (c) 2019 [select VIEW...EDITOR OPTIONS] * '* : All Rights Reserved * '* Date : 03-Oct-19 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** Device = 16F887 Config1 FOSC_INTRC_CLKOUT, WDTE_OFF, PWRTE_OFF, MCLRE_ON, CP_OFF, CPD_OFF, BOREN_ON, IESO_ON, FCMEN_ON, LVP_OFF, DEBUG_OFF Config2 BOR4V_BOR40V, WRT_OFF Declare Xtal 8 All_Digital true OSCCON = %11110000 'Oscillator goed zetten voor 8Mhz '------------------------------- Declare LCD_Type 0 Declare LCD_ENPin PORTD.1 'En-pin Declare LCD_RSPin PORTD.0 'RS pin Declare LCD_DTPin PORTD.4 '4 lines interface Declare LCD_Lines 2 Declare LCD_Interface 4 Declare LCD_DataUs = 50 Declare LCD_CommandUs = 2000 ;Er wordt gebruik gemaakt van de hardware (MSSP) module in de PIC ;Dat zijn RC.4 (pin 23) voor de SDA en RC.3 (pin 18) voor de SCL Dim Temp1 As Byte Dim Temp2 As Byte Dim TempVal As Byte Dim Seconden As Byte Dim Minuten As Byte Dim Uren As Byte Dim Dag As Byte Dim Datumdag As Byte Dim Maand As Byte Dim Jaar As Byte Dim Ctrl As Byte Dim Secs_last As Byte DelayMS 100 Seconden = 00 Minuten = 30 Uren = 11 Dag = 1 Datumdag = 14 Maand= 10 Jaar = 19 Ctrl = 0 ; Control byte) GoSub Datum_Tijd_Instellen ; initiële datum en tijd naar de RTC Cls While 1 = 1 GoSub Datum_Tijd_Ophalen Print At 1,1, "Tijd: ", Dec2 Uren, ":", Dec2 Minuten, ":", Dec2 Seconden Print At 2,1, "Dat: ", Dec2 Datumdag , "/", Dec2 Maand, "/", Dec2 Jaar If Dag=1 Then Print At 2,15,"Ma" If Dag=2 Then Print At 2,15,"Di" If Dag=3 Then Print At 2,15,"Wo" If Dag=4 Then Print At 2,15,"Do" If Dag=5 Then Print At 2,15,"Vr" If Dag=6 Then Print At 2,15,"Za" If Dag=7 Then Print At 2,15,"Zo" DelayMS 500 Secs_last = Seconden Wend Datum_Tijd_Instellen: 'Instellen Datum en Tijd op de RTC TempVal=Seconden GoSub BIN_TO_BCD Seconden=TempVal TempVal=Minuten GoSub BIN_TO_BCD Minuten=TempVal TempVal=Uren GoSub BIN_TO_BCD Uren=TempVal TempVal=Dag GoSub BIN_TO_BCD Dag=TempVal TempVal=Datumdag GoSub BIN_TO_BCD Datumdag=TempVal TempVal=Maand GoSub BIN_TO_BCD Maand=TempVal TempVal=Jaar GoSub BIN_TO_BCD Jaar=TempVal HBStart HBusOut %11010000, $0E,[%00000000] HBStop DelayMS 10 HBStart HBusOut %11010000, 0, [Seconden, Minuten, Uren , Dag, Datumdag , Maand, Jaar, Ctrl] 'Write initial values for time / Date HBStop Return Datum_Tijd_Ophalen: HBStart HBusIn %11010001, 0, [Seconden, Minuten, Uren , Dag, Datumdag , Maand, Jaar, Ctrl] HBStop 'De RTC werkt met BCD waarden, daarom moeten ze worden veranderd in Binair tbv display doeleinden TempVal=Seconden GoSub BCD_TO_BIN Seconden=TempVal TempVal=Minuten GoSub BCD_TO_BIN Minuten=TempVal TempVal=Uren GoSub BCD_TO_BIN Uren=TempVal TempVal=Dag GoSub BCD_TO_BIN Dag=TempVal TempVal=Maand GoSub BCD_TO_BIN Maand=TempVal TempVal=Jaar GoSub BCD_TO_BIN Jaar=TempVal DelayMS 100 Return '------------Converteer BIN naar BCD ------------------- BIN_TO_BCD: Temp1 = Dig TempVal, 0 Temp2 = Dig TempVal, 1 Temp2 = Temp2 << 4 TempVal = Temp1 ^ Temp2 Return '------------Converteer BCD naar BIN-------------------- BCD_TO_BIN: ; Converteer BCD naar BIN Temp1 = $0F & TempVal ; Clear top vier bits Temp1 = Dig Temp1, 0 Temp2 = TempVal >> 4 ; 4 posities opschuiven om een 2 BCD waarde te lezen Temp2 = Dig Temp2, 0 TempVal = Temp2 * 10 + Temp1 Return