Не могу помирить 12ф675 и 75нс595 - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Не могу помирить 12ф675 и 75нс595 (не могу протолкнуть байт)
Не могу помирить 12ф675 и 75нс595
vanish Дата: Вт, 19.01.2016, 22:08  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 60
Репутация: 0   ±
Замечания:   ±
На сайте с 08.04.2010

Статус: Offline

Всем привет. Столкнулся с проблемой соединить 12f675 и 74нс595. Не могу протолкнуть байт. Помогите советом, пожалуйста. Спасибо.

Добавлено (19.01.2016, 22:08)
---------------------------------------------
Извините, опечатался  не 75нс595, а 74нс595

Прикрепления: 675594.rar(28Kb)
ЯНДЕКС Дата: 19.01.2016
доцент2 Дата: Вт, 19.01.2016, 23:22  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 311
Репутация: 1   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

надо настроить порты, выключить АЦП и компаратор на соответствующих выводах.
И вывод 10 595 надо подтянуть на +5в.
Вот так работает.

Device = 12F675
Config  CPD_OFF, CP_OFF, BODEN_OFF, MCLRE_OFF, PWRTE_OFF, WDT_OFF, INTRC_OSC_NOCLKOUT
Xtal = 4
All_Digital = On 

ADCON0 = %00000000
TRISIO = %00000000
GPIO   = %00000000
Symbol SH_CP = GPIO.2
Symbol DS = GPIO.4
Symbol ST_CP = GPIO.5 

Output GPIO
DelayMS 500

main:
SHOut DS, SH_CP, MsbFirst, [%00011100]
High GPIO.5 'Çàùåëêèâàåì äàííûå
Low GPIO.5 'Îáíóëÿåì çàùåëêó äàííûõ
DelayMS 500
GoTo main
End
Прикрепления: 4672256.rar(21Kb)
vanish Дата: Вт, 19.01.2016, 23:52  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 60
Репутация: 0   ±
Замечания:   ±
На сайте с 08.04.2010

Статус: Offline

Спасибо большое!
PINCOD Дата: Чт, 28.01.2016, 07:54  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 31
Репутация: 1   ±
Замечания:   ±
На сайте с 05.10.2011

Статус: Offline

Привет vanish.
Вот ещё тебе пример работы с регистрами 74HC595

'пример динамической индикации от 0 до 99999999 с помощью регистров 74HC595
Device 12F675
Declare Reminders NO
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_OFF, BODEN_OFF, MCLRE_OFF
Declare Xtal = 4
Set_OSCCAL OSCCAL
'---------------------------------------------------------------------------------------------------
Symbol SH_CP = GPIO.2
Symbol DS = GPIO.4
Symbol ST_CP = GPIO.5
'---------------------------------------------------------------------------------------------------
Dim N As Byte     'для выделения цифры из числа
Dim Value As Byte 'Переменная для осуществления табличного конвертирования цифры
Dim RAZR As Byte  'переменная для управления табличного конвертирования разрядами ССИ
Dim B As Dword    ;переменная для общего счета
Dim A As Byte     ;переменная № разряда
Dim dig1 As Byte
Dim dig2 As Byte
Dim dig3 As Byte
Dim dig4 As Byte
Dim dig5 As Byte
Dim dig6 As Byte
Dim dig7 As Byte
Dim dig8 As Byte
'-------------------------------Инициализация микроконтроллера--------------------------------------
TRISIO = %001011
ANSEL = 0
B = 0
'----------------------------------------------------------------------------------------------------
Start: 'Бесконечный цикл
While  B < 99999999
Inc B
GoSub Ind
Wend
GoTo Start
'--Подпрограмма динамической индикации с использованием двух сдвиговых регистров 74HC595 и 8-ми ССИ--
Ind:
dig8 = (B / 10000000) // 10
dig7 = (B / 1000000) // 10
dig6 = (B / 100000) // 10
dig5 = (B / 10000) // 10  'этот кусок кода взят у ivan fd ,на форуме
dig4 = (B / 1000) // 10
dig3 = (B / 100) // 10
dig2 = (B / 10) // 10
dig1 = (B / 1) // 10
'---------------Зажигание первого справа разряда индикатора и вывод на него цифры-------------------
N = dig1 'Выделяем из числа 1-ю с права цифру
A = 7
GoSub Convert 'и конвертируем в код ССИ
SHOut DS, SH_CP, MsbFirst, [RAZR]'Проталкиваем в нижний регистр бит для зажигания разряда № 8
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в верхний регистр сконвертированный код для единиц

'---------------Зажигание второго справа разряда индикатора и вывод на него цифры-------------------
N = dig2 'Выделяем из числа 2-ю с права цифру
A = 6
GoSub Convert 'и конвертируем в код ССИ
SHOut DS, SH_CP, MsbFirst, [RAZR]'Проталкиваем в нижний регистр бит для зажигания разряда № 7
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в верхний регистр сконвертированный код десятков

'---------------Зажигание третьего справа разряда индикатора и вывод на него цифры------------------
N = dig3 'Выделяем из числа 3-ю с права цифру
A = 5
GoSub Convert 'и конвертируем в код ССИ
SHOut DS, SH_CP, MsbFirst, [RAZR]'Проталкиваем в нижний регистр бит для зажигания разряда № 6
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в верхний регистр сконвертированный код для сотен

'---------------Зажигание четвертого справа разряда индикатора и вывод на него цифры----------------
N = dig4 'Выделяем из числа 4-ю с права цифру
A = 4
GoSub Convert 'и конвертируем в код ССИ
SHOut DS, SH_CP, MsbFirst, [RAZR]'Проталкиваем в нижний регистр бит для зажигания разряда № 5
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в верхний регистр сконвертированный код для тысяч

'---------------Зажигание пятого справа разряда индикатора и вывод на него цифры-------------------
N = dig5 'Выделяем из числа 5-ю с права цифру
A = 3
GoSub Convert 'и конвертируем в код ССИ
SHOut DS, SH_CP, MsbFirst, [RAZR]'Проталкиваем в нижний регистр бит для зажигания разряда № 4
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в верхний регистр сконвертированный код для ед.тыс

'---------------Зажигание шестого справа разряда индикатора и вывод на него цифры-------------------
N = dig6 'Выделяем из числа 6-ю с права цифру
A = 2
GoSub Convert 'и конвертируем в код ССИ
SHOut DS, SH_CP, MsbFirst, [RAZR]'Проталкиваем в нижний регистр бит для зажигания разряда № 3
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в верхний регистр сконвертированный код для дес.тыс

'---------------Зажигание седьмого справа разряда индикатора и вывод на него цифры------------------
N = dig7 'Выделяем из числа 7-ю с права цифру
A = 1
GoSub Convert 'и конвертируем в код ССИ
SHOut DS, SH_CP, MsbFirst, [RAZR]'Проталкиваем в нижний регистр бит для зажигания разряда № 2
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в верхний регистр сконвертированный код для сот.тыс

'---------------Зажигание восьмого справа разряда индикатора и вывод на него цифры----------------
N = dig8 'Выделяем из числа 8-ю с права цифру
A = 0
GoSub Convert 'и конвертируем в код ССИ
SHOut DS, SH_CP, MsbFirst, [RAZR]'Проталкиваем в нижний регистр бит для зажигания разряда № 1
SHOut DS, SH_CP, MsbFirst, [Value]'Проталкиваем в верхний регистр сконвертированный код для лимонов
Return

Convert:
'RAZR = LookUp a, [1,2,4,8,16,32,64,128]                                                 'маска для ССИ с общ.анодом
'Value = LookUp n, [192,249,164,176,153,146,130,248,128,144]'156] 'маска для ССИ с общ.анодом
'----------------------------------------------------------
RAZR = LookUp A, [254,253,251,247,239,223,191,127]'маска для ССИ с общ.катодом
Value = LookUp N, [63,6,91,79,102,109,124,7,127,103]   'маска для ССИ с общ.катодом
ST_CP = 1 'Защелкиваем данные
ST_CP = 0 'Обнуляем защелку данных
Return
Прикрепления: 8SEG12f67574CH5.dsn(79Kb) · 8SEG12f67574CH5.pwi(1Kb)

Сообщение отредактировал PINCOD - Пт, 29.01.2016, 16:33
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Не могу помирить 12ф675 и 75нс595 (не могу протолкнуть байт)
Страница 1 из 11
Поиск: