vanish |
Дата: Вт, 19.01.2016, 22:08 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
55
Замечания:
±
На сайте с 08.04.2010
Статус:
Offline
|
Всем привет. Столкнулся с проблемой соединить 12f675 и 74нс595. Не могу протолкнуть байт. Помогите советом, пожалуйста. Спасибо. Добавлено (19.01.2016, 22:08) --------------------------------------------- Извините, опечатался не 75нс595, а 74нс595
|
|
|
|
доцент2 |
Дата: Вт, 19.01.2016, 23:22 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
293
Замечания:
±
На сайте с 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
|
|
|
|
vanish |
Дата: Вт, 19.01.2016, 23:52 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
55
Замечания:
±
На сайте с 08.04.2010
Статус:
Offline
|
Спасибо большое!
|
|
|
|
PINCOD |
Дата: Чт, 28.01.2016, 07:54 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
31
Замечания:
±
На сайте с 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
Сообщение отредактировал
PINCOD - Пт, 29.01.2016, 16:33
|
|
|
|