Embedded Systems
-
Upload
mehmet-kirgoezoglu -
Category
Documents
-
view
16 -
download
0
Transcript of Embedded Systems
![Page 1: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/1.jpg)
CMPE12 Cyrus Bazeghi
Fun with Motorola/Freescale HC11
Microcontrollers and Embedded Systems
![Page 2: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/2.jpg)
CMPE12 Cyrus Bazeghi2
•A microprocessor•Usually not cutting edge•Dependable
•All major bugs well known•Predictable
•Critical for real-time processing•On-chip peripherals and memory
•Parallel and serial digital I/O•Analog I/O•Counters and timers•Internal ROM and/or EPROM
What is a microcontroller?
![Page 3: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/3.jpg)
CMPE12 Cyrus Bazeghi3
What are microcontrollers used in?
• Watches• Microwaves• Stereo Receivers
Some products that you might know:
• NASA‟s Sojourner Rover – 8-bit Intel 80C85• Palm Vx handheld – 32-bit Motorola Dragonball EZ• Sonicare toothbrush – 8-bit Zilog Z8• The Vendo V-MAX 720 Soda Machine – Motorola HC11• Miele dishwasher – 8-bit Motorola 68HC05• Hunter 44550 Programmable Thermostat – (4-bit cpu)
Microcontrollers
• ATMs• PDA‟s, MP3 players• Automobiles
![Page 4: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/4.jpg)
CMPE12 Cyrus Bazeghi4
Microcontrollers
Microcontroller unit sales are 15x higher than microprocessors.… and are MUCH,
MUCH cheaper.
![Page 5: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/5.jpg)
CMPE12 Cyrus Bazeghi5
Microcontrollers
Microcontrollers are a large market•8-bit controllers are the largest, but not growing the fastest.
![Page 6: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/6.jpg)
CMPE12 Cyrus Bazeghi6
Microcontrollers
• 8-bit microcontroller growth rate for 2003 is at 9.42%.
• Microcontroller growth rate in general is 11.5%.
• 8-bit controllers loosing market share in 2003. Was 62.36% in 1998 down to 56.76% in 2003.
Source: Cahners In-Stat Group
![Page 7: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/7.jpg)
CMPE12 Cyrus Bazeghi7
• 16- and 32-bit and higher are on the rise. They will double their unit market share from 15.11% in 1998 up to 31.56% in 2003, decreasing 4-bit and 8-bit devices.
• But, in 2003, the 8-bit microcontrollers will outnumber the higher bit units by almost 80% in the market place.
Source: Cahners In-Stat Group
Microcontrollers
![Page 8: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/8.jpg)
CMPE12 Cyrus Bazeghi8
Microcontrollers
So what languages are they being programmed in?
Language „98-‟99 „99-‟00
Assembly ~ 21% ~ 10%
C ~ 69% ~ 80%
C++ ~ 5% ~ 6%
Java ~ 1 % ~ 2%
Other ~ 3 % ~ 2%
Source: TRON Association Survey 1998/99 & 1999/2000
![Page 9: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/9.jpg)
CMPE12 Cyrus Bazeghi9
•M6801 CPU core•ROM (8KB), EEPROM (512B), RAM (256B)•Counter/Timer system•A/D converter
•D/A in kit•Parallel I/O•Serial I/O (SPI and SCI)•Expansion bus
•To add more memory
Motorola/Freescale M68HC11
![Page 10: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/10.jpg)
CMPE12 Cyrus Bazeghi10
HC11 Micro Kit
AC/DC Power adapterSerial
cable to PC
LCD Display
LEDs
Switches
HC11 µC
![Page 11: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/11.jpg)
CMPE12 Cyrus Bazeghi11
Design environment:•Edit the source file on an PC•Assemble on UNIX machine
> “hc11build file.asm”•Download program to the PC with terminal program•Upload to the microkit using serial cable
To use kits at home•9-12V AC adapter•Serial download cable•Connection to ITS machines•Free serial communication software (e.g. TeraTerm)
HC11 Micro Kit
![Page 12: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/12.jpg)
CMPE12 Cyrus Bazeghi12
Micro Kit Usage
Always have “#include <v2_18g3.asm>” as part of your program, this file:
•Sets up memory, including the stack pointer•Jumps to your “main” label•Also includes a basic library of I/O routines•Take a look at it!http://www.soe.ucsc.edu/classes/cmpe012/Fall09/In the handouts and links page under “HC11 Stuff”
![Page 13: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/13.jpg)
CMPE12 Cyrus Bazeghi13
HC11 Architecture
HC11
![Page 14: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/14.jpg)
CMPE12 Cyrus Bazeghi14
M8601 CPU Core • 8-bit• CISC• Accumulator-based• Results wind up in a 8-bit accumulator A or B• 16-bit results go to accumulator AB, called D• Two index registers for addressing memory or for counting - X and Y• Dedicated stack pointer• Push and Pop instructions use this – grows toward smaller memory addresses like in LC-3• Program Counter• Condition Codes
![Page 15: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/15.jpg)
CMPE12 Cyrus Bazeghi15
Check out the lab manual
• It is online on the class website
• Contains a section on the HC11
• It is a great reference
Also get the programmer reference guide, free at BELS (basement of BE)
![Page 16: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/16.jpg)
CMPE12 Cyrus Bazeghi16
M8601 CPU Core
ALU – Arithmetic Logic Unit
![Page 17: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/17.jpg)
CMPE12 Cyrus Bazeghi17
HC11 Microcontroller
![Page 18: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/18.jpg)
CMPE12 Cyrus Bazeghi18
•More present then in LC-3•Single-bit flags set appropriately for most instructions(several instructions do not, including push and pop)
C Carry/BorrowV OverflowZ ZeroN NegativeH Half-Carry
HC11 Microcontroller
Condition Codes
![Page 19: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/19.jpg)
CMPE12 Cyrus Bazeghi19
HC11 code What it does
cmpa #4 Subtract AccA - 4, set CCR
bge mylabel Branch if
(CCR[Z]=1 OR CCR[N]=0)
Example of how condition codes are used
HC11 Microcontroller
![Page 20: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/20.jpg)
CMPE12 Cyrus Bazeghi20
HC11 Assembly Syntax• Have separate sections for data declarations
and for instructions– Use “.sect .data” for data sections– Use “.sect .text” for instructions sections.
• Have more data types– “.space” for array declarations– “.byte” declares just a byte– “.word” declares 16-bits also– “.asciz” declares a string of characters– “.ascii” declares a string, no NULL terminator
• Comments use a “C++” style “//”
![Page 21: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/21.jpg)
CMPE12 Cyrus Bazeghi21
Data Declaration Examples
.sect .data
myvar: .word 0x1000 // init a word
myarray: .space 20 // 20 entries
mychar: .byte „a‟ // a character
mybyte: .byte 23 // DEC integer
myhi: .asciz “Hi” // a string
myhi2: .ascii “Hi” // a string
.sect .text
// Instructions would start here.
// Can have many .text and .data sections.
![Page 22: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/22.jpg)
CMPE12 Cyrus Bazeghi22
Bits set by the user to tell the processor how to dothings
I Interrupt MaskX XIRQ maskS Disable STOP instructions
HC11 Microcontroller
Configuration Registers
![Page 23: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/23.jpg)
CMPE12 Cyrus Bazeghi23
Return to Addressing Modes
Addressing Modes:
LC-3 has:• PC-Relative• Base Displacement• Indirect
HC11 has many: • Check opcode listings to see what modes work
with what instructions• Also check what condition codes are set
![Page 24: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/24.jpg)
CMPE12 Cyrus Bazeghi24
HC11 Addressing Modes
•Immediate (IMM)
•Extended (EXT)
•Direct (DIR)
•Indexed (INDX and INDY)
•Inherent (INH)
•Relative (REL)
Supports these addressing modes:
![Page 25: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/25.jpg)
CMPE12 Cyrus Bazeghi25
Immediate addressing
• 1 or 2 byte immediate depending on register involved (LDAA vs. LDD)
• ALWAYS include a #• Several formats for different bases -- C-style
constants instead of what is in the HC11 manual (don‟t use !,$,@,%)
•Decimal: LDAA #245•Hexadecimal: LDAA #0x61•Octal: LDAA #041•Binary: LDAA #0b11000011•ASCII: LDAA #‟a‟
HC11 Addressing Modes
![Page 26: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/26.jpg)
CMPE12 Cyrus Bazeghi26
• Access an absolute memory location• Essentially the same mode, but with 8-bit (direct)or 16-bit (enhanced or extended) addresses
• The assembler will decide on which to use basedon how many bits are needed
• Example// Your data starts at address 0x4000:.sect .datavar: .word 0x1000 // Allocate/initialize a word
// Note: a word is 16 bits!
.sect .textSUBD var // Subtract M[x4000] from DSUBD 0x4000 // Subtract M[x4000] from D
HC11 Addressing Modes
Extended and Direct addressing
![Page 27: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/27.jpg)
CMPE12 Cyrus Bazeghi27
•Uses index register X or Y•Similar to LC-3 “LDR R0, R2, #3”
•But can access memory and use it all at once!!•Example
#define mydef 4 // c preprocessor usedldx #var // Like LC-3 load addressaddd 0,X // add contents of M[0+X] to D
// (Note “addd X” doesn‟t work)
addd 2,X // add contents of M[2+X] to Daddd mydef*2, X // add contents of M[8+X] to D
HC11 Addressing Modes
Indexed addressing
![Page 28: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/28.jpg)
CMPE12 Cyrus Bazeghi28
•Opcode fully specifies operation; no addressing•Examples:
INCB increment accumulator BASLA Arithmetic Shift Left accumulator APSHY Push index register Y onto stack
HC11 Addressing Modes
Inherent addressing
![Page 29: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/29.jpg)
CMPE12 Cyrus Bazeghi29
• Used for branches by the assembler• Offsets from –128 to +128 bytes• Use jumps for longer branches
HC11 Addressing Modes
Relative addressing
![Page 30: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/30.jpg)
CMPE12 Cyrus Bazeghi30
HC11 Address Modes Review
ldab #0 // loads the number 0 into bldaa foo // loads the contents of byte
// variable foo into acc. Aldy #foo // loads the address of foo into Yldab 0, x // loads the byte at address X+0
// into acc. Bldx 0 // loads whatever is at memory
// address 0 into index reg. X // You don't ever want to do this in // CE12
![Page 31: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/31.jpg)
CMPE12 Cyrus Bazeghi31
• HC11 Instructions have variable lengths (not like LC-3)• Careful coding can keep applications small and able to fit in the EPROM
•We don‟t have to worry about this since we‟re usingExpansion Mode, there is extra memory in the microkits.
• The opcode is always 1 byte• An additional 0-3 bytes specify the data to work with
Motorola 68HC11 Instructions
![Page 32: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/32.jpg)
CMPE12 Cyrus Bazeghi32
•Accumulator and Memory Instructions
•Stack and Index Register Instructions
•Condition Code Register Instructions
•Program Control Instructions
Motorola 68HC11 Instruction Set
Four types of instructions available:
![Page 33: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/33.jpg)
CMPE12 Cyrus Bazeghi33
Accumulator and Memory Instructions
Can be broken up into these 6 general types:
1. Loads, stores, and transfers
2. Arithmetic operations
3. Multiply and divide
4. Logical operations
5. Data testing and bit manipulation
6. Shifts and rotates
HC11 Instructions
![Page 34: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/34.jpg)
CMPE12 Cyrus Bazeghi34
HC11 Instructions
Almost all MCU activities involve transferring data from memories orperipherals into the CPU or transferring results from the CPU intomemory or I/O devices.
![Page 35: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/35.jpg)
CMPE12 Cyrus Bazeghi35
HC11 Instructions
This group of instructions supports arithmetic operations on a variety ofoperands; 8- and 16-bit operations are supported directly and can easilybe extended to support multiple-word operands. Twos-complement(signed) and binary (unsigned) operations are supported directly.
![Page 36: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/36.jpg)
CMPE12 Cyrus Bazeghi36
HC11 Instructions
Compare instructions perform a subtract within the CPU toupdate the condition code bits without altering either operand. Althoughtest instructions are provided, they are seldom needed since almost allother operations automatically update the condition code bits.
![Page 37: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/37.jpg)
CMPE12 Cyrus Bazeghi37
HC11 Instructions
One multiply and two divide instructions are provided. The 8-bit by 8-bitmultiply produces a 16-bit result. The integer divide (IDIV) performs a16-bit by 16-bit divide, producing a 16-bit result and a 16-bit remainder.The fractional divide (FDIV) divides a 16-bit numerator by a larger 16-bitdenominator, producing a 16-bit result (a binary weighted fractionbetween 0 and 0.99998) and a 16-bit remainder.
![Page 38: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/38.jpg)
CMPE12 Cyrus Bazeghi38
HC11 Instructions
This group of instructions is used to perform the Boolean logicaloperations AND, inclusive OR, exclusive OR, and one‟s complement.
![Page 39: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/39.jpg)
CMPE12 Cyrus Bazeghi39
HC11 Instructions
This group of instructions is used to operate on operands as small as asingle bit, but these instructions can also operate on any combination ofbits within any 8-bit location in the 64-Kbyte memory space.
![Page 40: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/40.jpg)
CMPE12 Cyrus Bazeghi40
HC11 Instructions
All the shift and rotate functions in the M68HC11 CPU involve the carrybit in the CCR in addition to the 8- or 16-bit operand in the instruction,which permits easy extension to multiple-word operands.
![Page 41: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/41.jpg)
CMPE12 Cyrus Bazeghi41
Stack and Index Register Instructions
HC11 Instructions
![Page 42: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/42.jpg)
CMPE12 Cyrus Bazeghi42
HC11 Instructions
This table summarizes the instructions available for the 16-bit indexregisters (X and Y) and the 16-bit stack pointer.
![Page 43: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/43.jpg)
CMPE12 Cyrus Bazeghi43
HC11 System Stack
• The HC11 has a stack set up for us• Memory is “byte” addressable
Example:
PSHA // pushes accumulator A onto stack
// SP = SP – 1 since a byte size
PSHY // pushes index register Y onto stack
// SP = SP – 2 since a word size
PULA // Pops off a byte from the stack into A
// SP = SP + 1
PULY // Pops off a word from the stack into Y
// SP = SP + 2
![Page 44: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/44.jpg)
CMPE12 Cyrus Bazeghi44
HC11 Instructions
Condition Code Register Instructions
These instructions allow a programmer to manipulate bits of the CCR.
![Page 45: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/45.jpg)
CMPE12 Cyrus Bazeghi45
Program Control Instructions
1. Branches2. Jumps3. Subroutine calls and returns4. Interrupt handling5. Miscellaneous
HC11 Instructions
![Page 46: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/46.jpg)
CMPE12 Cyrus Bazeghi46
These instructions allow the CPU to make decisions based on thecontents of the condition code bits. All decision blocks in a flow chartwould correspond to one of the conditional branch instructions summarized here
HC11 Instructions
![Page 47: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/47.jpg)
CMPE12 Cyrus Bazeghi47
HC11 Instructions
The jump instruction allows control to be passed to any address in the 64-Kbyte memory map.
![Page 48: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/48.jpg)
CMPE12 Cyrus Bazeghi48
HC11 Instructions
These instructions provide an easy way to divide a programming taskinto manageable blocks called subroutines. The CPU automates theprocess of remembering the address in the main program whereprocessing should resume after the subroutine is finished. This addressis automatically pushed onto the stack when the subroutine is called andis pulled off the stack during the RTS instruction that ends thesubroutine
![Page 49: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/49.jpg)
CMPE12 Cyrus Bazeghi49
This group of instructions is related to interrupt operations, we will get to there use later.
HC11 Instructions
![Page 50: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/50.jpg)
CMPE12 Cyrus Bazeghi50
NOP is a do nothing instruction, just wastes an instruction cycle. STOP is used to put the CPU into a low power mode. TEST is a reserved instruction only used at the factory when making the chips.
HC11 Instructions
![Page 51: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/51.jpg)
CMPE12 Cyrus Bazeghi51
“C” Conversions
“C” Addition
result = v0 + v1
// 8-bit variablesldab v0addb v1stab result
“HC11” Assembly// 16-bit variables
ldd v0addd v1std result
![Page 52: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/52.jpg)
CMPE12 Cyrus Bazeghi52
“C” Conversions
“HC11” Assembly
ldab v0ldaa v1abastab v0
“C” Addition
char V0, V1;
v0 = v0 + v1
![Page 53: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/53.jpg)
CMPE12 Cyrus Bazeghi53
“C” Multiplication
int Result // 16-bit char Val0, Val1 // 8-bit
Result = Val0 * Val1
“HC11” Assembly
ldaa Val0ldab Val1mulstd Result
“C” Conversions
![Page 54: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/54.jpg)
CMPE12 Cyrus Bazeghi54
“C” if statement:
if(a > 10) y++;
“HC11” Assembly:
// using Acc A & index Y
ldaa acmpa #10ble endifinysty y
endif:
“C” Conversions
![Page 55: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/55.jpg)
CMPE12 Cyrus Bazeghi55
“C” Conversions
“C” if/else statement:
char a; // 8-bitint y; // 16-bits
if(a > 10) y++;
else y--;
“HC11” Assembly:
cmpa #10bgt ifdeybra endif
if: inyendif:
![Page 56: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/56.jpg)
CMPE12 Cyrus Bazeghi56
“C” Conversions
“C” if/else statement:
char foo; // 8-bitsint qux; // 16-bits
if(foo > 10) qux++;
else qux--;
“HC11” Assembly:
ldaa fooldy quxcmpa #10bgt ifdeybra endif
if: inyendif: sty qux
![Page 57: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/57.jpg)
CMPE12 Cyrus Bazeghi57
“C” Conversions
“C” while statement:
char a, b;
while(a > 20) {a--; b *= 3;}
“HC11” Assembly:
// Using Acc A and Bwhile:
cmpa #20ble endwhiledecapshaldaa #3mulpulabra while
endwhile:
![Page 58: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/58.jpg)
CMPE12 Cyrus Bazeghi58
“C” do/while statement:
int foo, bar, qux;
do {foo -= 3; bar += qux;}
while (foo > 7)
“HC11” Assembly:
do:ldd foosubd #3std foo
ldd baraddd quxstd bar
ldd foocpd #7bgt do
“C” Conversions
![Page 59: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/59.jpg)
CMPE12 Cyrus Bazeghi59
Summing the first 10 elements of a 16-bit integer array, result in index register X:
array: .space 20
ldx #0ldab #0
while: cmpb #18bgt endwhile
ldy #arrayaby
xgdxaddd 0,yxgdx
incbincbbra while
endwhile:
HC11 Example
![Page 60: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/60.jpg)
CMPE12 Cyrus Bazeghi60
HC11 Example
/************************************************************ Program 1.* A simple program to introduce the 68HC11 environment***********************************************************/
#include <v2_18g3.asm> // sets stuff up for you, especially I/O
.sect .data
SIGNON: .asciz “CMPE12C Simulator”PROMPT: .asciz “>”
// (continued…)
![Page 61: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/61.jpg)
CMPE12 Cyrus Bazeghi61
HC11 Example Continued
/************************************************************** Your program starts where indicated by the label “main”. After startup * Code in v2_18g3.asm is done, it jumps to this label and continues running.**************************************************************/
.sect .text
main:ldx #SIGNONjsr OUTSTRING
loop: ldx #PROMPT // address of promptjsr OUTSTRING // write out to serial communications
// interface (to PC)jsr GETCHAR // get a character from SCI, returns in Ajsr OUTCHAR // write A to the SCIjsr OUTCRLF // write CR/LF to SCIjmp loop
![Page 62: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/62.jpg)
CMPE12 Cyrus Bazeghi62
Example recursive routine
Fibonacci on the switches and LEDs
/* Input: A. Returns A‟th Fibonacci term in accumulator A */fib: cmpa #2
bgt fibnot1ldaa #1 // return 1 if n <= 2rts
fibnot1: pshb // caller save protocoldecapsha // save n-1deca // call with n-2jsr fibtab // transfer F(n-2) to bpula // a gets n-1jsr fibaba // add accumulatorspulb // restore Brts
main: ldx #SWITCHESldaa 0,X
jsr fibldx #LEDSstaa 0,xjmp main
![Page 63: Embedded Systems](https://reader033.fdocuments.net/reader033/viewer/2022050809/55cf9472550346f57ba20940/html5/thumbnails/63.jpg)
CMPE12 Cyrus Bazeghi63
Microcontroller/HC11 Summary
•Microcontrollers are great little processors for I/O and data manipulation•The CISC-style programming makes assembly programmingeasier•Variable instruction length can be a problem for
•Word-aligned machines•Super-scalar machines•Pipelines
•The RISC philosophy is to•Use simple instructions and let the compiler optimize•Use loads and stores to support higher-speed registers
•Neither RISC, its CISC predecessors, nor CISCY RISCY hasthe definitive advantage
•Depends on application, architecture, and implementation.