1. Постановка задачи
Измерить длительность нажатия кнопки. Измеренные значения сохранять в ОЗУ микроcхемы PCF8583. Измеренные значения вывести на ЖК — дисплей.
2. Текст программы
LIST P=16F84f
INCLUDE
count EQU 0×10
count1 EQU 0×20
count2 EQU 0×21
LCDcfg EQU 0×22
LCDout EQU 0×23
Time EQU 0×11
temp EQU 0×12
DATA_I2C EQU 0×34
TX_Buffer EQU 0×32
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _RC_OSC
GOTO START
Подпрограмма записи байта control по шине I2C
Write_I2C
CALL Start_Bit_I2C; Выдача на шину I2C Start Bit
Адрес часов с установленным битом для записи
MOVLW 0xA0
CALL Transmit_Data
Внутрений адрес часов для записи
MOVLW 0×00; адрес для записи
CALL Transmit_Data; на шину I2C…
MOVF DATA_I2C, w; Выдача данных
CALL Transmit_Data; на шину I2C…
CALL Stop_Bit_I2C; Выдача на шину I2C Stop Bit
RETURN
Подпрограмма сброса счётчика секунд на часах PCF 8583
Write_time_I2C
CALL Start_Bit_I2C; Выдача на шину I2C Start Bit
Адрес часов с установленным битом для записи
MOVLW 0xA0
CALL Transmit_Data
Запись регистра с которого читают с установленным битом на запись
MOVLW 0×02
CALL Transmit_Data
MOVLW 0×00
CALL Transmit_Data
MOVLW 0×00
CALL Transmit_Data
CALL Stop_Bit_I2C; Выдача на шину I2C Stop Bit
RETURN
Подпрограмма чтения результатов измерения из ОЗУ PCF 8583
Read_Saved_I2C
CALL Start_Bit_I2C; Выдача на шину I2C Start Bit
адрес часов с установленным битом для записи
MOVLW 0xA0
CALL Transmit_Data
Запись регистра с которого читают с установленным битом на запись
MOVLW 0×11
CALL Transmit_Data
Новая стартовая последовательность
CALL Start_Bit_I2C; Выдача на шину I2C Start Bit
Адрес часов с установленным битом для чтения
MOVLW 0xA1
CALL Transmit_Data
CALL Receive_data
CALL Stop_Bit_I2C; Выдача на шину I2C Stop Bit
RETURN