ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΎΠΏΡΠΎΡΠ° ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ 4×4 ΠΈ 3Ρ 4
ΠΠ°ΠΏΠΈΡΠ°Π» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΠΎΠΏΡΠΎΡΠ° ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ:
— ΠΏΡΠΎΡΡΠ°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Π³ΠΎΡΠΎΠ²ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ
— ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΠ΅Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° mega
— Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ Π»ΡΠ±ΡΠΌ ΠΈΠ· ΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² CodeVision, IAR, GCC
— ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡ 4Ρ 4 ΠΈ 3Ρ 4
— ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΉ ΡΠΈΠ½Π΅
— Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ»ΠΈ Π΄Π²ΡΠΌΡ ΠΏΠΎΡΡΠ°ΠΌΠΈ
— ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ Π°Π½ΡΠΈΠ΄ΡΠ΅Π±Π΅Π·Π³ΠΎΠ²Π°Ρ Π·Π°ΡΠΈΡΠ°
— Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠ΄ΠΎΠ² ΠΊΠ½ΠΎΠΏΠΎΠΊ
— ΡΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌΒ Π°ΡΡ ΠΈΠ² Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ— ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ»Ρ keyboard.h ΠΈ keyboard.c Π² ΠΏΠ°ΠΏΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°
— ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ keyboard.c ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ Π²Π½ΡΡΡΠΈ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
— Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ keyboard.h Π² ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ main.c
— Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅ keyboard.h
— ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π²ΡΠ·ΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ
Β
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π³ΠΎΠ².
Β
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ°ΠΊΡΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΎΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°
Β
#define F_CPU 16000000
Β
Β Β ΠΡΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠ°ΠΊΡΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΎΡΠ΅ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ, ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ, ΠΈΠ·-Π·Π° ΠΏΠ°ΡΠ°Π·ΠΈΡΠ½ΡΡ Π΅ΠΌΠΊΠΎΡΡΠ΅ΠΉ Β«Π½Π΅ ΡΡΠΏΠ΅Π²Π°ΡΡΒ» ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΠΎΡΡΠΎΠΌΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅ΡΡΠ°Ρ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°, Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΡΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΎΡΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΈΠΏΠ° ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ β 4Ρ 4 ΠΈΠ»ΠΈ 3Ρ 4
Β
#define KEYBOARD_4X4
Β
Β Β ΠΡΠ»ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° 3Ρ 4.Β
Π’ΠΈΠΏ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ ΡΠ΄ΠΈΠ²Π»ΡΠΉΡΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π² ΠΎΠΊΠ½Π΅ Messages.Β
Β
Β
#define COMMON_BUS
Β
Β Β ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ±ΡΡΡ ΡΠΈΠ½Ρ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ²ΠΎΠ΄Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. ΠΡΠ»ΠΈ ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΎ, Π·Π½Π°ΡΠΈΡ, ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
Β Β Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ²ΠΎΠ΄Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΡΡΡΡ Π»ΠΈΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ Π΅Π΅ ΠΎΠΏΡΠΎΡΠ°. Π ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΎΠΏΡΠΎΡΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΎΠ² Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ. Β
Β Β ΠΠ°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π² ΠΌΠ°ΠΊΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°ΠΉΡ ΡΠ»Π΅Ρ ΠΏΠ°ΠΌΡΡΠΈ.
Β
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Β ΠΏΠΎΡΡΠΎΠ², ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΡΠΎΠ»Π±ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
Β
//ΠΏΠΎΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΡΡΡΠΎΠΊΠΈ
#define PORTX_ROW PORTA
#define PINX_ROW Β PINA
#define DDRX_ROW Β DDRA
Β
//ΠΏΠΎΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΡΡΠΎΠ»Π±ΡΡ
#define PORTX_COL PORTB
#define PINX_COL Β PINB
#define DDRX_COL Β DDRB
Β
Β Β ΠΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΠΎΡΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. ΠΠ°Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ ΠΊ ΠΏΠΎΡΡΡ B, Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊ ΠΏΠΎΡΡΡ Π‘. ΠΡΠΎ ΠΆΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΈ ΠΊ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.Β
Β Β ΠΡΠΈ ΡΡΠΎΠΌ Π³ΡΡΠΏΠΏΠ° ΡΡΡΠΎΠΊ ΠΈΠ»ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° ΠΊΠ°ΠΊ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ, ΡΠ°ΠΊ ΠΈ ΠΊ ΡΠ°Π·Π½ΡΠΌ ΠΏΠΎΡΡΠ°ΠΌ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°.Β
Β
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Β Π²ΡΠ²ΠΎΠ΄ΠΎΠ², ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΡΠΎΠ»Π±ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
Β
//Π²ΡΠ²ΠΎΠ΄Ρ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΡΡΡΠΎΠΊΠΈΒ
#define PIN_ROW1 4
#define PIN_ROW2 5
#define PIN_ROW3 6
#define PIN_ROW4 7
Β
//Π²ΡΠ²ΠΎΠ΄Ρ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΡΡΠΎΠ»Π±ΡΡ
#define PIN_COL1 0
#define PIN_COL2 1
#define PIN_COL3 2
#define PIN_COL4 3
Β
Β Β ΠΡΠ²ΠΎΠ΄Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΊ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΈ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ. ΠΡΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° ΠΊ Π΄Π²ΡΠΌ ΠΏΠΎΡΡΠ°ΠΌ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°.
Β
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠ΄ΠΎΠ² ΠΊΠ½ΠΎΠΏΠΎΠΊ
Β
//ΠΊΠΎΠ΄Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ
#define EVENT_NULL 0
#define EVENT_KEY0 ‘0’
#define EVENT_KEY1 ‘1’
#define EVENT_KEY3 ‘3’
#define EVENT_KEY4 ‘4’
#define EVENT_KEY5 ‘5’
#define EVENT_KEY6 ‘6’
#define EVENT_KEY7 ‘7’
#define EVENT_KEY8 ‘8’
#define EVENT_KEY9 ‘9’
#define EVENT_KEYA ‘A’
#define EVENT_KEYB ‘B’
#define EVENT_KEYC ‘C’
#define EVENT_KEYD ‘D’
#define EVENT_KEYZ ‘*’
#define EVENT_KEYR ‘#’
Β
Β Β ΠΠ΄Π΅ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π΅Ρ. ΠΠΎΠ΄Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅. ΠΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΊΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΎΠ±ΡΡΠΈΠΉΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.Β
Β Β Π ΠΌΠΎΠ΄ΡΠ»Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
void KEYB_Init(void) β ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
void KEYB_ScanKeyboard(void) β ΡΡΠ½ΠΊΡΠΈΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
unsigned char KEYB_GetKey(void) β ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π±ΡΡΠ΅ΡΠ°
Β
KEYB_Init() Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π²ΡΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Β Π² Π½Π°ΡΠ°Π»Π΅ main`a.
Β
KEYB_ScanKeyboard() β ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ Π²ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠ½Π° ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°. ΠΠΎΠΆΠ½ΠΎ Π²ΡΡΠ°Π²ΠΈΡΡ Π΅Π΅ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ Π΅Π΅ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎ Π΅Π³ΠΎ ΡΠΈΠ³Π½Π°Π»Ρ. ΠΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎΡΠΈΡΠ΅Π»Π΅Π½ Π² ΠΏΠ»Π°Π½Π΅ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°.Β
Β
KEYB_GetKey() β ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π·Π°Π΄Π°Π½Π½ΡΠΉ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ keyboard.h. ΠΡΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΎΡΠ½ΡΠΉ Π±ΡΡΠ΅Ρ ΠΏΡΡΡ β ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ Β EVENT_NULL. ΠΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΠΌ, Π³Π΄Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ.Β
Β Β ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π΄Π»Ρ ΡΡΠ΅Ρ
ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ². ΠΡΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Ρ Π² ΠΆΠ΅Π»Π΅Π·Π΅. Π‘Ρ
Π΅ΠΌΠ° Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅.
ΠΠ»Ρ Π»ΡΠ±ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠΈΠΌΡΠ»ΡΡΠΈΠΉ — ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π»Ρ ΠΡΠΎΡΠ΅ΡΡΠ°. Π‘Π΄Π΅Π»Π°Π½ Π½Π° ΡΠΊΠΎΡΡΡ ΡΡΠΊΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΡ
Π΅ΠΌΡ.
Β
Π‘ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ 1-Wire ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ
Β Β ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌΠΈ 1-Wire ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΡΠΆΠ΅ Π΄Π°Π²Π½ΡΠΌ-Π΄Π°Π²Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ ΡΠΌΡΡΠ»Π° ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°ΡΡ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄ (Π»ΠΈΡΠ½ΠΎ Ρ ΡΡΠΎ ΡΠΆΠ΅ Π΄Π΅Π»Π°Π», ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π» Β Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅) ΠΈ ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ-ΡΠΎ ΡΠ²ΠΎΠ΅. ΠΠ° ΡΠ°ΠΉΡΠ΅ ΡΠΈΡΠΌΡ ATMEL Π΅ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ application noteΒ AVR318: Dallas 1-Wire, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ 1-Wire ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°Ρ AVR β ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½Π°Ρ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π½Π° Π»ΡΠ±ΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°Ρ . ΠΠΏΠΏΠ°ΡΠ°ΡΠ½Π°Ρ β ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠ΅Ρ , Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ UART. ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ 1-Wire ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Β«Π² ΡΠΈΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅Β» ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ AVR Π½Π΅ ΠΈΠΌΠ΅ΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ UART Π½Π΅ΠΊΠΈΠΌ Ρ ΠΈΡΡΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ. Π application note ΠΈΠ΄Π΅Ρ ΠΏΡΠΎΠ΅ΠΊΡ. Π― Π²Π·ΡΠ» ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΠ», ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π½Π°ΠΏΠΈΡΠ°Π» ΡΠ°ΠΉΠ» compilers.h, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ Π»ΠΈΠ±Ρ ΡΒ Π»ΡΠ±ΡΠΌ ΠΈΠ· ΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² β IAR AVR, GNU GCC (WINAVR), CodeVision.Β
OWISWBitFunction.h
OWISWBitFunction.c
OWIUARTBitFunction.c
Β
OWIHighLevelFunction.h
OWIHighLevelFunction.c
Β
OWIPolled.h
compilers.h
Β
OWIdefs.h
OWIdevicespecific.h
OWIcrc.h
OWIcrc.c
ΠΡΠΎΡΠ΅ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ 1-Wire Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: — ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΠ°ΠΏΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°— ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ
OWIHighFunction.c
OWISWBitFunction.c
OWIUARTBitFunction.c
— Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² main.c
#include «OWIPolled.h»
#include «OWIHighLevelFunctions.h»
#include «OWIBitFunctions.h»
#include «common_files\OWIcrc.h» — Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ» OWIPolled.h— Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ OneWire ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° β ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡΒ
Β Β Β Β #define Β Β OWI_SOFTWARE_DRIVER Β Β
Β Β Β Β //#define Β Β OWI_UART_DRIVER— Π·Π°Π΄Π°Π΅ΠΌ ΡΠ°ΠΊΡΠΎΠ²ΡΡ ΡΠ°ΡΡΠΎΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°
Β Β Β Β #define Β Β CPU_FREQUENCY Β 16.000—Β Π·Π°Π΄Π°Π΅ΠΌ ΠΏΠΎΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° OneWire ΡΠΈΠ½Π°
Β Β Β Β #define Β Β OWI_PORT Β Β Β PORTD Β //!< 1-Wire PORT Data register.
Β Β Β Β #define Β Β OWI_PIN Β Β Β Β PIND Β Β //!< 1-Wire Input pin register.
— Π² main.c Π·Π°Π΄Π°Π΅ΠΌ Π²ΡΠ²ΠΎΠ΄, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° OneWire ΡΠΈΠ½Π°
Β Β Β Β #define BUS Β OWI_PIN_7
Β
ΠΠ»Ρ GCC ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π² makefile Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΡΠ΅ ΡΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ.Β
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
Β
SRC = $(TARGET).c bcd.c lcd_lib.c OWISWBitFunctions.c OWIHighLevelFunctions.c OWIUARTBitFunctions.c Β common_files/OWIcrc.c
Application note AVR318: Dallas 1-WireΠΡΠΎΠ΅ΠΊΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΈΡΡ Π² ΠΆΠ΅Π»Π΅Π·Π΅ ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π½Π°ΡΠ΅ΠΊΠ°Π½ΠΈΠΉ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π»ΠΈ. Π Proteus`Π΅ Ρ ΠΈΡ ΡΠΎΠΆΠ΅ Π·Π°ΠΏΡΡΡΠΈΠ», Π½ΠΎ Π½Π΅ ΡΡΠ°Π·Ρ. ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π°ΡΡΠΈΠΊΠ°ΠΌ DS18B20 ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ°. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π΄Π°ΡΡΠΈΠΊΠΎΠ² Π°Π΄ΡΠ΅ΡΠ° Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΡΠ°Π²ΠΈΡΡ ΡΡΡΠΊΠ°ΠΌΠΈ.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΡΠΆΠ΅ Π² Π½ΠΎΠ²ΠΎΠΌ Π³ΠΎΠ΄Ρ…
AVR. Π£ΡΠ΅Π±Π½ΡΠΉ ΠΊΡΡΡ. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
ΠΠΎΡΠΎΡΠ΅, Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΊΠΎΠ΄Ρ. Π‘ΡΠ°Π·Ρ ΠΎΠ³ΠΎΠ²ΠΎΡΡΡΡ, ΡΡΠΎ Ρ Π²Π·ΡΠ» ΠΌΠΎΠ΄Ρ ΠΊΡΠΎΡΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° Π΄Π΅ΡΡΡΠΎΠΊ ΠΌΠ΅Π»ΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ², Π° ΠΏΠΎΡΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎ ΡΠ΅Π·ΠΊΠΎ ΡΡΡΡΠΊΡΡΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π»Π΅Π³ΡΠ΅ Π² Π½Π΅ΠΌ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ, Π° Π²ΠΎ-Π²ΡΠΎΡΡΡ , ΠΊΠΎΠ΄ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΌ ΠΈ Π΅Π³ΠΎ ΠΊΡΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π³ΠΎΡΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ . Π’ΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ΠΏΡΠ°Π²ΠΈΡΡ ΡΡΡΠΎΠΊ. ΠΠΎ ΡΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΈΡΠΈΠ½Π΅ Ρ Π²ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π΅Π»Π°Ρ ΡΠ΅ΡΠ΅Π· ΠΌΠ°ΠΊΡΠΎΡΡ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΡΠ°Π²ΠΈΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ΄, Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΡ ΡΡΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π² ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.Π’Π΅ΠΏΠ΅ΡΡ ΠΊΠΎΡΠΎΡΠΊΠΎ ΠΎ ΡΠ°ΠΉΠ»Π°Ρ
:
keyboard_define.inc β ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.
Π‘ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠΆΠ΅ΠΊ, Π΄ΡΠΌΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ, Π° Π²ΠΎΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° KEYMASK Ρ Ρ ΠΎΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎΡΠΎΠ±ΠΎ.
ΠΡΠΎ ΠΌΠ°ΡΠΊΠ° ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΄Π΅Π»ΡΡΡΡΡ ΡΠΊΠ°Π½ΠΈΡΡΠ΅ΠΌΡΠΉ ΠΏΠΎΡΡ. Π Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ 6 Π΅Π΄ΠΈΠ½ΠΈΡ ΠΈ ΠΎΠ΄ΠΈΠ½ 0. ΠΠΎΠ»Ρ Π²ΡΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΊΡΠ°ΠΉΠ½Π΅ ΠΏΡΠ°Π²ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠΊΠ°Π½ΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ:
Π£ ΠΌΠ΅Π½Ρ ΡΠΊΠ°Π½ΠΈΡΡΡΡΠΈΠΉ ΠΏΠΎΡΡ Π²ΠΈΡΠΈΡ Π½Π° Π±ΠΈΡΠ°Ρ
7,6,5,4 ΠΊΡΠ°ΠΉΠ½Π΅ ΠΏΡΠ°Π²ΡΠΉ Π±ΠΈΡ ΡΠΊΠ°Π½ΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ° ΡΡΠΎ Π±ΠΈΡ 4, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ°ΡΠΊΠ° ΡΠ°Π²Π½Π° 0b11101111 β Π½ΠΎΠ»Ρ ΡΡΠΎΠΈΡ Π½Π° 4ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ. ΠΡΠ»ΠΈ ΡΠΊΠ°Π½ΠΈΡΡΡΡΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΈ Π±ΡΠ΄ΡΡ Π²ΠΈΡΠ΅ΡΡ Π½Π° Π½ΠΎΠΆΠΊΠ°Ρ
5,4,3,2, ΡΠΎ ΠΌΠ°ΡΠΊΠ° ΡΠΆΠ΅ Π±ΡΠ΄Π΅Ρ 0b11111011 β Π½ΠΎΠ»Ρ Π½Π° Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ. ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΎ Π½ΠΈΠΆΠ΅.
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΌΠ°ΡΠΊΠ° Π°ΠΊΡΠΈΠ²Π½ΡΡ Π»ΠΈΠ½ΠΈΠΉ ΡΠΊΠ°Π½ΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ° β SCANMSK. Π Π½Π΅ΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΏΡΠΎΡΠΈΠ² Π»ΠΈΠ½ΠΈΠΉ ΡΡΠΎΠ»Π±ΡΠΎΠ². Π£ ΠΌΠ΅Π½Ρ ΡΡΠΎΠ»Π±ΡΡ Π·Π°Π²Π΅Π΄Π΅Π½Ρ Π½Π° ΡΡΠ°ΡΡΡΡ ΡΠ΅ΡΡΠ°Π΄Ρ ΠΏΠΎΡΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΊΠ°Π½ΠΈΡΡΡΡΠ°Ρ ΠΌΠ°ΡΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄ 0b11110000.
Π ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π±ΡΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ Π½ΠΎΠΆΠΊΠΈ ΡΠΊΠ°Π½ΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ° Π½Π° Π²ΡΡ ΠΎΠ΄, Π° Π½ΠΎΠ³ΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ Π½Π° Π²Ρ ΠΎΠ΄ Ρ ΠΏΠΎΠ΄ΡΡΠΆΠΊΠΎΠΉ. Π ΠΏΠΎΡΠΎΠΌ Π²ΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΊΡΠ΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΎΡΡΠΎ β Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ΅Π½ΠΈΡ Ρ ΠΊΠ»Π°Π²Ρ, Π° ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Ρ Π½Π°Ρ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ R16 Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΡΠΈ.
ΠΠΎΡ ΡΠ°ΠΊ Ρ ΠΌΠ΅Π½Ρ Π²ΡΠ³Π»ΡΠ΄Π΅Π» ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄:
Main: SEI ; Π Π°Π·ΡΠ΅ΡΠ°Π΅ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ.ΠΡΠΎ LCD Π΄ΠΈΡΠΏΠ»Π΅ΠΉ Ρ ΠΏΠΎΠΊΠ° Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΊΠ°ΠΆΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π΅ΡΠ΅ Π½Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅Π½Ρ Π΄ΠΎ ΡΠΌΠ°, Π½ΠΎ Π±ΡΠ΄ΡΡ Π²ΡΠ»ΠΎΠΆΠ΅Π½Ρ ΠΈ ΡΠ°Π·ΠΆΠ΅Π²Π°Π½Ρ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ.RCALL KeyScan ; Π‘ΠΊΠ°Π½ΠΈΡΡΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ
CPI R16,0 ; ΠΡΠ»ΠΈ Π²Π΅ΡΠ½ΡΠ»ΡΡ 0 Π·Π½Π°ΡΠΈΡ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π΅ Π±ΡΠ»ΠΎ
BREQ Main ; Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° Π½Π°ΡΠ°Π»ΠΎ
RCALL CodeGen ; ΠΡΠ»ΠΈ Π²Π΅ΡΠ½ΡΠ»ΡΡ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄, ΡΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π²
; ASCII ΠΊΠΎΠ΄.MOV R17,R16 ; ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ Π² ΠΏΡΠΈΠ΅ΠΌΠ½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ LCD ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
RCALL DATA_WR ; ΠΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅ΠΉ.RJMP Main ; ΠΠ°ΡΠΈΠΊΠ»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ Π½Π°ΡΠΈΠ³.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° KeyScan
ΠΠ½Π°ΡΠ°Π»Π΅ ΠΌΡ ΠΏΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠΊΠ°Π½ΠΈΡΡΡΡΡΡ ΠΌΠ°ΡΠΊΡ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡ ΡΠ°ΠΊ Π²Π·ΡΡΡ ΠΈ Π³Π½Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΠΎΡΡ. ΠΠ΅Π΄Ρ ΡΡΡΠΎΠΊΠΈ Π²ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ΅ΡΡΡΠ΅Ρ Π±ΠΈΡΠ°Ρ , Π° Π½Π° ΠΏΠ΅ΡΠ²ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π³Π»Π°Π²Π½ΠΎΠ΅ Π½ΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΊΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π±ΠΈΡΠΎΠ² ΠΌΠ»Π°Π΄ΡΠ΅ΠΉ ΡΠ΅ΡΡΠ°Π΄Ρ ΠΏΠΎΡΡΠ°..def COUNT = R18
KeyScan: LDI COUNT,4 ; Π‘ΠΊΠ°Π½ΠΈΠΌ 4 ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ
LDI R16,KEYMASK ; ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΌΠ°ΡΠΊΡ Π½Π° ΡΠΊΠ°Π½ 0 ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ.
KeyLoop: IN R17,COL_PORT ; ΠΠ΅ΡΠ΅ΠΌ ΠΈΠ· ΠΏΠΎΡΡΠ° ΠΏΡΠ΅ΠΆΠ½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
ORI R17,SCANMSK ; ΠΡΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π² 1 Π±ΠΈΡΡ ΡΠΊΠ°Π½ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ°ΡΡΠΈ.
ΠΠ½Π°ΡΠ°Π»Π΅ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΏΠΎΡΡΠ°, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π½Π° ΡΡΠΊΠ°Ρ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎΡΡΠ°. Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠ°Π²ΠΈΡΡ Π²ΡΠ΅ ΡΠΊΠ°Π½ΠΈΡΡΡΡΠΈΠ΅ Π±ΠΈΡΡ ΠΏΠΎΡΡΠ° Π² 1, ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΠΠΒ ΠΏΠΎ ΡΠΊΠ°Π½ΠΈΡΡΡΡΠ΅ΠΉ ΠΌΠ°ΡΠΊΠ΅. Π ΡΠΎΠΉ ΡΠ°ΡΡΠΈ Π³Π΄Π΅ ΡΡΠΎΡΠ»ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΠΠ ΠΏΠΎ ΠΌΠ°ΡΠΊΠ΅ 11110000 (ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ SCANMASK) Π²ΡΠ΅ Π±ΠΈΡΡ ΡΡΠ°Π½ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ°ΠΌΠΈ, Π° Π³Π΄Π΅ Π±ΡΠ» Π½ΠΎΠ»Ρ ΠΎΡΡΠ°Π½ΡΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
AND R17,R16 ; Π‘Π±ΡΠ°ΡΡΠ²Π°Π΅ΠΌ Π±ΠΈΡ ΡΠΊΠ°Π½ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°
OUT COL_PORT,R17 ; ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π±Π°ΠΉΡ ΠΈΠ· ΠΏΠΎΡΡΠ°.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π½Π° ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π±Π°ΠΉΡ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ ΠΌΠ°ΡΠΊΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°. Π Π½Π΅ΠΉ Π²Π½Π°ΡΠ°Π»Π΅ Π½ΠΎΠ»Ρ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ, Π° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, Π΄ΡΡΠ³ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡ, Π° Π²ΠΎΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ 0. ΠΠΎΡΠΎΠΌ ΠΌΠ°ΡΠΊΠ° ΡΠ΄Π²ΠΈΠ½Π΅ΡΡΡ, Π° Π²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡΡ ΡΠ½ΠΎΠ²Π°. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½ΠΎΠ»Ρ Π±ΡΠ΄Π΅Ρ ΡΠΆΠ΅ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅ΠΌ Β«Π±Π΅Π³Π°ΡΡΠΈΠΉΒ» Π½ΠΎΠ»ΠΈΠΊ Π² ΡΠΊΠ°Π½ΠΈΡΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΅, ΠΏΡΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡΠΈ Π΄ΡΡΠ³ΠΈΡ , ΠΏΠΎΡΡΠΎΡΠΎΠ½Π½ΠΈΡ , Π±ΠΈΡΠΎΠ² ΠΏΠΎΡΡΠ°. Π Π΄Π°Π»ΡΡΠ΅ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡ ΠΏΠΎΡΡΠ° ΠΈ Π½ΠΎΠΆΠΊΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠΎΠ²Π½ΠΈ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠΉ.
NOP ; ΠΠ°Π΄Π΅ΡΠΆΠΊΠ° Π½Π° ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ³ΠΈ.
NOP
NOP
NOPSBIS ROW0_PIN,ROW0 ; ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π½Π°ΠΆΠ°ΡΠ°
RJMP bt0SBIS ROW1_PIN,ROW1
RJMP bt1SBIS ROW2_PIN,ROW2
RJMP bt2SBIS ROW3_PIN,ROW3
RJMP bt3
Π‘Π΅ΡΠΈΡ NOP Π½ΡΠΆΠ½Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Π΄Π°ΡΡ Π½ΠΎΠΆΠΊΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ Π·Π°Π½ΡΡΡ Π½ΡΠΆΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅Π°Π»ΡΠ½Π°Ρ ΡΠ΅ΠΏΡ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΅ΠΌΠΊΠΎΡΡΠΈ ΠΈ ΠΈΠ½Π΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ²Π½Ρ, Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΠ΅ ΠΆΠ΅ Π΅ΡΡΡ. Π Π½Π° ΡΠΊΠΎΡΠΎΡΡΠΈ Π² 8ΠΠ³Ρ ΠΈ Π²ΡΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΠ΅Π»ΠΊΠ°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ, ΡΡΠΎ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ³Π΅ Π΅ΡΠ΅ Π½Π΅ ΡΠΏΠ°Π»ΠΎ, Π° ΠΌΡ ΡΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π°. ΠΠΎΡ Ρ ΠΈ Π²Π»Π΅ΠΏΠΈΠ» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ° 8ΠΠ³Ρ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΡΠ»ΠΈΡΠ½ΠΎ. ΠΠ° Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΠΎΡΡ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π΅ΡΠ΅ ΡΡΡΠΊ ΠΏΡΡΡ ΡΠ΅ΡΡΡ NOP ΠΈΠ»ΠΈ Π²Π»Π΅ΠΏΠΈΡΡ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΈΠΉ ΡΠΈΠΊΠ». ΠΠΏΡΠΎΡΠ΅ΠΌ, ΡΡΡ Π½Π°Π΄ΠΎ ΠΏΠΎΠ³Π»ΡΠ΄Π΅ΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΠΎ Π±Π°ΠΉΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ½Π΅ΠΉ.
ΠΠΎΡΠ»Π΅ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈΠ΄Π΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΡΡΠΎΠΊΠΈ. Π ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΠ±ΡΡΠΈΡ.
ROL R16 ; Π‘Π΄Π²ΠΈΠ³Π°Π΅ΠΌ ΠΌΠ°ΡΠΊΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡΠΠΎΡ ΡΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ΄Π²ΠΈΠ³ ΠΌΠ°ΡΠΊΠΈ Π²Π»Π΅Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° ROL. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΌΡ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ (ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠ°Π²Π΅Π½ ΡΠ΅ΡΡΡΠ΅ΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π½Π°Ρ ΡΠ΅ΡΡΡΠ΅ ΡΡΠΎΠ»Π±ΡΠ°). ΠΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΉ Π½Π΅ Π±ΡΠ»ΠΎ, ΡΠΎ ΠΏΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ Π²ΡΠ΅Ρ ΡΠ΅ΡΡΡΠ΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΠΌΡ Π²ΡΠ²Π°Π»ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΈΠ· ΡΠΈΠΊΠ»Π°, ΠΎΠ±Π½ΡΠ»ΡΠ΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡ R16 ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ.
DEC COUNT ; Π£ΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΠΎΠ»Π±ΡΠΎΠ²
BRNE KeyLoop ; ΠΡΠ»ΠΈ Π΅ΡΠ΅ Π½Π΅ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅Π±ΡΠ°Π»ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡCLR R16 ; ΠΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΉ Π½Π΅ Π±ΡΠ»ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ 0
RET
.undef COUNT
Π Π²ΠΎΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΊΠΎΠ½ΡΠΎΠ² ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ. Π’ΡΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠΉ Π²Π΅ΡΠ½Π΅ΡΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ R16. Π― ΡΠ΅ΡΠΈΠ» Π½Π΅ Π·Π°ΠΌΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ, Π° ΠΊΠ°ΠΊ Π²ΡΠ΅Π³Π΄Π° Π·Π°ΠΆΠ°ΡΡ Π΄Π΅ΡΡΡΠΎΠΊ Π±Π°ΠΉΡ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠ΅ΠΉ ΠΈ ΠΊΠΎΡΠΎΡΠ΅. ΠΡΠ°ΠΊ, ΡΡΠΎ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΠΏΠΎ ΠΏΡΠΈΡ ΠΎΠ΄Ρ Π² ΡΡΠΎΡ ΠΊΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°. Π ΠΈΠΌΠ΅Π΅ΠΌ ΠΌΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠΊΠ°Π½ΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ° (1110,1101,1011,0111), Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π½Π°Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΏΠΎΠΏΠ°Π»ΠΈ ΡΡΠ΄Π°. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π² ΡΡΠΎΡ ΠΊΡΡΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ RJMP bt0.
bt0: ANDI R16,SCANMSK ; Π€ΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄
ORI R16,0x01 ; ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π΅Π³ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ 16
RET
Π’Π°ΠΊ Π΄Π°Π²Π°ΠΉ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ ΠΈΠ· ΡΠΊΠ°Π½ΠΈΡΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΈ Π½ΠΎΠΌΠ΅ΡΠ° ΡΡΡΠΎΠΊΠΈ! Π‘ΠΊΠ°Π·Π°Π½ΠΎ β ΡΠ΄Π΅Π»Π°Π½ΠΎ! Π‘Π½Π°ΡΠ°Π»Π° Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ° ΡΠΊΠ°Π½ΠΈΡΡΡΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ β ΠΎΠ½Π° Ρ Π½Π°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ R16, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠΊΠΎΠ²ΡΡΠΈΠ²Π°ΡΡ ΠΈΠ· ΠΏΠΎΡΡΠ° Π΅Π΅ Π½Π΅Ρ Π½ΡΠΆΠ΄Ρ. ΠΡΠΎΠ΄Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ Π Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ R16 ΡΠ΅ΡΠ΅Π· SCANMASK ΠΈ Π²ΡΠ΅ ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ΄ Π΅Π΄ΠΈΠ½ΠΈΡΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΡΠ»ΠΎ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π° Π³Π΄Π΅ Π±ΡΠ»ΠΈ Π½ΡΠ»ΠΈ β Π·Π°Π½ΡΠ»ΠΈΠ»ΠΎΡΡ. ΠΠΏΠ°, ΠΈ Ρ Π½Π°Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ ΡΠΊΠ°Π½ΠΈΡΡΡΡΠΈΠΉ ΠΊΡΡΠΎΠΊ β ΡΡΠ°ΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΠ±Π°ΠΉΡ. Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΊΠ»Π΅ΠΈΠΌ ΡΡΠ΄Π° Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΠΠ. Π Π°Π·, ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΠΈΠ΄Π° [ΡΠΊΠ°Π½][ΡΡΡΠΎΠΊΠ°]
ΠΠΎΡ Π΅Π΅ ΠΈ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ R16, Π° ΡΠ°ΠΌΠΈ Π²ΡΡ ΠΎΠ΄ΠΈΠΌ ΠΏΡΠΎΡΡ! Π’Π°ΠΊΠΆΠ΅ ΠΈ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ. ΠΠΎΠ³Π»ΡΠ΄ΠΈ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ΅, Ρ ΠΈΡ Π½Π΅ Π±ΡΠ΄Ρ ΡΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ.
ΠΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄Π°.
ΠΡΠ»ΠΈΡΠ½ΠΎ, ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ Π΅ΡΡΡ, Π½ΠΎ ΡΡΠΎ Ρ Π½ΠΈΠΌ Π΄Π΅Π»Π°ΡΡ? ΠΠ³ΠΎ ΠΆΠ΅ Π½ΠΈΠΊΡΠ΄Π° Π½Π΅ ΠΏΡΠΈΡΠΊΠ½ΡΡΡ. ΠΡ ΡΠΎ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ Π²ΠΎΡ ΡΡΠ° ΡΠ½ΡΠ³Π° Π²ΠΈΠ΄Π° 01110001 ΡΡΠΎ ΠΊΠΎΠ΄ Π΅Π΄ΠΈΠ½ΠΈΡΠΊΠΈ, Π° ΠΊΠ°ΠΊΠΎΠΉ Π½ΠΈΠ±ΡΠ΄Ρ LCD ΡΠΊΡΠ°Π½ ΠΈΠ»ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΊΠ° ΡΠΊΠΎΡΡΠΈΡ Π½Π°ΠΌ ΠΆΡΡΠΊΡΡ ΠΊΡΠ°ΠΊΠΎΠ·ΡΠ±ΡΡ ΠΈ ΡΠΊΠ°ΠΆΠ΅Ρ, Π½Π°ΠΌ Π²ΡΠ΅ ΡΡΠΎ ΠΎΠ½Π° Π΄ΡΠΌΠ°Π΅Ρ ΠΎ Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉ β Π΅ΠΉ Π²ΠΈΠ΄ΠΈΡΠ΅ Π»ΠΈ ASCII ΠΏΠΎΠ΄Π°Π²Π°ΠΉ. ΠΠ°Π΄Π½ΠΎ, Π±ΡΠ΄Π΅Ρ Π΅ΠΉ ASCII.
ΠΠ°ΠΊ Π±ΡΡΡ? ΠΡΠΎΠ³Π½Π°ΡΡ Π²ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ CASE Π³Π΄Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΏΠΎ ASCII ΠΊΠΎΠ΄Ρ ΠΌΠ΅Π½Ρ Π΄Π°Π²ΠΈΡ ΠΆΠ°Π±Π° β ΡΡΠΎ ΠΆΠ΅ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°Π΄ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΡΠ΄Π΅Π»Π°ΡΡ! ΠΡΠΎ ΠΆΠ΅ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°ΠΉΡ ΡΠΉΠ΄Π΅Ρ Π½Π° Π²ΡΡ ΡΡΡ ΡΡΡΡ
ΠΎΠΌΡΠ΄ΠΈΡ? Π ΠΏΠ°ΠΌΡΡΡ Ρ Π½Π°Ρ Π½Π΅ ΡΠ΅Π·ΠΈΠ½ΠΎΠ²Π°Ρ, ΠΆΠ°Π»ΠΊΠΈΠ΅ Π²ΠΎΡΠ΅ΠΌΡ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ, Π΄Π° ΠΏΠΎ Π΄Π²Π° Π±Π°ΠΉΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΡΠΎ Π² Π»ΡΡΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅. Π― ΠΌΠΎΠ³ Π²ΡΠ΅ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΡΠΌ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. ΠΠΠ’!!! Π Π’ΠΠΠΠ£!!! ΠΡ ΠΏΠΎΠΉΠ΄Π΅ΠΌ ΡΠ²ΠΎΠΈΠΌ ΠΏΡΡΠ΅ΠΌ.
ΠΠΊ, Π° ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ Π² Π·Π°ΠΏΠ°ΡΠ΅? ΠΠ΅ΡΠΎΠ΄ ΡΠ°Π±Π»ΠΈΡ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° Π½Π΅ ΠΊΠ°ΡΠΈΡ, ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΆΡΡΠΊΠΎΠΉ Π½Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΡΡΠΈ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ΠΎΠ². ΠΠΎΡΠ΅ΡΠ°Π» Ρ ΡΡΠΊΠΎΠ²ΠΊΡ, ΠΏΠΎΡΠ°ΡΠΈΠ»ΡΡ ΠΏΠΎ ΠΊΠ²Π°ΡΡΠΈΡΠ΅β¦ ΠΈ ΡΡΡ ΠΌΠ΅Π½Ρ ΠΎΡΠ΅Π½ΠΈΠ»ΠΎ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅!!! ΠΡΡΡΡΠΎΡΡ!!!
ΠΡΡΡΡΠΎΡΡΠΈΠΌ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄.
ΠΡΠ°ΠΊ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΆΡΡΠΊΠΎ Π½Π΅ΡΠ²Π°ΡΠΈΠΌΡΠΉ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠΎΠΉΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° ASCII ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ°ΠΊ ΡΠΊΡΠ΅ΡΡΠΈΡΡ ΡΠΆΠ° Ρ Π΅ΠΆΠΎΠΌ? ΠΠ° Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ! Π Π°Π·ΠΌΠ΅ΡΡΠΈΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΠ²ΡΠ·ΠΊΠ΅ [ΡΠΊΠ°Π½ ΠΊΠΎΠ΄]:[ascii ΠΊΠΎΠ΄] , Π° ΠΏΠΎΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½ΡΠΆΠ½ΡΠΉ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΠ³ΠΎΠ½ΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΏΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ Π½Π° Π²ΡΡ
ΠΎΠ΄Π΅ Π½ΡΠΆΠ½ΡΠΉ ASCII ΠΈΠ· ΡΠ²ΡΠ·ΠΊΠΈ. ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΠ·ΠΌΠ° β ΠΏΠΎΡΠ΅ΡΡΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π·Π°ΡΠΎ Π²ΡΠΈΠ³ΡΠ°Π»ΠΈ Π² ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠΎΡ ΡΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ:
Π’ΡΡ ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ Π°Π΄ΡΠ΅Ρ Π½Π°ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ. Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π°Π΄ΡΠ΅Ρ Π±ΡΠ» Π² Π±Π°ΠΉΡΠ°Ρ , Ρ.ΠΊ. Π² ΡΡΠ΅Π΄Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π° Π°Π΄ΡΠ΅ΡΡΠ΅ΡΡΡ Π² ΡΠ»ΠΎΠ²Π°Ρ .CodeGen:LDI ZH,High(Code_Table*2) ; ΠΠ°Π³ΡΡΠ·ΠΈΠ» Π°Π΄ΡΠ΅Ρ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ
LDI ZL,Low(Code_Table*2) ; Π‘ΡΠ°ΡΡΠΈΠΉ ΠΈ ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±Π°ΠΉΡΡ
Brute: LPM R17,Z+ ; ΠΠ·ΡΠ» ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» β ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ ΠΈ Π½ΡΡΠΈΠΌ Π΅Π³ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡ R17, ΠΏΠΎΠΏΡΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π°Π΄ΡΠ΅Ρ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ Z (Π²ΡΠ±ΠΎΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ΅ΠΉΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ) ΠΈ ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ Ρ FF β ΡΡΠΎ ΠΊΠΎΠ΄ ΠΊΠΎΠ½ΡΠ° ΡΠ°Π±Π»ΠΈΡΡ. ΠΡΠ»ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ, ΡΠΎ Π²ΡΡ ΠΎΠ΄ΠΈΠΌ ΠΎΡΡΡΠ΄Π°. ΠΡΠ»ΠΈ ΠΌΡ Π½Π΅ Π²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π±ΡΠ°Π»ΠΈ, ΡΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ R16) Π²Π½Π°ΡΠ°Π»Π΅ Ρ Π½ΡΠ»Π΅ΠΌ (Π½Π΅Ρ Π½Π°ΠΆΠ°ΡΠΈΡ), Π΅ΡΠ»ΠΈ Π½ΠΎΠ»Ρ ΡΠΎΠΆΠ΅ Π²ΡΡ ΠΎΠ΄ΠΈΠΌ. Π ΡΠΎ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ. ΠΡΠ»ΠΈ ΡΠΊΠ°Π½ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ ΡΠΎ ΡΠΊΠ°Π½ΠΎΠΌ Π½Π° Π²Ρ ΠΎΠ΄Π΅, ΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π½Π° Equal.CPI R17,0xFF ; ΠΡΠ»ΠΈ ΠΊΠΎΠ½Π΅Ρ ΡΠ°Π±Π»ΠΈΡΡ
BREQ CG_Exit ; Π’ΠΎ Π²ΡΡ ΠΎΠ΄ΠΈΠΌCPI R16,0 ; ΠΡΠ»ΠΈ Π½ΠΎΠ»Ρ,
BREQ CG_Exit ; ΡΠΎ Π²ΡΡ ΠΎΠ΄ΠΈΠΌCP R16,R17 ; Π‘ΡΠ°Π²Π½ΠΈΠ» Π΅Π³ΠΎ ΡΠΎ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ»Π°Π²ΠΈΡΠΈ.
BREQ Equal ; ΠΡΠ»ΠΈ ΡΠ°Π²Π΅Π½, ΡΠΎ ΠΈΠ΄Π΅ΠΌ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ ascii ΠΊΠΎΠ΄
Π Π² ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ Π½ΠΈΡΠΎ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΎ, ΡΠΎ ΠΌΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ LPM R17,Z+ Π»ΠΈΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠ»Π° Z Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠΊΡ β Π½Π°ΠΌ ΠΆΠ΅ Π½Π°Π΄ΠΎ ΠΏΠ΅ΡΠ΅ΡΠ°Π³Π½ΡΡΡ ΡΠ΅ΡΠ΅Π· ASCII ΠΊΠΎΠ΄ ΠΈ Π²Π·ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ. ΠΡΠΎΡΡΠΎ INC Z Π½Π΅ ΠΏΡΠΎΠΊΠ°ΡΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Z Ρ Π½Π°Ρ Π΄Π²ΡΠ±Π°ΠΉΡΠ½ΡΠΉ. ZL ΠΈ ZH. Π Π½Π΅ΠΊΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ INC ZL, Π½ΠΎ ΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΡΠ½ΠΎ ΡΠ²Π΅ΡΠ΅Π½Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ Π°Π΄ΡΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π΅Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ»Π°Π΄ΡΠ΅Π³ΠΎ Π±Π°ΠΉΡΠ° Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ (ΠΈΠ½Π°ΡΠ΅ ΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ Π°Π΄ΡΠ΅ΡΠ° 00000001:00000000 ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎ 00000000:0000000, ΡΡΠΎ Π² ΠΊΠΎΡΠ½Π΅ Π½Π΅Π²Π΅ΡΠ½ΠΎ), Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° LPM Π²ΡΠ΅ ΡΠ΄Π΅Π»Π°Π΅Ρ Π·Π° Π½Π°Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΡ ΠΌΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΠ»ΠΈ Π΅ΡΠ΅ ΠΏΠ°ΡΡ Π±Π°ΠΉΡ. ΠΠΎΡΠΎΠΌ ΠΌΡ Π²Π΅ΡΠ½Π΅ΠΌΡΡ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠΈΠΊΠ»Π°, Π° ΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΡΡ LPM ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΈΡ ΡΠΆΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄.LPM R17,Z+ ; Π£Π²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Z Π½Π° 1
RJMP Brute ; ΠΠΎΠ²ΡΠΎΡ ΡΠΈΠΊΠ»Π°
ΠΡΠ»ΠΈ ΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅, ΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ LPM Z+ Ρ Π½Π°Ρ Z ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΠ΅ΠΉΠΊΡ β Ρ ASCII ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠ΅ ΠΌΡ ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π² ΡΠ΅Π³ΠΈΡΡΡ R16 ΠΈ Π²ΡΡ ΠΎΠ΄ΠΈΠΌ Π½Π°ΡΡΠΆΡ.Equal: LPM R16,Z ; ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ASCII ΠΊΠΎΠ΄.
RET ; ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ
Π Π² ΡΠ»ΡΡΠ°Π΅ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΠΈΡΡ ΠΎΠ΄Π°, ΠΊΠΎΠ³Π΄Π° Π»ΠΈΠ±ΠΎ ΡΠ°Π±Π»ΠΈΡΠ° ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ, Π° ΡΠΊΠ°Π½ ΠΊΠΎΠ΄ ΡΠ°ΠΊ ΠΈ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Π»ΡΡ, Π»ΠΈΠ±ΠΎ Π½ΠΎΠ»Ρ Π±ΡΠ» Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ R16 Π½Π° Π²Ρ ΠΎΠ΄Π΅ β Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ Π½ΡΠ»Π΅ΠΌ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅. ΠΠΎΡ ΡΠ°ΠΊ Π²ΠΎΡ.CG_Exit: CLR R16 ; Π‘Π±ΡΠ°ΡΡΠ²Π°Π΅ΠΌ 0 = Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ 0
RET ; ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ
Π’ΡΡ ΠΏΡΠΎΡΡΠΎ ΡΠ°Π±Π»ΠΈΡΠΊΠ° ΡΡΠ°ΡΠΈΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , Π½Π° Π³ΡΠ°Π½ΠΈΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ Π΄Π²Π° Π±Π°ΠΉΡΠ° β ΡΠΊΠ°Π½ΠΊΠΎΠ΄/ASCII
;========================================
; STATIC DATA
;========================================
Code_Table: .db 0x71,0x31 ;1
.db 0xB1,0x32 ;2
.db 0xD1,0x33 ;3
.db 0x72,0x34 ;4
.db 0xB2,0x35 ;5
.db 0xD2,0x36 ;6
.db 0x73,0x37 ;7
.db 0xB3,0x38 ;8
.db 0xD3,0x39 ;9
.db 0x74,0x30 ;0
.db 0xFF,0 ;END
ΠΠΎΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠ°ΠΊΠΈΡ ΠΈΠ·Π²ΡΠ°ΡΠΎΠ² Π²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π½ ΠΊΠΎΠ΄Π°, ΡΡΠ΅Π½ΠΈΠ΅ΠΌ/Π·Π°ΠΏΠΈΡΡΡ Π² LCD ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ ΠΈ ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²ΠΊΠΈ (Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΡΠ½ΠΎ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½ΡΠΌ, ΡΡΠΎ ΠΏΠ°ΠΌΡΡΡ ΡΠ°Π²Π½Π° Π½ΡΠ»Ρ) Π·Π°Π½ΡΠ»ΠΎ Π²ΡΠ΅Π³ΠΎ 354 Π±Π°ΠΉΡΠ°. ΠΡΠΎ ΡΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΠ΅?
ΠΠ° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠΊΠ΅ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ 12-ΠΊΠ½ΠΎΠΏΠΎΡΠ½ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΊ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ AVR, ΠΈ ΠΊΠ°ΠΊ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΡΠ΅ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°. ΠΡΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ «Connecting a keypad to an AVR» [1]. ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C, ΡΠΌ. [2]. [1. ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°] ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΡΡΠΎ Π½Π°Π±ΠΎΡ Π·Π°ΠΌΡΠΊΠ°ΡΠ΅Π»Π΅ΠΉ. ΠΠ°ΠΆΠ°Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ — ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ°ΠΊΡ Π·Π°ΠΌΠΊΠ½ΡΠ»ΡΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ΄ΡΡ ΠΎΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΡ Π΅ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π·Π°ΠΌΡΠΊΠ°ΡΠ΅Π»Π΅ΠΉ Π² ΠΌΠ°ΡΡΠΈΡΡ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ 12-ΠΊΠ½ΠΎΠΏΠΎΡΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΠ° ΠΈΠΌΠ΅Π΅Ρ 3 ΡΡΠΎΠ»Π±ΡΠ° (Column, ΠΏΡΠΎΠ²ΠΎΠ΄Π° ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΏΡΠΎΠ½ΡΠΌΠ΅ΡΠΎΠ²Π°Π½Ρ ΠΊΠ°ΠΊ Col3..Col1) ΠΈ 4 ΡΡΡΠΎΠΊΠΈ (Row, ΠΏΡΠΎΠ²ΠΎΠ΄Π° ΡΡΡΠΎΠΊ ΠΏΡΠΎΠ½ΡΠΌΠ΅ΡΠΎΠ²Π°Π½Ρ ΠΊΠ°ΠΊ Row4..Row1). Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° «1», ΡΠΎ Π·Π°ΠΌΡΠΊΠ°ΡΡΡΡ Π΄ΡΡΠ³ Π½Π° Π΄ΡΡΠ³Π° Col1 ΠΈ Row1, Π΅ΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° «2», ΡΠΎ Π·Π°ΠΌΡΠΊΠ°ΡΡΡΡ Col2 ΠΈ Row1, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎ Π½Π°ΠΆΠ°ΡΠ° Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠ· 12, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π½Π° Π·Π΅ΠΌΠ»Ρ, Π° Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΡΠ΅Π· Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠΉ ΡΠ΅Π·ΠΈΡΡΠΎΡ (pull-up) ΠΊ + ΠΏΠΈΡΠ°Π½ΠΈΡ. Π’ΠΎΠ³Π΄Π° Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ Output ΠΏΠΎΡΠ²ΠΈΡΡΡ Π»ΠΎΠ³. 0, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΆΠ°ΡΠ° Π»ΡΠ±Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ Π½ΡΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎ Π½Π°ΠΆΠ°ΡΠ° Π»ΡΠ±Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°, Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠ· 12 Π±ΡΠ»Π° Π½Π°ΠΆΠ°ΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π²ΡΠ΅ ΡΡΠ°Π·Ρ ΡΡΠΎΠ»Π±ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ Π»ΠΎΠ³. 0, ΠΎΠ½ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ 0 ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ, Π΄ΡΡΠ³ Π·Π° Π΄ΡΡΠ³ΠΎΠΌ. Π’Π°ΠΊΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΏΡΠΎΠ±Π΅Π³Π°Π½ΠΈΡ Π»ΠΎΠ³. 0 ΠΏΠΎ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. ΠΠ΄ΠΈΠ½ ΡΠΈΠΊΠ» ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ, Π·Π° Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° 1..10 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠΉ ΡΠ΅Π·ΠΈΡΡΠΎΡ. Π‘ΠΎΠ±ΡΡΠΈΠ΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π²ΡΠ΅Ρ ΡΡΡΠΎΠΊ (Row4..Row1). ΠΡΠ»ΠΈ Π½Π° Π²ΡΠ΅Ρ RowX ΡΡΠΎΠ²Π΅Π½Ρ Π»ΠΎΠ³. 1, ΡΠΎ ΡΡΠΎ ΡΡΠΎ Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠ»Π°Π²ΠΈΡ Π½Π΅ Π½Π°ΠΆΠ°ΡΠ°. ΠΡΠ»ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΡΠΎΠΊ RowX ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΡΡΠΎΠ²Π΅Π½Ρ Π»ΠΎΠ³. 0, ΡΠΎ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅ΡΡΡ, ΠΈ ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅.
Π§ΡΠΎΠ±Ρ ΡΠΈΡΠ°ΡΡ ΡΠ°ΠΊΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅: β’ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ, ΡΠ΅Π³ΠΈΡΡΡ ΡΠ΄Π²ΠΈΠ³Π° ΠΈ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°/ΠΎΡΡΠ°Π½ΠΎΠ²Π° Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Ρ ΡΠ°ΠΊΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΡΠΏΡΠ°Π²ΠΈΡΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ AVR. [2. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ AVR ΠΊ ΠΌΠ°ΡΡΠΈΡΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ] ΠΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π° ΠΊ AVR Π½Π°ΠΏΡΡΠΌΡΡ, Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠ° ΡΡΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ ΠΊ 7 ΠΌΠ»Π°Π΄ΡΠΈΠΌ ΡΠ°Π·ΡΡΠ΄Π°ΠΌ ΠΏΠΎΡΡΠ° P ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° AVR. ΠΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ GPIO PB4..PB6 ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ΄Ρ, ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΈΠ³Π½Π°Π»Ρ Π΄Π»Ρ ΡΡΠΎΠ»Π±ΡΠΎΠ² (ΡΠΊΠ°Π½ΠΈΡΡΡΡΠΈΠΉ Π±Π΅Π³ΡΡΠΈΠΉ Π»ΠΎΠ³. 0). GPIO PB0..PB3 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ°ΠΊ Π²Ρ ΠΎΠ΄Ρ, ΡΠ΅ΡΠ΅Π· Π½ΠΈΡ ΡΠΈΡΠ°Π΅ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΡΡΠΎΠΊ. ΠΠ° ΡΡΠΈΡ Π²Ρ ΠΎΠ΄Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° (pull-up), ΡΠ°ΠΊ ΡΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π»ΠΎΠ³. 1 Π½Π΅ Π½ΡΠΆΠ½Ρ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΏΠΎΡΡΡ GPIO. ΠΡΠ° ΡΠ°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° 1 ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΈΡΠ°Π½ΠΈΠ΅ AVR. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ; ; ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ I/O ΠΏΠΎΡΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ; .DEF rmp = R16 ; ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ; ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠΎΠ² .EQU pKeyOut = PORTB ; ΡΠ΅Π³ΠΈΡΡΡ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π²ΡΡ ΠΎΠ΄Π° (Col3..Col1) ; ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Pull-Up (Row4..Row1) .EQU pKeyInp = PINB ; ΡΠ΅Π³ΠΈΡΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π²Ρ ΠΎΠ΄ΠΎΠ² (Row4..Row1) .EQU pKeyDdr = DDRB ; ΡΠ΅Π³ΠΈΡΡΡ, Π·Π°Π΄Π°ΡΡΠΈΠΉ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΡΡΠ° ; ΠΠΎΠ΄ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ InitKey: ldi rmp,0b01110000 ; ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ° DDRB, ΡΡΠΎΠ»Π±ΡΡ ; Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ΄Ρ, ΡΡΡΠΎΠΊΠΈ ΠΊΠ°ΠΊ Π²Ρ ΠΎΠ΄Ρ out pKeyDdr,rmp ; Π·Π°ΠΏΠΈΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ldi rmp,0b00001111 ; ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ Pull-Up Π½Π° ΡΡΡΠΎΠΊΠ°Ρ out pKeyOut,rmp ; Π²ΡΠ²ΠΎΠ΄ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² ΡΠ΅Π³ΠΈΡΡΡ PORTB ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π½Π°ΠΆΠ°ΡΠ° Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΡΠ΅Ρ, Π±ΡΠ»Π° Π»ΠΈ Π½Π°ΠΆΠ°ΡΠ° Π»ΡΠ±Π°Ρ ΠΈΠ· 12 ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. ΠΡΠ° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΠ»Π° Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, ΠΈΠ»ΠΈ ΠΏΠΎ ΡΠ°ΠΉΠΌΠ΅ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ΡΠ°ΠΉΠΌΠ΅ΡΠ°). ; ; ΠΡΠΎΠ²Π΅ΡΠΊΠ°, Π½Π°ΠΆΠ°ΡΠ° ΠΈΠ»ΠΈ Π½Π΅Ρ Π»ΡΠ±Π°Ρ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ ; AnyKey: ldi rmp,0b00001111 ; PB4..PB6(Col3..Col1)=0, pull-Up ΡΠ΅Π·ΠΈΡΡΠΎΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ; Π½Π° Π²Ρ ΠΎΠ΄Ρ (PB0..PB3, Row4..Row1). out pKeyOut,rmp ; ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅Π³ΠΈΡΡΡΠ° PORTB in rmp,pKeyInp ; ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΡΡΠΎΠΊ (Row4..Row1). ori rmp,0b11110000 ; ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π±ΠΈΡΡ Π² Π»ΠΎΠ³. 1 cpi rmp,0b11111111 ; Π²ΡΠ΅ Π±ΠΈΡΡ Π² Π»ΠΎΠ³. 1? breq NoKey ; Π΄Π°, Π½Π΅ Π±ΡΠ»Π° Π½Π°ΠΆΠ°ΡΠ° Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°: ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΡΠΎΠ±ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΏΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ²Π½Ρ Π½Π° Π»ΡΠ±ΠΎΠΌ ΠΈΠ· Π²Ρ ΠΎΠ΄ΠΎΠ² Row4..Row1. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ ΡΡΠΈ ΡΡΠΎΠ»Π±ΡΠ° Col3..Col1 Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π»ΠΎΠ³. 0 ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌ ΡΠ½Π° (Sleep, ΡΠ΅ΠΆΠΈΠΌ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ½Π΅ΡΠ³ΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ). ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΌΠ΅Ρ Π»ΡΠ±ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ, ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΏΡΠΎΡΠ½Π΅ΡΡΡ ΠΏΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π»ΠΎΠ³. 0 Π½Π° Π²Ρ ΠΎΠ΄Π°Ρ ΡΡΡΠΎΠΊ Row4..Row1. Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Col3..Col1 ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°ΡΠ°. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π° ΡΡΠΎΠ»Π±ΡΡ Col3..Col1 ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠ°Π²ΠΈΡΡ Π»ΠΎΠ³. 0. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΠΎΡΡΠΎΠ² ΡΡΠΎΠ»Π±ΡΠ° PB4..PB6 (Col3..Col1) Π²ΡΡΡΠ°Π²Π»Π΅Π½ 0 ΠΈ Π½Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΡΡΠ°Ρ ΡΡΠΎΠ»Π±ΡΠ° Π»ΠΎΠ³. 1, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΠΎΡΡΠΎΠ² ΡΡΡΠΎΠΊ PB0..PB3 (Row4..Row1) Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ 0. Π Π΅Π³ΠΈΡΡΡ Z (ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²Π°Ρ ΠΏΠ°ΡΠ° R31:R30) ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ°Π±Π»ΠΈΡΡ (ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π° Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ FLASH), ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΊΠΎΠ΄Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π·Π°ΠΊΠΎΠ½ΡΠΈΡ ΡΠ°Π±ΠΎΡΡ, ΡΠ΅Π³ΠΈΡΡΡ Z Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ LPM ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡ R0. ; ; ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ; ReadKey: ldi ZH,HIGH(2*KeyTable) ; Z ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ΄ΠΎΠ² ΠΊΠ½ΠΎΠΏΠΎΠΊ ldi ZL,LOW(2*KeyTable) ; ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠ° 1 (Col1) ldi rmp,0b00111111 ; PB6 = 0 out pKeyOut,rmp in rmp,pKeyInp ; ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ ori rmp,0b11110000 ; ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈΡ Π±ΠΈΡ cpi rmp,0b11111111 ; Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° Π² ΡΡΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅? brne KeyRowFound ; Π½Π°ΠΉΠ΄Π΅Π½Π° Π½Π°ΠΆΠ°ΡΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° Π² ΡΡΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ adiw ZL,4 ; Π² ΡΡΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Z ; Π½Π° 4 ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π°Π»ΡΡΠ΅ ; ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠ° 2 (Col2) ldi rmp,0b01011111 ; PB5 = 0 out pKeyOut,rmp in rmp,pKeyInp ; ΡΠ½ΠΎΠ²Π° ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ ori rmp,0b11110000 ; ΡΠ½ΠΎΠ²Π° ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈΡ Π±ΠΈΡ cpi rmp,0b11111111 ; Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° Π² ΡΡΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅? brne KeyRowFound ; Π½Π°ΠΉΠ΄Π΅Π½Π° Π½Π°ΠΆΠ°ΡΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° Π² ΡΡΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ adiw ZL,4 ; Π² ΡΡΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Z ; Π½Π° 4 ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π°Π»ΡΡΠ΅ ; ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠ° 3 (Col3) ldi rmp,0b01101111 ; PB4 = 0 out pKeyOut,rmp in rmp,pKeyInp ; ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ ori rmp,0b11110000 ; ΡΠ½ΠΎΠ²Π° ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈΡ Π±ΠΈΡ cpi rmp,0b11111111 ; Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° Π² ΡΡΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅? breq NoKey ; Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Π½Π΅ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ; ΠΈΠ· ΡΡΠΎΠ»Π±ΡΠΎΠ² KeyRowFound: ; Π½Π°ΠΉΠ΄Π΅Π½ ΡΡΠΎΠ»Π±Π΅Ρ, Π³Π΄Π΅ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ°, ΡΠ΅ΠΏΠ΅ΡΡ ; Π½Π°Π΄ΠΎ ΡΠ·Π½Π°ΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ lsr rmp ; ΡΠ΄Π²ΠΈΠ³ Π»ΠΎΠ³. 0 Π²Π»Π΅Π²ΠΎ, Π±ΠΈΡ 0 ΠΏΡΠΈ ΡΡΠΎΠΌ Π²Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ ; Π² ΠΏΡΠΈΠ·Π½Π°ΠΊ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° brcc KeyFound ; Π²ΡΠ΄Π²ΠΈΠ½ΡΠ»ΡΡ Π»ΠΎΠ³. 0, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ ΡΡΠΎ ΠΊΠ»Π°Π²ΠΈΡΠ° Π½Π°ΠΉΠ΄Π΅Π½Π° adiw ZL,1 ; ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π² ΡΡΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅ rjmp KeyRowFound ; ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΡΠ΄Π²ΠΈΠ³ KeyFound: ; Π½Π°ΠΉΠ΄Π΅Π½Π° Π½Π°ΠΆΠ°ΡΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° lpm ; ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΡΠ΅Π³ΠΈΡΡΡ R0 rjmp KeyProc ; ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ NoKey: rjmp NoKeyPressed ; Π½Π΅ Π±ΡΠ»Π° Π½Π°ΠΉΠ΄Π΅Π½Π° Π½Π°ΠΆΠ°ΡΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° ; ; Π’Π°Π±Π»ΠΈΡΠ° ΠΊΠΎΠ΄ΠΎΠ² ΠΊΠ½ΠΎΠΏΠΎΠΊ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ; KeyTable: .DB 0x0A,0x07,0x04,0x01 ; ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ, ΠΊΠ½ΠΎΠΏΠΊΠΈ *, 7, 4 ΠΈ 1 .DB 0x00,0x08,0x05,0x02 ; Π²ΡΠΎΡΠΎΠΉ ΡΡΠΎΠ»Π±Π΅Ρ, ΠΊΠ½ΠΎΠΏΠΊΠΈ 0, 8, 5 ΠΈ 2 .DB 0x0B,0x09,0x06,0x03 ; ΡΡΠ΅ΡΠΈΠΉ ΡΡΠΎΠ»Π±Π΅Ρ, ΠΊΠ½ΠΎΠΏΠΊΠΈ #, 9, 6 ΠΈ 3 ΠΠ°ΠΊ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π΄ΡΠ΅Π±Π΅Π·Π³Π° ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΎΠ² (Π΄Π΅Π±ΠΎΡΠ½ΡΠΈΠ½Π³) Π£ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ KeyProc ΠΈ NoKeyPressed ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄Π΅Π±ΠΎΡΡΠΈΠ½Π³ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΡΠ΅ΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡ Π²Π²Π΅ΡΡ , ΠΏΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π° ΠΎΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠ°. ΠΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 50 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° NoKeyPressed ΠΎΡΠΈΡΡΠΈΡ ΡΡΠ΅ΡΡΠΈΠΊ, ΠΈ ΡΡΠΈΠΌ Π±ΡΠ΄ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½Ρ Π»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ΠΌΡ ΠΎΠΏΡΠΎΡΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π² ΠΎΠ±ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ AVR, ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½ΠΈΡ Π΄ΡΠ΅Π±Π΅Π·Π³Π° Π·Π΄Π΅ΡΡ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π°. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ, ΡΡΠΎ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ ΠΡΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π²ΡΡΠ΅, Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΡΡΠΎΠΊ. Π’Π°ΠΊ ΡΡΠΎ ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΉ Π΅ΠΌΠΊΠΎΡΡΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΎΠ² Π΄ΠΎ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΠΈ/ΠΈΠ»ΠΈ Π½Π° Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠ°ΡΡΠΎΡΠ΅ ΠΎΠΏΡΠΎΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ (Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΡΡΠΎΠΊΠ°Ρ ΡΠ°ΠΊΡΠΎΠ²Π°Ρ ΡΠ°ΡΡΠΎΡΠ° ΡΠ΄ΡΠ° AVR) Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΏΠΈΡΡΡ ΠΈ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ (ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΡΡΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ NOP ΠΈΠ»ΠΈ ΡΠΈΠΊΠ»Π°ΠΌΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ). ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° AVR (pull-up) ΠΈΠΌΠ΅ΡΡ Π½ΠΎΠΌΠΈΠ½Π°Π» ΠΎΠΊΠΎΠ»ΠΎ 50 ΠΊΠΠΌ. ΠΠ»ΠΈΠ½Π½ΡΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ° Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ ΡΠΈΠ»ΡΠ½ΡΡ ΠΏΠΎΠΌΠ΅Ρ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠΌΡ ΠΎΠΏΡΠΎΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. Π§ΡΠΎΠ±Ρ ΡΠ½ΠΈΠ·ΠΈΡΡ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊ ΡΡΠΌΠ°ΠΌ ΠΈ ΠΏΠΎΠΌΠ΅Ρ Π°ΠΌ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π½Π° ΡΠΈΠ³Π½Π°Π»Ρ ΡΡΡΠΎΠΊ Row4..Row1 Π²Π½Π΅ΡΠ½ΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π½ΠΎΠΌΠΈΠ½Π°Π»Π° (1..10 ΠΊΠΠΌ). ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΡΡ Π΅ΠΌΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ 7 ΠΏΠΎΡΡΠΎΠ² GPIO ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΡΡΠΎΠ°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π¦ΠΠ, Analog-Digital Convertor, ADC) ΠΈ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² Π±ΠΎΠ»Π΅Π΅ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ½Π° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π½ΠΎΠΆΠ΅ΠΊ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. [3. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ ADC Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅Π·ΠΈΡΡΠΎΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ] ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² AVR ΡΠ΅ΡΠΈΠΉ Tiny ΠΈ Mega Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΈΠΌΠ΅ΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠΎΡΡΠ°Π²Π΅ Π¦ΠΠ (ADC). ΠΠ΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²Π½Π΅ΡΠ½Π΅ΠΉ Π°ΠΏΠΏΠ°ΡΠ°ΡΡΡΡ ADC ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΠΎΡΠ½ΠΎΡΡΡΡ 10 Π±ΠΈΡ. ΠΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½ΠΎΠΆΠΊΠΈ GPIO ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ADC, ΡΠΎ ΠΡ ΠΊΠ°ΠΊ-ΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΠΎΠ΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°ΠΆΠ°ΡΠ°. ΠΡΠΎ Π·Π°Π΄Π°ΡΠ° Π΄Π»Ρ ΡΠ΅Π·ΠΈΡΡΠΎΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ. Π Π΅Π·ΠΈΡΡΠΎΡΠ½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Π° ΡΠ΅Π·ΠΈΡΡΠΎΡΠ½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ°. Π‘ΡΡΠΎΠΊΠΈ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΊ Π·Π΅ΠΌΠ»Π΅ (- ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΈΡΠ°Π½ΠΈΡ), ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΎΠ»Π±ΡΠ°ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠ΅ Π² ΡΡΠ΅ΠΊ ΡΠ΅Π·ΠΈΡΡΠΎΡΡ. Π‘ΡΡΠΎΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΊ ΡΠ°ΠΊΠΆΠ΅ ΠΊ ΡΡΠ΅ΠΊΡ ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ², Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΊ + ΠΏΠΈΡΠ°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 5V). ΠΡ ΠΎΠ΄ ΠΠ¦Π (ΠΊΠ°Π½Π°Π» ADC0) Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ ΠΊΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡΠΎΠΌ 1 Π½Π€ (1000 ΠΏΠ€). ΠΡΠΎΡ ΠΊΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡ ΠΈ ΡΠΎΠΏΡΠΎΡΠΈΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² ΠΌΠ°ΡΡΠΈΡΡ ΠΎΠ±ΡΠ°Π·ΡΡΡ Π€ΠΠ§, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΅Π³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π½Π° Π²Ρ ΠΎΠ΄Π΅ ADC, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ADC Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²ΡΡΠΎΠΊΠΈΠ΅ ΡΠ°ΡΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ ΠΏΠ΅ΡΠ΅ΠΏΠ°Π΄Π°ΠΌΠΈ ΡΠΈΠ³Π½Π°Π»Π° ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΡΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ADC. ΠΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° «5», ΡΠΎ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ: 1 ΠΊΠΠΌ + 820 ΠΠΌ = 1.82 ΠΊΠΠΌ Π½ΠΈΠΆΠ½Π΅Π΅ ΠΏΠ»Π΅ΡΠΎ (ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΊ Π·Π΅ΠΌΠ»Π΅), ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ΠΌ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠΈ 5V Π½Π° Π²ΡΡ
ΠΎΠ΄Π΅ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅: ΠΡΠΎ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ ΠΠ¦Π. ΠΡΠ»ΠΈ ΠΏΡΠΈΠ½ΡΡΡ Π΄ΠΎΠΏΡΡΠΊ Π½Π° Π½ΠΎΠΌΠΈΠ½Π°Π» ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² 5%, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ 1.468 ΠΈ 1.627 Π²ΠΎΠ»ΡΡΠ°ΠΌΠΈ. 10-Π±ΠΈΡΠ½ΡΠΉ ΠΠ¦Π ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΡΠΎ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ (Π΅ΡΠ»ΠΈ Ρ ADC ΠΎΠΏΠΎΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Ρ ΠΌΠ°ΡΡΠΈΡΡ, 5V) Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ 300 ΠΈ 333. ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌ Π΄Π²Π° ΠΌΠ»Π°Π΄ΡΠΈΡ Π±ΠΈΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ADC Π½Π° 4 ΡΠ΄Π²ΠΈΠ³ΠΎΠΌ ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π»Π΅Π²ΠΎΠ΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΠΊΠΎΠ³Π΄Π° ADC ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ), ΡΡΠΎ Π΄Π°ΡΡ 8-Π±ΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 74..78. ΠΡΠ±ΠΎΠ΅ Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅ Π΄Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ADC, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ΄ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠΠ°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² Π² Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ ΠΌΠ°ΡΡΠΈΡΡ Π΄Π°Π΄ΡΡ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ±ΡΠ°Π½Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ. ΠΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΠΊ 8-Π±ΠΈΡΠ½ΠΎΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ADC. 8-Π±ΠΈΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ.
ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ, Π½Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΠΈΡ ΡΡΠΎΠ²Π½Π΅ΠΉ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΉ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΏΡΠΈ ΡΡΠ΅ΡΠ΅ Π΄ΠΎΠΏΡΡΠΊΠ° Π½Π° Π½ΠΎΠΌΠΈΠ½Π°Π» ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² 5%. ΠΡΠ»ΠΈ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠΌΠΈ ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ², ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°ΡΠ°ΡΡ Π»ΠΈΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Excel ΠΈ Open Office [4], ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. Π‘ΠΎΠ²Π΅ΡΡ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΠ¦Π ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² AVR Π§ΠΈΠΏΡ ATtiny ΡΠ°ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΠ¦Π ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΎΠΏΠΎΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΠ»Ρ ΠΎΠΏΡΠΎΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΠ¦Π ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½Ρ Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΈΡΠ°Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ. ΠΡΠ° ΠΎΠΏΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π½Π°ΡΡΡΠΎΠ΅Π½Π° ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ADC, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠ°ΡΡΡΠ΅Ρ (ΠΏΠΎΡΠ»Π΅ ΡΠ±ΡΠΎΡΠ° ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΈΡΠ°Π½ΠΈΡ). ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΈΠΏΡ ATmega ΠΌΠΎΠ³ΡΡ Π±ΡΠ°ΡΡ ΠΎΠΏΠΎΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ADC Ρ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°, AREF. ΠΡΠΎΡ Π²ΡΠ²ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Π²Ρ ΠΎΠ΄, Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ΄. ΠΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ ADC Π²ΡΠ±ΡΠ°Π½ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ ΠΎΠΏΠΎΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΈΡΠ°Π½ΠΈΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊ Π½ΠΎΠΆΠΊΠ΅ AREF ΠΈ ΠΊ Π·Π΅ΠΌΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡ, ΡΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΡΠΌΡ ΠΈ ΠΏΠΎΠΌΠ΅Ρ ΠΈ Π½Π° ΠΎΠΏΠΎΡΠ½ΠΎΠΌ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠΈ. AREF ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Π²Ρ ΠΎΠ΄, Π΅ΡΠ»ΠΈ Π½Π°ΡΡΡΠΎΠ΅Π½ Π²ΡΠ±ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠΏΠΎΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ADC ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°. ΠΡΠ»ΠΈ ΠΎΠΏΠΎΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ, ΡΠΎ ΠΈ ΠΌΠ°ΡΡΠΈΡΠ° ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Π° ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°. ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ ΡΡ Π΅ΠΌΠ° ΠΌΠ°ΡΡΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ ΡΠΎΠΊ Π΄ΠΎ 10 ΠΌΠ, ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊ ΠΏΠΎΠΌΠ΅Ρ Π°ΠΌ. Π§ΠΈΠΏΡ ATmega ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΈΡΠ°ΡΡ ADC ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΊΠΎΡΠΏΡΡΠ° (AVCC), ΡΡΠΎΠ±Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠ·ΠΈΡΡ ΡΡΠΌΡ. ΠΡΠ»ΠΈ ADC ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΡΠΎ ΠΈΠ·-Π·Π° Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (8 Π±ΠΈΡ) Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° AVCC, ΠΈ ΡΡΠΎΡ Π²ΡΠ²ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ ΠΎΠ±ΡΡΠ½ΠΎΠΌΡ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ Π²ΡΠ΅ ΠΆΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠ°Π½Π°Π»Ρ ADC ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ, ΡΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ AVCC ΠΊ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· Π΄ΡΠΎΡΡΠ΅Π»Ρ Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠΌ ΠΎΠΊΠΎΠ»ΠΎ 22 ΠΌΠΊΠΠ½, ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ AVCC ΠΈ Π·Π΅ΠΌΠ»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ½Π΄Π΅Π½ΡΠ°ΡΠΎΡ 100 Π½Π€ (0.1 ΠΌΠΊΠ€). ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ADC ΠΠ»Ρ ΡΡΠ΅Π½ΠΈΡ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, Π½ΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΊΠ°Π½Π°Π» ADC. ADC ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° (Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ±ΡΠΎΡ). ΠΠ²Π° ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ: Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ATmega8, ΠΈ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡΠΌΠΈ Π·Π°ΠΏΡΡΠΊ ADC, ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ATtiny13. ATmega8: ΡΡΡΠ½ΠΎΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ADC ΠΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ATmega8, Π±Π΅Π· ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ, Ρ ΡΡΡΠ½ΡΠΌ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΎΠΌ ADC. Π‘ΠΈΠ³Π½Π°Π» ΠΎΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π½Π° ΠΊΠ°Π½Π°Π» ADC0. .DEF rKey =R15 ; Π Π΅Π³ΠΈΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ADC .DEF rmp = R16 ; Π Π΅Π³ΠΈΡΡΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ; ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΊΠ°Π½Π°Π»Π° 0 ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡΠ°, Ρ Π»Π΅Π²ΡΠΌ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ; ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, AREF Π±Π΅ΡΠ΅ΡΡΡ ΠΎΡ AVCC ldi rmp,(1<<REFS0)|(1<<ADLAR) ; ADMUX ΠΊΠ°Π½Π°Π» 0, AREF ΠΎΡ AVCC out ADMUX,rmp ; Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ADC, Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΠΈ, Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ = 128 ldi rmp,(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0) out ADCSRA,rmp ; ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ WaitAdc1: ; ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π±ΠΈΡΠ° ADSC, ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½Π° Π΅ΡΠ»ΠΈ ΡΡΠΎΡ Π±ΠΈΡ == 0 sbic ADCSRA,ADSC ; ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°? rjmp WaitAdc1 ; Π΅ΡΠ΅ Π½Π΅Ρ ; ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π±Π°ΠΉΡΠ° (MSB) ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ADC in rKey,ADCH ; Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ADC ldi rmp,(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0) out ADCSRA,rmp ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 25 * 128 ΡΠ°ΠΊΡΠΎΠ²ΡΡ ΡΠΈΠΊΠ»ΠΎΠ², Π½Π° ΡΠ°ΠΊΡΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΎΡΠ΅ 1 ΠΠΡ Π²ΡΠ΅ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΡΠ°Π²ΠΈΡ 3.2 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ°ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ADC Π΄ΠΎΠΏΡΡΡΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΠ°ΠΌ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π½Π° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ). ATtiny13: Π°Π²ΡΠΎΠ·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΠΈ ADC, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ΠΠ°ΠΆΠ΅ ATtiny13 Ρ Π΅Ρ 8 Π½ΠΎΠΆΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, Π΅ΡΠ»ΠΈ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ADC (ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ 3×4, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ATtiny13 Π½Π΅ Ρ Π²Π°ΡΠΈΡ Π½ΠΎΠΆΠ΅ΠΊ I/O). Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ: Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Ρ ΠΊΠ°Π½Π°Π»Π° ADC3 (Π²ΡΠ²ΠΎΠ΄ 2 ATtiny13), ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ; ; ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ADC, ΠΏΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΠΈ ; ; PB3=ADC3, ΡΡΠΎΡ Π²Ρ ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ldi rmp,0b00001000 ; ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° PB3, ; ΡΡΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΠΌΡΡ ΡΠ½Π΅ΡΠ³ΠΈΡ out DIDR0,rmp ; ΠΠΏΠΎΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ = Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΠΈΡΠ°Π½ΠΈΡ, Π»Π΅Π²ΠΎΠ΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ; ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ADMUX ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ Π½Π° ADC3 ldi rmp,0b00100011 ; ΠΎΠΏΠΎΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ = Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΠΈΡΠ°Π½ΠΈΡ, ; Π²ΡΠ±ΠΎΡ ADC3 out ADMUX,rmp ; Π²ΡΠ±ΡΠ°Π½Π° ΠΎΠΏΡΠΈΡ Π°Π²ΡΠΎΡΡΠ°ΡΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ldi rmp,0b00000000 ; ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΠΈΠ΅ΡΡ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ; ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ (free-running, Π°Π²ΡΠΎΡΡΠ°ΡΡ). out ADCSRB,rmp ; Π·Π°ΠΏΡΡΠΊ ADC, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, Π²ΡΠ±ΠΎΡ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠ°ΠΊΡΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΎΡΡ ldi rmp,0b11101111 ; ΡΡΠ°ΡΡ ADC, Π°Π²ΡΠΎΡΡΠ°ΡΡ out ADCSRA,rmp ; ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ, Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠ°ΠΊΡΠΎΠ² 128 ; ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½Π° ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ Π²Π΅ΠΊΡΠΎΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ (rjmp intadc). ; ; ΠΠ΅ΠΊΡΠΎΡΡ ΡΠ±ΡΠΎΡΠ° ΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ATtiny13 ; .CSEG ; Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ΅Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°, .ORG $0000 ; Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π΅Π³ΠΎ Π½Π°ΡΠ°Π»Π° rjmp main ; ΠΠ΅ΠΊΡΠΎΡ ΡΠ±ΡΠΎΡΠ° (Reset) reti ; Int0, Π²Π΅ΠΊΡΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ reti ; PCINT0, Π²Π΅ΠΊΡΠΎΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ²Π½Ρ reti ; TC0, Π²Π΅ΠΊΡΠΎΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° 0 reti ; Π²Π΅ΠΊΡΠΎΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ EEPROM reti ; Π²Π΅ΠΊΡΠΎΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΠ° reti ; Π²Π΅ΠΊΡΠΎΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ TC0 CompA (ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ) reti ; Π²Π΅ΠΊΡΠΎΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ TC0 CompB (ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ) reti ; Π²Π΅ΠΊΡΠΎΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ WDT rjmp intadc ; Π²Π΅ΠΊΡΠΎΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΠΈ ADC ; Π‘Π°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ, Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ ΡΡΠ΅ΠΊ, ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΡΠ»Π°Π³ ΠΎΠ±ΡΠ΅Π³ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ (SEI). ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ADC ΡΠΈΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ±ΡΠ°Π½ΠΎ Π»Π΅Π²ΠΎΠ΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΡΠΈΠΉ (MSB) Π±Π°ΠΉΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°: ; ; ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ (ISR) Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΠΈ ADC ; .DEF rKey = R15 ; Π Π΅Π³ΠΈΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ADC intadc: in rKey,ADCH ; ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠ΅Π³ΠΎ (MSB) Π±Π°ΠΉΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ reti ; Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΈΠ· ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ; Π Π΅Π³ΠΈΡΡΡ rKey ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π΄Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅Π·ΠΈΡΡΠΎΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. ΠΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ARC, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ADC ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ-ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½. ΠΠ°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ADC Π½Π΅ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π² ΠΏΡΠΎΡΡΡΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° (Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ, Π½ΠΎΠΌΠΈΠ½Π°Π»Ρ ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² 4.7 — 5.6 — 6.8 — 8.2 ΠΏΡΠΈΠ΄ΡΠΌΠ°Π» ΠΏΡΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ, ΠΈ ΡΠΎΡΠΌΡΠ»Π° V = R1 / (R1 + R2) Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ° Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ). ΠΠΎΡΡΠΎΠΌΡ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΎΠ² ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π’Π°Π±Π»ΠΈΡΠ° Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ 256 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ADC, ΠΈ Π½Π°ΠΌ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅. ΠΠ°ΠΊ ΠΎΠ±Π΅Π·ΡΡΠ½Π°, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΊΠ°ΡΠ°Π±ΠΊΠ°ΡΡΡΡ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ ΠΌΠ°ΡΡΠΈΡΡ ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ ΡΠ΅ΡΠ΅Π· ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ: KeyTable: .DB 7, 255, 18, 1, 28, 2, 42, 3, 64, 4, 91, 5 .DB 121, 6, 156, 7, 185, 8, 207, 9, 225, 10, 237, 0, 255, 11 ΠΠ΄Π΅ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π±Π°ΠΉΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, Π° Π²ΡΠΎΡΠΎΠΉ Π±Π°ΠΉΡ ΡΡΠΎ ΠΊΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π½Π°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ 0 ΠΈ < 7, ΡΠΎ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π΅ Π±ΡΠ»Π° Π½Π°ΠΆΠ°ΡΠ° Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ (ΠΊΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΡΠΈ 255), Π΅ΡΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ 7 ΠΈ < 18, ΡΠΎ ΠΊΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ 1, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π·Ρ ASCII-ΠΊΠΎΠ΄Ρ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ: KeyTable: .DB 7, 0 , 18, '1', 28, '2', 42, '3', 64, '4', 91, '5' .DB 121, '6', 156, '7', 185, '8', 207, '9', 225, '*', 237, '0', 255, '#' ΠΠΎΠ΄ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ: ; ; ΠΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ADC Π² ΠΊΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ ; GetKeyCode: ; ΡΠ½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΏΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ; ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ mov R1,rKey ; ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ADC Π² ΡΠ΅Π³ΠΈΡΡΡ R1 ldi ZH,HIGH(2*KeyTable) ; Z ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ldi ZL,LOW(2*KeyTable) GetKeyCode1: lpm ; ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ cp R1,R0 ; ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ADC brcs GetKeyCode2 ; ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ; ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π° inc R0 ; ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ Π»ΠΈ ΠΊΠΎΠ½Π΅Ρ ΡΠ°Π±Π»ΠΈΡΡ breq GetKeyCode2 ; ΡΠ°Π±Π»ΠΈΡΠ° Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ adiw ZL,2 ; ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ rjmp GetKeyCode1 ; ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ GetKeyCode2: adiw ZL,1 ; Z ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΊΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ lpm ; ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΡΠ΅Π³ΠΈΡΡΡ R0 ; ΠΠ΄Π΅ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ Π΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, ΡΡΠΎ Π½Π΅ ΠΎΠ΄Π½Π° ΠΈΡ
ΠΊΠ½ΠΎΠΏΠΎΠΊ Π½Π΅ Π½Π°ΠΆΠ°ΡΠ° (Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ R0 = 0xFF, Π° Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΠΊΠ½ΠΎΠΏΠΎΠΊ ASCII, ΡΠΎ R0 = 0) ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΡΠ°Π½ΠΈΡΡ Π»ΠΎΠΆΠ½ΡΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΊΠΎΠ΄ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΏΡΠΎΡΠΈΡΠ°Π½ 20 ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·). ΠΠ΅ΡΠ²ΡΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² (ΡΠ½Π°ΡΠ°Π»Π° ΡΠ΅Π·ΠΈΡΡΠΎΡΡ Π±ΡΠ»ΠΈ Π² 10 ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎ Π½ΠΎΠΌΠΈΠ½Π°Π»Ρ) Π΄Π΅Π»Π°ΡΡ ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΠ¦Π ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΊ Π²ΡΡΠΎΠΊΠΎΡΠ°ΡΡΠΎΡΠ½ΡΠΌ ΠΏΠΎΠΌΠ΅Ρ Π°ΠΌ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΎΡΠΊΠ°Π·ΡΠ²Π°Π»Π°ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ΄ΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΊ VHF (Π£ΠΠ) Ρ ΠΌΠΎΡΠ½ΠΎΡΡΡΡ ΠΎΠΊΠΎΠ»ΠΎ 2 ΠΡ. [Π‘ΡΡΠ»ΠΊΠΈ] 1. Connecting a keypad to an AVR site:avr-asm-tutorial.net. |