Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.142.69] |
|
Сообщ.
#1
,
|
|
|
Подскажите пожалуйста по PIC16F84A. Изучая код на ассемблере, который посылает сигналы драйверу светодиодов(это тот же сдвиговый регистр), который в свою очередь выводит цифры на табло. Я обнаружил следующие строки:
SEG_7 andlw 0x0F addwf PCL,f retlw b'01111110' retlw b'00000110' retlw b'11011010' retlw b'11001110' retlw b'10100110' retlw b'11101100' retlw b'11111100' retlw b'01000110' retlw b'11111110' retlw b'11101110' retlw b'10000000' retlw b'01000000' retlw b'00100000' retlw b'00010000' retlw b'00001000' retlw b'00000100' end Подскажите что они делают? Ведь на сколько мне известно retlw это выход из подпрограммы с записью в регистр W какого-то значения.. Но почему здесь все это вподрят??? |
Сообщ.
#2
,
|
|
|
Потому что эта процедура вызывается в цикле. В программе где-то указано количество элементов данной таблицы и вызывая эту процедуру с определенным номером элемента выполнится только одна из команд retlw, вернув значение требуемой ячейки.
CALL TABLE TABLE: ADD PCL ; W + PCL =>PCL (смещение) RETLW k0 ;начало таблицы RETLW k1 : : RETLW kn ;конец таблицы ;Перед выполнением:W = 0x07 ;После выполнения:W = значение kn |
Сообщ.
#3
,
|
|
|
идею понял спасибо
|