Бинарные часы.

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
azax
Родился
Сообщения: 3
Зарегистрирован: Сб мар 22, 2014 16:01:04

Бинарные часы.

Сообщение azax »

Доброго времени суток уважаемые форумчане.
Появилась у меня идея сделать что-то на подобие часов только с отображением в бинарном виде. но так как стаж с микроконтроллерами да и с электроникой у меня чуть более чем пара вечеров в церковно приходской школе ничего лучше придумать не смог.
(проект протеуса
Bclock.rar
(12.67 КБ) 175 скачиваний
)
И вроде бы все нормальо компилируется и даже готово работать, да в том же протеусе получается совсем не то что в мыслях.
прошу помощи у всех тех кто грамотнее и мудрее. Как ЭТО заставить работать?
сама программа проста и не хитра:
LIST P=PIC16F84A
__CONFIG 0x3FF9
STATUS EQU 0x0003
TRISA EQU 0x0005
PORTA EQU 0x0005
TRISB EQU 0x0006
PORTB EQU 0x0006
chas EQU 0x0010
minute EQU 0x0011
chas2 EQU 0x0012
minute2 EQU 0x0013
Reg_1 EQU 0x0014
Reg_2 EQU 0x0015
org 0 ; начало программы
; подготовительные моменты
bsf STATUS,0x05 ; переход в Банк 1
movlw b'00011111' ; запись числа в W, 1 означает НА ВХОД
movwf TRISA ; пересылка W в ТРИСА
clrf TRISB ; отчистка регистра ТРИСБ, все биты = 0 означает что порт выведен НА ВЫХОД
bcf STATUS,0x05 ; переход назад в Банк 0
clrf PORTB ; очистка порта
; программа
zero clrf PORTB
clrf minute
clrf minute2
clrf chas
clrf chas2
goto indicatr
minuteA INCF minute,1 ;прибавить 1 к регистру минут
btfss minute,0 ;проверить первый бит минут
goto indicatr ;если он не 1 то идем показывать
btfsc minute,1 ;проверить второй бит минут
goto indicatr ;если не 0 идем показывать
btfsc minute,2 ;проверить третий бит
goto indicatr ;если не 0 то идем показывать
btfss minute,3 ;проверияем четвертый бит
goto indicatr ;если не 1 идем показывать
clrf minute
minute2A incf minute2,1 ;если минуты 1001(9) прибавить 1 к регистру минут2
btfss minute2,0;проверить бит 1 регистра минут2
goto indicatr ;если не 1 то идем показывать
btfsc minute2,1;проверить бит 2
goto indicatr ;если не 0 то идем показывать
btfss minute2,2;проверить бит 3
goto indicatr ;если не 1 то идем показывать
goto chas ;когда все ОК идем на счет часов
clrf minute2
chasA incf chas,1 ;прибавить 1 к регистру час
btfss chas,0 ;проверить бит 1
goto indicatr ;если не 1 то индикация
btfsc chas,1 ;проверить бит 2
goto indicatr ;если не 0 индикация
btfsc chas,2 ;проверить бит 3
goto indicatr ;если не 0 то индикация
btfss chas,3 ;проверить бит 4
goto indicatr ;если не 1 индикация
clrf chas
chas2A incf chas2,1 ;если 1001(9) прибавить 1 к регистру час2
btfsc chas2,0 ;проверить бит 1
goto indicatr ;если не 0 то индикация
btfss chas2,1 ;проверяем бит 2
goto indicatr ;если не 0 то индикация
incf chas,1 ;прибавить 1 к часу
btfsc chas,0 ;проверить бит 1
goto indicatr ;если не 0 то индикация
btfsc chas,1 ;проверить бит 2
goto indicatr ;если не 0 то индикация
btfss chas,2 ;проверить бит 3
goto indicatr ;если не 1 то индикация
goto zero ;идем заново
pause movlw .108
movwf Reg_1
movlw .7
movwf Reg_2
wr decfsz Reg_1, F
goto wr
decfsz Reg_2, F
goto wr
nop
return
indicatr bsf PORTB,4
movlw minute
movwf PORTB
call pause
clrf PORTB
bsf PORTB,5
movlw minute2
movwf PORTB
call pause
clrf PORTB
bsf PORTB,6
movlw minute2
movwf PORTB
call pause
clrf PORTB
bsf PORTB,7
movlw minute2
movwf PORTB
call pause
clrf PORTB
movlw .50
movwf Reg_1
decfsz Reg_1,1
goto indicatr
goto minuteA
end
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Бинарные часы.

Сообщение pyzhman »

Код: Выделить всё

zero clrf PORTB
 clrf minute
 ...
 clrf minute
Здесь норм?
Docendo discimus
Реклама
azax
Родился
Сообщения: 3
Зарегистрирован: Сб мар 22, 2014 16:01:04

Re: Бинарные часы.

Сообщение azax »

так как едениц минут может быть только 10 от 0 до 9 в бинарном 1001, и не промахнуться а начать считать с нуля
в начале чистим регистр едениц минут (minute)
После каждого +1 проверяем что бы в регистре было 1001 если ок то
(При преключении с 00.09 на 00.10 надо добавить 1 в десятки минут и сбросить еденици минут)
идем считать десятки минут и т.д. до 24.00
Потом все заново
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Бинарные часы.

Сообщение pyzhman »

Код: Выделить всё

...
minute EQU 0x0011
...
indicatr
	bsf PORTB,4
	[b]movlw minute[/b]
	movwf PORTB
...
Наверное, надо

Код: Выделить всё

movf minute,w
И остальные также. Вам же нужно содержимое ячейки памяти, а не ее адрес.
PS. Тэг bold в коде не сработал. Что за хня, Max?
Docendo discimus
Реклама
Эиком - электронные компоненты и радиодетали
azax
Родился
Сообщения: 3
Зарегистрирован: Сб мар 22, 2014 16:01:04

Re: Бинарные часы.

Сообщение azax »

Спасибо большое!!!) Просто я человек сильно начинающий и это первое что делаю, переделаю попробую отпишусь)

вывод именно содержимого регистра на порт Б и нужен былб а счетчик до ума довести довести будет не особо сложно.
Реклама
Ответить

Вернуться в «PIC»