Програмирование PIC с помощью ассемблера.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13

Сообщение misterkuk »

В общем начал изучать программирование пиков на этом языке. Учу недавно, учу по етому материалу http://www.labkit.ru/html/Assembler_for_PIC Накопилось несколько вопросов. 1.Что такое "стэк"? Читал, читал, ну хоть убей не вдуплю и всё.( про стэк в материале по ссылке не сказано:( )
2. Что такое прерывания? Как с ними работать и как их применять. (в материале по ссылке не дано, читал в другом непонятно написаном самоучителе)
3. Не совсем понял, для чего нужны счётчики команд?
4. Чем отличается переход от спец перехода?
Только прошу, не ругайтесь учу неделю, материал прочитал(написано доходчиво и с примерами, советую), законспектировал, разбирал примеры, не сложные программы понял и даже смогу повторить самостоятельно. Надеюсь получить чёткий и доходчивый ответ. Примеры если будут, то это будет только +. Заранее спасибо:)
Контактная информация:
Реклама
Грызет канифоль
Аватара пользователя
Сообщения: 299
Зарегистрирован: Вт июн 15, 2010 07:16:42
Откуда: Иркутск

Сообщение Rimsky »

Здесь разжевано капитально, советую! http://ikarab.narod.ru/Samouchitel.rar
Контактная информация:
Реклама
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13

Сообщение misterkuk »

Rimsky писал(а):Здесь разжевано капитально, советую! http://ikarab.narod.ru/Samouchitel.rar
У меня есть етот самоучитель, даже распечатаный, даже я учился по нём, читал читал и не понял нифига. Для новичка мне кажется сложноват он.
Контактная информация:
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Полистайте эту книжку
http://progbook.ru/programmirovanie-mik ... o-vam.html
Она довольна объёмиста и у меня она бумажном варианте.Не скажу,что прямо "всё",но про PIC16 под черпнуть сможете очень многое.
И от себя добавлю- нафиг вам этот асм,серьёзное написать на нем надо очень много моральных затрат,ещё бы использую всего 32 команды и лавируя,допустим у старших PIC16,по 4 банкам.
Используйте С.Со временем вы наработаете много библиотек,которые впоследствии вы сможете использовать с любой платформой,а асм,он так и останется только для PIC.
Реклама
Эиком - электронные компоненты и радиодетали
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Сообщение SII »

Vov123 писал(а):И от себя добавлю- нафиг вам этот асм
Без знания асма невозможно стать хорошим программистом на МК. Да и не обойтись без него в некоторых случаях...
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1231
Зарегистрирован: Вс май 21, 2006 16:07:59
Откуда: Алтай

Сообщение wws63 »

SII писал(а):
Vov123 писал(а):И от себя добавлю- нафиг вам этот асм
Без знания асма невозможно стать хорошим программистом на МК. Да и не обойтись без него в некоторых случаях...
Это точно :)) Книжки в электронном виде посмотрите здесь: http://microlibrary.narod.ru/PIC.html
Реклама
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13

Сообщение misterkuk »

Действительно в будующем перейду на С. Но на Ассемблере хочу понять структуру всего етого дела.
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 212
Зарегистрирован: Чт июн 03, 2010 16:32:02
Откуда: Донецк

Сообщение ZoomerJuk »

1. если начинающий - пока забей на него.
2. прерывание - это событи в жизни программы :) вот крутится программа, крутится, чегото там выполняет. и в один момент на некой ножке контроллера происходит какое-либо событие - сигнал появился, сигнал пропал, напряжение возросло или пр. (это событие может быть и внутри контроллера - например - таймер отсчитал заданное время). программа ПРЕРЫВАЕТСЯ и начинает выполнять (обрабатывать) прерывание - проще говоря выполнять действия которые нам надо при проишедшем событии. можно конечно, все время проверять ножку - а чего там происходит? но если программа большая то времени это займет много, и сильно не разгонишся, поэтому применив прерывание, можно заниматься основной работой, а ножка будет под "контроллем" прерывания. применяются так:
начало программы такое

Код: Выделить всё

ORG 0h                    
goto    main
org   4h
goto    piriv
piriv
за этой меткой piriv идет код обработки прерывания.
сначала надо определить источник прерывания. это делается по битам спецрегистров - каких - читай ДШ.
далее пиется код выполняемый для каждого прерывания (события)
после вполнения кода, нужно вернуться из прерывания в основную программу коммандой retfie. по хорошему - надо перед обработкой прерывания сохранить значения регистров W и status, а затем их восстановить, т.к. при обработке прерывания они могут затереться и если их использовала основная программа - будет ошибка. Еще перед выходом из прерывания сбросить флаг прерывания.
После чего пишется основна программа

Код: Выделить всё

main
на этапе  инициализации нужно разрешить нужные нам прерывания настроив спец регистры
и далее идет основная программа
...
end
3. счетчик команд позволяет "бегать и прыгать" по программе и всегда возвращаться назад (на нужную комманду)
4. при спец переходе есть всякие дополнения - например переходим при какомто условии, переход с возвратом чегото.
Родился
Сообщения: 14
Зарегистрирован: Вт апр 21, 2009 13:43:25
Откуда: Беларусь

Сообщение levscha »

Начнём попорядку.
1. Стек - это регистр, в который записывается текущее значение счетчика команд при переходе на подпрограмму (команда CALL) и, таким образом осуществляется задание точки возврата из подпрограммы. Он имеет 8 уровней для большинства контроллеров серий PIC12, PIC16, PIC18. Т.е. есть 8 регистров в которых осуществляется хранение значения счетчика команд при вызове подпрограммы. Запись в стек осуществляется в вершину. Последующий вызов подпрограммы приводит к тому, что данные, которые хранились в вершине стека будут переписаны в регистр ниже, а в вершину записано текущее значение счетчика команд. При вызове 9-й раз подпрограммы произойдёт потеря исходного адреса возврата, если до этого момента не было возвратов из подпрограмм. Проще это объяснить на примере работы магазина от АК. Если мы вызаваем подпрограмму (снаряжаем магазин по 1 патрону) то происходит смещение содержимого стека вниз на одну позицию. Всего можно "зарядить" 8 патронов.
При возврате из подпрограммы осуществляется обратное действие. Из вершины стека производится запись в счетчик команд. То, что было ниже в стеке, переписывается на уровень выше. (Для АК - выстел -> перезарядка -> смещение содержимого магазина на одну позицию вверх).
Возврат из подпрограмм осуществляется при помощи команд RETURN, RETLW.
Таким образом, память здесь устроена по принципу "первый вошёл - последний вышел".
2. Прерывание, если говорить простым языком, это тоже подпрограмма, но она может быть запущена при наличии определённого аппаратного события (например, срабатываие таймера). Т.е. большую часть времени контроллер выполняет какую-нибудь программу, а прерывание вызывает временную остановку её выполнения и "отвлекает" контроллер на обработку события. После обработки прерывания основная программа продолжает свою работу. Прерывания нужны для обработки непродолжительных по времени действий, но реакция на которые должна быть мгновенной.
3. Счётчик команд - это один из основных элементов микроконтроллера. Он нужен для указания адреса команды, которая должна быть исполнена в следующем цикле. Цикл работы контроллера состоит из 4-х циклов тактового генератора. Подробнее о работе можно узнать из даташита.
4. По поводу переходов - есть безусловный переход и условный переход. Перый, безусловный переход, это простой переход на метку (команда GOTO). Второй - это когда осуществляется переход на метку только по какому-либо условию. Для реализации этого перехода используются команды BTFSS и BTFSC. В старших семействах (PIC18) есть и другие команды.

Для начала я думаю достаточно.

P.S. И вообще как преподаватель я считаю, что освоение контроллеров лучше начинать с ASM, т.к. будет понятие о принципе работы контроллера. Язык С скрывает все тонкие моменты с работой контроллера. Он применим при написании программ на верхнем, системном уровне.
Не бывает безвыходных ситуаций. Есть только ситуации, выход из которых Вас не устраивает...
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

вообще-то pic под ассемблером "еще то ...!"
весьма многообещающие заявки с типовыми решениями под С, а вот со своей схемотехникой и на ассемблере... хи-хи... :roll:
Друг Кота
Аватара пользователя
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua

Сообщение NiTr0 »

BOB51 писал(а):вообще-то pic под ассемблером "еще то ...!"
Для привычных к более "классическим" архитектурам, без бита направления операции, с наличием прямой адресации памяти программ (через какое место реализуется работа с таблицами на пиках - помолчу) и прочих специфических вещей - таки да, попытки освоить асм пиков сродни изнасилованию в мозг. Если же учить с нуля - то ИМХО разницы большой нет.
Хотя - я бы перед этим подумал о целесообразности их изучения...
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Из "общедоступных" есть три семейства - MCS51, AVR и PIC.
Каждому свое место, хотя по моему мнению все производные (AVR , PIC и прочии)
все же произошли от intela & zilog :)))
А насчет асма для х86 (от486 и далее) то там также всякого хватает, жаль только что свободнодоступной (без лицензий и "официоза") среды для новых процессоров нихт, (хакнутые версии не в счет). :beer:
Друг Кота
Аватара пользователя
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua

Сообщение NiTr0 »

BOB51 писал(а):Из "общедоступных" есть три семейства - MCS51, AVR и PIC.
Каждому свое место, хотя по моему мнению все производные (AVR , PIC и прочии)
все же произошли от intela & zilog :)))
Ну есть еще MSP430, мотороловские чипы, ну и ARM - которые уже продаются за копейки (сопоставимо с младшими PIC) - один минус, паять их проблемно будет :)
Да и мнемоника комманд и сама логика ассемблера у пиков отнюдь не порождение интела...
BOB51 писал(а):А насчет асма для х86 (от486 и далее) то там также всякого хватает, жаль только что свободнодоступной (без лицензий и "официоза") среды для новых процессоров нихт, (хакнутые версии не в счет). :beer:
nasm, GNU набор (binutils), и иже с ними...
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

"MSP430, мотороловские чипы, ну и ARM" - нет простых программаторов, да и отсутствие DIP корпусов... при работе с этими устройствами требуются обязательно покупные модули (туда же и zilogовские микроконтроллеры и signal/silabsовские)
потом... доступно то, что лежит на рынке в любой день, а ежли под заказ, да подождать... :sleep:
почему же? - pic=mcs48 (так же как AVR=mcs51+x86)
структура организации памяти программ/данных, а мнемоника и прочее - дабы лицензионные рогатки обойти (хош и х... , но по-своему!)
кстати, у atmela есть неплохая разновидность mcs51 - серия at89lpxxxx, даже со своей средой и с весьма неплохим ассемблером, пригодным для любой ис серии mcs51, там же и программатор для них.
Друг Кота
Аватара пользователя
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua

Сообщение NiTr0 »

BOB51 писал(а):"MSP430, мотороловские чипы, ну и ARM" - нет простых программаторов, да и отсутствие DIP корпусов... при работе с этими устройствами требуются обязательно покупные модули (туда же и zilogовские микроконтроллеры и signal/silabsовские)
ARM шьются элементарной JTAG приблудой на ЛПТ. MSP430 - и того проще, через RS232 благодаря встроенному загрузчику. Ну или через JTAG.
BOB51 писал(а):потом... доступно то, что лежит на рынке в любой день, а ежли под заказ, да подождать... :sleep:
LPC2103 найти не проблема, в течение пары дней... А из того, что у нас "лежит" - выбор весьма малый, да и цены кусачие (самый дешевый PIC16/PIC18 будет дороже LPC2103)
BOB51 писал(а):почему же? - pic=mcs48 (так же как AVR=mcs51+x86)
MCS48 имел бит направления операции? Не умел напрямую считывать память программ (только через одно место, как PIC)? Это - пара "мелких" отличий. Да и вообще, 8048 был довольно близок к 8051...
BOB51 писал(а):структура организации памяти программ/данных, а мнемоника и прочее - дабы лицензионные рогатки обойти (хош и х... , но по-своему!)
Структура организации памяти программ/данных - весьма различается. Что длинна комманд в 12-14-16 бит (собссно, из-за чего скорее всего и отсох прямой доступ на чтение памяти комманд), что как таковое отсутствие стека (стек выродился в 8-ячеечный указатель адресов возврата, и, следовательно, появились ограничение на вложенность ф-й и необходимость передачи параметров функции где-то еще - в GFR или через RAM; сохранить регистры в стеке тоже не представляется возможным), ну и много чего еще.
BOB51 писал(а):кстати, у atmela есть неплохая разновидность mcs51 - серия at89lpxxxx, даже со своей средой и с весьма неплохим ассемблером, пригодным для любой ис серии mcs51, там же и программатор для них.
Они менее доступны, чем армы. Купить их будет проблематично.
Контактная информация:
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13

Сообщение misterkuk »

Принцип понятен, а это главное:) Только вот не пойму всётаки как работает счётчик команд. Я так понимаю ( из его названия) он что то считает.

Код: Выделить всё

metka1  MOVLW .1     ; записываем в аккумулятор единицу

        ADDWF KLON,F ; увеличиваем (складываем) на единицу

        GOTO  metka1 ; переход на метку1
Тут я понимаю при каждом круге значение KLON будет увеличиваться на 1. Но как это можно сопоставить с словосочетанием "счётчик команд" Ведь никакие команды он не считает!! где можно применить етот сегмент? и ещё!

Код: Выделить всё

Пример 7. Уменьшение и увеличение значений кнопками

В этом примере мы рассмотрим как с помощью двух кнопок можно увеличивать или уменьшать значение какого либо регистра. Факт изменения содержимого регистра мы будем отображать на индикаторе.

 

            LIST        P=PIC16F84A
            __CONFIG    H3FF1

W           EQU         0
F           EQU         1
PC          EQU         H0002
STATUS      EQU         H0003
PORTA       EQU         H0005
PORTB       EQU         H0006
TRISA       EQU         H0005
TRISB       EQU         H0006
C           EQU         0
Z           EQU         2
Reg_1       EQU         H000C
Reg_2       EQU         H000D
Reg_3       EQU         H000E
Reg_4       EQU         H000F     ; регистр под результат

            org         0           ; начало программы            
; подготовительные моменты
            bsf         STATUS,5    ; переход в Банк 1
            movlw       b00011111
            movwf       TRISA
            clrf        TRISB
            bcf         STATUS,5    ; переход назад в Банк 0
; отрисовка нуля и подготовка регистра (очистка перед изменением)
            movlw       b01101111
            movwf       PORTB
            clrf        Reg_4
; отслеживание нажатий кнопок
m3          btfss       PORTA,2     ; бит-проверка ножки RA2 - уменьшение
            goto        m1
            btfss       PORTA,3     ; бит-проверка ножки RA3 - увеличение
            goto        m2
            goto        m3          ; зацикливание проверки
; проверка на ноль (на крайнее значение) и уменьшение значения регистра
m1          bcf         STATUS,Z    ; опустим флаг Z в ноль
            movf        Reg_4,F     ; копировать из Reg_4 в Reg_4
            btfsc       STATUS,Z    ; делаем бит-проверку Z-флага
; если Z=1, то выполняется следующая инструкция, иначе – пропускается
            goto        m4          ; переходим на отрисовку значения
            decf        Reg_4,F     ; уменьшить значение на 1 и сохранить
            goto        m4
; проверка на 9 (на др. крайнее значение) и увеличение значения регистра
m2          bcf         STATUS,C    ; опускаем флаг С в ноль
            movlw       .247        ; (255-9)+1 = 247 -> W
            addwf       Reg_4,W     ; (Reg_4)+W
            btfss       STATUS,C ; делаем бит-проверку C-флага
; если бит С=0, то выполняется следующая инструкция
; если бит С=1, то следующая инструкция пропускается
            goto        m5
            goto        m4
m5          incf        Reg_4,F     ; увеличить значение на 1 и сохранить

m4          movf        Reg_4,W
            call        TABLE
            movwf       PORTB
            call        Pause
            goto        m3
;==================
TABLE       addwf      PC,F        ; Содержимое счетчика команд PC = PC + W
            retlw      b01101111 ; 0
            retlw      b00001100 ; 1
            retlw      b01011011 ; 2
            retlw      b01011110 ; 3
            retlw      b00111100 ; 4
            retlw      b01110110 ; 5
            retlw      b01110111 ; 6
            retlw      b01001100 ; 7
            retlw      b01111111 ; 8
            retlw      b01111110 ; 9
;==================
;delay = 500000 machine cycles
Pause       movlw       .85
            movwf       Reg_1
            movlw       .138
            movwf       Reg_2
            movlw       .3
            movwf       Reg_3
wr          decfsz      Reg_1, F
            goto        wr
            decfsz      Reg_2, F
            goto        wr
            decfsz      Reg_3, F
            goto        wr
            return

            end                     ; конец программы
Что даст нам эта строка?

Код: Выделить всё

TABLE       addwf      PC,F        ; Содержимое счетчика команд PC = PC + W
Сначение PC будет увеличиватся на какоето число с каждім кругом программы, но для чего???
Контактная информация:
Родился
Сообщения: 14
Зарегистрирован: Вт апр 21, 2009 13:43:25
Откуда: Беларусь

Сообщение levscha »

Счётчик команд указывает адес ячейки в памяти программ, в которой хранится исполняемая в следующий цикл команда.

Код: Выделить всё

Принцип понятен, а это главное:) Только вот не пойму всётаки как работает счётчик команд. Я так понимаю ( из его названия) он что то считает.
Код:
metka1  MOVLW .1     ; записываем в аккумулятор единицу

        ADDWF KLON,F ; увеличиваем (складываем) на единицу

        GOTO  metka1 ; переход на метку1

Тут я понимаю при каждом круге значение KLON будет увеличиваться на 1. Но как это можно сопоставить с словосочетанием "счётчик команд" Ведь никакие команды он не считает!! где можно применить етот сегмент? и ещё!
Именно счётчик команд и считает номер исполняемой команды!!! Приведённый код (см. выше) и является командами. KLON в данном случае является регистром (ячейкой памяти) в памяти данных и при работе происходит изменение его содержимого. Никакого прямого отношения к изменению значения счётчика команд здесь нет.

Цикл выполнения команды состоит из 4-х тактов. Выборка команды из памяти программ и её исполнение совмещены по времени таким образом, что выборка команды занимает один цикл, а выполнение - следующий цикл. Эффективное время выпонения команды составляет один цикл. Т.е. в одном и том же цикле совмещены две операции: выборка следующей исполняемой команды из памяти программ и исполнение команды, выбранной на предыдущем цикле работы. Команды, которые производят изменение счётчика команд (CALL, GOTO, BTFSC, BTFSS и др.) выполняются за два цикла.
Теперь по тактам:
в 1-м такте происходит увеличение значения счётчика команд на 1 при исполнении операции выборки команды; в цикле выпонения осуществляется пересылка команды из памяти программ в регистр команд.
во 2-м такте осуществляется чтение операндов из памяти данных.
в 3-м такте - исполнение команды.
в 4-м - запись результатов в память данных или аккумулятор (он же рабочий регистр, W, WREG).

Память микроконтроллера состоит из памяти программ и памяти данных. Т.е. он построен по гарвардской архитектуре. В свою очередь, память данных состоит из регистров общего назначения и регистров специального назначения. Регистры специального назначения служат для управления режимами работы внутренних блоков микроконтроллера. Регистры общего назначения предназначены для хранения переменных пользователя.
Для PIC16F628 память программ имеет объём 2048 команд разрядностью 14 бит. Т.е. одна команда имеет длину 14 бит. Команды подразделяются на байт-ориентированные, бит-ориентированные, команды управления и операций с константами. Команда состоит из одного 14-и разрядного слова и имеет следующие поля: код операции (OPCODE), один или несколько операндов.

Код: Выделить всё

Что даст нам эта строка?
Код:
TABLE       addwf      PC,F        ; Содержимое счетчика команд PC = PC + W

Сначение PC будет увеличиватся на какоето число с каждім кругом программы, но для чего???
В данном примере приведён кусок кода с вычисляемым переходом. Такой код используется для осуществления табличной выборки. Работает контроллер в этом случае следующим образом. В начале в аккумулятор заносится кокое-либо значение. Затем осуществляется вызов подпрограммы табличной выбоки (CALL TABLE по примеру). Команда addwf PCL,F осуществляет сложение числа, находящегося в аккумуляторе, с младшим байтом счётчика команд и сохранение результата в PCL. Данная команда будет исполнена не за один, а за два цикла, т.к. осуществляется изменение РС. В следующем цикле будет исполнена та команда, на которую указывает счётчик команд. Например, если в аккумуляторе было 0, то следующей выпоняемой командой будет команда с номером ячейки памяти программ номер РС. Если в аакумулятор поместить число 5, то в результате следующей выполняемой командой будет РС+5.

P.S. Думаю, что понятие о работе счётчика команд теперь более менее есть.
Не бывает безвыходных ситуаций. Есть только ситуации, выход из которых Вас не устраивает...
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

поосторожнее с табличками!!!
table
addwf pcl,f ; pcl+0xff
nnnnnnn ; pcl+0x00
nnnnnnn ; pcl+0x01
особо учитывать, что w не должно быть больше .127 , недопустимость размещения таблицы на границе 0x0:n:f:f/0x0:n+1:0:0 и содержимое pclath :shock:
а иначе... может туда прыгнуть... :cry: или "бесконечный цикл" (w=0xff) заморочить :beer:
( в 48 - пресловутая "страница3" - movp3 a,@a , хотя там можно было и к другим участкам памяти программ обращаться, но вот страничная организация 48й все-же жестковата, стек там также 8-уровневый, но с доступом на чтение\запись содержимого)
кстати pic довольно хитрая зверюга - врод как построение с упором на акумулятор (w), однако практически все основные операции можно выполнить только с парой регистр файла ОЗУ + W
поэтому весьма важно правильно распланировать карту рон озу
следует также обратить внимание на поведение флага С при операциях вычитания - весьма отличающееся от остальных семейств :cry:
в pic18-х обстановка получше, но они дороговаты, да и 8-14 лапые ИС для простых периферийных модулей (часики, ацп, всяческие преобразователи с простеньким последовательным интерфейсом связи) выгоднее на pic12fxxxx/pic16fxxx строить, чего посолиднее - на mcs51/avrtiny&mega, ну а кому помоложе и с денежкой - цепляйтесь за arm или msp430 :)
( бит направления передачи данных появился еще в Intel8088/0886, благо только в кодах команд, а не в их мнемониках - но микрощиповцев ЖАБА удавила - ведь так раза в два мнемоник больше стало бы - как же в таком случае "минимальным набором команд" рекламу делать?)
ps топикстартеру
постарайтесь всегда использовать файл- заготовку из mplaba , предварительно скопировав ее из каталога диск:\program files\microchip\mpasm suite\template\code\..........
....... в данном случае 16f84temp.asm , для других ИС - подобрать другой.
по крайней мере там уже проставлен минимум инициализации и указан обязательный подключаемый файл с именами регистров "по умолчанию"
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13

Сообщение misterkuk »

levscha писал(а):Счётчик команд указывает адес ячейки в памяти программ, в которой хранится исполняемая в следующий цикл команда.
Я непойму как он может указывать какойто адрес, как он может вообще чемто управлять!!! Приведите ПРОСТЕЙШИЙ пример где хорошо видна работа счётчика команд.
Контактная информация:
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

счётчик команд (PC) не доступен для пользователя
Описание см. стр.63, в той книге ссылку на которую я давал выше,если это конечно надо.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»