Электроприводы, КИПиА, станции водоподготовки бассейнов, электроника

PNP-LinE

Объявление

Добрый день, Уважаемые поситители форума компании Пи Эн Пи - Лайн!

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PNP-LinE » Контроллеры и Компьютеры. » Управление светодиодами 16сХХ


Управление светодиодами 16сХХ

Сообщений 1 страница 20 из 20

1

Опять же книга Кристиана Тавернье (стр.53)
Управление свтодиодами, подключенными к параллельному порту.

КОД:

LED3    =     ra.3    ;это я так понимаю задают значения каждому светодиоду?
LED2    =     ra.2
LED1    =     ra.1
LED0    =     ra.0
org       0               ; вот это не понятно написано что ORG определяет абсолютный адрес кода. Что это значит? :O
;
;
; определение контроллера так понимаю нужно для самого ассемблера, чтоб он мог операнды и коды программы "рассовать куда надо" так?

       device pic16c54,xt_osc,wdt_off,protect_off          ;ну тут почти все понятно, определение параметров генератора, watchdog, ;что                             такое                                                                          протект?

2

далее следует инициализация порта:

КОД:

iniport mov ra,#ffh            ;записываем 1 во все разряды порта А, при этом все светодиоды гаснут

          mov   !ra, #f0h         ;определяем 4 младших разряда порта как выходы (вот с этим совсем запутался) разряды в портах...

3

регистр - 8 бит (1 байт)...  мысли вслух.......
т.е. кол-во регистров пропорцонально объему памяти?
Согласно учебникам
8 бит составляют байт и могут хранить десятичное
число от 0 до 255 

другие формы записи этого диапазона чисел таковы:
в 16-тиричном виде: от 0 до 0xFF  или от $0 до $FF  или от 0h до FFh
в двоичном виде от 0b00000000 до 0b11111111

4

т.е. теперь я в тексте программы уже вижу шеснадцатеричные числа! :boast:

5

т.е. битность (8-бит) (16-бит) означает количество бит в регистре правильно?

6

Протект - защита контроллера от считывания(чтобы не смогли прошивку считать и в другие залить).

LED3 = ra.3(Чисто интуитивно: это объявление компилятору, что каждый раз когда он в тексте программы найдет данное сочетание символов он заменит его на ra.3(PORTA3), тебе же удобнее писать LED3 чем каждый раз вспоминать и на какой же ноге он у меня висит, да и просто читать код легче потом)

С абсолютным адресом перехода не очень знаю, больше на Си пишу.
ORG 0 вроде говорит что по адресу 0х0000 надо расположить начало программы которая написана ниже.

P.S. Нет отрубился.

7

Alexder1 написал(а):

далее следует инициализация порта:

КОД:

iniport mov ra,#ffh            ;записываем 1 во все разряды порта А, при этом все светодиоды гаснут

          mov   !ra, #f0h         ;определяем 4 младших разряда порта как выходы (вот с этим совсем запутался) разряды в портах...

0xff  = b'11111111'
0xf0 = b'11110000'

А что непонятного в разряде порта. Обращение к порту происходит как к регистру, регистр 8 битный. Нумерация разрядов слева-направо соответственно от старших к младшим разрядам. Т.е. справа самый младший разряд, слева самый старший(а разве в десятичных числах не так?).

8

Deimos написал(а):

Протект - защита контроллера от считывания(чтобы не смогли прошивку считать и в другие залить).

LED3 = ra.3(Чисто интуитивно: это объявление компилятору, что каждый раз когда он в тексте программы найдет данное сочетание символов он заменит его на ra.3(PORTA3), тебе же удобнее писать LED3 чем каждый раз вспоминать и на какой же ноге он у меня висит, да и просто читать код легче потом)

С абсолютным адресом перехода не очень знаю, больше на Си пишу.
ORG 0 вроде говорит что по адресу 0х0000 надо расположить начало программы которая написана ниже.

P.S. Нет отрубился.

Понятно, а так можно условно принять абсолютно все что хочется? Просто приравнять да? Ну то что к портам относится!

9

Нет не приравнять, просто синтаксис в этом примере под определенный компилятор.

10

Все равно тяжеловато идет... но тем не менее:

iniport mov ra,   #ffh            =0xff  = b'11111111'
mov   !ra, #f0h                    =0xf0 = b'11110000'
так?
Это ты мне изобразил как оно будет в регистре происходить?

11

Синтаксис опять же:

очевидно #ffh - шестнадцатеричное представление числа(h=hex)

т.е. битность (8-бит) (16-бит) означает количество бит в регистре правильно?

Не стоит путать 16-битный и 16-ричный. 16 битных регистров в 84-м нет.
А так правильно.

12

Alexder1 написал(а):

Все равно тяжеловато идет... но тем не менее:

iniport mov ra,   #ffh            =0xff  = b'11111111'
mov   !ra, #f0h                    =0xf0 = b'11110000'
так?
Это ты мне изобразил как оно будет в регистре происходить?

Да, mov    ra #ffh <->   PORTA=b'11111111' //Везде высокий уровень.
      mov   !ra, #f0h <-> TRISA=b'11110000' //4 старших ввод, 4 младших вывод

13

Текст под 16С54...
а я вроде уже понял что 16-ричные это числа
а 16 - битные - это по размеру регистров...
(опять 25 (С) Спасибо за терпение)
84 - 8 битовый правильно? это что касается данных....
а 14 - битовые команды....
опять немного непонятка в 14 бит = 8 бит - данные  6 бит - операнд? Так?

Все разобрался:
Шина данных и память данных (ОЗУ) - имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит. Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения.
14- битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды.
Все команды выполняются за один цикл, исключая команды переходов. В PIC16C84 программная память объемом 1К х 14 расположена внутри кристалла. Исполняемая программа может находиться только во встроенном ПЗУ.

14

А сколько один цикл в тактах знаешь?

15

Понимаю только то что это зависит от частоты генератора.....

28? :swoon:

16

Страница 10 DS.

17

Deimos написал(а):

Страница 10 DS.

Придется дома смотреть... :(  Это будет домашнее задание.... на работе я стер ДШ... :(

18

да ладно:
1 цикл = 4 такта .

19

Deimos написал(а):

да ладно:
1 цикл = 4 такта .

Как в музыке! Пора разгружаться, на сегодня уже много информации вобрал, голова деревянная!!! :swoon1:  :crazy:
Спасибо Deimos за терпение! :) :friends:

20

org 0 задает смещение в памяти программ,а так как после сброса контроллер берёт код с адреса 0 (но это не все  стартуют по адресу ноль но в данном случае это так) и выполняет его то по этому там 0 и стоит :)


Вы здесь » PNP-LinE » Контроллеры и Компьютеры. » Управление светодиодами 16сХХ