PIC+74CH595 - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » PIC+74CH595 (Опять LED индикатор и регистр 74CH595)
PIC+74CH595
PINCOD Дата: Ср, 30.11.2016, 09:11  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 31
Репутация: 1   ±
Замечания:   ±
На сайте с 05.10.2011

Статус: Offline

Всем доброго времени суток друзья.Не хотел ни кого тревожить,но решил с экономить на ногах камня и пристроил регистр 74CH595.Но при отображении для пробы числа 1234,почему то получается такая картина 1233.Не пойму где в коде косяк?Буду рад кого - нибудь услышать

  Device = 16F628A
  Xtal = 4 ;частота кварца 4МГц
  'Declare Create_Coff = 1
  Reminders = 0
  Config BODEN_OFF, BOREN_OFF, CP_OFF, DATA_CP_OFF, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_OFF, XT_OSC
  Reminders = 1
  Declare All_Digital = On 
  Declare PortB_Pullups = OFF           
  TRISA = %00000000
  TRISB = %00000000
  CMCON = 7 'Компаратор нам не нужен, отключим ...  
'--------------------------------------------------------------------------------------------------- 
Symbol SH_CP = PORTB.7 ;порт управления регистром    
Symbol DS    = PORTB.6 ;порт управления регистром
Symbol ST_CP = PORTB.5 ;порт управления регистром
Symbol RAZ1  = PORTB.1 ;порт упр.1 разрядом индикатора
Symbol RAZ2  = PORTB.2 ;порт упр.2 разрядом индикатора
Symbol RAZ3  = PORTB.3 ;порт упр.3 разрядом индикатора
Symbol RAZ4  = PORTB.4 ;порт упр.4 разрядом индикатора 
'---------------------------------------------------------------------------------------------------    
Dim N As Byte     'для выделения цифры из числа
Dim Value As Byte 'Переменная для осуществления табличного конвертирования цифры
Dim RAZR As Byte  'переменная для управления табличного конвертирования разрядами ССИ
Dim A As Dword    ;переменная № разряда
Dim B As Byte     ;переменная для общего счета                           
A = 1234

  
'-------------------------------Инициализация микроконтроллера--------------------------------------
MAIN:   

GoSub Indic

GoTo MAIN
Indic:
'---------------Зажигание первого справа разряда индикатора и вывод на него цифры------------------- 
N = 1'Dig A,3 'Выделяем из числа 1-ю с права цифру
GoSub Convert 'и конвертируем в код ССИ  
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в регистр семисегментный код
 
RAZ1 = 1 : RAZ2 = 0 : RAZ3 = 0 : RAZ4 = 0 ;зажигаем 1 разряд
ST_CP = 1 'Защелкиваем данные
DelayMS 4 
ST_CP = 0 'Обнуляем защелку данных

'---------------Зажигание второго справа разряда индикатора и вывод на него цифры------------------- 
N = 2'Dig A,2 'Выделяем из числа 2-ю с права цифру 
GoSub Convert 'и конвертируем в код ССИ  
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в регистр семисегментный код
 
RAZ1 = 0 : RAZ2 = 1 : RAZ3 = 0 : RAZ4 = 0 ;зажигаем 2 разряд
ST_CP = 1 'Защелкиваем данные
DelayMS 4 
ST_CP = 0 'Обнуляем защелку данных

'---------------Зажигание третьего справа разряда индикатора и вывод на него цифры------------------ 
N = 3'Dig A,1 'Выделяем из числа 3-ю с права цифру 
GoSub Convert 'и конвертируем в код ССИ 
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в регистр семисегментный код
 
RAZ1 = 0 : RAZ2 = 0 : RAZ3 = 1 : RAZ4 = 0  ;зажигаем 3 разряд
 
ST_CP = 1 'Защелкиваем данные
DelayMS 4 
ST_CP = 0 'Обнуляем защелку данных

 
'---------------Зажигание четвертого справа разряда индикатора и вывод на него цифры---------------- 
N = 4'Dig A,0 'Выделяем из числа 4-ю с права цифру 
GoSub Convert 'и конвертируем в код ССИ  
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в регистр семисегментный код
 
RAZ1 = 0 : RAZ2 = 0 : RAZ3 = 0 : RAZ4 = 1  ;зажигаем 4 разряд
ST_CP = 1 'Защелкиваем данные
DelayMS 4 
ST_CP = 0 'Обнуляем защелку данных

Return 
'----------------------------------------------------------------------------------------------------  

Convert: 

Value = LookUp N, [192,249,164,176,153,146,130,248,128,144]'156] 'маска для ССИ с общ.анодом

'Value = LookUp N, [63,6,91,79,102,109,124,7,127,103]   'маска для ССИ с общ.катодом

Return 
'---------------------------------------------------------------------------------------------------
Прикрепления: 0862037.jpg(330Kb) · PIC74HC595.dsn(93Kb) · PIC74HC595.bas(4Kb)

Сообщение отредактировал PINCOD - Ср, 30.11.2016, 12:25
ЯНДЕКС Дата: 30.11.2016
ADMIN Дата: Ср, 30.11.2016, 16:25  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1097
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Все дело в том, что RB4 сейчас не подключен никуда, а RB3 через метку связан с 4 цифрой. На скрине видно. Я маленько оптимизировал программу. Кроме того, хочу сказать, что сейчас не обязательно в source в протеусе добавлять asm файл. Достаточно в свойствах целевого контроллера указать файл не HEX, а BAS. Тогда становится доступна пошаговая отладка.
Прикрепления: PIC74HC595_MOD.bas(3Kb) · PIC74HC595_MOD.dsn(94Kb) · 8908812.jpg(141Kb)
PINCOD Дата: Ср, 30.11.2016, 16:32  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 31
Репутация: 1   ±
Замечания:   ±
На сайте с 05.10.2011

Статус: Offline

Точно ,спасибо Макс.А я уже подумал,что или протон или протеус у меня заглючил smile
xvovanx Дата: Пт, 02.12.2016, 14:30  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 247
Репутация: 12   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Давайте оградим форум от политики. Спасибо за понимание
Прикрепления: 4689014.jpg(25Kb)
PINCOD Дата: Пт, 02.12.2016, 16:23  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 31
Репутация: 1   ±
Замечания:   ±
На сайте с 05.10.2011

Статус: Offline

Уинстон Черчилль однажды сказал: "Если вы не интересуетесь политикой, то политика заинтересуется вами".
Сообщение отредактировал PINCOD - Пт, 02.12.2016, 16:26
ADMIN Дата: Пт, 02.12.2016, 17:08  |                                                                                                                Сообщение # 6
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1097
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Я уже думал об этом, да... Считаю, что здесь не место для высказывания своего категоричного мнения по поводу политического мировоззрения. Тем более, призывающего, хоть и пассивно, к ненависти. PINCOD, будьте добры, подумайте об этом... Здесь встречаются люди, которым интересна именно тема электроники
PINCOD Дата: Пт, 02.12.2016, 20:47  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 31
Репутация: 1   ±
Замечания:   ±
На сайте с 05.10.2011

Статус: Offline

Согласен с Вами друзья,желаю успехов всем обитателям http://www.picbasic.ru/, в творчестве smile
Форум Picbasic.ru » Программирование МК » Proton PicBasic » PIC+74CH595 (Опять LED индикатор и регистр 74CH595)
Страница 1 из 11
Поиск: