BIN_BCD:
			
	clr	temp3
	clr	temp4
	clr	temp5
	clr	temp6
	clr	temp7

	lds	temp1,Adress
	lds	temp2,Adress1

	ldi		temp,16	; Запись в регистр числа проходов преобразования, 
						; равного суммарному количеству битов многоразрядного 
						; регистра LSB/MSB (8*2=16).
 ;------------------------------------------------------------------------------- 
 ; Примечание: процесс преобразования заканчивается при уменьшении числа проходов 
 ; преобразования, которые заложены в регистр TEMP (.16), до нуля. 
 ;------------------------------------------------------------------------------- 
 ; Циклический сдвиг влево. 
 ;-------------------------------------------------------------------------------          
Loop16:   
	clc
						; Циклический сдвиг влево 2-байтного двоичного числа, 
	rol	temp1			; записанного в группе регистров LSB/MSB,
	rol	temp2			; на одну позицию через бит С
	
	rol	temp7			; Циклический сдвиг влево будущего ответа,
	rol	temp6			; начиная с младшего (половину байт)
	rol	temp5			; на одну позицию через бит С
	
	dec	temp			
	tst	temp
	brne	adjDEC		; Если результат не=0, то переход в ПП adjDEC 
						; Если  результат =0, то программа исполняется далее.
	 
 ;----------------------------------------------- 
 ; Поразрядное распределение содержимого регистров LED1...3 (обоих 
 ; полубайтов) по младшим полубайтам регистров LED1...5.
 ; Число представлено в виде |0 6|5 5|3 6| в регистрах
 ; temp5,6,7
 ;----------------------------------------------- 

	mov		temp3,temp5		; Запись младшего полубайта LED3 
	andi	temp3,0x0f	; маскируем старший полубайт

	mov		temp4,temp6
	swap	temp4
	andi	temp4,0x0f

	mov		temp5,temp6
	andi	temp5,0x0f	; сохраним сотни

	mov		temp6,temp7
	andi	temp6,0xf0
	swap	temp6		; запишем десятки

	andi	temp7,0x0f
 ;---------------------------------------------- 
 ; Конец распределения. В младших полубайтах регистров LED1...7 установлены 
 ; двоично-десятичные числа в порядке возрастания разрядности. Старшие полубайты = 0. 
 ;---------------------------------------------- 
 ; Прибавим к числам число 30h для получения кода ASCII
	ori		temp3,0x30
	ori		temp4,0x30
	ori		temp5,0x30
	ori		temp6,0x30
	ori		temp7,0x30
	sts		BCD_DT,temp3	; load number
	sts		BCD_T,temp4
	sts		BCD_S,temp5
	sts		BCD_D,temp6
	sts		BCD_E,temp7
	ret		          ; Переход по стеку в группу подпрограмм   
                     ; 8-разрядной динамической индикации.  
 ;---------------------------------------------- 
 ; Запись в регистр FSR адресов регистров LED1...3 для дальнейшей косвенной адресации 
 ; к ним в ПП adjBCD. 
 ; Переход к обработке следующего LED - после возврата по стеку.                       
 ;--------------------------------------------- 
 adjDEC:
	nop
	st		X,temp7		; значение temp7 загружено в r0
	rcall	adjBCD
	mov		temp7,r0
	st		X,temp6		; значение temp7 загружено в r0
	rcall	adjBCD
	mov		temp6,r0
	st		X,temp5		; значение temp7 загружено в r0
	rcall	adjBCD
	mov		temp5,r0
	rjmp	Loop16
 ;------------------------------------ 
 ; Основные операции преобразования двоичных чисел в двоично-десятичные: 
 ; операции сложения LED1...3 и констант 03h,30h с условиями по 3-му и 7-му битам. 
 ;------------------------------------ 
 adjBCD:
	ldi	temp4,0x03		; Сложить содержимое текущего LED1 (LED1...3) с числом 03h, 
	add	temp4,r0		; в регистр TEMP. 
	sbrc	temp4,3		; Анализ состояния 3-го бита регистра TEMP. 
	st	X,temp4			; Если бит № 3 =1, то содержимое регистра TEMP  

	ldi	temp4,0x30		; копируется в текущий LED. 
  	add	temp4,r0		; Если бит №3 =0, то содержимое текущего LED складывается 
	sbrc	temp4,7		; с константой 30h, с последующей записью результата операции,   
	st	X,temp4			; через регистр W, в регистр TEMP. 
						; Анализ состояния 7-го бита регистра TEMP. 
	; Если бит №7 =1, то содержимое регистра TEMP  
	; копируется в текущий LED. 
	; Если бит №7 =0, то регистр W очищается и происх
 	; возврат по стеку в ПП adjDEC. 
	ret
