Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡΠ°-ΡΠ΅ΡΠΌΠΎΡΡΠ°ΡΠ° Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»ΡΠ½ΠΎΠΌ Π΄Π°ΡΡΠΈΠΊΠ΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡ DS18B20 ΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ PIC16F84
PIC16F84 (ΡΠΈΡ.2) ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Ρ ΠΠΠΠ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ². ΠΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ 1K x 14 Π±ΠΈΡ EEPROM Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, 8-Π±ΠΈΡΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ 64Π±Π°ΠΉΡ EEPROM ΠΏΠ°ΠΌΡΡΠΈ Π΄Π°Π½Π½ΡΡ . ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π½ΠΈΠ·ΠΊΠΎΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ ΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎΠΌ PIC16F5X ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠ»ΠΈΡΠΈΠΉ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ°Π½Π΅Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ². ΠΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡΠ°-ΡΠ΅ΡΠΌΠΎΡΡΠ°ΡΠ° Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»ΡΠ½ΠΎΠΌ Π΄Π°ΡΡΠΈΠΊΠ΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡ DS18B20 ΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ PIC16F84 (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡΠ° DS18B20
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΠ PIC16F84
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡ-ΡΠ΅ΡΠΌΠΎΡΡΠ°Ρ Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»ΡΠ½ΠΎΠΌ Π΄Π°ΡΡΠΈΠΊΠ΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡ DS18B20, ΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ PIC16F84. ΠΠ°Π½Π½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΈ Π²ΡΠ²ΠΎΠ΄Π° Π΅Π΅ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅ΠΉ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡΠ° DS18B20
DS18B20 — ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΎΡ 9 Π΄ΠΎ 12-bit, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² EEPROM ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈΠ±ΠΎΡΠ°. DS18B20 ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎ 1-Wire ΡΠΈΠ½Π΅ ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ Π½Π° Π»ΠΈΠ½ΠΈΠΈ ΡΠ°ΠΊ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π³ΡΡΠΏΠΏΠ΅. ΠΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π° ΡΠΈΠ½Π΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ.
ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΎΡ -55Β°C Π΄ΠΎ +125Β°C ΠΈ ΡΠΎΡΠ½ΠΎΡΡΡΡ 0.5Β°C Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ -10Β°C Π΄ΠΎ +85Β°C. Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, DS18B20 ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π»ΠΈΠ½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ («parasite power»), ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ.
ΠΠ°ΠΆΠ΄ΡΠΉ DS18B20 ΠΈΠΌΠ΅Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ 64-Π±ΠΈΡΠ½ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ, ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ Π΄Π°ΡΡΠΈΠΊΠΎΠ² DS18B20 ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ½Π΅. Π’Π°ΠΊΠΎΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄Π°ΡΡΠΈΠΊΠΎΠ² DS18B20, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎ Π±ΠΎΠ»ΡΡΠΎΠΌΡ ΡΡΠ°ΡΡΠΊΡ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠ·Π²Π»Π΅ΡΡ Π²ΡΠ³ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ, Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π² Π·Π΄Π°Π½ΠΈΡΡ , ΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ°ΡΠΈΠ½Π°Ρ , Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ.
Π ΠΈΡ. 1 ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΡ DS18B20, ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄ΠΎΠ² Π΄Π°ΡΡΡΡ Π² Π’Π°Π±Π»ΠΈΡΠ΅ 1. 64-Π±ΠΈΡΠΎΠ²ΡΠΉ ROM Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ±ΠΎΡΠ°. ΠΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°Ρ ΠΏΠ°ΠΌΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 2-Π±Π°ΠΉΡΠΎΠ²ΡΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ²Π° ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡΠΎΠ²ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ (ΡΡΠΈΠ³Π³Π΅ΡΠ½ΠΎΠΉ ΡΡ Π΅ΠΌΡ TH ΠΈ TL), ΠΈ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. Π Π΅Π³ΠΈΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΊ 9, 10, 11, ΠΈΠ»ΠΈ 12 Π±ΠΈΡΠ°ΠΌ, ΡΡΠΎ ΠΈ Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ. TH, TLΠΈ ΡΠ΅Π³ΠΈΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ½Π΅ΡΠ³ΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡ (EEPROM), ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ½ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ±ΠΎΡ — Π²ΡΠΊΠ»ΡΡΠ΅Π½.
DS18B20 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ 1-Wire ΠΏΡΠΎΡΠΎΠΊΠΎΠ» — ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΠΈΠ½Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΈΠ³Π½Π°Π». Π¨ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΡ ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡΠΈΠΉ ΡΠ΅Π·ΠΈΡΡΠΎΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΡΠΈΠ½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· Z-ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈΠ»ΠΈ Π²Ρ ΠΎΠ΄ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΡΡΠΎΠΊΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡ ΡΠΈΠ½Ρ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ (ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ) ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΈ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ Π΄Π°ΡΡΠΈΠΊΠ°ΠΌ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ 64-Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ±ΠΎΡΠ°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΈΠ±ΠΎΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΡΠΈΡΠ»ΠΎ ΠΏΡΠΈΠ±ΠΎΡΠΎΠ², ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠ½Π΅, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎ.
ΠΡΡΠ³Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ DS18B20 — ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°ΡΡΠΈΠΉ ΡΠ΅Π·ΠΈΡΡΠΎΡ. ΠΡΡΠΎΠΊΠΈΠΉ ΡΠΈΠ³Π½Π°Π» ΡΠΈΠ½Ρ Π·Π°ΡΡΠΆΠ°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡ (CPP), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΈΡΠ°Π΅Ρ ΠΏΡΠΈΠ±ΠΎΡ, ΠΊΠΎΠ³Π΄Π° Π½Π° ΡΠΈΠ½Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½ΠΎΡΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ «ΠΠ°ΡΠ°Π·ΠΈΡΠ½ΠΎΠ΅ ΠΏΠΈΡΠ°Π½ΠΈΠ΅». ΠΡΠΈ ΡΡΠΎΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΠΌΠ°Ρ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ + 100 Β°C. ΠΠ»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡ Π΄ΠΎ + 125 Β°C Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½Π΅ΡΠ½Π΅Π΅ ΠΏΠΈΡΠ°Π½ΠΈΠ΅.
Π ΠΈΡ. 1. ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° DS18B20
Π’Π°Π±Π»ΠΈΡΠ° 1
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΠ PIC16F84
PIC16F84 (ΡΠΈΡ.2) ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Ρ ΠΠΠΠ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ². ΠΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ 1K x 14 Π±ΠΈΡ EEPROM Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, 8-Π±ΠΈΡΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ 64Π±Π°ΠΉΡ EEPROM ΠΏΠ°ΠΌΡΡΠΈ Π΄Π°Π½Π½ΡΡ . ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π½ΠΈΠ·ΠΊΠΎΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ ΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎΠΌ PIC16F5X ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠ»ΠΈΡΠΈΠΉ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ°Π½Π΅Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ². ΠΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° (14 Π±ΠΈΡ ΡΠΈΡΠΈΠ½ΠΎΠΉ) ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΊΠ» (400 Π½Ρ ΠΏΡΠΈ 10 ΠΠΡ), ΠΊΡΠΎΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π° Π΄Π²Π° ΡΠΈΠΊΠ»Π° (800 Π½Ρ). PIC16F84 ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅, ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠ΅Π΅ ΠΎΡ ΡΠ΅ΡΡΡΠ΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ², ΠΈ Π²ΠΎΡΡΠΌΠΈΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΉ ΡΡΠ΅ΠΊ. ΠΠ΅ΡΠΈΡΠ΅ΡΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ 8-Π±ΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠΌΠ΅Ρ/ΡΡΠ΅ΡΡΠΈΠΊ Ρ 8-Π±ΠΈΡΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΡΠΌ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΌ (ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ 16 — Π±ΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠΌΠ΅Ρ) ΠΈ 13 Π»ΠΈΠ½ΠΈΠΉ Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°. ΠΡΡΠΎΠΊΠ°Ρ Π½Π°Π³ΡΡΠ·ΠΎΡΠ½Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ (25 ΠΌΠ ΠΌΠ°ΠΊΡ. Π²ΡΠ΅ΠΊΠ°ΡΡΠΈΠΉ ΡΠΎΠΊ, 20 ΠΌΠ ΠΌΠ°ΠΊΡ. Π²ΡΡΠ΅ΠΊΠ°ΡΡΠΈΠΉ ΡΠΎΠΊ) Π»ΠΈΠ½ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° ΡΠΏΡΠΎΡΠ°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ΠΈ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ, ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ°Ρ ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² PIC16F84 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠΎΠΌ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΡΠΈΠΌΡΠ»ΡΡΠΎΡΠΎΠΌ, Π²Π½ΡΡΡΠΈΡΡ Π΅ΠΌΠ½ΡΠΌ ΡΠΌΡΠ»ΡΡΠΎΡΠΎΠΌ (ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠΌΡ MicrochiΡ) ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΡΠΎΡΠΎΠΌ.
Π ΠΈΡ. 2. ΠΠ PIC16F84
Π‘Π΅ΡΠΈΡ PIC16F84 ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ ΡΠΏΠ΅ΠΊΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΡ ΡΡ Π΅ΠΌ Π²ΡΡΠΎΠΊΠΎΡΠΊΠΎΡΠΎΡΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΌΠΈ ΠΈ ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΡΠΌΠΈ Π΄ΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ½ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ΅ΠΌΠΎΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΊΠΎΠ², ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΡ ΠΏΡΠΈΠ±ΠΎΡΠΎΠ² ΠΈ ΡΠ²ΡΠ·Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ². ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΠΠ£ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ (ΠΊΠΎΠ΄Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΊΠ°, ΡΠΊΠΎΡΠΎΡΡΠΈ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ, ΡΠ°ΡΡΠΎΡΡ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° ΠΈ Ρ. Π΄.).
ΠΠ°Π»ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΠΎΡΠΏΡΡΠΎΠ², ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΡΠ°ΠΆΠ°, Π΄Π΅Π»Π°Π΅Ρ ΡΡΡ ΡΠ΅ΡΠΈΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΡΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΈΠ·ΠΊΠ°Ρ ΡΠ΅Π½Π°, ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ½ΠΎΡΡΡ, Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° Π΄Π΅Π»Π°Π΅Ρ PIC16F84 ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ Π΄Π°ΠΆΠ΅ Π² ΡΠ΅Ρ ΠΎΠ±Π»Π°ΡΡΡΡ , Π³Π΄Π΅ ΡΠ°Π½Π΅Π΅ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΠΈΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΉΠΌΠ΅ΡΡ, Π·Π°ΠΌΠ΅Π½Π° ΠΆΠ΅ΡΡΠΊΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ.
Π‘Π»Π΅Π΄ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ EEPROM ΠΊΡΠΈΡΡΠ°Π»Π»Π° PIC16F84 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΠΈΡΠ°ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ Π·Π°Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΎΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ:
ΠΡΡΠΎΠΊΠΎΡΠΊΠΎΡΠΎΡΡΠ½ΠΎΠΉ RISC ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ
Β· ΡΠΎΠ»ΡΠΊΠΎ 35 ΠΏΡΠΎΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄;
Β· Π²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΊΠ» (400ns), ΠΊΡΠΎΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ Π·Π° Π΄Π²Π° ΡΠΈΠΊΠ»Π°;
Β· ΡΠ°Π±ΠΎΡΠ°Ρ ΡΠ°ΡΡΠΎΡΠ° 0 ΠΡ… 10 ΠΠΡ (min 400 Π½Ρ ΡΠΈΠΊΠ» ΠΊΠΎΠΌΠ°Π½Π΄Ρ);
Β· 14- Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ;
Β· 8- Π±ΠΈΡΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅;
Β· 1024×14 ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΠΊΡΠΈΡΡΠ°Π»Π»Π΅ (EEPROM);
Β· 36×8 ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ;
Β· 64×8 ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΠΎΠΉ EEPROM ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ ;
Β· Π²ΠΎΡΡΠΌΠΈΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΉ ΡΡΠ΅ΠΊ;
Β· ΠΏΡΡΠΌΠ°Ρ, ΠΊΠΎΡΠ²Π΅Π½Π½Π°Ρ ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄;
Β· ΡΠ΅ΡΡΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ:
Π¨ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²Ρ ΠΎΠ΄ INT,
Π¨ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΠ° RTCC,
Π¨ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π½Π° Π»ΠΈΠ½ΠΈΡΡ ΠΏΠΎΡΡΠ° B,
Π¨ ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ°ΠΌΡΡΡ EEPROM.
ΠΠ΅ΡΠΈΡΠ΅ΡΠΈΡ ΠΈ ΠΠ²ΠΎΠ΄/ΠΡΠ²ΠΎΠ΄
Π 13 Π»ΠΈΠ½ΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° Ρ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ;
Π Π²ΡΠ΅ΠΊΠ°ΡΡΠΈΠΉ/Π²ΡΡΠ΅ΠΊΠ°ΡΡΠΈΠΉ ΡΠΎΠΊ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π°ΠΌΠΈ.
Β· ΠΌΠ°ΠΊΡ. Π²ΡΡΠ΅ΠΊΠ°ΡΡΠΈΠΉ ΡΠΎΠΊ — 20 ΠΌΠ.,
Β· ΠΌΠ°ΠΊΡ. Π²ΡΠ΅ΠΊΠ°ΡΡΠΈΠΉ ΡΠΎΠΊ — 25 ΠΌΠ.,
Π TMR0: 8 — Π±ΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠΌΠ΅Ρ/ΡΡΠ΅ΡΡΠΈΠΊ RTCC Ρ 8-Π±ΠΈΡΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΡΠΌ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΌ.
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°
Π Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ±ΡΠΎΡ ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ;
Π ΡΠ°ΠΉΠΌΠ΅Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠ±ΡΠΎΡΠ΅;
Π ΡΠ°ΠΉΠΌΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°;
Π Watchdog ΡΠ°ΠΉΠΌΠ΅Ρ WDT Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΌ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ;
Π EEPROM Π±ΠΈΡ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΊΠΎΠ΄Π°;
Π ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ SLEEP;
Π Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π±ΠΈΡΡ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° Π²ΠΎΠ·Π±ΡΠΆΠ΄Π΅Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°:
Π¨ RC Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ: RC;
Π¨ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΊΠ²Π°ΡΡΠ΅Π²ΡΠΉ ΡΠ΅Π·ΠΎΠ½Π°ΡΠΎΡ: XT;
Π¨ Π²ΡΡΠΎΠΊΠΎΡΠ°ΡΡΠΎΡΠ½ΡΠΉ ΠΊΠ²Π°ΡΡΠ΅Π²ΡΠΉ ΡΠ΅Π·ΠΎΠ½Π°ΡΠΎΡ: HS;
Π¨ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ½ΡΠΉ Π½ΠΈΠ·ΠΊΠΎΡΠ°ΡΡΠΎΡΠ½ΡΠΉ ΠΊΡΠΈΡΡΠ°Π»Π»: LP;
Π Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ EEPROM ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π΄Π°Π½Π½ΡΡ ; ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π΅ Π½ΠΎΠΆΠΊΠΈ.
ΠΠΠΠ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ
Π ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ½Π°Ρ Π²ΡΡΠΎΠΊΠΎΡΠΊΠΎΡΠΎΡΡΠ½Π°Ρ ΠΠΠΠ EPROM ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ;
Π ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅;
Π ΡΠΈΡΠΎΠΊΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡ:
Β· ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠΉ: 2.0… 6.0 Π, 0…+70Π‘,
Β· ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΡΠΉ: 2.0… 6.0 Π, −40…+70Π‘,
Β· Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ: 2.0… 6.0 Π, 40…+125Π‘;
Π Π½ΠΈΠ·ΠΊΠΎΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅:
Β· 2 ΠΌΠ ΡΠΈΠΏΠΈΡΠ½ΠΎ Π΄Π»Ρ 5 Π, 4ΠΠΡ,
Β· 15 ΠΌΠΊΠ ΡΠΈΠΏΠΈΡΠ½ΠΎ Π΄Π»Ρ 2 Π, 32ΠΠΡ,
Β· 1 ΠΌΠΊΠ ΡΠΈΠΏΠΈΡΠ½ΠΎ Π΄Π»Ρ SLEEP ΡΠ΅ΠΆΠΈΠΌΠ° ΠΏΡΠΈ 2 Π.
Π’ΠΈΠΏΡ ΠΊΠΎΡΠΏΡΡΠΎΠ² ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ
ΠΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΏΡΡΠΎΠ² Π΄Π»Ρ ΠΊΡΠΈΡΡΠ°Π»Π»ΠΎΠ² PIC16F84. Π’ΠΈΠΏ ΠΊΠΎΡΠΏΡΡΠ° ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ΅ ΠΏΡΠΈ Π·Π°ΠΊΠ°Π·Π΅ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌ. ΠΠΎΡΠΏΡΡΠ° Π±ΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ 18 ΠΡΠ²ΠΎΠ΄Π°ΠΌΠΈ.
PDIP — ΠΠ±ΡΡΠ½ΡΠΉ ΠΏΠ»Π°ΡΡΠΌΠ°ΡΡΠΎΠ²ΡΠΉ Π΄Π²ΡΡ ΡΡΠ΄Π½ΡΠΉ ΠΊΠΎΡΠΏΡΡ
SOIC — ΠΠ°Π»ΠΎΠ³Π°Π±Π°ΡΠΈΡΠ½ΡΠΉ DIP ΠΊΠΎΡΠΏΡΡ Π΄Π»Ρ ΠΌΠΎΠ½ΡΠ°ΠΆΠ° Π½Π° ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ
ΠΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΈ Π·Π°ΠΊΠ°Π·Π΅
ΠΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ:
Π€ΠΈΡΠΌ. Π½ΠΎΠΌΠ΅Ρ/Π§Π°ΡΡΠΎΡΠ° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°/Π’Π΅ΠΌΠΏΠ΅Ρ. Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½/ΠΠΎΡΠΏΡΡ/ΠΡΠΈΠΌΠ΅Ρ.
Π€ΠΈΡΠΌ. Π½ΠΎΠΌΠ΅Ρ: PIC16F84 Vdd range 4…6 V,
PIC16LC84 Vdd range 2…6 V;
Π§Π°ΡΡΠΎΡΠ° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°:
04 —-> 4 mHz (Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ 4 ΠΠΡ. ΠΏΡΠΈΠ±ΠΎΡΠΎΠ² ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎ 10 ΠΠΡ.!),
10 —-> 10mHz;
Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ½ΡΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π±ΡΠ²Π°Π΅Ρ:
— ΠΎΡ 0Π‘ Π΄ΠΎ +70Π‘,
I ΠΎΡ-40Π‘ Π΄ΠΎ +85Π‘,
E ΠΎΡ-40Π‘ Π΄ΠΎ +125Π‘;
ΠΠΎΡΠΏΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ:
P — ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΠ»Π°ΡΡΠΌΠ°ΡΡΠΎΠ²ΡΠΉ DIP,
SO -300 mil SOIC.
Π ΠΈΡ. 3. Π’Π΅ΡΠΌΠΎΠΌΠ΅ΡΡ Ρ Π²ΡΠ½ΠΎΡΠ½ΡΠΌ Π΄Π°ΡΡΠΈΠΊΠΎΠΌ
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ°Π±ΠΎΡΡ
Π Π°Π±ΠΎΡΠ° ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΎΠΏΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Π΄Π°ΡΡΠΈΠΊΠ° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΡΠ° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅ΠΉ, ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π΅Π΅ ΠΈ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, ΠΠ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅Π»Π΅.
Π ΠΈΡ. 4. Π‘ΡΡΡΠΊΡΡΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡΠ° ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ
Π ΠΈΡ. 5. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡΠ° Π ΠΈΡ. 6. ΠΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡΠ° Π ΠΈΡ. 7. ΠΠ΅ΡΠ°ΡΠ½Π°Ρ ΠΏΠ»Π°ΡΠ° ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡΠ°
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
LIST P=16F84
;ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΡΠ΅ΡΡΡΡΠΎΠ²
#include
__config _XT_OSC & _WDT_OFF & _PWRTE_ON
F0 EQU 0
RTIF equ 2
;ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
NumL EQU 0x0C
NumH EQU 0x0D
Thou EQU 0x0E
Hund EQU 0x0F
Tens EQU 0×10
Ones EQU 0×11
I EQU 0×13
A EQU 0×14
BACKUPW EQU 0×15
BACKUPS EQU 0×16
RAZR0 EQU 0×17 ;Π’ΡΠΈ ΡΡΠ΅ΠΉΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠ΅ΠΌΠΈΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ
RAZR1 EQU 0×18
RAZR2 EQU 0×19
;Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ FLAGS ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±ΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎ:
;0 — Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° Π²ΡΠ·ΠΎΠ²Π° ΡΠ°ΠΉΠΌΠ΅ΡΠ°
;1 — Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ°ΠΉΠΌΠ΅ΡΠ°
;2 — Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π² ΡΠΊΡΠ°Π½Π½ΠΎΠΌ Π±ΡΡΠ΅ΡΠ΅ ΠΎΡΡΠ°Π²ΡΠ΅Π³ΠΎΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΡΠ°ΠΉΠΌΠ΅ΡΠ΅
;3 — ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²ΡΠ·ΠΎΠ²Π° ΡΠ°ΠΉΠΌΠ΅ΡΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΡΠΈΠ³Π½Π°Π»
;4 — Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ Π²ΡΠ΄Π΅ΡΠΆΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΡ ΡΡΠ»ΠΎΠ²Π½ΡΠΉ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΡΠΈΠ³Π½Π°Π»
;5 — ΡΠ°Π· Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠΉ DS1820
;6 — Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ
FLAGS EQU 0x1A
J EQU 0x1B
K EQU 0x1C
TIME0 EQU 0x1D
TIME1 EQU 0x1E
PA EQU 0x1F
T7SEG0 EQU 0×20
T7SEG1 EQU 0×21
T7SEG2 EQU 0×22
T_IND EQU 0×23
TEMP_READH EQU 0×24
TEMP_READL EQU 0×25
TL EQU 0×26
TH EQU 0×27
TIME2 EQU 0×28
I_BYTE EQU 0×29
_N EQU 0x2A
TEMP EQU 0x2B
O_BYTE EQU 0x2C
LOOP1 EQU 0x2D
LOOP2 EQU 0x2E
T_ALARM EQU 0x2F
DT_ALARM EQU 0×30
CONSTANT DATA_PIN=7
;****** ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ *******
BSF STATUS, RP0 ;Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ 1
CLRF TRISA ;ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΠΏΠΎΡΡΠ°, Π ΠΈ Π Π½Π° Π²ΡΠ²ΠΎΠ΄
CLRF TRISB
GOTO BEGIN_PROG
;***** Π’ΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ΠΎΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°*************
BCF INTCON, GIE ;ΠΠ°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
MOVWF BACKUPW ;Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°
MOVF STATUS, 0 ;ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ° STATUS
MOVWF BACKUPS
;ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΡ
INCF TIME0, 1
MOVF TIME0, 0
SUBLW.81 ;122
BTFSC STATUS, C
GOTO L22
CLRF TIME0
INCF TIME2, 1
L18 MOVF TIME2, 0
SUBLW.2 ;Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΡΠ°Π²Π½ΡΠΌ 1 ΡΠ΅ΠΊ.
BTFSC STATUS, C
GOTO L26
CLRF TIME2
BSF FLAGS, 5
L26 BTFSS FLAGS, 0 ;ΠΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ
GOTO L22 ;Π²ΡΠ·ΠΎΠ²Π° ΡΠ°ΠΉΠΌΠ΅ΡΠ°
BTFSS FLAGS, 1 ;ΠΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ°ΠΉΠΌΠ΅ΡΠ°
GOTO L22
BCF FLAGS, 2
BSF FLAGS, 7
INCF T_ALARM, 1
MOVF T_ALARM, 0
SUBLW 0x7D ;ΠΡΠ»ΠΈ Π΄ΠΎΡΡΠΈΠ³ 125 Π³ΡΠ°Π΄ΡΡΠΎΠ², ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΠΌ Π΄ΠΎ -55 Π³ΡΠ°Π΄ΡΡΠΎΠ²
BTFSS STATUS, Z
GOTO L22
MOVLW 0xC9
MOVWF T_ALARM
;ΠΠΏΡΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
L22 BCF PA, 0 ;Π€Π»Π°Π³ΠΈ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅
BCF FLAGS, 1 ;ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ.
BCF PA, 1 ;ΠΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΡ
BCF PA, 2
BSF PA, 4
MOVF PA, 0
MOVWF PORTA
BSF STATUS, RP0 ;Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ 1
BSF TRISB, 5 ;Π Π°Π·ΡΡΠ΄Ρ ΠΏΠΎΡΡΠ° Π, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π½Π° Π²Π²ΠΎΠ΄
BSF TRISB, 6
BCF STATUS, RP0 ;Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ 0
BTFSC PORTB, 6 ;Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ»Π°Π³ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ
GOTO L23
BSF FLAGS, 0
MOVLW.255
MOVWF T_IND
L23 DECFSZ T_IND
GOTO L24
BCF FLAGS, 0
BTFSC FLAGS, 7
CALL SEEPROM
BCF FLAGS, 7
L24 BTFSS PORTB, 5
BSF FLAGS, 1
BSF STATUS, RP0 ;Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ 1
BCF TRISB, 5 ;Π Π°Π·ΡΡΠ΄Ρ ΠΏΠΎΡΡΠ° Π, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ Π½Π° Π²ΡΠ²ΠΎΠ΄
BCF TRISB, 6
BCF STATUS, RP0 ;Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ 1
;ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ RAZR0, RAZR1, RAZR2
MOVLW.0 ;ΠΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ ΡΠ°Π·ΡΡΠ΄ 0
SUBWF I, 0
BTFSS STATUS, Z
GOTO L2
MOVLW B'10 000 000'
ANDWF PORTB, 1 ;ΠΡΠΈΡΠ°Π΅ΠΌ ΡΠ°Π·ΡΡΠ΄Ρ ΠΏΠΎΡΡΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΊ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΡ
MOVF RAZR0, 0
IORWF PORTB, 1 ;ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΡ ΡΠΈΡΡΡ
BSF PA, 0 ;ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ°Π·ΡΡΠ΄ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ°
MOVF PA, 0
MOVWF PORTA
GOTO L4
L2 MOVLW.1 ;ΠΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ ΡΠ°Π·ΡΡΠ΄ 1
SUBWF I, 0
BTFSS STATUS, Z
GOTO L3
MOVLW B'10 000 000'
ANDWF PORTB, 1 ;ΠΡΠΈΡΠ°Π΅ΠΌ ΡΠ°Π·ΡΡΠ΄Ρ ΠΏΠΎΡΡΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΊ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΡ
MOVF RAZR1, 0
IORWF PORTB, 1 ;ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΡ ΡΠΈΡΡΡ
BSF PA, 1
BTFSC FLAGS, 6
BCF PA, 4
BTFSS FLAGS, 6
BSF PA, 4
MOVF PA, 0
MOVWF PORTA
GOTO L4
L3 MOVLW B'10 000 000'
ANDWF PORTB, 1 ;ΠΡΠΈΡΠ°Π΅ΠΌ ΡΠ°Π·ΡΡΠ΄Ρ ΠΏΠΎΡΡΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΊ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΡ
MOVF RAZR2, 0
IORWF PORTB, 1 ;ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΡ ΡΠΈΡΡΡ
BSF PA, 2
MOVF PA, 0
MOVWF PORTA
L4 INCF I, 1
MOVLW.3 ;ΠΠ±Π½ΡΠ»ΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠ°Π·ΡΡΠ΄ΠΎΠ², Π΅ΡΠ»ΠΈ Π΄ΠΎΡΡΠΈΠ³ 3
SUBWF I, 0
BTFSC STATUS, Z
CLRF I
;ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΎΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°
IRET BCF INTCON, RTIF ;Π‘Π±ΡΠΎΡ ΡΠ»Π°Π³Π° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΎΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°
MOVF BACKUPS, 0
MOVWF STATUS
MOVF BACKUPW, 0 ;ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°
BSF INTCON, GIE ;Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ
RETFIE ;ΠΠΎΠ·Π²ΡΠ°Ρ ΠΈΠ· ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
;****** ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ *****************
BEGIN_PROG
MOVLW B'1 000 011' ;ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ
MOVWF OPTION_REG ;Π΄Π΅Π»Π΅Π½ΠΈΡ 1:16, ΡΠΈΠ³Π½Π°Π» Π½Π° ΡΠ°ΠΉΠΌΠ΅Ρ ΠΎΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°
BCF STATUS, RP0 ;Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ 0
CLRF PORTB
MOVLW B'111'
MOVWF PA
MOVF PA, 0
MOVWF PORTA
CLRF I ;ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
CLRF FLAGS ;ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
CALL START_DS
CLRF TMR0
CLRF TEMP_READL
CLRF TEMP_READH
CALL LEEPROM
MOVLW 0×02
MOVWF DT_ALARM
CLRF TIME0
CLRF TIME2
CLRF TMR0
MOVLW B'10 100 000' ;Π Π°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°
MOVWF INTCON
BCF FLAGS, 5
BCF FLAGS, 3
MOVLW B'10 111 111' ;(ΡΡΠΈ ΡΠΈΡΠ΅ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅)
MOVWF RAZR0
MOVWF RAZR1
MOVWF RAZR2
CALL START_DS
;ΠΠ°ΡΠ·Π° Π΄ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ
L0 BTFSS FLAGS, 5
GOTO L0
CALL START_DS
BCF FLAGS, 5
L00 BTFSS FLAGS, 5
GOTO L00
;****** ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ******
L10 CLRWDT
L25 BTFSS FLAGS, 0
GOTO L12 ;ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ
BTFSC FLAGS, 2
GOTO L10
BSF FLAGS, 2
BCF FLAGS, 6 ;ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΠΎΠΉ
BTFSC T_ALARM, 7 ;ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΠΉ ΡΠ°ΡΡΠΈ
GOTO L70 ;Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π½ΠΈΠΆΠ΅ Π½ΡΠ»Ρ
MOVF T_ALARM, 0
MOVWF NumL
GOTO L71
L70 MOVLW 0xFF
MOVWF NumL
MOVF T_ALARM, 0
SUBWF NumL, 1
L71 CLRF NumH
CALL Convert
MOVF Ones, 0
CALL DS7SEG
MOVWF RAZR0
MOVF Tens, 0
CALL DS7SEG
MOVWF RAZR1
MOVF Hund, 0
CALL DS7SEG
MOVWF RAZR2
BTFSC T_ALARM, 7
BCF RAZR2, 6 ;ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠ° ΠΌΠΈΠ½ΡΡ ΠΏΡΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ΅
GOTO L10
L12 BCF FLAGS, 2 ;ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ
BTFSC FLAGS, 3
CALL CONV_T
BCF FLAGS, 3
BTFSS FLAGS, 5
GOTO L10
;ΠΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ
BCF FLAGS, 5
BSF FLAGS, 3
CALL READ_T
CALL START_DS
ANDLW 0xFF
BTFSS STATUS, Z
GOTO L10
MOVLW B'1'
MOVWF RAZR0
MOVWF RAZR1
MOVWF RAZR2
BCF FLAGS, 3
GOTO L10 ;ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π½Π° Π½Π°ΡΠ°Π»ΠΎ ΡΠΈΠΊΠ»Π°
;********************************************************
;ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΡ ΠΈΠ· WREG Π² ΠΊΠΎΠ΄ 7-ΠΌΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ°
DS7SEG ADDWF PCL, 1
RETLW B'1 000 000' ;0
RETLW B'1 111 001' ;1
RETLW B'100 100' ;2
RETLW B'110 000' ;3
RETLW B'11 001' ;4
RETLW B'10 010' ;5
RETLW B'10' ;6
RETLW B'1 111 000' ;7
RETLW B'0' ;8
RETLW B'10 000' ;9
RETLW B'1 111 111' ;ΠΡΠΎΠ±Π΅Π»
RETLW B'111 111' ;ΠΠΈΠ½ΡΡ
;********************************************************
;ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΠΈΡΠ»Π° ΡΠΎΡΠΌΠ°ΡΠ° HEX16 (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ NumL, NumH) Π² ΡΠΎΡΠΌΠ°Ρ BSD
;(ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Thou, Hund, Tens, Ones)
Convert swapf NumH, w
IORLW B'11 110 000'
movwf Thou
addwf Thou, 1
addlw 0xE2
movwf Hund
addlw 0×32
movwf Ones
movf NumH, 0
andlw 0x0F
addwf Hund, 1
addwf Hund, 1
addwf Ones, 1
addlw 0xE9
movwf Tens
addwf Tens, 1
addwf Tens, 1
swapf NumL, 0
andlw 0x0F
addwf Tens, 1
addwf Ones, 1
rlf Tens, 1
rlf Ones, 1
comf Ones, 1
rlf Ones, 1
movf NumL, 0
andlw 0x0F
addwf Ones, 1
rlf Thou, 1
movlw 0x0A
Lb1: addwf Ones, 1
decf Tens, 1
btfss 3, 0
goto Lb1
Lb2: addwf Tens, 1
decf Hund, 1
btfss 3, 0
goto Lb2
Lb3: addwf Hund, 1
decf Thou, 1
btfss 3, 0
goto Lb3
Lb4: addwf Thou, 1
btfss 3, 0
goto Lb4
MOVLW Thou ;Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π·Π½Π°ΡΠ°ΡΠΈΡ Π½ΡΠ»Π΅ΠΉ
MOVWF FSR
MOVLW 3
MOVWF I
L54 MOVF F0, 0
ANDLW 0x0F
BTFSS STATUS, Z
RETURN ;Π Π°Π·ΡΡΠ΄ Π½Π΅ ΡΠ°Π²Π΅Π½ 0
MOVLW 0x0A
MOVWF F0
INCF FSR
DECFSZ I
GOTO L54
RETURN
;ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Ρ ΡΠΎΡΠ½ΠΎΡΡΡΡ Π΄ΠΎ 0.1 ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΎΡ DS18Π20
;ΠΡ ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ: TEMP_READH, TEMP_READL, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΠΊΡΠ°Π½Π½ΡΠΉ Π±ΡΡΠ΅Ρ
CONV_T MOVF TEMP_READL, 0
MOVWF NumL
MOVF TEMP_READH, 0
MOVWF NumH
BTFSC TEMP_READH, 7 ;ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΠΉ ΡΠ°ΡΡΠΈ
GOTO L30 ;Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π½ΠΈΠΆΠ΅ Π½ΡΠ»Ρ
MOVLW.4 ;ΠΡΠ΄Π΅Π»ΡΠ΅ΠΌ ΡΠ΅Π»ΡΡ ΡΠ°ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π°.16d
MOVWF A
L61 BCF STATUS, C
RRF NumH, 1
RRF NumL, 1
DECFSZ A, 1
GOTO L61
MOVF NumL, 0
MOVWF TH
MOVF TEMP_READL, 0 ;ΠΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠ°ΡΡΡ
ANDLW B'1 111'
GOTO L50
L30 MOVLW.4 ;ΠΡΠ΄Π΅Π»ΡΠ΅ΠΌ ΡΠ΅Π»ΡΡ ΡΠ°ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π°.16d
MOVWF A
L62 BCF STATUS, C
RRF NumH, 1
RRF NumL, 1
DECFSZ A, 1
GOTO L62
MOVLW 0xFF
MOVWF TH
MOVF NumL, 0
SUBWF TH, 1
movlw 0xFF
movwf NumH
MOVF TEMP_READL, 0 ;ΠΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠ°ΡΡΡ
ANDLW B'1 111'
SUBWF NumH, 0
ANDLW B'1 111'
L50 MOVWF NumL
CLRF NumH
MOVLW.6
MOVWF A
L63 MOVF NumL, 0
ADDWF NumH, 1
DECFSZ A, 1
GOTO L63
MOVF NumH, 0
MOVWF NumL
CLRF NumH
CALL Convert
MOVLW 0x0A
SUBWF Tens, 0
BTFSC STATUS, Z
CLRF Tens
MOVLW.5 ;ΠΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅
SUBWF Ones, 0
BTFSC STATUS, C
INCF Tens, 1
MOVF Tens, 0
MOVWF TL
;Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡ
BTFSC T_ALARM, 7; ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΡΡΠ°Π²ΠΊΡ
GOTO L72 ;Π£ΡΡΠ°Π²ΠΊΠ° Π½ΠΈΠΆΠ΅ Π½ΡΠ»Ρ, Π·Π½Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄
MOVF T_ALARM, 0 ;Π£ΡΡΠ°Π²ΠΊΠ° Π²ΡΡΠ΅ Π½ΡΠ»Ρ
MOVWF NumL ;ΠΡΠΈΠ±Π°Π²ΠΈΠΌ ΠΊ NumL Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°Π²ΠΊΠΈ ΠΈ
MOVLW.54 ;Π΄ΠΎΠ±Π°Π²ΠΈΠΌ 54, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΌΡΡΠΈΡΡΡΡ ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ
ADDWF NumL, 1 ;ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π²ΠΊΠΈ (ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ)
GOTO L73 ;ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄
L72 MOVLW 0xFF ;ΠΠΎΡΠ²Π»ΡΠ΅ΠΌΡΡ Π·Π΄Π΅ΡΡ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π²ΠΊΠΈ
MOVWF NumL
MOVF T_ALARM, 0
SUBWF NumL, 1
L73 BTFSC TEMP_READH, 7; ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΡΠΈΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Ρ Π΄Π°ΡΡΠΈΠΊΠ° ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ
GOTO L74 ;Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π½ΠΈΠΆΠ΅ Π½ΡΠ»Ρ
MOVF TH, 0 ;Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π²ΡΡΠ΅ Π½ΡΠ»Ρ ΠΈ ΠΎΠΏΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ 54, Π½ΠΎ
MOVWF NumH ;Π½Π΅ ΠΊ ΡΡΠΈΡΠ°Π½Π½ΡΠΌ Ρ Π΄Π°ΡΡΠΈΠΊΠ° Π΄Π°Π½Π½ΡΠΌ,
MOVLW.54 ;Π° ΠΊ ΡΠ΅Π»ΠΎΠΉ ΡΠ°ΡΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ
ADDWF NumH, 1
GOTO L76 ;ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄
L74 MOVF TH, 0 ;ΠΠΎΡΠ²Π»ΡΠ΅ΠΌΡΡ Π·Π΄Π΅ΡΡ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ
MOVWF NumH
BTFSC PA, 3 ;ΠΡΠΎΠ²Π΅ΡΠΈΠΌ, Π²ΠΊΠ»ΡΡΠ΅Π½ Π»ΠΈ Π½Π°Π³ΡΠ΅Π²Π°ΡΠ΅Π»Ρ!
CALL L2E ;Π²ΠΊΠ»ΡΡΠ΅Π½, Π·Π½Π°ΡΠΈΡ ΡΡ ΠΎΠ΄ΠΈΠΌ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π³ΠΈΡΡΠ΅ΡΠ΅Π·ΠΈΡ ΠΈ Π²Π΅ΡΠ½Π΅ΠΌΡΡ
MOVF NumH, 0 ;ΠΠ΅Ρ Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π·Π½Π°ΡΠΈΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ,
DECF NumL, 1
SUBWF NumL, 0; Π²ΡΡΠΈΡΠ°Ρ ΠΈΠ· ΡΡΡΠ°Π²ΠΊΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ
BTFSC STATUS, C
GOTO L2A ;ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄
L2B BSF PA, 3 ;Π΅ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½Π½Π°Ρ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π½ΠΈΠΆΠ΅Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π°Π³ΡΠ΅Π²Π°ΡΠ΅Π»Ρ
MOVF PA, 0
MOVWF PORTA
GOTO L31 ;ΠΡΡ ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
L2A BTFSC T_ALARM, 7; ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π΅ΡΠ΅ ΡΠ°Π· ΡΡΡΠ°Π²ΠΊΡ, Π½Π° ΡΠ»ΡΡΠ°ΠΉ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ, Π½ΠΎ
GOTO L2C; ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π²ΠΊΠΈ, ΡΡΠΎΠ±Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ ΡΠ΅ΡΠ΅Π· 0
GOTO L2B; ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π½Π°Π³ΡΠ΅Π²Π°ΡΠ΅Π»Ρ
L2C BCF PA, 3 ;Π΅ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½Π½Π°Ρ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π²ΡΡΠ΅Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π°Π³ΡΠ΅Π²Π°ΡΠ΅Π»Ρ
MOVF PA, 0
MOVWF PORTA
GOTO L31 ;ΠΡΡ ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
L76 BTFSC PA, 3 ;ΠΠΎΡΠ²Π»ΡΠ΅ΠΌΡΡ Π·Π΄Π΅ΡΡ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ
CALL L2D ;ΠΡΠΎΠ²Π΅ΡΠΈΠΌ, Π²ΠΊΠ»ΡΡΠ΅Π½ Π»ΠΈ Π½Π°Π³ΡΠ΅Π²Π°ΡΠ΅Π»Ρ? ΠΠ°, ΡΠ±Π΅Π³Π°Π΅ΠΌ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ;Π³ΠΈΡΡΠ΅ΡΠ΅Π·ΠΈΡ
MOVF NumH, 0 ;ΠΠ΅Ρ Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½, Π·Π½Π°ΡΠΈΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ,
DECF NumL, 1
SUBWF NumL, 0
BTFSC STATUS, C; Π²ΡΡΠΈΡΠ°Ρ ΠΈΠ· ΡΡΡΠ°Π²ΠΊΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ
GOTO L88
BCF PA, 3
MOVF PA, 0
MOVWF PORTA
GOTO L31
L2D MOVF DT_ALARM, 0 ;ΠΠΎΠ±Π°Π²ΠΈΠΌ 2 Π³ΡΠ°Π΄. Π³ΠΈΡΡΠ΅ΡΠ΅Π·ΠΈΡΠ°, ΡΡΠΎΠ±Ρ Π²ΡΠΊΠ»ΡΡΠΈΡΡ Π½Π°Π³ΡΠ΅Π²Π°ΡΠ΅Π»Ρ
ADDWF NumL, 1 ;Π½Π° 2 Π³ΡΠ°Π΄. Π²ΡΡΠ΅
RETURN
L2E MOVF DT_ALARM, 0 ;ΠΡΡΡΠ΅ΠΌ 2 Π³ΡΠ°Π΄. Π³ΠΈΡΡΠ΅ΡΠ΅Π·ΠΈΡΠ°, ΡΡΠΎΠ±Ρ Π²ΡΠΊΠ»ΡΡΠΈΡΡ Π½Π°Π³ΡΠ΅Π²Π°ΡΠ΅Π»Ρ
SUBWF NumL, 1 ;Π½Π° 2 Π³ΡΠ°Π΄. Π²ΡΡΠ΅, ΠΏΡΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ΅.
RETURN
L88 BSF PA, 3
MOVF PA, 0
MOVWF PORTA
;ΠΠ°ΠΏΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠΊΡΠ°Π½Π½ΡΠΉ Π±ΡΡΠ΅Ρ
L31 BTFSS TEMP_READH, 7
GOTO L36 ;Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π²ΡΡΠ΅ Π½ΡΠ»Ρ
MOVF TH, 0
SUBLW.19
BTFSC STATUS, C
GOTO L36 ;Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π²ΡΡΠ΅ ΠΌΠΈΠ½ΡΡ 19 Π³ΡΠ°Π΄ΡΡΠΎΠ²
;ΠΏΡΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ΅ ΠΌΠ΅Π½ΡΡΠ΅ -19.9
MOVF TH, 0 ;ΠΠ°Π½Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠΊΡΠ°Π½Π½ΡΠΉ Π±ΡΡΠ΅Ρ
MOVWF NumL
CLRF NumH
CALL Convert
MOVF Ones, 0
CALL DS7SEG
MOVWF RAZR0
MOVF Tens, 0
CALL DS7SEG
MOVWF RAZR1
MOVLW 0x0A
CALL DS7SEG
MOVWF RAZR2
BCF RAZR2, 6 ;ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠ° ΠΌΠΈΠ½ΡΡ ΠΏΡΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ΅
BCF FLAGS, 6 ;ΠΡΠΊΠ»ΡΡΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ
RETURN
L36 MOVF TH, 0
SUBLW.99
BTFSC STATUS, C
GOTO L37 ;Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π²ΡΡΠ΅ ΠΏΠ»ΡΡ 99 Π³ΡΠ°Π΄ΡΡΠΎΠ²
MOVF TH, 0 ;ΠΠ°Π½Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠΊΡΠ°Π½Π½ΡΠΉ Π±ΡΡΠ΅Ρ
MOVWF NumL
CLRF NumH
CALL Convert
MOVF Ones, 0
CALL DS7SEG
MOVWF RAZR0
MOVF Tens, 0
CALL DS7SEG
MOVWF RAZR1
MOVF Hund, 0
CALL DS7SEG
MOVWF RAZR2
BCF FLAGS, 6 ;ΠΡΠΊΠ»ΡΡΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ
RETURN
;ΠΏΡΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ΅ ΠΎΡ -19.9 Π΄ΠΎ 99.9
L37 MOVF TL, 0 ;ΠΠ°Π½Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠΊΡΠ°Π½Π½ΡΠΉ Π±ΡΡΠ΅Ρ
MOVWF NumL
CLRF NumH
CALL Convert
MOVF Ones, 0
CALL DS7SEG
MOVWF RAZR0
MOVF TH, 0 ;ΠΠ°Π½Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠΊΡΠ°Π½Π½ΡΠΉ Π±ΡΡΠ΅Ρ
MOVWF NumL
CLRF NumH
CALL Convert
MOVF Ones, 0
CALL DS7SEG
MOVWF RAZR1
MOVF Tens, 0
CALL DS7SEG
MOVWF RAZR2
BTFSC TEMP_READH, 7 ;ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠ° ΠΌΠΈΠ½ΡΡ ΠΏΡΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ΅
BCF RAZR2, 6
BSF FLAGS, 6 ;ΠΠΊΠ»ΡΡΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ
RETURN
;ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ± ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ΅ ΠΈΠ· DS18Π20
READ_T CALL INIT
MOVLW 0xCC ;Skip ROM
MOVWF O_BYTE
CALL OUT_BYTE
MOVLW 0xBE ;Read Scratchpad
MOVWF O_BYTE
CALL OUT_BYTE
;ΠΡΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ
CALL IN_BYTE
MOVWF TEMP_READL ;0
CALL IN_BYTE
MOVWF TEMP_READH ;1
CALL IN_BYTE ;2
CALL IN_BYTE ;3
CALL IN_BYTE ;4
CALL IN_BYTE ;5
CALL IN_BYTE ;6
CALL IN_BYTE ;7
CALL IN_BYTE ;8
;ΠΠΎΠ΄ΡΡΠ΅Ρ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ ΠΏΡΠΎΠΏΡΡΠ΅Π½ΠΎ
RETLW 0xFF
;ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΡΠ΄Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° ΡΡΠ°ΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π΄Π»Ρ Π΄Π°ΡΡΠΈΠΊΠ° DS18Π20
START_DS
CALL INIT
MOVLW 0xCC ;Skip ROM
MOVWF O_BYTE
CALL OUT_BYTE
MOVLW 0×44 ;Convert T
MOVWF O_BYTE
CALL OUT_BYTE
RETLW 0xFF
; The following are common 1-Wire routines used in all applications
INIT: CALL PIN_HI
CALL PIN_LO
MOVLW.50; 500 us delay
CALL DELAY_10USEC
CALL PIN_HI
MOVLW.50; 500 usec delay
CALL DELAY_10USEC
RETURN
IN_BYTE:; returns byte in W
MOVLW.8
MOVWF _N
CLRF I_BYTE
IN_BYTE1:
CALL PIN_LO; momentary low on DATA_PIN
NOP
CALL PIN_HI
NOP
NOP
NOP
NOP
NOP
NOP
MOVF PORTB, W; 7 usecs later, fetch from DATA_PIN
MOVWF TEMP
BTFSS TEMP, DATA_PIN
BCF STATUS, C; its a zero
BTFSC TEMP, DATA_PIN
BSF STATUS, C; its a one
RRF I_BYTE, F
MOVLW.6; now delay 60 usecs
CALL DELAY_10USEC
DECFSZ _N, F
GOTO IN_BYTE1
MOVF I_BYTE, 0; return the result in W
RETURN
OUT_BYTE:
MOVLW.8
MOVWF _N
OUT_BYTE1:
RRF O_BYTE, F
BTFSS STATUS, C
GOTO OUT0
GOTO OUT1
OUT_BYTE2:
DECFSZ _N, F
GOTO OUT_BYTE1
RETURN
OUT0: CALL PIN_LO; bring DATA_PIN low
MOVLW.6; for 60 usecs
CALL DELAY_10USEC
CALL PIN_HI
GOTO OUT_BYTE2
OUT1: CALL PIN_LO; momentary low
CALL PIN_HI
MOVLW.6
CALL DELAY_10USEC
GOTO OUT_BYTE2
PIN_HI: BCF INTCON, GIE
BSF STATUS, RP0
BSF TRISB, DATA_PIN; high impedance
BCF STATUS, RP0
BSF INTCON, GIE
RETURN
PIN_LO: BCF INTCON, GIE
BCF PORTB, DATA_PIN
BSF STATUS, RP0
BCF TRISB, DATA_PIN; low impedance zero
BCF STATUS, RP0
BSF INTCON, GIE
RETURN
DELAY_LONG
MOVLW.250; 250 msec delay
MOVWF LOOP1
DELAY_N_MS:
OUTTER MOVLW.110; close to 1.0 msec delay when set to.110
MOVWF LOOP2
INNER NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ LOOP2, F; decrement and leave result in LOOP2
GOTO INNER; skip next statement if zero
DECFSZ LOOP1, F
GOTO OUTTER
RETURN
DELAY_10USEC:; provides a delay equal to W * 10 usecs
MOVWF LOOP1
DELAY_100USEC1:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ LOOP1, F
GOTO DELAY_100USEC1
RETURN
;*******************************************************
;ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ T_ALARM
;Π² ΡΠ½Π΅ΡΠ³ΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π°Π½Π½ΡΡ
SEEPROM MOVLW.50
MOVWF EEADR
MOVF T_ALARM, 0
CALL L21
RETURN
L21 MOVWF EEDATA ;ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΏΠΈΡΠΈ EEROM
BCF INTCON, GIE ;ΠΠ°ΠΏΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ
BSF STATUS, RP0 ;Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ 1
BSF EECON1, WREN ;Π Π°Π·ΡΠ΅ΡΠ°Π΅ΠΌ Π·Π°ΠΏΠΈΡΡ Π² EEROM
MOVLW 0×55 ;ΠΠ°Π΅ΠΌ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ
MOVWF EECON2
MOVLW 0xAA
MOVWF EECON2
BSF EECON1, WR
L20 NOP ;ΠΠΆΠΈΠ΄Π°Π΅ΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ
BTFSC EECON1, WR
GOTO L20
BCF EECON1, WREN ;ΠΠ°ΠΏΡΠ΅ΡΠ°Π΅ΠΌ Π·Π°ΠΏΠΈΡΡ Π² EEROM
BCF STATUS, RP0 ;Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ 0
BSF INTCON, GIE ;Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ
INCF EEADR, 1
RETURN
;ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ T_ALARM
;ΠΈΠ· ΡΠ½Π΅ΡΠ³ΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π°Π½Π½ΡΡ
LEEPROM MOVLW.50
MOVWF EEADR
CALL RROM
MOVWF T_ALARM
RETURN
;ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· EEROM
RROM BSF STATUS, RP0 ;Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ 1
BSF EECON1, RD ;ΠΠΎΠΌΠ°Π½Π΄Π° Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ EEROM
BCF STATUS, RP0 ;Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ 0
INCF EEADR, 1
MOVF EEDATA, 0
RETURN
END ;ΠΠΎΠ½Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.