ΠΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°
ΠΡΠ·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠ ΡΠΊΡΠ°Π½Π°. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΠΠ£ PCF 8583. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠ ΡΠΊΡΠ°Π½Π°. ΠΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΊΠΈ ΠΊ ΠΊΡΡΡΠΎΠ²ΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΠΠΠ£ PCF 8583… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π€Π΅Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π°Π³Π΅Π½ΡΡΡΠ²ΠΎ ΠΏΠΎ Π°ΡΠΎΠΌΠ½ΠΎΠΉ ΡΠ½Π΅ΡΠ³ΠΈΠΈ Π‘Π½Π΅ΠΆΠΈΠ½ΡΠΊΠ°Ρ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠΈΠ·ΠΈΠΊΠΎ-ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ°Ρ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡ ΠΠ°ΡΠ΅Π΄ΡΠ° ΠΠΠΠ‘ ΠΠΠ―Π‘ΠΠΠ’ΠΠΠ¬ΠΠΠ― ΠΠΠΠΠ‘ΠΠ Π ΠΠ£Π Π‘ΠΠΠΠ Π ΠΠΠΠ’Π ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅: «ΠΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°».
ΠΡΡΠΏΠΏΠ° Π‘ΡΡΠ΄Π΅Π½Ρ______________
(ΠΏΠΎΠ΄ΠΏΠΈΡΡ) ΠΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»Ρ________
(ΠΏΠΎΠ΄ΠΏΠΈΡΡ) Π‘Π½Π΅ΠΆΠΈΠ½ΡΠΊ
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ Π¦Π΅Π»Ρ ΡΠ°Π±ΠΎΡΡ: ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΠ΅Π»Ρ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ.
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΠΊΡΡΡΠΎΠ²ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ:
— ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ;
— ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°;
— ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° PIC-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅;
— ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΊΠΈ ΠΊ ΠΊΡΡΡΠΎΠ²ΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ
1. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
2. Π’Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
3. ΠΡΠ°Ρ-ΡΡ Π΅ΠΌΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°
4. ΠΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½Π°Ρ ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡ Π΅ΠΌΠ°
5. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
6. Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
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
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΠΠΠ£ PCF 8583
Save_time_I2C
MOVWF Time
CALL Start_Bit_I2C; ΠΡΠ΄Π°ΡΠ° Π½Π° ΡΠΈΠ½Ρ I2C Start Bit
ΠΠ΄ΡΠ΅Ρ ΡΠ°ΡΠΎΠ² Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π±ΠΈΡΠΎΠΌ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ
MOVLW 0xA0
CALL Transmit_Data
ΠΠ°ΠΏΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ° Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΡΠ°ΡΡ Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π±ΠΈΡΠΎΠΌ Π½Π° Π·Π°ΠΏΠΈΡΡ
MOVLW 0×10
CALL Transmit_Data
ΠΠΎΠ²Π°Ρ ΡΡΠ°ΡΡΠΎΠ²Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
CALL Start_Bit_I2C; ΠΡΠ΄Π°ΡΠ° Π½Π° ΡΠΈΠ½Ρ I2C Start Bit
ΠΠ΄ΡΠ΅Ρ ΡΠ°ΡΠΎΠ² Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π±ΠΈΡΠΎΠΌ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ
MOVLW 0xA0
CALL Transmit_Data
MOVLW 0×10
CALL Transmit_Data
MOVF Time, W
CALL Transmit_Data
MOVF Time, W
CALL Transmit_Data
CALL Stop_Bit_I2C; ΠΡΠ΄Π°ΡΠ° Π½Π° ΡΠΈΠ½Ρ I2C Stop Bit
RETURN
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΠ½Π΄ Ρ ΡΠ°ΡΠΎΠ² PCF 8583
Read_I2C
CALL Start_Bit_I2C; ΠΡΠ΄Π°ΡΠ° Π½Π° ΡΠΈΠ½Ρ I2C Start Bit
ΠΠ΄ΡΠ΅Ρ ΡΠ°ΡΠΎΠ² Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π±ΠΈΡΠΎΠΌ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ
MOVLW 0xA0
CALL Transmit_Data
ΠΠ°ΠΏΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ° Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΡΠ°ΡΡ Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π±ΠΈΡΠΎΠΌ Π½Π° Π·Π°ΠΏΠΈΡΡ
MOVLW 0×02
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
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠ΅Π½ΠΈΡ Π±Π°ΠΉΡΠ° Ρ ΡΠΈΠ½Ρ IIC
Receive_data
CLRF DATA_I2C
MOVLW 8
MOVWF temp
BCF STATUS, 5
BCF PORTB, 4; SDA — Π²Ρ ΠΎΠ΄
BCF STATUS, 5
RX_Data_LP
RLF DATA_I2C, 1
BCF PORTB, 5
NOP
NOP
NOP
NOP
NOP
BCF DATA_I2C, 0
BTFSS PORTB, 4
BCF DATA_I2C, 0
BCF PORTB, 5
DECFSZ temp, 1
GOTO RX_Data_LP
ΠΡΠΏΡΠ°Π²ΠΊΠ° Π±ΠΈΡΠ° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ASK=1
BCF STATUS, 5
BCF PORTB, 4 ;SDA — Π²ΡΡ ΠΎΠ΄
BCF STATUS, 5
BCF PORTB, 4
NOP
BCF PORTB, 5
NOP
NOP
NOP
NOP
BCF PORTB, 5
RETURN
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π±Π°ΠΉΡΠ° ΠΏΠΎ ΡΠΈΠ½Π΅ I2C
Transmit_Data
MOVWF TX_Buffer
MOVLW 8
MOVWF temp
BCF STATUS, 5; Π²ΡΠ±ΠΎΡ Π±Π°Π½ΠΊΠ° 1
BCF PORTB, 4; SDA — Π²ΡΡ ΠΎΠ΄
BCF STATUS, 5; Π²ΡΠ±ΠΎΡ Π±Π°Π½ΠΊΠ° 0
BCF PORTB, 5
TX_Data_LP
BTFSS TX_Buffer, 7
GOTO TX_Data_Lo; bits 7 = 0
BCF PORTB, 4
GOTO TX_Data_LP1
TX_Data_Lo
BCF PORTB, 4
TX_Data_LP1
BCF PORTB, 5
NOP
NOP
NOP
NOP
BCF PORTB, 5
RLF TX_Buffer, 1
DECFSZ temp, 1
GOTO TX_Data_LP
RLF TX_Buffer, 1
BCF PORTB, 4
Π§ΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΡΠ° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ — ASK
BCF STATUS, 5
BCF TRISB, 4; PORTB, 4 — Π²Ρ ΠΎΠ΄
BCF STATUS, 5
BCF PORTB, 5
NOP
NOP
NOP
NOP
NOP
BTFSC PORTB, 4
NOP
BCF PORTB, 5
RETURN
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°ΡΡΠΎΠ²ΠΎΠΉ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
Start_Bit_I2C
BCF PORTB, 4
BCF STATUS, 5; Π²ΡΠ±ΠΎΡ 1 Π±Π°Π½ΠΊΠ°
BCF PORTB, 4; SDA — ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ ΠΈΠ· MCU Π²
EEPROM
BCF STATUS, 5; Π²ΡΠ±ΠΎΡ 0 Π±Π°Π½ΠΊΠ°
BCF PORTB, 4
NOP
NOP
NOP
NOP
BCF PORTB, 5
NOP
NOP
NOP
NOP
NOP
BCF PORTB, 4
NOP
NOP
NOP
NOP
NOP
BCF PORTB, 5
RETLW 0
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠΏΠΎΠΉ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
Stop_Bit_I2C
BCF PORTB, 4
BCF STATUS, 5; Π²ΡΠ±ΠΎΡ 1 Π±Π°Π½ΠΊΠ°
BCF PORTB, 4; SDA — ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ ΠΈΠ· MCU Π²
;EEPROM
BCF STATUS, 5; Π²ΡΠ±ΠΎΡ 0 Π±Π°Π½ΠΊΠ°
BCF PORTB, 4
NOP
NOP
BCF PORTB, 5
NOP
NOP
BCF PORTB, 4
NOP
NOP
RETURN
############################################################
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ
Wait250ms
MOVLW 0×77; 250 ΠΌΡ
MOVLW count2
c03 MOVLW 0×02
MOVWF count
c02 MOVLW 0x1F
MOVWF count1
c01 DECFSZ count1
GOTO c01
DECFSZ count
GOTO c02
DECFSZ count2
GOTO c03
RETURN
Wait100
MOVLW 0×02; 100 ΠΌΠΊΡ
MOVWF count1
w50 MOVLW 0×14
MOVWF count
c24 DECFSZ count
GOTO c24
DECFSZ count1
GOTO w50
RETURN
Wait50
MOVLW 0×14; 50 ΠΌΠΊΡ
MOVWF count
c13 DECFSZ count
GOTO c13
RETURN
Wait15
MOVLW 0×06; 4 ΠΌΠΊΡ
MOVWF count
c15 DECFSZ count
GOTO c15
RETURN
Wait160
MOVLW 0×35; 160 ΠΌΠΊΡ
MOVWF count
c16 DECFSZ count
GOTO c16
RETURN
Wait1k; 1 ΡΠ΅ΠΊ
MOVLW 0×04
MOVWF count2
w2 MOVLW 0xE0
MOVWF count1
w1 DECFSZ count1
GOTO w1
DECFSZ count2
GOTO w2
RETURN
#################################################################
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° Π±Π°ΠΉΡΠ° Π½Π° ΠΠ ΡΠΊΡΠ°Π½
NumOut
MOVWF temp
BCF temp, 7; 0 Π€ΠΎΡΠΌΠΈΡΡΠ΅ΠΌ
BCF temp, 6; 0 Π½ΠΎΠΌΠ΅Ρ
BCF temp, 5; 1 ΡΡΠΎΠ»Π±ΡΠ°
BCF temp, 4; 1 ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π°
BCF LCDcfg, 0
MOVF temp, W
CALL LCD_write; ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ½Π°ΡΠ°Π»ΠΎ ΡΡΠ°ΡΡΡΡ ΡΠ΅ΡΡΠ°Π΄Ρ
RETURN
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎ Π»ΠΈΠ½ΠΈΡΠΌ Π΄Π°Π½Π½ΡΡ ΠΌΠ»Π°Π΄ΡΠ΅ΠΉ ΡΠ΅ΡΡΠ°Π΄Ρ.
LCD_writehalf
MOVWF LCDout
BCF STATUS, RP0
BCF PORTA, 4
ALL Wait250ms
MOVF LCDout, W
MOVWF PORTA
BCF PORTB, 0
CALL Wait160
BCF PORTB, 0
CLRF PORTB
CLRF PORTA
RETURN
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎ Π»ΠΈΠ½ΠΈΡΠΌ Π΄Π°Π½Π½ΡΡ ΡΠ΅Π»ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ°.
LCD_write
BCF STATUS, RP0
MOVWF LCDout
SWAPF LCDout, W;
MOVWF PORTA
BTFSS LCDcfg, 0
BCF PORTA, 4
BTFSC LCDcfg, 0
BCF PORTA, 4
BCF PORTB, 0
BTFSS LCDcfg, 0
CALL Wait250ms
BTFSC LCDcfg, 0
CALL Wait50
BCF PORTB, 0
MOVF LCDout, W
MOVWF PORTA
BTFSS LCDcfg, 0
BCF PORTA, 4
BTFSC LCDcfg, 0
BCF PORTA, 4
BCF PORTB, 0
BTFSS LCDcfg, 0
CALL Wait250ms
BTFSC LCDcfg, 0
CALL Wait50
BCF PORTB, 0
CALL Wait250ms
RETURN
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠ ΡΠΊΡΠ°Π½Π°.
IniLCD
MOVLW 0x0E
wait_power
CALL Wait1k
DECFSZ temp
GOTO wait_power
BCF LCDcfg, 0
MOVLW 0×03
CALL LCD_writehalf
CALL Wait250ms
MOVLW 0×03
CALL LCD_writehalf
CALL Wait160
BCF LCDcfg, 0
MOVLW 0×03
CALL LCD_writehalf
CALL Wait50
MOVLW 0×02
CALL LCD_writehalf
CALL Wait50
MOVLW 0×20
CALL LCD_write
CALL Wait50
MOVLW 0×20
CALL LCD_write
CALL Wait50
MOVLW 0x0E
CALL LCD_write
CALL Wait50
MOVLW 0x0F
CALL LCD_write
CALL Wait50
MOVLW B'11 111'
CALL LCD_write
CALL Wait50
MOVLW B'10 000 000'
CALL LCD_write
CALL Wait50
BCF LCDcfg, 0 MOVLW B'110'; ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΡΡΡΠΎΡΠ° ΠΠ ΡΠΊΡΠ°Π½Π°
CALL LCD_write
MOVLW 0×02;
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΡΡΡΠΎΡ Π² Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
CALL LCD_write
MOVLW 0×01;
ΠΡΠΈΡΡΠΊΠ° ΠΠ ΡΠΊΡΠ°Π½Π°
CALL LCD_write
CALL Wait250ms
CALL Wait250ms
CALL Wait250ms
RETURN
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
OutTime
BCF LCDcfg, 0
MOVLW 0×02; ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΡΡΡΠΎΡ Π² Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
CALL LCD_write
CALL Read_I2C
SWAPF DATA_I2C, W
CALL NumOut
MOVF DATA_I2C, W
CALL NumOut
CALL Save_time_I2C; ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ Π² ΠΠΠ£
PCF 8583
RETURN
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ
GetTime
BCF LCDcfg, 0
MOVLW 0×02; ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΡΡΡΠΎΡ Π² Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅.
CALL LCD_write
CALL Read_I2C; read seconds from clock
MOVF DATA_I2C, W
MOVWF Time
CALL Save_time_I2C; ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ Π² ΠΠΠ£
PCF 8583
CALL Read_Saved_I2C; ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΠΠ£
PCF 8583
SWAPF DATA_I2C, W
CALL NumOut; Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π° ΠΠ ΡΠΊΡΠ°Π½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ
MOVF DATA_I2C, W
CALL NumOut; Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π° ΠΠ ΡΠΊΡΠ°Π½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ
RETURN
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
START
CLRF PORTB
CLRF PORTA
BCF STATUS, RP0
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠΎΡΡΠΎΠ²
MOVLW B'11 100 000'
MOVWF TRISA&0x7F
MOVLW B'11 001 100'
MOVWF TRISB
BCF OPTION_REG, 7
CALL IniLCD;
ΠΡΠ·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠ ΡΠΊΡΠ°Π½Π°.
BCF STATUS, RP0; Π²ΡΠ±ΠΎΡ 0Π³ΠΎ Π±Π°Π½ΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ
CALL Read_Saved_I2C; ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΠΠ£
PCF 8583 ΠΏΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ
SWAPF DATA_I2C, W
CALL NumOut; Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π° ΠΠ ΡΠΊΡΠ°Π½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ
OVF DATA_I2C, W
CALL NumOut; Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π° ΠΠ ΡΠΊΡΠ°Π½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ
MZ
BTFSC PORTB, 3
GOTO MZ; ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ MZ, ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π΅ Π½Π°ΠΆΠ°ΡΠ°
CALL Write_time_I2C; ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ±ΡΠΎΡ ΡΡΠ΅ΡΡΠΈΠΊΠ°, Π½Π°ΡΠ°Π»ΠΎ ΠΎΡΡΡΠ΅ΡΠ°
M1
BTFSS PORTB, 3
GOTO M1; ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ M1, ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°ΡΠ°, ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΎΡΠΏΡΡΠΊΠ°Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΡΠ»ΠΈ ΠΎΡΠΏΡΡΡΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ,
CALL GetTime;
ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ
CALL Wait250ms
GOTO MZ; Π·Π°ΡΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
END
4. ΠΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½Π°Ρ ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡ Π΅ΠΌΠ°
5. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
ΠΠΎΠ·ΠΈΡΠΈΡ | Π’ΠΈΠΏ, Π½ΠΎΠΌΠΈΠ½Π°Π» | ΠΠΎΠ». | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ | |
ΡΡ. | ||||
ΠΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡΡ | ||||
Π‘1 | 25Π — 10,0ΠΌΠΊΠ€ | |||
Π‘2 | SMD1206 — 0,1ΠΌΠΊΠ€ | |||
ΠΠΈΠΊΡΠΎΡΡ Π΅ΠΌΡ | ||||
DD1 | ΠΠΠ HD44780 | |||
DD2 | Π§Π°ΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ PCF 8583 | |||
Π Π΅Π·ΠΈΡΡΠΎΡΡ | ||||
R1 | 1ΠΊΠΠΌ | |||
R2 | 5,1ΠΊΠΠΌ | |||
R3 | 5,1ΠΊΠΠΌ | |||
R4 | 1ΠΊΠΠΌ | |||
ΠΡΠΎΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ | ||||
Z1 | ΠΠ²Π°ΡΡΠ΅Π²ΡΠΉ ΡΠ΅Π·ΠΎΠ½Π°ΡΠΎΡ 32 768ΠΡ | |||
SB3 | ΠΠ½ΠΎΠΏΠΊΠΈ ΠΠΠ½ — 159 | |||
SW1.1 | ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ | |||
SW1.2 | ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ | |||
XC1 | ΡΠ°Π·ΡΠ΅ΠΌ | |||
XC2 | ΡΠ°Π·ΡΠ΅ΠΌ | |||
6. Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
1) Π―ΡΠ΅Π½ΠΊΠΎΠ² Π. Π‘. — ΠΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ MicroChip ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄-ΡΡΠ²ΠΎ (2002 Π³ΠΎΠ΄).
2) ΠΠ°ΠΉΠΊΠ» ΠΡΠ΅Π΄ΠΊΠΎ. — Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ PIC — ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°ΠΌ: ΠΠ΅Ρ. Ρ Π°Π½Π³Π». — Π.: ΠΠΠ ΠΡΠ΅ΡΡ, 2006. — 512Ρ.: ΠΈΠ». (Π‘Π΅ΡΠΈΡ «Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ»)
3) ΠΡΡΡ Π»Π΅ΠΊΡΠΈΠΉ.