;=========================================================================
;Простые часы с использованием статической индикации, реализованой 
;С помощью моей библиотеки 74hc595Segment.asm

;    ©LPA, 2012
;  http://radioelektr.ru

;=========================================================================
.include "m16Adef.inc"

;=========================================================================
ldi r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16
;Стек

rcall display_init
;Настройка портов ввода-вывода, к которым подключены регистры

rcall RTC_Start
;Старт часов
;=========================================================================


main:
rcall RTC_Get_Time;Получаем время

lds r16,hours;Сгружаем часы в регистр и раскладываем на десятки и единицы
rcall hex2dec

sts digits,r17;Пихаем в регистры дисплея
sts digits+1,r16

lds r16,minutes
rcall hex2dec;Сгружаем минуты в регистр и раскладываем на десятки и единицы

sts digits+2,r17;Пихаем в регистры дисплея
sts digits+3,r16

ldi r16,0b00000100
sts digits+4,r16;Ставим точку

rcall display;Выводим на дисплей

rjmp main;Зацикливаемся


;========================================================================

.include "74hc595segment.asm";Библиотека статической индикации
.include "DS1307.asm";Библиотека для DS1307
.include "Soft-iic.asm";Библиотека для реализации софт и2ц


;=========================================================================

;-----------------------------------------------
; DEC TO 2DEC
;-----------------------------------------------
; Продцедура делает из десятичного (0......99) числа
; Два десятичных числа - единицы и десятки

;Исходное число помещаем в r16
;На выходе получаем в r16 - младший байт, а в r17 - старший.
                 
Hex2dec:
			SUBI r16,100 
			BRCC Hex2dec
			LDI r17,10
_bcd2:		DEC r17 
			SUBI r16,-10 
			BRCS _bcd2 
			
			RET

;=========================================================================
