Форум РадиоКот • Просмотр темы - PIC16F84A два 2х-разрядных счетчика на одной МС
Сообщения без ответов | Активные темы
Страница 1 из 5
[ Сообщений: 89 ]
, , , ,
Автор
Сообщение
alexi145
Заголовок сообщения: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Вс фев 08, 2015 18:19:19
Открыл глаза
Зарегистрирован: Чт фев 05, 2015 19:26:52Сообщений: 54Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Доброго времени суток всем!
Собственно мучает вопрос: Возможно ли на одном микроконтроллере PIC16F84A создать два независимых 2-х разрядных счетчика, желательно чтобы у каждого счетчика были свои кнопки "-" "+", общий "reset" и режим сохранения показаний в EEPROM при отключении питания? По работе понадобился такой счетчик, интуиция подсказывает что вроде возможно добиться требуемого, ребята помогите, может кто нибудь делал подобное. На просторах инета ничего не нашел для данного микроконтроллера.
Вернуться наверх
Реклама
otest
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Вс фев 08, 2015 18:47:13
Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58Сообщений: 7853
Рейтинг сообщения: 0
Смотря какой индикатор. Ног может не хватить.
Вернуться наверх
Реклама
alexi145
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Вс фев 08, 2015 20:49:27
Открыл глаза
Зарегистрирован: Чт фев 05, 2015 19:26:52Сообщений: 54Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Индикатор используется CC56-12SRWA цифро-сегментный 4-х разрядный LED с общим катодом.
Ног там хватит их там 12 штук.
Вернуться наверх
alexi145
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Вс фев 08, 2015 20:55:32
Открыл глаза
Зарегистрирован: Чт фев 05, 2015 19:26:52Сообщений: 54Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Вот схема по которой я делал, все в принципе устраивает. Только вот бы кнопочку добавить куда, для управления 100-ми и 1000-ми 1 и 2 разряд индикатора.
Вернуться наверх
Реклама
pcb432
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Чт фев 12, 2015 09:16:07
Карма: 10
Рейтинг сообщений: 278
Зарегистрирован: Пт мар 26, 2010 17:16:52Сообщений: 1799Откуда: Kazan
Рейтинг сообщения: 0
Полностью переделывать программу и схему, т.е. совсем другое устройство.
Вернуться наверх
Реклама
Dmitry Dubrovenko
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Чт фев 12, 2015 10:38:39
Поставщик валерьянки для Кота
Карма: 10
Рейтинг сообщений: 163
Зарегистрирован: Вс янв 09, 2011 16:51:39Сообщений: 2347Откуда: Санкт-Ленинград
Рейтинг сообщения: 0
alexi145 писал(а):
Вот схема
А Вы уверены, что VT1 у Вас правильно нарисован?
_________________ ICQ нет, и, в ближайшее время, не будет.
Вернуться наверх
Реклама
alexi145
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 00:24:31
Открыл глаза
Зарегистрирован: Чт фев 05, 2015 19:26:52Сообщений: 54Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Dmitry Dubrovenko писал(а):
А Вы уверены, что VT1 у Вас правильно нарисован?
Схему не я рисовал, я у себя кнопки использовал. А VT1 согласен коллектор с эмиттером перепутали.
pcb432 писал(а):
Полностью переделывать программу и схему
Как мне думается, если данный счетчик переделывать, то как минимум надо переписать в asm алгоритм управления существующими на схеме кнопками (в место транзисторов) таким образом, чтобы 1 добавлялась по нажатию КН-1, а вычиталась при нажатии на КН-2, еще 2 кнопки добавить КН-3 и КН-4 для добавления +100 и вычитания -100 (2-разряд индикатора) и программно описать функции этих самых кнопок. Но как это сделать? Я не умею.
В идеале нужно два счетчика на одной микрухе PIC16F84 (или варианты) чтобы считали до 99-ти с кнопками управления для обоих счетчиков +1 и -1 сброс можно общий, лишние неиспользуемые нули чтобы не светились и функция сохранения показаний по откл. питания нужна. help.
Вернуться наверх
alexi145
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 02:56:50
Открыл глаза
Зарегистрирован: Чт фев 05, 2015 19:26:52Сообщений: 54Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Вернуться наверх
alexi145
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 03:47:05
Открыл глаза
Зарегистрирован: Чт фев 05, 2015 19:26:52Сообщений: 54Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Вернуться наверх
Реклама
Albert_V
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 04:20:41
Друг Кота
Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12Сообщений: 4119Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Слишком много вопросов. Давайте по порядку (начиная с простого). Гашение первых "ненужных" нулей. В подпрограмме динамической индикации, первым отображаете старший разряд (это условие). Организовываете битовый регистр в котором некий (вами определённый) бит разрешает отображение цифры. В начале каждого цикла отображения полного числа (4-ре разряда, слева направо, первый - старший) вначале сбрасываете бит в "0" ("1" - разрешение индикации) и читаете число, которое нужно отобразить. Если оно равно "0" - вместо обращения к таблице знакогенератора прописываете все сегменты "OFF" и переходите (скорее всего, по таймеру) к отображению следующего числа с проверкой на "0". Если число не равно "0" - "поднимаете" бит "разрешение индикации" и до конца цикла (каждый раз проверяя этот бит) уже не сравниваете число с "0" и отображаете "реальное число". Вместе с этим (от начала цикла) считаете число разрядов. После 3-го разряда надо "поднять" бит "разрешение индикации" для того, что бы число "0000" отобразилось как "0".
_________________ С Уважением, Альберт (Albert_V).
Вернуться наверх
alexi145
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 04:32:05
Открыл глаза
Зарегистрирован: Чт фев 05, 2015 19:26:52Сообщений: 54Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Спасибо за ответ, процедура гашения нулей в коде примерно-понятна.
Не понятно с кнопками которые +100 добавит, или отнимет?
Вернуться наверх
Albert_V
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 04:41:22
Друг Кота
Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12Сообщений: 4119Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Може быть, вам проще будет "организовать" 4-ре десятичных счётчика или считать в BCD?
_________________ С Уважением, Альберт (Albert_V).
Вернуться наверх
alexi145
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 04:57:33
Открыл глаза
Зарегистрирован: Чт фев 05, 2015 19:26:52Сообщений: 54Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Быть может, но лучше все же 2 по 100
Проще конечно добавить 2-ю микросхему со схемой в придачу, чем париться с кодом и какими то кнопками.
Вернуться наверх
Albert_V
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 05:07:43
Друг Кота
Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12Сообщений: 4119Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
После сложения/вычитания сравнивайте полученное число (если +/-100 ) с 0FFh или 100d (в зависимости от действия) командой xorlw. Как эта команда "работает" можно прочитать в документации, в разделе "INSTRUCTION SET". P.S. Ошибка. Если +/-1
_________________ С Уважением, Альберт (Albert_V).
Последний раз редактировалось Albert_V Пт фев 13, 2015 05:19:45, всего редактировалось 3 раз(а).
Вернуться наверх
alexi145
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 05:10:36
Открыл глаза
Зарегистрирован: Чт фев 05, 2015 19:26:52Сообщений: 54Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Спасибо за подсказку!
Ушел читать даташит на PIC16F84A и изучать команды.
Дело в том, что по уровню моих знаний в asm мне действительно проще взять 2-ю микруху прошить ее таким же кодом и внедрить в схему, а нолики гасить по старинке тумблерочками
Вот реально бы кто помог с кодом, а то asm для меня и программирование для PIC что то никак не дается.
Благодарю Всех
Последний раз редактировалось alexi145 Пт фев 13, 2015 05:29:54, всего редактировалось 1 раз.
Вернуться наверх
Albert_V
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 05:15:13
Друг Кота
Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12Сообщений: 4119Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Извиняюсь. То, что я сказал в предыдущем посте это справедливо только для +/-1!!!! Для +/-100 - надо делать через вычитание!!!
_________________ С Уважением, Альберт (Albert_V).
Вернуться наверх
otest
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 08:21:20
Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58Сообщений: 7853
Рейтинг сообщения: 0
выложи программу и задай вопрос.
Вернуться наверх
alexi145
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 10:15:10
Открыл глаза
Зарегистрирован: Чт фев 05, 2015 19:26:52Сообщений: 54Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Вот программа
Код:
list P=16F84A ;THE COUNTER WITH THE GENERAL CATODE __config 03FFBh STATUS EQU 03h PORTB EQU 06h PORTA EQU 05h TRISB EQU 06h TRISA EQU 05h PCL equ 02h Reg_1 equ 0Ch Reg_2 equ 0Dh RPO EQU 5 Z equ 2 GIE equ 7 LED1 EQU 10h LED2 EQU 11h LED3 EQU 12h LED4 EQU 13h registr equ 0Fh registr1 equ 1Fh reg equ 0Eh reg1 equ 1Eh EEData equ 08h EECon1 equ 08h EEAdr equ 09h EECon2 equ 09h Intcon equ 0Bh ;---------- org 0 goto Start ;---------- Start clrf Intcon clrf PORTA clrf PORTB bsf STATUS,RPO MOVLW B'00010000' movwf TRISA movlw B'10000000' movwf TRISB bcf STATUS,RPO ;---------- movlw .10 movwf LED1 movwf LED2 movwf LED3 movwf LED4 goto Ind1 on clrf LED1 clrf LED2 clrf LED3 clrf LED4 nop call Pause movlw 0 movwf EEAdr nop bsf STATUS,RPO bsf EECon1,0 bcf STATUS,RPO nop movf EEData,W movwf LED1 nop nop call Pause movlw 1 movwf EEAdr nop bsf STATUS,RPO bsf EECon1,0 bcf STATUS,RPO nop movf EEData,W movwf LED2 nop nop call Pause movlw 2 movwf EEAdr nop bsf STATUS,RPO bsf EECon1,0 bcf STATUS,RPO nop movf EEData,W movwf LED3 nop nop call Pause movlw 3 movwf EEAdr nop bsf STATUS,RPO bsf EECon1,0 bcf STATUS,RPO nop movf EEData,W movwf LED4 nop nop movlw .255 movwf registr1 movwf reg1 movlw .10 movwf registr movlw .50 movwf reg movf reg1,w bcf STATUS,2 xorwf LED1,w btfsc STATUS,2 goto off movf reg1,w bcf STATUS,2 xorwf LED2,w btfsc STATUS,2 goto off movf reg1,w bcf STATUS,2 xorwf LED3,w btfsc STATUS,2 goto off movf reg1,w bcf STATUS,2 xorwf LED4,w btfsc STATUS,2 goto off bsf STATUS,RPO MOVLW B'10000110' movwf TRISB bcf STATUS,RPO BTFSS PORTB,2 goto off Poz0 bsf STATUS,RPO MOVLW B'10000110' movwf TRISB bcf STATUS,RPO BTFSS PORTB,2 goto off BTFSS PORTB,1 SLEEP bsf STATUS,RPO MOVLW B'10000000' movwf TRISB bcf STATUS,RPO BTFSS PORTA,4 GOTO Poz1 BTFSS PORTB,7 GOTO Poz2 GOTO Ind4 Poz1 CALL Ind2 bsf STATUS,RPO MOVLW B'10000110' movwf TRISB bcf STATUS,RPO BTFSS PORTB,2 goto off BTFSS PORTB,1 SLEEP bsf STATUS,RPO MOVLW B'10000000' movwf TRISB bcf STATUS,RPO BTFSC PORTA,4 GOTO Poz0 BTFSS PORTB,7 goto Poz3 GOTO Poz1 Poz2 CALL Ind2 bsf STATUS,RPO MOVLW B'10000110' movwf TRISB bcf STATUS,RPO BTFSS PORTB,2 goto off BTFSS PORTB,1 SLEEP bsf STATUS,RPO MOVLW B'10000000' movwf TRISB bcf STATUS,RPO BTFSC PORTB,7 GOTO Poz0 BTFSS PORTA,4 goto Poz4 GOTO Poz2 Poz3 call Ind2 bsf STATUS,RPO MOVLW B'10000110' movwf TRISB bcf STATUS,RPO BTFSS PORTB,2 goto off BTFSS PORTB,1 SLEEP bsf STATUS,RPO MOVLW B'10000000' movwf TRISB bcf STATUS,RPO BTFSC PORTB,7 goto Poz1 BTFSC PORTA,4 goto Poz5 goto Poz3 Poz4 call Ind2 bsf STATUS,RPO MOVLW B'10000110' movwf TRISB bcf STATUS,RPO BTFSS PORTB,2 goto off BTFSS PORTB,1 SLEEP bsf STATUS,RPO MOVLW B'10000000' movwf TRISB bcf STATUS,RPO BTFSC PORTA,4 goto Poz2 BTFSC PORTB,7 goto Poz6 goto Poz4 Poz5 call Ind2 bsf STATUS,RPO MOVLW B'10000110' movwf TRISB bcf STATUS,RPO BTFSS PORTB,2 goto off BTFSS PORTB,1 SLEEP bsf STATUS,RPO MOVLW B'10000000' movwf TRISB bcf STATUS,RPO BTFSS PORTA,4 goto Poz3 BTFSC PORTB,7 goto PLUS goto Poz5 Poz6 call Ind2 bsf STATUS,RPO MOVLW B'10000110' movwf TRISB bcf STATUS,RPO BTFSS PORTB,2 goto off BTFSS PORTB,1 SLEEP bsf STATUS,RPO MOVLW B'10000000' movwf TRISB bcf STATUS,RPO BTFSS PORTB,7 goto Poz4 BTFSC PORTA,4 goto MINUS goto Poz6 Tab addwf PCL,f retlw B'00111111' ;0 retlw B'00000110' ;1 retlw B'01011011' ;2 retlw B'01001111' ;3 retlw B'01100110' ;4 retlw B'01101101' ;5 retlw B'01111101' ;6 retlw B'00000111' ;7 retlw B'01111111' ;8 retlw B'01101111' ;9 retlw b'01000000' ;- ;---------- Ind1 decfsz reg,f goto $+2 goto on bcf PORTA,0 movf LED1,W call Tab movwf PORTB call Pause bsf PORTA,0 bcf PORTA,3 movf LED2,W call Tab movwf PORTB call Pause bsf PORTA,3 bcf PORTA,2 movf LED3,W call Tab movwf PORTB call Pause bsf PORTA,2 bcf PORTA,1 movf LED4,W call Tab movwf PORTB call Pause bsf PORTA,1 goto Ind1 Ind2 bcf PORTA,0 movf LED1,W call Tab movwf PORTB call Pause bsf PORTA,0 bcf PORTA,3 movf LED2,W call Tab movwf PORTB call Pause bsf PORTA,3 bcf PORTA,2 movf LED3,W call Tab movwf PORTB call Pause bsf PORTA,2 bcf PORTA,1 movf LED4,W call Tab movwf PORTB call Pause bsf PORTA,1 RETURN Ind3 bcf PORTA,0 movf LED1,W call Tab movwf PORTB call Pause bsf PORTA,0 call PAM1 bcf PORTA,3 movf LED2,W call Tab movwf PORTB call Pause bsf PORTA,3 call PAM2 bcf PORTA,2 movf LED3,W call Tab movwf PORTB call Pause bsf PORTA,2 call PAM3 bcf PORTA,1 movf LED4,W call Tab movwf PORTB call Pause bsf PORTA,1 call PAM4 goto Poz0 Ind4 bcf PORTA,0 movf LED1,W call Tab movwf PORTB call Pause bsf PORTA,0 bcf PORTA,3 movf LED2,W call Tab movwf PORTB call Pause bsf PORTA,3 bcf PORTA,2 movf LED3,W call Tab movwf PORTB call Pause bsf PORTA,2 bcf PORTA,1 movf LED4,W call Tab movwf PORTB call Pause bsf PORTA,1 goto Poz0 ;delay = 4'000 machine cycles Pause movlw .48 movwf Reg_1 movlw .6 movwf Reg_2 wr decfsz Reg_1, F goto wr decfsz Reg_2, F goto wr nop return PLUS call Ind2 BTFSS PORTB,7 goto PLUS bsf Intcon,GIE movf registr,w incf LED1,f bcf STATUS,2 xorwf LED1,w btfss STATUS,2 goto Ind3 clrf LED1 movf registr,w incf LED2,f bcf STATUS,2 xorwf LED2,w btfss STATUS,2 goto Ind3 clrf LED2 movf registr,w incf LED3,f bcf STATUS,2 xorwf LED3,w btfss STATUS,2 goto Ind3 clrf LED3 movf registr,w incf LED4,f bcf STATUS,2 xorwf LED4,w btfss STATUS,2 goto Ind3 clrf LED4 goto Ind3 MINUS call Ind2 BTFSS PORTA,4 goto MINUS movf registr1,w decf LED1,f bcf STATUS,2 xorwf LED1,w btfss STATUS,2 goto Ind3 movlw .9 movwf LED1 movf registr1,w decf LED2,f bcf STATUS,2 xorwf LED2,w btfss STATUS,2 goto Ind3 movlw .9 movwf LED2 movf registr1,w decf LED3,f bcf STATUS,2 xorwf LED3,w btfss STATUS,2 goto Ind3 movlw .9 movwf LED3 movf registr1,w decf LED4,f bcf STATUS,2 xorwf LED4,w btfss STATUS,2 goto Ind3 movlw .9 movwf LED4 goto Ind3 PAM1 bcf Intcon,GIE movlw 0 movwf EEAdr movf LED1,w movwf EEData bsf STATUS,RPO bsf EECon1,2 btfsc EECon1,1 goto $-1 movlw 055h movwf EECon2 movlw 0AAh movwf EECon2 bsf EECon1,1 bcf EECon1,4 bcf STATUS,RPO return PAM2 bcf Intcon,GIE movlw 1 movwf EEAdr movf LED2,w movwf EEData bsf STATUS,RPO bsf EECon1,2 btfsc EECon1,1 goto $-1 movlw 055h movwf EECon2 movlw 0AAh movwf EECon2 bsf EECon1,1 bcf EECon1,4 bcf STATUS,RPO return PAM3 bcf Intcon,GIE movlw 2 movwf EEAdr movf LED3,w movwf EEData bsf STATUS,RPO bsf EECon1,2 btfsc EECon1,1 goto $-1 movlw 055h movwf EECon2 movlw 0AAh movwf EECon2 bsf EECon1,1 bcf EECon1,4 bcf STATUS,RPO return PAM4 bcf Intcon,GIE movlw 3 movwf EEAdr movf LED4,w movwf EEData bsf STATUS,RPO bsf EECon1,2 btfsc EECon1,1 goto $-1 movlw 055h movwf EECon2 movlw 0AAh movwf EECon2 bsf EECon1,1 bcf EECon1,4 bcf STATUS,RPO return off bsf STATUS,RPO MOVLW B'10000000' movwf TRISB bcf STATUS,RPO movlw .0 movwf LED1 movwf LED2 movwf LED3 movwf LED4 goto Ind3 ;---------- end
А вопросы сформулированы в предыдущих постах.
P/S Совсем забыл, сначала делал как на схеме кондёр С1 22 пик. ставил схема запустилась считала обнуляла, но сохранение в EEPROM не работало. Увеличил емкость до 53 пик и все заработало как часы.
Вложения:
Комментарий к файлу: Counter
count_c.asm [15.49 KiB]
Скачиваний: 480
Вернуться наверх
otest
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 13:10:02
Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58Сообщений: 7853
Рейтинг сообщения: 0
Что то я не врубаюсь в алгоритм. Что нужно считать ?
Цитата:
чтобы считали до 99-ти ...еще 2 кнопки добавить КН-3 и КН-4 для добавления +100 и вычитания -100
Вернуться наверх
alexi145
Заголовок сообщения: Re: PIC16F84A два 2х-разрядных счетчика на одной МС
Добавлено: Пт фев 13, 2015 13:39:33
Открыл глаза
Зарегистрирован: Чт фев 05, 2015 19:26:52Сообщений: 54Откуда: Санкт-Петербург
Рейтинг сообщения: 0
otest писал(а):
Что то я не врубаюсь в алгоритм. Что нужно считать ?
Считать нужно отдельно единицы и отдельно сотни, каждый счет своими кнопками управляется. Reset общий. В общем как то так.
Вернуться наверх
Страница 1 из 5
[ Сообщений: 89 ]
, , , ,
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения