К основному контенту

Работа с часами




Работа с часами.

 Мы часто сталкиваемся с ситуацией когда нужно вывести таймер. Я не буду расписывать порты, благо это сделано до меня, дам лишь простой пример, как в регистр "A" получить, часы, минуты, секунды. В нашем случае нет разницы, программируете вы на Base conf или Ts conf.


TIME      LD A,#80
                LD BC,#EFF7
                OUT (C),A
                LD A,0;   если 0 - получаем секунды, если 2 - получаем минуты, если 4 - получаем часы.
                CALL READCMOS
                RET

REACMOS

                LD BC,#DFF7
                OUT (C),A
                LD B,#BF
                IN A,(C)
                RET


;   Вызвали процедуру TIME, на выходе в регистр А время. В данном примере получим секунды, но можно получить и минуты и часы, меняйте регистра А на входе, где стоит коментарий.

Время выдается в формате BCD, потому переводим его в удобоваримую форму:


                LD A,C
                AND #F0
                RRA
                LD B,A
                RRA
                RRA
                ADD A,B
                LD L,A
                AND 15
                ADD A,L

И получаем секунды, минуты и часы в регистре А от 0 до 59

Спасибо

Комментарии