Характеристики на използваните интегрални схеми pic16F84 Главно описание на pic16F84



Дата01.02.2017
Размер189.26 Kb.
#13990
ТипГлава



Глава 4

Характеристики на използваните интегрални схеми




4.1. PIC16F84

Главно описание на PIC16F84


PIC16F84 е евтин, високоскоростен, компактен, 8-битов микроконтролер. Всички микроконтролери от фамилията PIC16/17 използват съвременната RISK архитектура. PIC16FXX има подчертана активна зона, 8-битов стек и източници на прекъсване, които са външни и вътрешни. Вътрешната архитектура, отделните инструкции и база данни позволяват 14-битови инструкции да се предават по 8-битови шини. Двуфазният инструкционен съобщителен канал разрешава всички инструкции да бъдат изпълнени в един цикъл, изключвайки програмните прекъсвания, които изискват два цикъла.

По този начин микроконтролерът PIC16F84 постига компресия на кода 2:1 и се увеличава два пъти скоростта спрямо другите микроконтролери от този клас.

PIC16F84 има 64B RAM, 64B EEPROM памет за данни и 13 входно/изходни пина. Има вграден таймер/брояч и възможност за външен такъв.

Микроконтролерите от тази фамилия, чрез своята архитектура позволяват значително да се намалят външните компоненти, като по този начин се намалява цената и консумираната мощност и се повишава системната надеждност.

Ниската цена, ниската консумация, съвременната архитектура,лесното използване входно/изходната гъвкавост правят PIC16F84 подходящ за множество сфери на приложение.

Характерна особеност на този микроконтролер е факта, че има електрически програмируема памет, което позволява многократното записване и изтриване на данни и програми. Това го прави приложим при проектирането на устройства, в които ще се използват еднократно програмируеми микроконтролери от същата фамилия.



Архитектура на PIC16F84


Микроконтролерът отделно памет за данни и отделно програмна памет. Това обуславя и разделянето на шината за памет на две – една за данни и една програмна. Разделянето на паметта позволява инструкциите да бъдат с размерност различна от 8 бита (данните са 8-битови, а инструкциите 14-битови).

Цялата програмна памет е вътрешна и е с обем 1к х 14. PIC16F84 има 64 х 8 SRAM и 64 х 8 EEPROM памет за данни. Той съдържа още, едно 8-битово аритметично-логическо устройство (АЛУ) и работен регистър (W). АЛУ изпълнява аритметичните операции и булеви функции между данните в работния регистър и кой да е регистър.

Работния регистър е 8-битов, адресируем регистър и се използва за АЛУ операции. В зависимост от изпълнението на инструкциите, АЛУ може да въздейства върху три бита от STATUS регистъра : C-carri, DC-digit carri и Z-zero. Този регистър съдържа още битове за състоянието на АЛУ, за захранването и битове за избор на част от паметта за данни.

Друга съставна част от архитектурата е Stack-ът. Той представлява 8-нивова, 13 битова твърда памет. Пространството на тази памет не е нито част от програмната, нито от паметта за данни.

За да може да се осъществява обмен на данни между различни устройства са предвидени входно/изходни портове. Те са два – PORTA и PORTB. Някои от портовите пинове изпълняват алтернативни функции за други свойства на устройството.

Организация на паметта

В PIC16F84 има два блока памет. Те са програмна памет и памет за данни, като всеки блок има своя собствена шина,така че достъпът до всеки от тях може да стане по време на кой да е цикъл.



Организация на паметта за данни


Паметта за данни е разделена на две части, които съдържат регистър за различни цели (GPR) и специален функционален регистър (SFR). Съответната част се избира чрез установяване или нулиране на съответните битове в регистъра STATUS. Първите 12 позиции на всяка част са запазени за SFR. Останалите са за GPR изпълнени като статична RAM.

Паметта за данни също съдържа EEPROM памет, която е обозначена индиректно. Това е един индиректен адресен показалец показващ адресите в паметта за данни при четене/запис (R/W). Този показалец е съвкупност от четири регистъра със специално предназначение: EECON1, EECON2, EEDATA, EEADR.

Регистър EEDATA съдържа осем битови данни, които ще се четат или записват.

Регистърът EEADR се използва за адресиране и може да адресира 256B. Само първите 64B на EEPROM паметта за данни са реализирани. Старшите два бита са адресно декодирани, т. е. тези два бита трябва винаги да бъдат нулирани за осигуряване на адрес в 64 байтовото паметно пространство.

Регистър EECON1 е контролен и се използват само младшите пет бита. Старшите три бита не са необходими и са нулирани.

Контролните битове RD и WR са инициатори съответно за четене и запис. Установяването на тези битове може да стане само чрез софтуера. Те се нулират хардуерно след изпълнението на всяка четяща или записваща операция. Забраната за нулиране на WR бита в софтуера предпазва от случайно, преждевременно прекратяване на записващата операция. Контролния бит WREN е предназначен за разрешение на записа.

Регистър EECON2 не е физически регистър. При неговото прочитане ще се прочетат само нули.

За да се прочете паметта за данни е необходимо, потребителят да запише адреса в регистър EEADR и след това да установи бит RD. Данните са разрешени във всеки следващ цикъл, т. е. съдържанието може да бъде прочетено със следващата инструкция. Регистър EEDATA ще помни тази стойност до следващото четене или до неговото записване от потребителя.



00h

Индир. адресиране(1)

Индир. адресиране(1)

80h

01h

TMRO

OPTION

81h

02h

PCL

PCL

82h

03h

STATUS

STATUS

83h

04h

FSR

FSR

84h

05h

PORTA

TRISA

85h

06h

PORTB

TRISB

86h

07h

Неизползвана памет. Чете се като нула.

87h

08h

EEDATA

EECON1

88h

09h

EEADR

EECON2

89h

0Ah

PCLATH

PCLATH

8Ah

0Bh

INTCON

INTCON

8Bh

0Ch
2Fh

64 GPR (SRAM)

Mapped (accesses)

in Bank0


8Сh
AFh

30h
7Fh

Неизползвана памет. Чете се като нула.



B0h
FFh

(1) Няма физически запис (регистър)

фиг.4.1.1. Карта на Register File
За да се запише информация в EEPROM, е необходимо първо да се запише адреса в регистър EEADR и данните в регистър EEDATA. За да не се допусне фалшив запис е необходимо разрешаващия бит WREN да бъде винаги нулиран, освен при промяна на данните. При завършване на записващия цикъл, битът WR се нулира хардуерно.

PIC16F84 има 64B EEPROM памет за данни с адреси 00h-3Fh. Времето за запис се контролира от вграден таймер. Когато устройството е защитено с парола,CPU може да продължи да чете и записва в EEPROM паметта.


Организация на програмната памет

PIC16F84 има 13-битов програмен брояч (Programm Counter-PC), способен да адресира 8к х 14 пространство на програмната памет. За този микроконтролер само първите 1к х 14 (0000H-03FFH) са физически изпълнени. Достъпността до участъка над физически изпълнените адреси ще причини зацикляне. Например адреси 20H, 420H, C20H, 1020H, 1420H, 1820H и 1C20H ще бъдат идентични.



Програмен брояч. Регистри PCL и PCLATH.


Програмния брояч (PC-Programm Counter) е 13 битов. Младшия байт (PC<0:7>) е PCL регистър, от който може да се чете и,в който може да се записва. Останалите битове (старшия байт-PC<8:12>) са нечетими и незаписваеми, тяхното съдържание идва от PCLATH регистър (PC Latch High). PCLATH е поддържащ регистър за PC(<8:12>). Съдържанието на PCLATH се предава на старшия байт на програмния брояч, когато той (PC) е зареден с нова стойност. Това става когато се използват инструкциите CALL и GOTO, или при запис в PCL.

Тактуване и инструкционен цикъл.




фиг.4.1.2

Тактуване и изпълнение на инструкциите.
Тактовия вход (OSC1) е вътрешно разделен на четири, за да се генерират четири незастъпващи се, 900 тактови импулса, които се означават с Q1-Q4. Програмния брояч (PC) нараства по предния фронт на Q1, инструкциите се четат от програмната памет по време на Q4. Инструкциите се декодират и изпълняват по време на протичането на четирите цикъла Q1-Q4. На фиг.Х. са показани тактовете и изпълнението на инструкциите.

Входно/изходни портове-PORTA и регистър TRISA


PORTA е 5-битов. Входът RA4 е с тригер на Шмит и отворен дрейн. Всички други RA портови пинове имат TTL входно ниво и пълен CMOS изходен драйвер. Всеки един пин може да бъде конфигуриран като входен или изходен чрез съответните битове в регистър TRISA. Установяването на тези битове привежда съответните портове във високоимпедансно състояние. При нулирането им съдържанието на изходните тригери се извежда на съответните им пинове. Четейки, регистър PORTA прочита състоянието на пиновете и го записва в портовия тригер. Характерно за RA4 е мултиплицирането му с TMR0 тактов вход. На фиг.4.1.3 е показана карта на битовете на регистри PORTA и TRISA.


АДРЕС

ИМЕ

b7

b6

b5

b4

b3

b2

b1

b0

05h

PORTA

---

---

---

RA4/TOCK1

RA3

RA2

RA1

RA0

85h

TRISA

---

---

---

TRISA4

TRISA3

TRISA2

TRISA1

TRISA0

фиг.4.1.3

Регистри PORTA и TRISA

Входно/изходни портове-PORTB и регистър TRISB


PORTB е 8 битов двупосочен порт. Регистърът насочващ данните е TRISB. Една единица на някой от битовете в този регистър ще приведе съответния пин във високоимпедансно състояние. Една нула на някой от битовете в регистър TRISB ще изведе съдържанието на изходния тригер на съответния портов пин. Промяната на състоянието на RA4-RA7 може да събуди устройството от режим SLEEP. Записът на входно/изходен порт става в края на цикъла на една инструкция. При четяща операция е необходимо данните да са налични в началото на цикъла. Тези особености навеждат на мисълта, че е добре между две последователни, записваща и четяща инструкции, да има една празна (NOP). На фиг.4.1.4 е показана карта на битовете на регистри PORTB и TRISB.

Адрес

Име

b7

b6

b5

b4

b3

b2

b1

b0

06h

PORTB

RB7

RB6

RB5

RB4

RB3

RB2

RB1

RB0

86h

TRISB

TRISB7

TRISB6

TRISB5

TRISB4

TRISB3

TRISB2

TRISB1

TRISB0

фиг.4.1.4

Регистри PORTB и TRISB

Модул TAMER0 и регистър TMR0


Модулът Timer0 е 8 битов таймер/брояч, в който може да се записва и, от който може да се чете, има софтуерно програмируем делител, вътрешен и външен тактов сигнал, прекъсване при препълване и служи за изглаждане на външния такт.

Режим таймер/брояч се избира съответно чрез нулиране/сетване на бит TOCS в регистър OPTION. При препълване на Timer0 битът T0IF в регистър INTCON се установява. Прекъсването може да бъде маскирано чрез нулиране на разрешаващият бит T0IE. Докато таймерът е изключен чрез SLEEP, микроконтролера не може да бъде събуден чрез TMR0 прекъсване.



Специални характеристики на микроконтролера


Това, което отличава микроконтролера от другите процесори са специалните вериги за работа в реално време. PIC16F84 има множество подобни характеристики, проектирани за максимална системна надеждност, намалена цена поради премахване на външни компоненти, осигурява ниска консумация в режим SLEEP и предлага кодирана защита.

PIC16F84 има вграден RC осцилатор наречен Watshdog Timer (WDT), който може да бъде изключен само чрез конфигурационни битове. Той не изисква никакви външни елементи и е отделен от RC осцилаторът на пин OSC1/CLKIN. Продължителността на един WDT time-out e 18ms. PIC16F84 има още два таймера, което осигурява необходимото забавяне при включване на захранването. Единият е OST (Oscilator Start-up Timer), проектиран да задържи чипът ресетван за 1024 осцилаторни цикъла, докато се стабилизира кристалният осцилатор. Другият е PWRT (Power-up Timer), който осигурява фиксирано закъснение от 72ms на захранването. По този начин устройството се държи в ресет, докато се стабилизира захранването тези два вградени таймера са достатъчни и няма от външна ресетваща верига.

Режим SLEEP осигурява ниска консумация на енергия по време на неизползване на устройството. Събуждането става чрез външен ресет, WDT time-out или чрез едно прекъсване.

Конфигурация на осцилатора


PIC16F84 може да бъде управляван от четири различни модела осцилатори. Определянето на типа на използвания осцилатор става чрез два конфигурационни бита (FOSC1 и FOSC0).

  • LP - Low Power Cristal (Кристал с ниска консумация)

  • XT - Cristal/Resonator (Кристал резонатор)

  • HS - Hid Speed Cristal/(Resonator (Високоскоростен К./Р.)

  • RC - Resistor/Capacitor (RC - група)

При използването на тип XT, LP или HS осцилатора се свързва към пинове OSC1/CLKIN и OSC2/CLKOUT, за да се получи по-добра стабилност на генерациите. Може да се използват два вида вериги за кристалния резонатор. Едната със сериен резонанс и една с паралелен резонанс.

Ако се използва RC осцилатор, генерираната честота ще зависи от захранващото напрежение, стойностите на използваните резистори и кондензатори и от температурата. Препоръчително е R>2,2k. По-малка стойност може да доведе до нестабилност на осцилатора и дори той изцяло да спре. За много големи стойности на R (R>1M), осцилаторът става чувствителен към шум, влага и утечки. Макар че осцилаторът ще работи осцилаторът ще работи и без външен кондензатор, препоръчително е използването на такъв със стойност 20pF за предпазване от шумове и по-добра стабилност.



Прекъсвания в PIC16F84


PIC16F84 има четири източника на прекъсване:

  • Външен прекъсващ пин RBO/INT

  • Прекъсване при препълване на TMR0

  • PORTB прекъсване при промяна на пинове RB4-RB7

  • PORTB прекъсване при завършен запис в EEPROM

Регистърът за контрол на прекъсването (INTCON) записва индивидуалните заявки за прекъсване във флаговите битове. Той съдържа индивидуални и общ (глобален),разрешаващи прекъсването битове.

Общият разрешаващ прекъсването бит е GIE (Global Interrupt Enable). Чрез него се разрешават всички немаскирани прекъсвания или се забраняват всички прекъсвания. Индивидуалните прекъсвания могат да бъдат разрешени чрез съответните им разрешаващи битове в регистър INTCON. Определянето на вида на прекъсването може да стане софтуерно, като се провери състоянието на тези битове в регистъра. Когато заявката е външна, от пин RB0/INT или PORTB, се получава закъснение от на прекъсването от три или четири инструкционни цикъла. Едно INT прекъсване може да събуди микроконтролера от режим SLEEP,само ако разрешаващият бит INTE е бил предварително установен (сетван). Прекъсването при препълване TMR0 ще настъпи, когато се достигне стойност FFh и се премине към 00h, което ще установи флаговия бит TOIF в регистър INTCON. Прекъсването може д а бъде разрешено или забранено чрез бит TOIE в същия регистър. POTRB прекъсване настъпва при смяна на състоянието на RA4-RA7 пинове, което установява (сетва) флаговия бит RBIF в регистър прекъсването може да бъде разрешено или забранено чрез бит RBIE в същия регистър.


Режим на ниска консумация


Микроконтролерът може да бъде поставен в режем на понижена консумация, а по-късно отново в режим на нормална работа, т.е. да бъде събуден от режим SLEEP (сън).

В този режим се влиза след изпълнение на инструкцията SLEEP, при което настъпват определени промени в конфигурационните битове. Като пример може да се посочи, че ако WDT е разрешен се нулира, битът PD от регистър STATUS SE се нулира, битът ТО от същият регистър се установява в единица и драйвера на осцилатора се изключва.

За по-малка консумация в режим SLEEP е препоръчително всички входно/изходни пинове да се към Vdd или Vss, без външни вериги черпещи ток от тези пинове.

Събуждането на мицропроцесора от този режим може да стане по един от следните начини:



  • Външно въвеждане на ресет чрез пин MCLR.

  • Събуждане чрез WDT

  • Прекъсване на пин RB0/INT, смяна на нивата на един от пиновете на PORTB или при завършване на запис в EEPROM паметта.

Първият случай ще причини ресет на паметта и програмата ще започне от начало. При следващите два изпълнението на програмата ще от мястото, където е настъпил режим SLEEP. Битовете ТО и PD могат да бъдат използвани за определяне причината за ресета на процесора.

Асемблер на PIC16F84


Команда


Описание

Цикли

Статус

Битове


ADDWF f,d

Събира W и f

1

C,DC,Z

ANDWF f,d

Лог. “И” между W и f

1

Z

CLRF f

Нулира f

1

Z

CLRW -

Нулира W

1

Z

COMF f,d

Инвертира f

1

Z

DECF f,d

Намалява с 1 f

1

Z

DECFSZ f,d


Намалява с 1 f и при резултат 0 прескача следващата команда

1 (2)

NONE

INC f,d

Увеличава с 1 f

1

Z

INCFSZ f,d

Увеличава с 1 f и при резултат 0 прескача следващата команда

1 (2)

NONE

IORWF f,d

Лог. “ИЛИ” между W и f

1

Z

MOVF f,d

Премества f

1

Z

MOVWF f

Премества W в f

1

NONE

NOP -

Празна операция

1

NONE

RLF f,d

Извършва ротация наляво през бит С на рег. STATUS

1

C

RRF f,d

Извършва ротация надясно през бит С на рег. STATUS

1

C

SUBWF f,d

Изважда W от f

1

C,DC,Z

SWAPF f,d

Размества младши и старши полубайт в f

1

NONE

XORWF f,d

Изключващо “ИЛИ” между W и f

1

Z

Битово ориентирани команди

BCF f,b

Нулира указания чрез b бит във f

1

NONE

BSF f,b

Установява указания чрез b бит във f

1

NONE

BTFSC f,b

Ако бит b от f е 0 прескача следващата команда

1 (2)

NONE

BTFSS f,b

Ако бит b от f е 1 прескача следващата команда

1 (2)

NONE

Константни и контролни команди

ADDLW k

Събира стойността k с W

1

C,DC,Z

ANDLW k

Лог. “И” между стойността к и W

1

Z

CALL k

Извиква подпрограма с етикет к

2




CLRWDT -

Нулира Watchdog Timer

1

TO,PD

GOTO k

Безусловен преход към ред с етикет к

2

NONE

IORLW k

Лог. “ИЛИ” между стойността к и W

1

Z

MOVLW k

Премества стойността к в W

1

NONE

RETFIE -

Връщане от прекъсване

2

NONE

RETLW k

Връща като записва стойността на к в W

2

NONE

RETURN -

Връща от подпрограма

2

NONE

SLEEP -

Преминава в режим на ниска консумация

1

TO,PD

SUBLW k

Изважда W от стойността на к

1

C,DC,Z

XORLW k

Изключващо “ИЛИ” между W и к

1

Z

Каталог: gallery -> albums -> userpics
userpics -> Близнаков припомня ангажимента на България за участие с осем процента от Сухопътните войски 1600 души в задгранични операции
userpics -> Унищожаването на 2011 Българската Армия
userpics -> О. з полковник григор дамянов георгиев
userpics -> Радиоводещият в българия
userpics -> Инициативен комитет за написване на книгата
userpics -> Осло. Полетите над Северна Норвегия в сряда вечерта бяха забранени поради опасения, че облаците пепел от възможното изригване на вулкан в Исландия могат да намалят видимостта, предаде афп
userpics -> За „коментари и анализи” Форсаж и после изведнъж падна Желязко Тенчев, в. Дума
userpics -> Българин на борда на най-големия круизен кораб в света
userpics -> Проектът genesis е най-скъпият в историята на корабостроенето!


Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница