Beschreibung des PIC16C84
Der Mikrocontroller PIC16C84 eignet auf Grund seiner Eigenschaften hervoragend,
um im Umgang mit Embedded Mikrocontroller erste Erfahrungen zu sammeln.
- Verfügbarkeit
Der Mikrocontroller ist sehr preiswert (viele Distributoren vertreiben den
Chip). Als "quasi Second-Source" hat der Halbleiterhersteller Scenix
eine Controllerfamilie mit noch höheren Verarbeitungsgeschwindigkeiten
entwickelt, als sie die PIC-Controller von Microchip
bereits bieten.
- Entwicklungsumgebung
Der Halbleiter Hersteller Microchip
stellt eine Entwicklungsumgebung für die Programmentwicklung das Integrated
Development Environment (IDE) MPLAB kostenlos zum Download auf seiner
WEB-Site zur Verfügung. MPLAB beinhaltet eine Projektmanagmentfunktion,
den Cross-Assembler MPASM und einen Simulator zum Austesten von selbst entwickelten
Programmalgorithmen.
Sollte ein Programmer vom Typ PICSTART PLUS zur Verfügung stehen, so
kann dieser problemlos von MPLAB angesteuert werden. Das nach der Assemblierung
enstandene HEX-File kann damit in "wenigen Handgriffen" in einen Mikrocontroller
"gebrannt werden.
- In-System-Programmierung
Alternativ dazu kann der ROM-Code auch in PIC16C84 transferiert werden, der
sich bereits in einer Schaltung, also im Zielsystem befindet. Dazu sind einige
Pins des Controllers mit doppelten Funktionen belegt. Für den Programmierfall
müssen mit etwas zusätzlicher Hardware diese Funktionen quasi freigeschaltet
werden. Dann können via Parallelport eines PC die HEX-Files direkt
in das Controller-ROM geschrieben werden. Ein entsprechendes Shareprogramm
ist unter dem Namen .............. im WEB zu finden, und kann für einige
Dollars lizenziert werden.
- Befehlssatz
Der leicht erlernbare Befehlssatz umfasst nur 35
Instruktionen. Microchip hat inzwischen eine ganze Familie von Mikrocontrollern
kreiert, deren ROM auf EE-Prom bzw. Flash Technologie basiert. Zusätzlich
sind 64Byte nichtflüchtiges EE-Prom zur Datenspeicherung untergebracht.
- Hardware-Eigenschaften des Mikrocontrollers
Auf dem Chip befinden sich gängige Peripherie wie ein Watchdog, ein 8-Bit
Timer mit Prescaler, ein Interruptcontroller und 13 I/O-Ports. Das auszuführende
Programm wird in einem 1024 Speicherzellen (14Bit-Wortbreite) umfassenden
ROM-Speicher untergebracht. Zur Datenspeicherung während der Programmausführung
stehen 36 Byte RAM on-chip zur Verfügung.
Zur Abarbeitung von Subroutinen besitzt der Controller einen 8 Worte tiefen
Stack (Kellerspeicher).
Blockschaltbild des PIC16C/F84
(Bedienhinweis: Führen Sie den Mauszeiger auf die gewünschte
Komponente im folgenden ImageMap)
Eigenschaften der CPU
| Merkmal |
Besondere Hinweise |
| Architektur |
Havard-Struktur |
| CPU-Core |
RISC-CPU mit 35 Befehlen. Alle Befehle werden in einem Zyklus abgearbeitet,
Ausnahme sind Verzweigungen, Sprünge
- Instruktionswortbreite 14 Bit
- Datenwortbreite: 8Bit
|
| Befehlsausführungszeit |
Prozessortakt/4 d.h. min. 400ns bei 10MHz Quarzfrequenz
|
| Speicher und Register |
- 1k x 14Bit EE-Prom
- 36 x 8 Bit SRAM
- 64 x 8 Bit EE-Prom Datenspeicher
- 15 Funktionsregister zur Steuerung der on-chip Peripherie
|
| on-chip Peripherie |
- 13 digitale I/O Pins
- 1 Timer mit Vorteiler
- Resetgenerator (Power-on Reset)
- Oszillator
- Watchdog-Timer
- Power-Save Sleep Mode
- serielle in-System-Programmierung
|
| Interruptcontroller |
- 5 externe Interrupt-Request an Pin RB0, B4...RB7
- Timer0
- EE-Prom Schreibzugriff
|
Technologie und
elektrische Kenndaten |
CMOS Low-power, voll statisches Design (DC...10MHz)
- Betriebsspannung: 2,0V ...6.0V
- Stromaufnahme
<2mA bei 5V, 4MHz
60uA bei 2V, 32kHz
26uA im Sleep-Mode (Stand-by : 2V)
|
Der Befehlssatz der PIC16Cx
Folgende Tabelle listet den Befehlsvorrat des PIC16Cx auf. Die Beschreibung
der Befehle ist zunächst im Herstellerdatenblatt übernommen, um den
Wortlaut des Mnemonic's zu entschlüsseln. Die beinflussten Flagbits (Tabelle
Spalte 5) sind wie folgt kodiert:
C =carry, DC=digit carry/borrow,Z=zero,TO= Timer 0 Flag, PD=Power down Flag
| Maschinenbefehl |
Operanden |
Beschreibung |
Zyklen |
Status |
| ADDWF |
f, d |
Add W and f |
1 |
C,DC,Z |
| ANDWF |
|
AND W with f |
1 |
Z |
| CLRF |
f |
Clear f |
1 |
Z |
| CLRW |
- |
Clear W |
1 |
Z |
| COMF |
f, d |
Complement f |
1 |
Z |
| DECF |
f, d |
Decrement f |
1 |
Z |
| DECFSZ |
f, d |
Decrement f, Skip if 0 |
1(2) |
NONE |
| INCF |
f, d |
Increment f |
1 |
Z |
| INCFSZ |
f, d |
Increment f, Skip if 0 |
1(2) |
NONE |
| IORWF |
f, d |
Inclusive OR W with f |
1 |
Z |
| MOVF |
f, d |
Move f |
1 |
Z |
| MOVWF |
f |
Move W to f |
1 |
NONE |
| NOP |
- |
No Operation |
1 |
NONE |
| RLF |
f, d |
Rotate Left f through Carry |
1 |
C |
| RRF |
f, d |
Rotate Right f through Carry |
1 |
C |
| SUBWF |
f, d |
Subtract W from f |
1 |
C,DC,Z |
| SWAPF |
f, d |
Swap nibbles in f |
1 |
NONE |
| XORWF |
f, d |
Exclusive OR W with f |
1 |
Z |
| Bit orientierte Befehle |
| BCF |
f, b |
Bit Clear f |
1 |
NONE |
| BSF |
f, b |
Bit Set f |
1 |
NONE |
| BTFSC |
f, b |
Bit Test f, Skip if Clear |
1(2) |
NONE |
| BTFSS |
f, b |
Bit Test f, Skip if Set |
1(2) |
NONE |
| Konstantenoperationen und Steuerfunktionen der Mikrocontrollerfunktionen
|
| ADDLW |
k |
Add literal and W |
1 |
C,DC,Z |
| ANDLW |
k |
AND literal with W |
1 |
Z |
| CALL |
k |
Call subroutine |
2 |
- |
| CLRWDT |
- |
Clear Watchdog Timer |
1 |
TO,PD |
| GOTO |
k |
Go to address |
2 |
NONE |
| IORLW |
k |
Inclusive OR literal with W |
1 |
Z |
| MOVLW |
k |
Move literal to W |
1 |
NONE |
| RETFIE |
- |
Return from interrupt |
2 |
NONE |
| RETLW |
k |
Return with literal in W |
2 |
NONE |
| RETURN |
- |
Return from Subroutine |
2 |
NONE |
| SLEEP |
- |
Go into standby mode |
1 |
TO,PD |
| SUBLW |
k |
Subtract W from literal |
1 |
C,DC,Z |
| XORLW |
k |
Exclusive OR literal with W |
1 |
Z |
Einführendes Projekt
Zur Vorstellung des Controllers und seiner IDE dient das Projekt eines
elektronischen Würfels. Folgende Stückliste zeigt den Bauelementeaufwand:
Mit wenigen Aufwand ist damit eine erste Schaltung realisiert.