edm2007 писал(а):Какие, к черту, звезды? Это что, ход такой? Если Вы нарисовали СВОЮ схему, так и пишите СВОЙ код. В чем проблема-то?То Proteus виноват, то звезды не складываются. Сколько можно-то...
Да чем же это я так Вас разозлил

ну про звезды я как бы в тему хотел и не удачно привел
edm2007 писал(а):восемь сегментов, восемь разрядов, восемь ног у каждого регистра, восемь бит в байте... Прямо звезды складываются как надо
А не для того, чтобы позлить так , что не серчайте извините за неудачное словосочетание. А Ваш код просто понравился поэтому его и привел, до конца не понял отсюда и дурные вопросы.
А в прочем правильно ругать надо, ибо расслабляемся а это не простительно. За помощь огромное человеческое спасибо, но вопросы они так и накатывают по мере углубления поэтому не бросайте нас

На 2 регистрах запустился, но уже вижу свои недочеты с таймером.
Код: Выделить всё
$regfile = "m32def.dat" ' тип МК
$crystal = 16000000 ' выбор кристала для расчета задержек
'*****************************************[Определение переменных и констант]************************************
Dim Count As Byte ' переменная для работы с индикацией
Dim Ledout As Byte ' переменная для загрузки в регистры сдвига
Dim Number(8) As Byte ' значения 6-ти разрядов
Dim H_flag(8) As Byte ' флаги точек 6-ти разрядов
Dim Blink_count As Word ' счетчик времени мигания
Dim Blink_flag(8) As Byte ' флаги мигания разрядов
'***********************************************[Инициализация портов]*******************************************
Ddrc = &B11111111 'порт В на выход ' вывод SH_CP регистра (тактовые импульсы)
'*********************************************[Инициализация прерываний]*****************************************
Config Timer0 = Timer , Prescale = 256 ' конфигурируем таймер индикации
On Ovf0 Refresh ' метка на прерывание индикации
Enable Interrupts ' разрешаем прерывания
Enable Ovf0 ' и для индикации в частности
'********************************************[Присвоение уникальных имен]****************************************
595clock Alias Portc.0 : 595data Alias Portc.1 ' выводы 74HC595
'*********************************************[Начало основной программы]****************************************
Number(1) = 1 ' на индикацию выводим -tESt-
Number(2) = 2
Number(3) = 3
Number(4) = 4
Number(5) = 5
Number(6) = 6
Number(7) = 7
Number(8) = 8
'----------
Do
Loop
'***********************************[Процедуры обработки подпрограмм и прерываний]*******************************
Refresh: ' прерывание таймера Т0
Incr Count : If Count > 8 Then Count = 1 ' иначе (флаг не выставлен, либо счетчик < 200)
Ledout = Lookup(count , Rank) ' забираем в переменную номер разряда
Shiftout 595data , 595clock , Ledout , 1 ' закидываем в регистр
'----------
Ledout = Lookup(number(count) , Digits) ' забираем в переменную код цифры
Shiftout 595data , 595clock , Ledout , 1 ' закидываем в регистр
Pulseout Portc , 2 , 20 ' защелкиваем данные (для 8МГц импульс 5мкс)
Return
'******************************************************[DATA]****************************************************
Digits: ' цифры
Data &B11000000 , &B11111001 , &B10100100 , &B10110000 , &B10011001 ' 0 1 2 3 4
Data &B10010010 , &B10000010 , &B11011000 , &B10000000 , &B10010000 ' 5 6 7 8 9
'----------
Rank: ' разряды
Data &B00000000 ' выкл
Data &B00000001 , &B00000010 , &B00000100 , &B00001000 ' 1 2 3 4
Data &B00010000 , &B00100000 , &B01000000 , &B10000000 ' 5 6 7 8
'****************************************************************************************************************