Author
others
View
1
Download
0
Embed Size (px)
Vorwort
Bernd-Dieter Schaaf, Peter Wissemann, Stephan Bcker
Mikrocomputertechnik
Aktuelle Controller 8051: Funktionsweise, uere Beschaltung undProgrammierung
ISBN (Buch): 978-3-446-43078-5
ISBN (E-Book): 978-3-446-43348-9
Weitere Informationen oder Bestellungen unter
http://www.hanser-fachbuch.de/978-3-446-43078-5
sowie im Buchhandel.
Carl Hanser Verlag, Mnchen
http://www.hanser-fachbuch.de/978-3-446-43078-5Vorwort des Herausgebers
Was knnen Sie mit diesem Buch lernen?
Wenn Sie dieses Lernbuch durcharbeiten, dann erwerben Sie umfassende Erkenntnisse undQualifikationen, die Sie zur Handlungsfhigkeit in der Mikrocomputertechnik mit Mikro-controllern fhren.
Der Umfang dessen, was wir Ihnen anbieten, orientiert sich anden Studienplnen der Fachhochschulen fr Technik,den Lehrplnen der Fachschulen fr Technik in den Bundeslndern,den Anforderungen der beruflichen Praxis,dem Stand der Technik.
Sie werden systematisch und schrittweise mit der spezifischen Hard- und Software eines Mi-krocomputersystems mit Mikrocontrollern vertraut gemacht. Sie knnen Programme konstru-ieren und Anwenderprogramme der Automatisierungstechnik nutzen.
Dabei gehen Sie folgenden Fragen nach:Welche Struktur der Baugruppen und ihrer Programmierung kennzeichnet einen Mikro-controller?Wie kann man ein Entwicklungssystem konstruieren?Welche Erweiterungen lsst das Mikrocontrollersystem zu?Wie programmiert man das System mit der Hochsprache C?
Wer kann mit diesem Buch lernen?
Jeder, dersich weiterbilden mchte,die Grundlagen der Datenverarbeitung kennt,Kenntnisse in den Grundlagen der Elektrotechnik besitzt.
Das knnen sein:Studenten an Fachhochschulen und Berufsakademien,Studenten an Fachschulen fr Technik,Schler an beruflichen Gymnasien und Berufsoberschulen,Schler in der Assistentenausbildung,Facharbeiter, Gesellen und Meister whrend und nach der Ausbildung,Umschler und Rehabilitanden,Teilnehmer an Fort- und Weiterbildungskursen,Autodidakten,
6 Vorwort des Herausgebers
vor allem in den Bereichen:Elektrische Energietechnik, Prozessautomatisierung, ProzessleittechnikInformations- und Kommunikationstechnik.
Wie knnen Sie mit diesem Buch lernen?
Ganz gleich, ob Sie mit diesem Buch in Hochschule, Schule, Betrieb, Lehrgang oder zu Hauseim stillen Kmmerlein lernen, es wird Ihnen Freude machen.
Warum?
Ganz einfach, weil Ihnen hier ein Buch empfohlen wird, das in seiner Gestaltung die Grund-gesetze des menschlichen Lernens beachtet.
Ein Lernbuch also!
Sie setzen sich kapitelweise mit den Lerninhalten, Lehrstoffen auseinander, schrittweisedargestellt, in berschaubaren Lernsequenzen. Wo es mglich ist, wird der Lehrstoff aus-fhrlich beschrieben auf der linken Spalte der Buchseite und umgesetzt in die technisch-wissenschaftliche Darstellung auf der rechten Spalte der Buchseite. Die weitgehende Zuord-nung der behandelten Lerninhalte in den beiden Spalten erleichtert das Lernen wesentlich,Umblttern ist zum Beispiel in der Regel nicht ntig. An Beispielen konkretisiert und veran-schaulicht der Autor die neuen Lerninhalte.
Ein unterrichtsbegleitendes Lehrbuch mit Beispielen!
Jetzt knnen und sollten Sie sofort die bungsaufgaben lsen, um das Neugelernte zu festigen,zu vertiefen und mit bisher Gelerntem zu verknpfen. Die wesentlichen Schritte der Lsungund das Ergebnis der jeweiligen bung sind am Ende des Buches vom Autor fr Sie aufge-schrieben.
Also auch ein Arbeitsbuch mit bungen und Lsungen!
Fr das Aufsuchen entsprechender Kapitel steht Ihnen das Inhaltsverzeichnis am Anfang desBuches zur Verfgung. Fr die Suche bestimmter Begriffe hat der Autor fr Sie am Ende desBuches das Sachwortregister angelegt.
Selbstverstndlich mit Inhaltsverzeichnis und Sachwortregister!
Sicherlich werden Sie durch die intensive Arbeit mit dem Buch Ihre Bemerkungen zur Sacheunterbringen wollen und die Lsungen der bungen an den jeweiligen Stellen zuordnen, umso ein individuelles Arbeitsmittel an der Hand zu haben.
Am Ende ist Ihr Buch entstanden!
Mglich wurde dieses Lernbuch fr Sie durch die Bereitschaft des Autors und die intensiveUntersttzung des Verlages mit seinen Mitarbeitern. Ihnen sollten wir herzlich danken.
Beim Lernen wnsche ich Ihnen nun viel Freude und Erfolg.
Ihr Herausgeber
Manfred Mettke
Leseprobe
Bernd-Dieter Schaaf, Peter Wissemann, Stephan Bcker
Mikrocomputertechnik
Aktuelle Controller 8051: Funktionsweise, uere Beschaltung undProgrammierung
ISBN (Buch): 978-3-446-43078-5
ISBN (E-Book): 978-3-446-43348-9
Weitere Informationen oder Bestellungen unter
http://www.hanser-fachbuch.de/978-3-446-43078-5
sowie im Buchhandel.
Carl Hanser Verlag, Mnchen
http://www.hanser-fachbuch.de/978-3-446-43078-52 Der MikrocontrollerDer Mikrocontroller beinhaltet auf einem Chip einen kompletten Mikrocomputer, wie in Kapi-tel 1 beschrieben. Auf dem Chip sind die CPU, ein ROM-Speicher fr das Programm, ein RAM-Speicher fr die variablen Daten sowie parallele und serielle Ein- und Ausgabeports integriert.Die CPU ist ber ein internes Bussystem mit dem Speicher und den Schnittstellen-Baugruppenverbunden. Der Controller wird hauptschlich im Bereich der Automatisierungs-, Steuerungs-und Antriebstechnik eingesetzt. Speziell fr diese Anwendungsgebiete sind auer den aufge-fhrten Standard-Baugruppen noch eine Reihe zustzlicher Funktionseinheiten in den Con-troller integriert. Solche Funktionseinheiten sind z. B. schnelle Zhler (Timer), A/D-Wandleroder Interrupt-Controller.
Werden zustzliche Funktionseinheiten bentigt, lsst sich ein externes Bussystem aufbauen.Daran lassen sich dann weitere Speicher oder Ports anschlieen.
ParallelePorts
ParallelePorts
SeriellerPort
Interrupt-Controler
Speicher Zhler(Timer)
SpeicherA/D-Wandler
Schnitt-stellen
CPUMikrocontroller
interner Bus externer Bus
Dieses Buch stellt Controller der 8051-Familie bzw. deren Derivate vor. Obwohl die Architekturdes 8051-Controllers schon 1980 von Intel vorgestellt wurde, gibt es auch heute noch von fastjedem namenhaften Hersteller ein oder mehrere Controller, die diese Architektur verwenden.Dabei verwenden die Controller dann einen gleichen Befehlsatz, und unterscheiden sich nur inden zustzlichen Funktionseinheiten, wie zum Beispiel dem In-System-Programming odereinem zustzlichen internen Speicher. Zudem haben die heutigen 8051-er Derivate optimierteBefehlsausfhrungszeiten und knnen mit einem hheren externen Takt betrieben werden.
2.1 Das Blockschaltbild des Mikrocontrollers 23
In diesem Buch soll beispielhaft ein 8051-er Derivat von Atmel, der AT89C51AC3 vorgestelltwerden. Zudem werden einige Vergleiche zwischen unterschiedliche Realisierungen (zum Bei-spiel beim A/D-Wandler) zu dem lteren nicht mehr erhltlichen Typ SAB 80C535 gemacht.
2.1 Das Blockschaltbild des Mikrocontrollers
Folgendes Blockschaltbild gilt fr den Controller AT89C51AC3 von Atmel, welches mit kleinenAbweichungen anderen 8051er-Controllern gleicht.
UARTRAM256x8
Timer 0Timer 1
INTCtrl
CPU
C51CORE
IB-Bus
Flash64k x 8
Bootloader2k x 8
EEPROM2k x 8
ERAM2048 PCA Timer 2
Parallel I/O Ports and Ext. Bus
Port 0 Port 1 Port 2 Port 3 Port 4
WatchDog
EmulUnit
10 bitADC
SPIInterface
RxD
TxD
XTAL 1
XTAL 2
ALE
PSEN
EA
RD
WR
T0
T1
RE
SE
T
INT
0IN
T1
P0
P2
P3
P1(
1)
P4(
2)
MO
SI
SC
KM
ISO
EC
I
PC
A
T2E
X
T2VC
C
VS
S
Notes: 1. 8 analog Inputs / 8 Digital I/O2. 5-Bit- / 2Bit-I/O Port
2.1.1 Der C51-Core
Im linken umrahmten Teil des Blockschaltbildes ist die klassische 8051-Architektur mit derCPU, dem CPU-nahen 256 KByte RAM-Speicher, der seriellen Kommunikation (UART-Schnitt-stelle), zwei speziellen Timern und einem Interruptblock dargestellt. Dieser Teil entspricht ge-nau dem Urtypen der 8051-Architektur und lsst sich ohne Abweichungen gleich programmie-ren.
24 2 Der Mikrocontroller
CPU
Die CPU ist ber das interne Bussystem mitden brigen Funktionseinheiten verbunden.Der Systemtakt der CPU wird ber einen ex-tern zugeschalteten Quarz an den Anschls-sen XTAL1 und XTAL2 erzeugt.
CPU
XTAL 1
XTAL 2
Quarz
Speicher
Der CPU-nahe Speicher dient zum schnel-len Abspeichern und Laden von variablenDaten. Meist sind dies einzelne Merkerbits,Zhlvariablen oder hnliches.
RAM256x8
UART-Schnittstelle
Der Controller ist mit einer seriellen Schnitt-stelle ausgestattet, die vollduplex arbeitet.Die Sendeleitung TxD (Transmit Data) istder Anschluss 1 von Port 3. Die Empfangs-leitung RxD (Receive Data) ist der Anschluss0 des Portes 3. Der Schnittstelle knnen dieDaten von der CPU parallel bergeben wer-den.
Das serielle Senden und Empfangen mit ein-stellbaren bertragungsprotokoll wird vonder Funktionseinheit selbststndig durchge-fhrt. Dasselbe gilt fr die seriell empfange-nen Bits, die von der CPU parallel gelesenwerden knnen.
UARTR
xD
TxD
Timer
Die Timer 0 und 1 sind zwei unabhngigvoneinander arbeitende Zhler. Sie lassensich als Ereigniszhler oder als Zeitgeber ein-setzen.
Bei der Verwendung als Ereigniszhler wer-den externe Impulse gezhlt, die an be-stimmten Eingngen der parallelen Portseintreffen. Bei Verwendung als Zeitgeberwerden interne Impulse gezhlt, die von derOszillatorfrequenz abgeleitet werden. DieZeiten ergeben sich aus der Periodendauerdes internen Taktes und dem Zhlwert.
Timer 0Timer 1
T0
T1
2.1 Das Blockschaltbild des Mikrocontrollers 25
Interrupt
Mithilfe der Interrupt-Control-Funktionkann ein laufendes Programm durch ein in-ternes oder externes Ereignis unterbrochenwerden und eine entsprechende Funktionausgefhrt werden. Zum Beispiel, wenn einNot-Aus bettigt wird.
INTCtrl
INT
0IN
T1
2.1.2 Zustzliche Funktionen
Rechts neben dem C51 Core sind in dem Blockschaltbild zustzliche Blcke angeordnet, dieber den internen Bus des Controllers verbunden sind. Diese Blcke sind von Atmel dem 8051-Kern hinzugefgt bzw. in bestimmten Bereichen optimiert worden, um den Mikrocontroller-Chip fr den Anwender komfortabler und vielseitiger nutzbar zu machen. Die Funktionsweiseund Architektur dieser Blcke weicht teilweise von den Urtypen der 8051-Architektur ab. VieleTeile sind auch hinzugefgt worden, wie zum Beispiel mehrere zustzliche Speicher auf demChip.
Speicher
Zum zustzlichen Speicher gehren ein64 KByte Flash-Speicher, in dem das ei-gentliche Programm gespeichert wird, einBootloader, mit dem das Programm di-rekt ber die serielle Schnittstelle in denFlash-Speicher geschrieben werden kann,ein 2 KByte EEPROM, in dem Daten auchnach dem Ausschalten des Controllers erhal-ten bleiben und ein 2 KByte ERAM-Speicherfr die kurze Speicherung von Daten wh-rend des Betriebes.
Flash64k x 8
Boot-loader2k x 8
EEPROM2k x 8
ERAM2048
Parallele Ports
Dieser Controller verfgt ber fnf digitalePorts mit jeweils 8 Bit. Mithilfe dieser Portsknnen digitale Eingnge ausgelesen, bzw.digitale Ausgnge gesetzt und gelscht wer-den.
Einige Ports haben zustzliche Alternativ-funktionen, auf die per Programm umge-schaltet werden kann.
Parallel I/O Ports and Ext. Bus
Port 0 Port 1 Port 2 Port 3 Port 4
P0
P2
P3
P1(
1)
P4(
2)
26 2 Der Mikrocontroller
Timer 2
Der Timer 2 funktioniert wie die Timer 0 undTimer 1, ist allerdings mit zustzlichen Funk-tionen ausgestattet, wie zum Beispiel mit ei-nem programmierbaren Takt-Ausgang.
Timer 2
T2E
X
T2
PCA
Die PCA-Einheit (Programmable CounterArray) ist ein komplexer Timer, der fr ver-schiedene Anwendungen, wie zum Beispielder Pulsweitenmodulation genutzt wird. Mitdiesem Timer kann die CPU sehr entlastetwerden, und spezielle zeitgesteuerte Anwen-dungen knnen selbstndig von diesem Mo-dul durchgefhrt werden.
PCA
EC
I
PC
A
Watch Dog
Der Watch Dog ist ebenfalls ein speziellerZhler, der stndig berprft, ob das Pro-gramm in einer festen Zeit zyklisch arbei-tet. Wenn das Programm an einer Stelle nichtmehr weiter bearbeitet wird, so stellt dies derWatch Dog fest, und fhrt zum Beispiel sel-ber einen Reset des Controller durch.
WatchDog
10-Bit ADC
Der 10-Bit ADC (Analog Digital Converter)wandelt analoge Eingangssignale in 10-Bit-Digitalwerte um. Hierzu stehen acht analogeEingnge bereit. Die Wandlung erfolgt nach-einander fr jeden Analogeingang.
10 bitADC
SPI-Interface (nur Gehuse ber 52 Pins)
Das Seriell Port Interface ist eine speziel-ler Baustein fr die serielle Datenkommuni-kation zwischen mehreren Gerten. Hierbeiknnen sowohl Peripherie-Gerte als auchandere CPUs, seriell kommunizieren undsomit Daten austauschen. Die kompletteSteuerung hierfr bernimmt dieser Block.
SPIInterface
MO
SI
SC
KM
ISO
2.2 Anschlussbezeichnungen und Funktionen 27
2.2 Anschlussbezeichnungenund Funktionen
Die auf dem heutigen Markt erhltlichen Controller werden in unterschiedlichen Gehusefor-men angeboten. So gibt es auch den Atmel AT89C51AC3 zum Beispiel in vier verschiedenenGehuseformen. Zwei Gehuseformen werden in der SMD-Bauweise angeboten, zwei anderelassen sich in einem PLCC-Sockel einsetzen. Das kleinste PLCC- Gehuse weist 44 Pins auf,das grere 52 Pins. Die SMD-Gehuse haben jeweils 44 Pins und 64 Pins. Bei dem Gehu-se mit mehr Pins wird zustzlich noch der Portpin P4.2, P4.3 und P4.4 nach auen gefhrt.In diesen Gehusen steht dann das SPI-Interface zustzlich zur Verfgung. Die anderen briggebliebenen Pins sind meistens nicht angeschlossen (Not Connected-NC).
Genaue Anschlussbezeichnungen und Funktionen
Symbolische Bezeichnungen Funktionen (E) = Eingang(A) = Ausgang
Hauptfunktion Alternativ- Hauptfunktion Alternativ-funktionen funktionen
P0.0...
P0.7
Port 0.0 (E/A)...
Port 0.7 (E/A)
Adressbus undDatenbus
A0/D0...
A7/D7P1.0 Port 1.0 (E/A)
AN0 Analogeingang 0 (E)T2 Takteingang Timer 2 (E)
P1.1 Port 1.1 (E/A)AN1 Analogeingang 1 (E)T2EX Triggereingang Timer 2 (E)
verzeichnis
Bernd-Dieter Schaaf, Peter Wissemann, Stephan Bcker
Mikrocomputertechnik
Aktuelle Controller 8051: Funktionsweise, uere Beschaltung undProgrammierung
ISBN (Buch): 978-3-446-43078-5
ISBN (E-Book): 978-3-446-43348-9
Weitere Informationen oder Bestellungen unter
http://www.hanser-fachbuch.de/978-3-446-43078-5
sowie im Buchhandel.
Carl Hanser Verlag, Mnchen
http://www.hanser-fachbuch.de/978-3-446-43078-5Sachwortverzeichnis
A
Abfrage 75ACALL 172A/D Converter Characteristics 139ADC, 10-Bit 26ADCF 136ADCON 136, 138, 158ADEN 135ADEOC 135Adressbus 11 f., 32Adressierung, indirekte 41Adress-Latch-Enable 32ADSST 135Akkumulator 12ALE 32ALU 12Analog/Digital-Wandler 130, 202Analogeingang 134Anforderungs-Flag 155Anschlussbezeichnung 27Arithmetik-Logik-Einheit 12arithmetische Operation 168ASCII-Code 109Assembler 15, 64, 164Assemblerprogramm 17asynchroner Modus 145Atmel Flip 65Atmel Flip-Programm 67Auxiliary Flag 169
B
Baudrate 149Baudratentakterzeugung 150BCD-Code 183Befehl, 1-Byte- 15 f., 2-Byte- 15 f., 3-Byte- 15, 17Befehlsliste, Display 105 in Hex-Folge 20Befehlssatz 166Betriebssystem 66Binrkombination 77
Binruhr 99bit 73Bit-Speicher 38 f.Bitverarbeitung 73, 80, 173BLJB 66Blockschaltbild 23Boolesche Verknpfung 173Bootloader 25, 45B-Register 169Bussystem 11 f., 32, externes 32 f.Byte-Speicher 38, 40
C
C, Programmiersprache 71C51-Core 23CALL-Befehl 180Carry Flag 169char 73Codewandler, BCD in DUAL 185, DUAL in BCD 186Compiler 64Controller, Anschlsse 46, Familie 8051 166 mit externem Bussystem 33Controller Erweiterung 114Controllerboard 45C-Programm, Aufbau 71CPU 12, 24
DDAPR 133Datenausgabe 53Datenblatt 55Datenbus 11, 32Dateneingabe 54Datenspeicher 31, 38, 41, extern 36Datenspeicher-Lesezyklus 37Datenspeicher-Schreibzyklus 37Datentransfer 18, 166Datentyp 73
258 Sachwortverzeichnis
Datenbertragung, seriell 142Display 103, Befehlsliste 105, Initialisierung 106, Initialisierungsphase 107, Positionierung 112Dokumentation 67DO-WHILE-Schleife 89
EEA 50EEPROM 25Endlosschleife 72Entprellung 187Entwicklungsboard 45ERAM 25Ereigniszhler 116, 198Escape-Sequenz 153externe Interrupt-Quelle 155
F
Flag 168 f.Flankenerkennung 99, 188Flash-Speicher 25Flipflop 82, 175, rcksetzdominant 82, setzdominant 82float 73FOR-Schleife 89Freigabe-Bit 155Funktion 76, Rckgabewert 76, bergabewert 76Funktionsplan 85
G
Gehuseform 27
H
Hardwaretestumgebung 60Harvard-Architektur 30HD44780 103HEX-Datei 65High-Pegel 56Hochsprache 64
IIDE 63IEN0 158IEN1 158
IF-Abfrage 88IF-ELSE-Abfrage 89Impulsentprellung 187Impulszhler 187indirekte Adressierung 41Initialisierungsphase 107Instruktion 14 f.In-System-Programmierung 45In-System-Schnittstelle 65int 73Intel-Hex-Format 63interne Interrupt-Quelle 155Interrupt 25, 154, 205, Enable 155, Freigabe 156, Prioritt 158, Quelle 155, Request-Flag 154, Service-Routine 154Interruptnummer 161Interrupt-Quelle, externe 155, interne 155ISP 45Istwertanzeige 184Istwertzhler 184
K
Keil 71Kommentar 72Konstante 73Kontrollstruktur 75
L
Lastbetrachtung 58LCALL 172LCALL-Befehl 154LC-Display 102 f.Lesezyklus 35, 37Listing 64logische Operation 171LOW-Pegel 57
M
Makroassembler 64Maschinenprogramm 14, 63 f.Maschinensprache 63Maschinensteuerung 172Maschinenzykluszahl 66Maskierung 78MAX232 52
Sachwortverzeichnis 259
Mikrocomputer 11, Arbeitsweise 14Mikrocontroller 22Mnemonic 18 f., 166 f., 170 ff.Modus, asynchroner 145, synchroner 145MOV-Befehl 167MOVC 166MOVX 166mVision 71
O
Objektprogramm 63 f.Open Kollektor 59Operation, arithmetische 168, logische 171Operationscode 16Operator 74Overflow Flag 169
P
Parity Flag 169PCA 26PCON 149Platine 45Polling 154POP-Befehl 181Port, Basisschaltung 54, digitaler 52, paralleler 13, 25, Schaltung 53, serieller 13Port-Treiberschaltung 53Priorittsstufe 158Program Memory Code 35Programm 13 f.Programm Counter 12Programmablaufplan 69Programmentwicklung 183Programmiersprache C 71Programmlisting 63Programmspeicher 31, lesen 35Programmspeicher-Lesezyklus 35Programmsteuerung 172Programmstruktur 177PSEN 31, 51PSW 169Pull-Up-Widerstand 57, 62PUSH-Befehl 181
Q
Quellprogramm 64
RRD 31Referenzspannung 131Register, Spezial-Funktions- 41, 169, Timer-Control- 121, Timer-Modus- 119Registerbank 38Registerinhalt, retten 181Request-Flag 155 f.Reset 50Retten von Registerinhalten 181
S
Sample and Hold 131sbit 73SBUF 144Schieberegister-Modus 145Schleife, DO-WHILE- 89, FOR- 89, fugesteuerte 75, kopfgesteuerte 75, WHILE- 89, zhlergesteuerte 75Schnittstelle 51, serielle 142, 202Schreibzyklus 37SCON 143serielle Schnittstelle 142, 202sfr 73SFR-Register 42Siebensegmentanzeige 95Signalabbild 83SMOD 149Spannungslupe 132Spannungsversorgung 49Speicher 12, 24, Architektur 30 f.Speicherbereich, interner 38Speicherorganisation, externe 30Spezial-Funktions-Register 41, 169SPI-Interface 26Sprungbefehl 172Stack 180Stackpointer 180Standardchipsatz HD44780 103Steuerbus 12, 32Steuerregister 143Steuerungsverknpfung 184
260 Sachwortverzeichnis
Strukturierung 183sukzessive Approximation 130synchroner Modus 145
T
T2CON 157Takterzeugung 50Taktgenerator 99TCON 121, 157Terminal, VT52- 153Terminal-Programm 202TF 121Timer 24, 115Timer 0 115Timer 1 115Timer 2 26Timer-Control-Register 121Timer-Funktion 119Timer-Modus-Register 119TMOD 119TR 121Transferbefehl 166Treiberbaustein 57TTL-Baustein 56
U
UART-Schnittstelle 24berlauf-Flag 115bertragungsrahmen 147unsigned char 73
unsigned int 73Unterbrechungsanforderung 154Unterprogramm 39, 180
V
Variable 73Verknpfung, Boolesche 173Verknpfungssteuerung 68, 80, 174, 189, Programmieren 174Von-Neuman-Architektur 31VT52-Terminal 153
W
Wgeverfahren 130Watch Dog 26WHILE-Schleife 89WR 31
XX2 66
Z
Zhler 115Zhler-Register 115Zhlersteuerung 182, 190Zeitgeber 115, 122, 193Zeitinterrupt 208Zuweisung 74Zykluszeit 154