B
bpanjkov
Guest
У меня проблема с RTC.
Код:'************************************************* *****************************
'Проект: КПМ
'
"Этот проект является простая демонстрация, как
'Читать дату и время PCF8583 RTC (часы реального времени).
'Этот код может быть использован с любым MCU, который MSSP модуля на portc.
'
'Дата и время выводятся на ЖК-дисплее.
Для того чтобы использовать, например,
'Контактный адрес а0 PCF8583 должен быть установлен на 0.
'************************************************* *****************************Программа PCFближнего Sec As Byte
Мин ближнего как байт
ближнего гривен в виде байт
День ближнего как байт
Mn ближнего как байт
ближнего год в виде байт
TXT ближнего как Char [15]Вызов процедуры Zero_fill (ближнего значения ByRef как Char [10]) 'заполнения текста repesentation
Если длина (стоимость) = 1 Then 'с лидирующим нулем
значение [2] = значение [1]
значение [1] = 48
значение [0] = 2
End If
End Sub'Читает даты и времени с RTC (PCF8583)
Вызов процедуры Read_time (ближнего ByRef Sec как байт,
ближнего ByRef Мин как байт,
ближнего ByRef гривен в виде байт,
ближнего ByRef День как байт,
ближнего ByRef Mn как байт,
ближнего ByRef год в виде байт)
I2C_start
I2C_Wr ($ A0)
I2C_Wr (2)
I2C_Repeated_Start
I2C_Wr ($ A1)
I2C_Rd сек = (1)
а I2C_Is_Idle = 0 NOP Wend
мин = I2C_Rd (1)
а I2C_Is_Idle = 0 NOP Wend
HR = I2C_Rd (1)
а I2C_Is_Idle = 0 NOP Wend
I2C_Rd день = (1)
а I2C_Is_Idle = 0 NOP Wend
Mn = I2C_Rd (0)
а I2C_Is_Idle = 0 NOP Wend
I2C_Stop
End SubВызов процедуры Transform_time (ближнего ByRef Sec как байт,
ближнего ByRef Мин как байт,
ближнего ByRef гривен в виде байт,
ближнего ByRef День как байт,
ближнего ByRef Mn как байт,
ближнего ByRef год в виде байт)
сек = ((сек и $ F0)>> 4) * 10 (SEC и $ 0F) 'формата даты и времени
мин = ((минут и $ F0)>> 4) * 10 (мин и $ 0F)
HR = ((час и $ F0)>> 4) * 10 (HR и $ 0F)
года = ((день и $ C0))>> 6
в день = ((день и $ 30)>> 4) * 10 (день и $ 0F)
Mn = ((млн. и $ 10)>> 4) * 10 (млн. и $ 0F)
End SubВызов процедуры Display_time (ближнего Sec как байт,
Мин ближнего и байт,
Hr ближнего и байт,
День ближнего и байт,
Mn ближнего и байт,
Год как ближнего байт)
"Выход значений ЖК-дисплей
ByteToStr (день, 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 год)
ByteToStr (HR, TXT)
LCD_Out (2,6, TXT)
ByteToStr (мин, TXT)
Zero_fill (TXT)
LCD_Out (2,9, TXT)
ByteToStr (SEC, TXT)
Zero_fill (TXT)
LCD_Out (2,12, TXT)
End SubInit югу процедура
OPTION_REG = $ 7F
'TRISD = 0' PORTD назначить в качестве выходного
LCD_init (PORTB) 'Initialize ЖК-дисплей на PORTD
I2C_init (100000) 'Initialize I2C
TXT = "Дата:" подготовить и вывода статического текста на ЖК -
LCD_Out (1,1, TXT) '
Lcd_Chr (1,8 ,":") '
Lcd_Chr (1,11 ,":")
TXT = "Время:"
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 SubГлавная:
Init 'выполнять инициализацию
в то время как истинный
Read_Time (SEC, Мин, Hr, день, Mn, год) 'читать время от RTC (PCF8583)
Transform_Time (SEC, Мин, Hr, день, Mn, год) 'формат данных и время
Display_Time (SEC, Мин, Hr, день, Mn, год) 'подготовить и отображения на ЖК -
Delay_ms (1000) 'ждать 1S
Венд
конец.
Код:'************************************************* *****************************
'Проект: КПМ
'
"Этот проект является простая демонстрация, как
'Читать дату и время PCF8583 RTC (часы реального времени).
'Этот код может быть использован с любым MCU, который MSSP модуля на portc.
'
'Дата и время выводятся на ЖК-дисплее.
Для того чтобы использовать, например,
'Контактный адрес а0 PCF8583 должен быть установлен на 0.
'************************************************* *****************************Программа PCFближнего Sec As Byte
Мин ближнего как байт
ближнего гривен в виде байт
День ближнего как байт
Mn ближнего как байт
ближнего год в виде байт
TXT ближнего как Char [15]Вызов процедуры Zero_fill (ближнего значения ByRef как Char [10]) 'заполнения текста repesentation
Если длина (стоимость) = 1 Then 'с лидирующим нулем
значение [2] = значение [1]
значение [1] = 48
значение [0] = 2
End If
End Sub'Читает даты и времени с RTC (PCF8583)
Вызов процедуры Read_time (ближнего ByRef Sec как байт,
ближнего ByRef Мин как байт,
ближнего ByRef гривен в виде байт,
ближнего ByRef День как байт,
ближнего ByRef Mn как байт,
ближнего ByRef год в виде байт)
I2C_start
I2C_Wr ($ A0)
I2C_Wr (2)
I2C_Repeated_Start
I2C_Wr ($ A1)
I2C_Rd сек = (1)
а I2C_Is_Idle = 0 NOP Wend
мин = I2C_Rd (1)
а I2C_Is_Idle = 0 NOP Wend
HR = I2C_Rd (1)
а I2C_Is_Idle = 0 NOP Wend
I2C_Rd день = (1)
а I2C_Is_Idle = 0 NOP Wend
Mn = I2C_Rd (0)
а I2C_Is_Idle = 0 NOP Wend
I2C_Stop
End SubВызов процедуры Transform_time (ближнего ByRef Sec как байт,
ближнего ByRef Мин как байт,
ближнего ByRef гривен в виде байт,
ближнего ByRef День как байт,
ближнего ByRef Mn как байт,
ближнего ByRef год в виде байт)
сек = ((сек и $ F0)>> 4) * 10 (SEC и $ 0F) 'формата даты и времени
мин = ((минут и $ F0)>> 4) * 10 (мин и $ 0F)
HR = ((час и $ F0)>> 4) * 10 (HR и $ 0F)
года = ((день и $ C0))>> 6
в день = ((день и $ 30)>> 4) * 10 (день и $ 0F)
Mn = ((млн. и $ 10)>> 4) * 10 (млн. и $ 0F)
End SubВызов процедуры Display_time (ближнего Sec как байт,
Мин ближнего и байт,
Hr ближнего и байт,
День ближнего и байт,
Mn ближнего и байт,
Год как ближнего байт)
"Выход значений ЖК-дисплей
ByteToStr (день, 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 год)
ByteToStr (HR, TXT)
LCD_Out (2,6, TXT)
ByteToStr (мин, TXT)
Zero_fill (TXT)
LCD_Out (2,9, TXT)
ByteToStr (SEC, TXT)
Zero_fill (TXT)
LCD_Out (2,12, TXT)
End SubInit югу процедура
OPTION_REG = $ 7F
'TRISD = 0' PORTD назначить в качестве выходного
LCD_init (PORTB) 'Initialize ЖК-дисплей на PORTD
I2C_init (100000) 'Initialize I2C
TXT = "Дата:" подготовить и вывода статического текста на ЖК -
LCD_Out (1,1, TXT) '
Lcd_Chr (1,8 ,":") '
Lcd_Chr (1,11 ,":")
TXT = "Время:"
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 SubГлавная:
Init 'выполнять инициализацию
в то время как истинный
Read_Time (SEC, Мин, Hr, день, Mn, год) 'читать время от RTC (PCF8583)
Transform_Time (SEC, Мин, Hr, день, Mn, год) 'формат данных и время
Display_Time (SEC, Мин, Hr, день, Mn, год) 'подготовить и отображения на ЖК -
Delay_ms (1000) 'ждать 1S
Венд
конец.