B
bpanjkov
Guest
Imam problem z RTC.
Koda:'************************************************* *****************************
"Projekt: PCF
"
"Ta projekt je preprosta predstavitev, kako se
"Beri uro in datum iz PCF8583 RTC (Real-time clock).
"Ta številka se lahko uporablja s katerim koli MCU, ki je MSSP modul na portc.
"
"Datum in čas sta natisnjeni na LCD.
Da bi lahko uporabljali na primer,
"Naslov pin A0 za PCF8583 mora biti nastavljen na 0V.
'************************************************* *****************************Program PCFZamutiti Sec kot bajt
Zamutiti Min kot bajt
Zamutiti Hr kot bajt
Zamutiti Dan kot bajt
Zamutiti Mn kot bajt
Zamutiti Leto kot bajt
Zamutiti txt kot char [15]sub postopek Zero_fill (Zamutiti byref vrednost kot char [10]) "napolni besedilo repesentation
če je dolžina (vrednost) = 1, nato "z ničlami
vrednost [2] = vrednost [1]
vrednost [1] = 48
vrednost [0] = 2
namen, če
end sub'Se glasi, čas in datum podatke od RTC (PCF8583)
sub postopek Read_time (Zamutiti byref Sec kot bajt,
Zamutiti byref Min kot bajt,
Zamutiti byref Hr kot bajt,
Zamutiti byref dan kot bajt,
Zamutiti byref Mn kot bajt,
Zamutiti byref Leto kot byte)
I2C_start
I2C_Wr ($ A0)
I2C_Wr (2)
I2C_Repeated_Start
I2C_Wr ($ A1)
sec = I2C_Rd (1)
medtem ko I2C_Is_Idle = 0 nop Nanašati
min = I2C_Rd (1)
medtem ko I2C_Is_Idle = 0 nop Nanašati
hr = I2C_Rd (1)
medtem ko I2C_Is_Idle = 0 nop Nanašati
dan = I2C_Rd (1)
medtem ko I2C_Is_Idle = 0 nop Nanašati
mn = I2C_Rd (0)
medtem ko I2C_Is_Idle = 0 nop Nanašati
I2C_Stop
end subsub postopek Transform_time (Zamutiti byref Sec kot bajt,
Zamutiti byref Min kot bajt,
Zamutiti byref Hr kot bajt,
Zamutiti byref dan kot bajt,
Zamutiti byref Mn kot bajt,
Zamutiti byref Leto kot byte)
sec = ((sec and $ F0)>> 4) * 10 (sec and $ 0F) "formate datuma in časa
min = ((min and $ F0)>> 4) * 10 (min and $ 0F)
h = ((hr and $ F0)>> 4) * 10 (hr and $ 0F)
leta = ((dan in $ C0))>> 6
dan = ((dan in $ 30)>> 4) * 10 (dan in $ 0F)
MN = ((Mn in $ 10)>> 4) * 10 (Mn in $ 0F)
end subsub postopek Display_time (Zamutiti Sec kot byte,
Zamutiti Min kot byte,
Zamutiti Hr kot byte,
Zamutiti Dan kot byte,
Zamutiti Mn kot byte,
Zamutiti Leto kot byte)
"Izhodne vrednosti na LCD zaslonu
ByteToStr (dan, 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 leto)
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 subsub postopek inIT
OPTION_REG = $ 7f
"TRISD = 0" imenuje portd kot proizvodnja
LCD_init (PORTB) "inicializacijo LCD na portd
I2C_init (100000) "inicializacijo I2C
txt = "Datum:", "priprava in proizvodnja statičnega besedila na LCD
LCD_Out (1,1, txt)
Lcd_Chr (1,8 ,":") "
Lcd_Chr (1,11 ,":")
txt = "Ura:"
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 subGlavni:
InIT "opravlja inicializacijo
hkrati pa res
Read_Time (Sec, Min, Hr, Day, Mn, Year) "glasi času od RTC (PCF8583)
Transform_Time (Sec, Min, Hr, Day, Mn, leto) ", format podatkov in čas
Display_Time (Sec, Min, Hr, Day, Mn, Year) "priprava in izpis na LCD
Delay_ms (1000) 'počakaj 1s
Nanašati
konec.
Koda:'************************************************* *****************************
"Projekt: PCF
"
"Ta projekt je preprosta predstavitev, kako se
"Beri uro in datum iz PCF8583 RTC (Real-time clock).
"Ta številka se lahko uporablja s katerim koli MCU, ki je MSSP modul na portc.
"
"Datum in čas sta natisnjeni na LCD.
Da bi lahko uporabljali na primer,
"Naslov pin A0 za PCF8583 mora biti nastavljen na 0V.
'************************************************* *****************************Program PCFZamutiti Sec kot bajt
Zamutiti Min kot bajt
Zamutiti Hr kot bajt
Zamutiti Dan kot bajt
Zamutiti Mn kot bajt
Zamutiti Leto kot bajt
Zamutiti txt kot char [15]sub postopek Zero_fill (Zamutiti byref vrednost kot char [10]) "napolni besedilo repesentation
če je dolžina (vrednost) = 1, nato "z ničlami
vrednost [2] = vrednost [1]
vrednost [1] = 48
vrednost [0] = 2
namen, če
end sub'Se glasi, čas in datum podatke od RTC (PCF8583)
sub postopek Read_time (Zamutiti byref Sec kot bajt,
Zamutiti byref Min kot bajt,
Zamutiti byref Hr kot bajt,
Zamutiti byref dan kot bajt,
Zamutiti byref Mn kot bajt,
Zamutiti byref Leto kot byte)
I2C_start
I2C_Wr ($ A0)
I2C_Wr (2)
I2C_Repeated_Start
I2C_Wr ($ A1)
sec = I2C_Rd (1)
medtem ko I2C_Is_Idle = 0 nop Nanašati
min = I2C_Rd (1)
medtem ko I2C_Is_Idle = 0 nop Nanašati
hr = I2C_Rd (1)
medtem ko I2C_Is_Idle = 0 nop Nanašati
dan = I2C_Rd (1)
medtem ko I2C_Is_Idle = 0 nop Nanašati
mn = I2C_Rd (0)
medtem ko I2C_Is_Idle = 0 nop Nanašati
I2C_Stop
end subsub postopek Transform_time (Zamutiti byref Sec kot bajt,
Zamutiti byref Min kot bajt,
Zamutiti byref Hr kot bajt,
Zamutiti byref dan kot bajt,
Zamutiti byref Mn kot bajt,
Zamutiti byref Leto kot byte)
sec = ((sec and $ F0)>> 4) * 10 (sec and $ 0F) "formate datuma in časa
min = ((min and $ F0)>> 4) * 10 (min and $ 0F)
h = ((hr and $ F0)>> 4) * 10 (hr and $ 0F)
leta = ((dan in $ C0))>> 6
dan = ((dan in $ 30)>> 4) * 10 (dan in $ 0F)
MN = ((Mn in $ 10)>> 4) * 10 (Mn in $ 0F)
end subsub postopek Display_time (Zamutiti Sec kot byte,
Zamutiti Min kot byte,
Zamutiti Hr kot byte,
Zamutiti Dan kot byte,
Zamutiti Mn kot byte,
Zamutiti Leto kot byte)
"Izhodne vrednosti na LCD zaslonu
ByteToStr (dan, 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 leto)
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 subsub postopek inIT
OPTION_REG = $ 7f
"TRISD = 0" imenuje portd kot proizvodnja
LCD_init (PORTB) "inicializacijo LCD na portd
I2C_init (100000) "inicializacijo I2C
txt = "Datum:", "priprava in proizvodnja statičnega besedila na LCD
LCD_Out (1,1, txt)
Lcd_Chr (1,8 ,":") "
Lcd_Chr (1,11 ,":")
txt = "Ura:"
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 subGlavni:
InIT "opravlja inicializacijo
hkrati pa res
Read_Time (Sec, Min, Hr, Day, Mn, Year) "glasi času od RTC (PCF8583)
Transform_Time (Sec, Min, Hr, Day, Mn, leto) ", format podatkov in čas
Display_Time (Sec, Min, Hr, Day, Mn, Year) "priprava in izpis na LCD
Delay_ms (1000) 'počakaj 1s
Nanašati
konec.