B
bpanjkov
Guest
J'ai des problèmes avec CCF.
Code:'************************************************* *****************************
'Project: PCF
'
«Ce projet est simple démonstration la façon de
»Lire la date et l'heure de PCF8583 RTC (horloge temps réel).
'Le code peut être utilisé avec n'importe quel MCU qui a MSSP module à PORTC.
'
«La date et l'heure sont imprimées à cristaux liquides.
Pour utiliser l'exemple,
'A0 broches adresse du PCF8583 doit être mis à 0V.
'************************************************* *****************************programme pcfDIM Sec As Byte
DIM Min As Byte
dim Hr As Byte
dim Jour As Byte
DIM Mn As Byte
DIM Année As Byte
dim txt en tant que char [15]procédure Sub Zero_fill (valeur ByRef As char [10]) 'fill REPRÉSENTATION texte
if (length value) = 1 Then 'par un zéro
valeur [2] = valeur [1]
valeur [1] = 48
Valeur [0] = 2
End If
End Sub», Lit-heure et la date du CCF (PCF8583)
procédure Sub Read_time (ByRef DIM Sec As Byte,
DIM byref Min As Byte,
dim Hr ByRef As Byte,
dim Jour ByRef As Byte,
DIM Mn ByRef As Byte,
DIM Année ByRef As Byte)
I2C_START
I2C_Wr ($ A0)
I2C_Wr (2)
I2C_Repeated_Start
I2C_Wr ($ A1)
sec = I2C_Rd (1)
tout I2C_Is_Idle = 0 nop Wend
= min I2C_Rd (1)
tout I2C_Is_Idle = 0 nop Wend
hr = I2C_Rd (1)
tout I2C_Is_Idle = 0 nop Wend
= jour I2C_Rd (1)
tout I2C_Is_Idle = 0 nop Wend
= mn I2C_Rd (0)
tout I2C_Is_Idle = 0 nop Wend
I2C_STOP
End Subprocédure Sub Transform_time (ByRef DIM Sec As Byte,
DIM byref Min As Byte,
dim Hr ByRef As Byte,
dim Jour ByRef As Byte,
DIM Mn ByRef As Byte,
DIM Année ByRef As Byte)
sec = ((sec et F0 $)>> 4) * 10 (SEC et 0F $) 'les formats de date et heure
= min ((min et F0 $)>> 4) * 10 (min et 0F $)
hr = ((hr et F0 $)>> 4) * 10 (RH et 0F $)
year = ((jour et C0 $))>> 6
= jour ((jour et 30 $)>> 4) * 10 (jour et 0F $)
mn = ((mn et 10 $)>> 4) * 10 (mn et 0F $)
End Subprocédure Sub Display_time (DIM Sec As Byte,
DIM Min As Byte,
dim Hr As Byte,
dim Jour As Byte,
DIM Mn As Byte,
DIM Année As Byte)
«Valeurs de sortie pour écran LCD
ByteToStr (jour, txt)
Zero_fill (txt)
LCD_Out (1,6, txt)
ByteToStr (Mn, txt)
Zero_fill (txt)
LCD_Out (1,9, txt)
LCD_Chr (1,15,52 an)
ByteToStr (hr, txt)
LCD_Out (2,6, txt)
ByteToStr (min, txt)
Zero_fill (txt)
LCD_Out (2,9, txt)
ByteToStr (sec, txt)
Zero_fill (txt)
LCD_Out (2,12, txt)
End Subprocédure Sub Init
OPTION_REG = $ 7F
'TRISD = 0' PORTD désigner comme la production
Lcd_init (PORTB) 'Initialize LCD sur PORTD
I2C_init (100000) 'initialize I2C
txt = "Date:" 'élaborer et de sortie texte statique sur l'écran LCD
LCD_Out (1,1, txt) '
Lcd_Chr (1,8 ,":") '
Lcd_Chr (1,11 ,":")
txt = "Heure:"
LCD_Out (2,1, txt)
Lcd_Chr (2,8 ,":")
Lcd_Chr (2,11 ,":")
txt = "200"
LCD_Out (1,12, txt)
Lcd_Cmd (LCD_CURSOR_OFF)
End Subprincipaux:
Init 'effectuer une initialisation
while true
Read_Time (Sec, Min, Hr, Day, Mn, année) »lire temps de RTC (PCF8583)
Transform_Time (Sec, Min, Hr, Day, Mn, année) »format de données et le temps
Display_Time (Sec, Min, Hr, Day, Mn, année) »préparer et d'afficher sur l'écran LCD
Delay_ms (1000) 'wait 1s
Wend
fin.
Code:'************************************************* *****************************
'Project: PCF
'
«Ce projet est simple démonstration la façon de
»Lire la date et l'heure de PCF8583 RTC (horloge temps réel).
'Le code peut être utilisé avec n'importe quel MCU qui a MSSP module à PORTC.
'
«La date et l'heure sont imprimées à cristaux liquides.
Pour utiliser l'exemple,
'A0 broches adresse du PCF8583 doit être mis à 0V.
'************************************************* *****************************programme pcfDIM Sec As Byte
DIM Min As Byte
dim Hr As Byte
dim Jour As Byte
DIM Mn As Byte
DIM Année As Byte
dim txt en tant que char [15]procédure Sub Zero_fill (valeur ByRef As char [10]) 'fill REPRÉSENTATION texte
if (length value) = 1 Then 'par un zéro
valeur [2] = valeur [1]
valeur [1] = 48
Valeur [0] = 2
End If
End Sub», Lit-heure et la date du CCF (PCF8583)
procédure Sub Read_time (ByRef DIM Sec As Byte,
DIM byref Min As Byte,
dim Hr ByRef As Byte,
dim Jour ByRef As Byte,
DIM Mn ByRef As Byte,
DIM Année ByRef As Byte)
I2C_START
I2C_Wr ($ A0)
I2C_Wr (2)
I2C_Repeated_Start
I2C_Wr ($ A1)
sec = I2C_Rd (1)
tout I2C_Is_Idle = 0 nop Wend
= min I2C_Rd (1)
tout I2C_Is_Idle = 0 nop Wend
hr = I2C_Rd (1)
tout I2C_Is_Idle = 0 nop Wend
= jour I2C_Rd (1)
tout I2C_Is_Idle = 0 nop Wend
= mn I2C_Rd (0)
tout I2C_Is_Idle = 0 nop Wend
I2C_STOP
End Subprocédure Sub Transform_time (ByRef DIM Sec As Byte,
DIM byref Min As Byte,
dim Hr ByRef As Byte,
dim Jour ByRef As Byte,
DIM Mn ByRef As Byte,
DIM Année ByRef As Byte)
sec = ((sec et F0 $)>> 4) * 10 (SEC et 0F $) 'les formats de date et heure
= min ((min et F0 $)>> 4) * 10 (min et 0F $)
hr = ((hr et F0 $)>> 4) * 10 (RH et 0F $)
year = ((jour et C0 $))>> 6
= jour ((jour et 30 $)>> 4) * 10 (jour et 0F $)
mn = ((mn et 10 $)>> 4) * 10 (mn et 0F $)
End Subprocédure Sub Display_time (DIM Sec As Byte,
DIM Min As Byte,
dim Hr As Byte,
dim Jour As Byte,
DIM Mn As Byte,
DIM Année As Byte)
«Valeurs de sortie pour écran LCD
ByteToStr (jour, txt)
Zero_fill (txt)
LCD_Out (1,6, txt)
ByteToStr (Mn, txt)
Zero_fill (txt)
LCD_Out (1,9, txt)
LCD_Chr (1,15,52 an)
ByteToStr (hr, txt)
LCD_Out (2,6, txt)
ByteToStr (min, txt)
Zero_fill (txt)
LCD_Out (2,9, txt)
ByteToStr (sec, txt)
Zero_fill (txt)
LCD_Out (2,12, txt)
End Subprocédure Sub Init
OPTION_REG = $ 7F
'TRISD = 0' PORTD désigner comme la production
Lcd_init (PORTB) 'Initialize LCD sur PORTD
I2C_init (100000) 'initialize I2C
txt = "Date:" 'élaborer et de sortie texte statique sur l'écran LCD
LCD_Out (1,1, txt) '
Lcd_Chr (1,8 ,":") '
Lcd_Chr (1,11 ,":")
txt = "Heure:"
LCD_Out (2,1, txt)
Lcd_Chr (2,8 ,":")
Lcd_Chr (2,11 ,":")
txt = "200"
LCD_Out (1,12, txt)
Lcd_Cmd (LCD_CURSOR_OFF)
End Subprincipaux:
Init 'effectuer une initialisation
while true
Read_Time (Sec, Min, Hr, Day, Mn, année) »lire temps de RTC (PCF8583)
Transform_Time (Sec, Min, Hr, Day, Mn, année) »format de données et le temps
Display_Time (Sec, Min, Hr, Day, Mn, année) »préparer et d'afficher sur l'écran LCD
Delay_ms (1000) 'wait 1s
Wend
fin.