;.include "d:\avr\avrasm\appnotes\attyny2313def.inc"


	.def	Temp=R16
	.def	Temp1=R17
	.def	Temp2=R18
	.def	Temp3=R19
	.def	Temp4=R20
	.def	DecCount=R21
	.def	Scd=R22
	.def	Min=R23
	.def	Hour=R24
	.def	Status=R25


.dseg

Digit:	.byte 4
Line:	.byte 4
Key:	.byte 1

;******************************************************************************
;******************************************************************************

.cseg
.org 0

 rjmp RESET      ; Reset Handler
 rjmp EXT_INT0   ; IRQ0 Handler
 rjmp EXT_INT1   ; IRQ1 Handler
 rjmp TIM_CAPT1  ; Timer1 Capture Handler
 rjmp TIM_COMP1  ; Timer1 Compare Handler
 rjmp TIM_OVF1   ; Timer1 Overflow Handler
 rjmp TIM_OVF0   ; Timer0 Overflow Handler
 rjmp UART_RXC   ; UART RX Complete Handler
 rjmp UART_DRE   ; UDR Empty Handler
 rjmp UART_TXC   ; UART TX Complete Handler
 rjmp ANA_COMP   ; Analog Comparator Handler


reset	  :	ret
EXT_INT0  :	ret
EXT_INT1  :	ret
TIM_CAPT1 :	ret
TIM_OVF0  :	ret
TIM_OVF1  :	ret
UART_RXC  :	ret
UART_DRE  :	ret
UART_TXC  :	ret
ANA_COMP  :	ret
TIM_COMP1 : 	ret



        



;*******************************************************************************
;настройка портов
;*******************************************************************************

ldi Temp,0b11111111
out DDRB,Temp           ;настроили порт "В" на вывод информации
			;к порту "В" будет прицеплен вывод на передатчик 0b10000000
			; и адресные ноги (пять штук 0b00011111) клавы будут 
			; прицнплены к нему же 

ldi Temp,0b01110000
out DDRD,Temp 		;настраиваем порт "D" на ввод(чтение)(0-ввод, 1-вывод)
			;но не весь, а только четыре млажших бита (PD0-PD3)
			;к которым прицеплены четыре строки клавиатуры (шина данных)
			; а остальные настроил на вывод для того что бы 
			;при их чтении получит не черте че а четкий ноль
			;*только самый старши бит настроен на ВВОД (потому что в порте "D" отсутсвует эта нога)



;*******************************************************************************
; проверка кнопок
;*******************************************************************************

keyboardreed:		;метка - опрос клавиатуры

ldi Temp,0b00000001
out PortB,Temp		;проверяем первую колонку клавиатуры (кнопки 1,6,11,16)

in Temp,PinD		;читаем порт "D" (читаем первую строку в первой колонке клавиатуры)
cpi Temp,0b00000001	;нажата кнопка 1 ?
breq METKAkey1		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b00000010	;нажата кнопка 6 ?
breq METKAkey6		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b0000100	;нажата кнопка 11 ?
breq METKAkey11		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b0001000	;нажата кнопка 16 ?
breq METKAkey16		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду





ldi Temp,0b00000010
out PortB,Temp		;проверяем вторую колонку клавиатуры (кнопки 2,7,12,17)

in Temp,PinD		;читаем порт "D" (читаем первую строку во второй колонке клавиатуры)
cpi Temp,0b00000001	;нажата кнопка 2 ?
breq METKAkey2		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b00000010	;нажата кнопка 7 ?
breq METKAkey7		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b0000100	;нажата кнопка 12 ?
breq METKAkey12		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b0001000	;нажата кнопка 17 ?
breq METKAkey17		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду





ldi Temp,0b00000001
out PortB,Temp		;проверяем третью колонку клавиатуры (кнопки 3,8,13,18)

in Temp,PinD		;читаем порт "D" (читаем первую строку в третьей колонке клавиатуры)
cpi Temp,0b00000001	;нажата кнопка 3 ?
breq METKAkey3		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b00000010	;нажата кнопка 8 ?
breq METKAkey8		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b0000100	;нажата кнопка 13 ?
breq METKAkey13		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b0001000	;нажата кнопка 18 ?
breq METKAkey18		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду





ldi Temp,0b00000001
out PortB,Temp		;проверяем четвертую колонку клавиатуры (кнопки 4,9,14,19)

in Temp,PinD		;читаем порт "D" (читаем первую строку в четвертой колонке клавиатуры)
cpi Temp,0b00000001	;нажата кнопка 4 ?
breq METKAkey4		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b00000010	;нажата кнопка 9 ?
breq METKAkey9		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b0000100	;нажата кнопка 14 ?
breq METKAkey14		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b0001000	;нажата кнопка 19 ?
breq METKAkey19		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду





ldi Temp,0b00000001
out PortB,Temp		;проверяем пятую колонку клавиатуры (кнопки 5,10,15,20)

in Temp,PinD		;читаем порт "D" (читаем первую строку в пятой колонке клавиатуры)
cpi Temp,0b00000001	;нажата кнопка 5 ?
breq METKAkey5		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b00000010	;нажата кнопка 10 ?
breq METKAkey10		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b0000100	;нажата кнопка 15 ?
breq METKAkey15		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду
cpi Temp,0b0001000	;нажата кнопка 20 ?
breq METKAkey20		;если нажата то идти на метку.....
			;иначе  - идем дальше по коду

rjmp keyboardreed:      ; переход на метку - опрос клавиатуры








;*******************************************************************************
;обработка нажатия клавиш
;*******************************************************************************





;*******************************************************************************

METKAkey1:		; нужно передать 11111111 00000010 00000010 (1)

ldi Temp,0b00000000	;Temp=0 (выводим в порт нуль)
ldi Temp1,0b10000000	;Temp1=1 (выводим в порт еденицу)
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key1:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp		;12/20
rcall Delay:		;задержка
out PortB,Temp		;13/21
rcall Delay:		;задержка
out PortB,Temp		;14/22
rcall Delay:		;задержка
out PortB,Temp1		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key1:	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;*******************************************************************************




;*******************************************************************************

METKAkey6:		; нужно передать 11111111 00001100 00001100 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key6:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp		;12/20
rcall Delay:		;задержка
out PortB,Temp1		;13/21
rcall Delay:		;задержка
out PortB,Temp1		;14/22
rcall Delay:		;задержка
out PortB,Temp		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key6:	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;*******************************************************************************




;*******************************************************************************

METKAkey11:		; нужно передать 11111111 00010110 00010110 


ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key11:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp1		;12/20
rcall Delay:		;задержка
out PortB,Temp		;13/21
rcall Delay:		;задержка
out PortB,Temp1		;14/22
rcall Delay:		;задержка
out PortB,Temp1		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key11:	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;*******************************************************************************





;*******************************************************************************

METKAkey16:		; нужно передать 11111111 00100000 00100000 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key16:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp1		;11/19
rcall Delay:		;задержка
out PortB,Temp		;12/20
rcall Delay:		;задержка
out PortB,Temp		;13/21
rcall Delay:		;задержка
out PortB,Temp		;14/22
rcall Delay:		;задержка
out PortB,Temp		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:16	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру



;***********************************************************************************************************

METKAkey2:		; нужно передать 11111111 00000100 00000100


ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key2:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp		;12/20
rcall Delay:		;задержка
out PortB,Temp		;13/21
rcall Delay:		;задержка
out PortB,Temp1		;14/22
rcall Delay:		;задержка
out PortB,Temp		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:2	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;***********************************************************************************************************





;*********************************************************************************************************** 

METKAkey7:		; нужно передать 11111111 00001110 00001110 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key7:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp		;12/20
rcall Delay:		;задержка
out PortB,Temp1		;13/21
rcall Delay:		;задержка
out PortB,Temp1		;14/22
rcall Delay:		;задержка
out PortB,Temp1		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:7	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;***********************************************************************************************************************



;***********************************************************************************************************************

METKAkey12:		; нужно передать 11111111 00011000 00011000 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key12:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp1		;12/20
rcall Delay:		;задержка
out PortB,Temp1		;13/21
rcall Delay:		;задержка
out PortB,Temp		;14/22
rcall Delay:		;задержка
out PortB,Temp		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:12	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;******************************************************************************************************



;******************************************************************************************************

METKAkey17:		; нужно передать 11111111 00100010 00100010 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key17:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp1		;11/19
rcall Delay:		;задержка
out PortB,Temp		;12/20
rcall Delay:		;задержка
out PortB,Temp		;13/21
rcall Delay:		;задержка
out PortB,Temp		;14/22
rcall Delay:		;задержка
out PortB,Temp1		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:17	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;*******************************************************************************************************






;*******************************************************************************************************

METKAkey3:		; нужно передать 11111111 00000110 00000110 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key3:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp		;12/20
rcall Delay:		;задержка
out PortB,Temp		;13/21
rcall Delay:		;задержка
out PortB,Temp1		;14/22
rcall Delay:		;задержка
out PortB,Temp1		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:3	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;************************************************************************************************************




;************************************************************************************************************
METKAkey8:		; нужно передать 11111111 00010000 00010000 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key8:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp1		;12/20
rcall Delay:		;задержка
out PortB,Temp		;13/21
rcall Delay:		;задержка
out PortB,Temp		;14/22
rcall Delay:		;задержка
out PortB,Temp		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:8	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;*****************************************************************************************************



;*****************************************************************************************************

METKAkey13:		; нужно передать 11111111 00011010 00011010 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key13:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp1		;12/20
rcall Delay:		;задержка
out PortB,Temp1		;13/21
rcall Delay:		;задержка
out PortB,Temp		;14/22
rcall Delay:		;задержка
out PortB,Temp1		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:13	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;*****************************************************************************************************




;*****************************************************************************************************

METKAkey18:		; нужно передать 11111111 00100100 00100100 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key18:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp1		;11/19
rcall Delay:		;задержка
out PortB,Temp		;12/20
rcall Delay:		;задержка
out PortB,Temp		;13/21
rcall Delay:		;задержка
out PortB,Temp1		;14/22
rcall Delay:		;задержка
out PortB,Temp		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:18	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;*****************************************************************************************************





;*****************************************************************************************************

METKAkey4:		; нужно передать 11111111 00001000 00001000 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key4:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp		;12/20
rcall Delay:		;задержка
out PortB,Temp1		;13/21
rcall Delay:		;задержка
out PortB,Temp		;14/22
rcall Delay:		;задержка
out PortB,Temp		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:4	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;***************************************************************************************************




;***************************************************************************************************

METKAkey9:		; нужно передать 11111111 00010010 00010010 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key9:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp1		;12/20
rcall Delay:		;задержка
out PortB,Temp		;13/21
rcall Delay:		;задержка
out PortB,Temp		;14/22
rcall Delay:		;задержка
out PortB,Temp1		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:9	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;******************************************************************************************************




;******************************************************************************************************

METKAkey14:		; нужно передать 11111111 00011100 00011100 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key14:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp1		;12/20
rcall Delay:		;задержка
out PortB,Temp1		;13/21
rcall Delay:		;задержка
out PortB,Temp1		;14/22
rcall Delay:		;задержка
out PortB,Temp		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:14	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;********************************************************************************************************





;********************************************************************************************************

METKAkey19:		; нужно передать 11111111 00100110 00100110 
ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key19:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp1		;11/19
rcall Delay:		;задержка
out PortB,Temp		;12/20
rcall Delay:		;задержка
out PortB,Temp		;13/21
rcall Delay:		;задержка
out PortB,Temp1		;14/22
rcall Delay:		;задержка
out PortB,Temp1		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:19	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;********************************************************************************************************



;***********************************************************************************************************

METKAkey5:		; нужно передать 11111111 00001010 00001010 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key5:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp		;12/20
rcall Delay:		;задержка
out PortB,Temp1		;13/21
rcall Delay:		;задержка
out PortB,Temp		;14/22
rcall Delay:		;задержка
out PortB,Temp1		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:5	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;*********************************************************************************************************




;***********************************************************************************************************

METKAkey10:		; нужно передать 11111111 00010100 00010100 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key10:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp1		;12/20
rcall Delay:		;задержка
out PortB,Temp		;13/21
rcall Delay:		;задержка
out PortB,Temp1		;14/22
rcall Delay:		;задержка
out PortB,Temp		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:10	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;***********************************************************************************************************






;***********************************************************************************************************

METKAkey15:		; нужно передать 11111111 00011110 00011110 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key15:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp1		;12/20
rcall Delay:		;задержка
out PortB,Temp1		;13/21
rcall Delay:		;задержка
out PortB,Temp1		;14/22
rcall Delay:		;задержка
out PortB,Temp1		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:15	;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;***********************************************************************************************************




;***********************************************************************************************************

METKAkey20:		; нужно передать 11111111 00101000 00101000 

ldi Temp,0b00000000	;Temp=0
ldi Temp1,0b10000000	;Temp1=1
ldi Temp2,2		;Temp2=2

rcall startbit:		;стартовые биты

METKA2key20:		;ВТОРАЯ МЕТКА
		
out PortB,Temp		;9/17
rcall Delay:		;задержка
out PortB,Temp1		;10/18
rcall Delay:		;задержка
out PortB,Temp		;11/19
rcall Delay:		;задержка
out PortB,Temp1		;12/20
rcall Delay:		;задержка
out PortB,Temp		;13/21
rcall Delay:		;задержка
out PortB,Temp		;14/22
rcall Delay:		;задержка
out PortB,Temp		;15/23
rcall Delay:		;задержка
out PortB,Temp		;16/24
rcall Delay:		;задержка

dec Temp2		;Temp2(-1)
brne METKA2key:20		;если результат предидущего действия не равен нулю то переходим по метке
			;иначе идем дальше по коду
rjmp keyboardreed:	;команда передана - идем опрашивать клавиатуру

;**************************************************************************************************************







;*******************************************************************************
;старт-биты
;*******************************************************************************

startbit:

out PortB,Temp1		;1-ый бит
rcall Delay:		;задержка
out PortB,Temp1		;2-ой бит
rcall Delay:		;задержка
out PortB,Temp1		;3-ий бит
rcall Delay:		;задержка
out PortB,Temp1		;4-ый бит
rcall Delay:		;задержка
out PortB,Temp1		;5-ый бит
rcall Delay:		;задержка
out PortB,Temp1		;6-ой бит
rcall Delay:		;задержка
out PortB,Temp1		;7-ой бит
rcall Delay:		;задержка
out PortB,Temp1		;8-ой бит
rcall Delay:		;задержка

ret

;*******************************************************************************
;ЦИКЛ ЗАДержки
;*******************************************************************************

Delay:			;задержка














