ch.3 representation and manipulation of information from introduction to embedded systems:...

50
Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Upload: aiyana-lillie

Post on 14-Dec-2015

234 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Ch.3 Representation and Manipulation of Information

From Introduction to Embedded Systems: Interfacing to the

Freescale 9s12 by Valvano, published by CENGAGE

Page 2: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.1 Precision

• The number of distinct or different values (page 57).

• Alternatives—the total number of possibilities—decimal digits, bytes, or binary bits.

• Table 3.1 shows the relationship between bits, bytes and alternatives.

Page 3: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoint

• Checkpoint 3.1 How many bytes of memory would it take to store a 50 bit number?

Page 4: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Precision (cont.)

• Decimal digita are used to specify precision of measurement systems that display results as numerical values.

• Table 3.2 (page 58 of text).

• (1/2) decimal digit –a digit that can be 0 or 1.

• Abbreviations for large numbers (Table 3.3).

Page 5: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoints

• Checkpoint 3.2: How many binary bits is equivalent to 3 and (1/2) decimal digits.

• Checkpoint 3.3: About how many decimal digits is 64 binary bits? You can this without a calculator, just using the “rule of thumb” (see page 58).

• Checkpoint 3.4 A 2 tebibyte storage system can store how many bytes?

Page 6: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.2 Boolean Information

• Two states—logical true and false.

• When interfacing to a light, motor, or a heater, the Boolean could mean on and off.

• Positive logic—False is all zeros; true is any nonzero value.

• Negative logic—absence of a voltage is true and the presence of a voltage is false.

Page 7: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.3 8-bit numbers

• Value of an unsigned number for 8-bits– N = 128*b7 + 64*b6 + 32*b5 + 16*b4 + 8*b3 +

4* b2 + 2*b1 + b0.– Table 3.4 (page 61 of the text)—shows

examples of conversions.

Page 8: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Conversion and Basis Elements

• The basis of a number sysstem is a subset from which linear combinations of the basis elements can be used to construct the entire set.

• Algorithm: – Start with MSB.– Do we need the basis element for the number?– If yes, then the bit is a 1—if no, then it is a 0.– Continue to the next basis element.– See Table 3.5, page 61 for an example.

Page 9: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoints

• Checkpoint 3.6: Convert the binary number %01101010 to unsigned decimal.

• Checkpoint 3.7: Convert the hex number $45 to unsigned decimal.

• Checkpoint 3.8: In this conversion algorithm, how can we tell if a basis element is needed?

• Checkpoint 3.9 Give the representations of the decimal 45 in 8-bit binary and hexadecimal

• Checkpoint 3.10 Give the representations of the decimal 200 in 8-bit binary and hexadecimal

Page 10: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Other Number Schemes for Negative Number Representation

• One’s complement — complement each bit.– 0001 1001 –the one’s complement is 1110 0110—this

is the negative of the number.– Problems: two representations for 0 and no basis

elements.

• Two’s complement — complement each bit then add 1 to the result.– 0001 1001 when negated becomes 1110 0111.– N = -128*b7 + 64*b6 + 32*b5 + 16 * b4 + 8 * b3 +

4*b2 + 2*b1+ b0.

Page 11: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoints

• Checkpoint 3.11 Convert the signed binary number%11101010 to signed decimal.

• Checkpoint 3.12 Are the signed and unsigned decimal representations of the 8-bit number $45 the same or different?

Page 12: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Other Conversion Techniques

• Table 3.7 illustrates conversion of -100 to signed 8-bit binary (page 63).

• Other techniques1. Convert them into unsigned binary, then do

a two’s complement negate.

2. Add 256 to the number, then conert the unsigned result to binary using the unsigned method.

Page 13: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoints

• Checkpoint 3.13: Give the representations of -45 in 8-bit binary and hexadecimal.

• Checkpoint 3.14: Why can’t you represent the number 200 using 8-bit signed binary?

Page 14: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Other schemes

• Sign-Magnitude Representation --if b7 is a 1, then the number is negative.

– Problems:1. No basis function2. Two representations for the number zero.3. Different hardware is needed for addition and

subtraction (unlike two’s complement).

• Binary Coded Decimal (BCD)—easy for humans to read—each decimal digit is represented by a 4-bit binary.

Page 15: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoint

• Checkpoint 3.15: What binary values are used to store the number 25 in 8-bit BCD format?

Page 16: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.4 16-bit Numbers

• Word or double byte.

• Extension of the 8-bit concept.

• See Figure 3.4 (page 64).

• See Table 3.9 (page 65).

• Two’s Complement—Table 3.10.

Page 17: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoints• Checkpoint: 3.16: Convert the 16-bit binary number %0010 0000

0110 1010 to unsigned decimal.• Checkpoint 3.17: Convert the 16-bit hex number $1234 to

unsigned decimal.• Checkpoint 3.18: Convert the unsigned decimal number 1234 to

16-bit hexadecimal.• Checkpoint 3.19: Convert the unsigned decimal number 10000 to

16-bit binary.• Checkpoint 3.20: Convert the 16-bit hex number $1234 to signed

decimal.• Checkpoint 3.21: Convert the 16-bit hex number $ABCD to signed

decimal.• Checkpoint 3.22: Convert the signed decimal number 1234 to 16-bit

hexadecimal.• Checkpoint 3.23: Convert the signed decimal number -100000 to

16-bit binary.

Page 18: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.5 Extended Precision Numbers

• Unsigned numbers with n bits (see page 66).

• Two’s complement n-bit numbers.

• Binary Coded Decimal n-bit numbers.

Page 19: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoint

• Checkpoint 3.24: What hexadecimal values are used to store the number 3456 in 16-bit BCD format?

Page 20: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.6 Logical Operations

• Unary Operations—produces its result given a single input parameter—negate, increment, decrement.

• Logical Not Operation—Figure 3.5.

• Binary Operations—produce a single result given two inputs—AND(&), OR(|), and exclusive OR(^)—Table 3.12, Figure 3.6.

Page 21: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Logical Operations and the 9S12

• Operations are performed in a bit-wise fashion.

• N bit will be set if the result is negative.

• Z bit will be set if the result is zero.

• Logical operations at bottom of page 68 will clear the V bit (signed overflow) and leave the C bit unchanged.

Page 22: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Examples (pages 69-74)• 3.1 Write software to set bit 4 and clear bits 1 and 0 of an 8-bit

variable N. (page 69).• 3.2 Write software that sets a global variable to true if a switch is

pressed.• 3.3 Write software that make PT4 and PT5 outputs and clears both

outputs without affecting the other bits of PTT.• 3.4 Write software that togles the PT 3 output without affecting the

other bits of PTT.• 3.5 Generate two out-of-phase square waves a shown in Figure 3.8

(page 72).• 3.6 The goal is develop a means for the microcontroller to turn on

and turn off an AC-powered appliance. The interface will use a solid-state relay with a control parameters of 2 V and 10 ma. Write necessary subroutines to operate the system.

Page 23: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Digital Storage Elements

• Figure 3.11— (page 74)

• Table 3.14—D flip-flops

Page 24: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.7 Shift Operations

• In assembly language, the shift is a unary operation and is for one bit.– lsr – logical shift right– asr– arithmetic shift right– lsl– logical shift left– asl – arithmetic shift left

• C will contain the carry out.• Figure 3.13 – 3.16 illustrates the operations.• Roll (ror, rol) — operations can be used to

create multiple-byte shift functions (Fig. 3.7).• See page 77 for a list with related registers.

Page 25: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Example 3.7

• Write assembly code to implement M=N>>2, where M and N are 16-bit unsigned variables.

• Solution—– ldd N– lsrd– lsrd– std M

Page 26: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoint

• Checkpoint 3.31: Let N and M be 8-bit signed locations. Write assembly code to implement M = 4*N.

Page 27: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Example 3.8

• Take two 4-bit nibbles and combine them into one 8-bit value.

• Solution—Use the shift operation to move the bits into position, then use the or operation to combine the two parts into one number.—See page 78.

Page 28: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.8 Arithmetic operations: Addition and Subtractions.

• Operations are performed using hardware.

• Overflows occur and have to be checked.

Page 29: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoints

• Checkpoint 3.32: How many bit does it take to store the result of two unsigned 8-bit numbers added together?

• Checkpoint 3.33: How many bits does it take to store the result of two signed 8-bit numbers added together?

• Checkpoint 3.34: How many bits does it take to store the result of two unsigned 8-bit numbers multiplied together?

• Checkpoint 3.35: How many bit does it take to store the result of two signed 8-bit numbers multiplied together?

Page 30: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.8 Arithmetic Operations (cont.)

• Four of the condition code bits stored in the Condition Code Register (CCR) are used in Addition/Subtraction.

• See Table 3.16, page 79.

• The adda and addb instructions work for both signed and unsigned data.

• N, Z, V (signed overflow), and C (unsigned overflow) are set as shown (page 79.

Page 31: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Example 3.9 (page 79)

• Write assembly code to implement M = N+10, where M and N are 8-bit variables.

• Solution:– Perform an 8-bit read to get N into RegA.– 10 is added to Reg A.– Result is stored in M.

• C and V bits are set when overflows occur on unsigned and signed operations.

Page 32: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Arithmetic Operations –16 bit numbers

• The addd instruction can be used to add 16 bit numbers as discussed at the top of page 80.

• N, Z, V, and C are set as needed (see page 80).

Page 33: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Example 3.10

• Write assembly code to implement M = N + 1000, where M and N are 16-bit variables.

• Solution– Need to use 16-bit register (D).– 16 bit read to get N (use ldd N).– Add 1000 (addd #1000).– Store the result in M ( std M).– Check C or V (whichever is appropriate) for possible

overflows.

Page 34: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoint

• Checkpoint 3.36: Wrie assembly code that adds a constant 100 to Register X.

Page 35: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Subtraction and Compare

• The instructions at the bottom of page 80 show that compare instructions subtract a value from memory.

• The other instructions (subtraction and test) all subtract values as shown.

• 16-bit instructions are shown on page 81.• Note that the programmer keeps track of

the values being signed or unsigned, since the computer sets both C and V.

Page 36: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Example 3.11

• Write assembly code to implement M = N-10, where M and N are 8-bit variables.

• Solution (page 81)– ldaa N– suba #10– staa M

Page 37: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Example 3.12

• Write assembly code to implement M = N-1000, where M and N ar 16-bit variables.

• Solution: (page 81)– ldd N– subd #1000– std M

• Object and source code are illustrated on page 82.

Page 38: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Adder/Subtractor Hardware

• Figure 3.18 shows a binary full adder.• Figure 3.19 shows an 8-bit adder using 8 full-adders.• Consider the operation adda #64

– The contents of RegA and constant binary 64 are placed at the inputs of the hardware.

– The result is placed in Reg A.– Condition codes are set.

• Figure 3.20 Shows a number wheel description.• Figure 3.21 Shows how a two’s complement approach to

subtraction can use full-adders.• Figure 3.22 Shows a number wheel for subtraction.• More number wheels—Fig. 3.23, Fig. 3.24.

Page 39: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoints

• Checkpoint 3.37 Assume Register A is initially -100. After executing the instruction adda #64 what is the value in Register A, and the NZVC bits.

• Checkpoint 3.38 Assume Register A is initially -100. After executing the instruction adda #64 what is the value in Register A, and the NZVC bits.

• Checkpoint 3.39 Assume Register A is initially 200. After executing the instruction suba #-64 what is the value in Register A, and the NZVC bits?

• Checkpoint 3.40 Assume Register A is initially 200. After executing the instruction suba #64 what is the value in Register A, and the NZVC bits.

Page 40: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Error Handling

• Usually only have to deal with C or V.

• Promotion involves the increasing of the precision of the input numbers. (Page 88)

• Ceiling and floor —establishing upper and lower bounds for the result of an operation. (Page 90).

Page 41: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.9 Arithmetic Operations: Multiplication and Divide

• As an embedded programmer, it is important to understand the strengths and weaknesses of the computers used.

• Many embedded computers have a limited ability for mathematical operations (page 92).

• If precision is not supported, then a different processor is needed (for speed) or develop software algorithms for extended precision (slower).

• A combination of shifts and additions can be used.

Page 42: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Example 3.13

• Write assembly code to implement unsigned M = 5*N + 25 where M is 16 bits and N is 8 bits.

• Solution:– ldaa N ; 0 to 255– ldab #5– mul ; RegD = 5*N, 0 to 1275– addd #25 ;RegD+5*N+25, 25 to 1300– std M

Page 43: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Example 3.14

• Write assembly code to implement M = 2.3*(N + 5.5), where M is 16 bits and N is 8 bits.

• Solution – (use integer operations)—page 96.– Use the idiv instruction (bottom of page 95)

Page 44: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Example 3.15

• Write assembly code to scale an unsigned 8-bit integer into a number from 0 to 500.

• Solution – (see page 96)

Page 45: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Example 3.16

• Write assembly code to implement M = 12.34*N, where M and N are unsigned 16 bits.

• Solution– Page 97– fdiv instruction is used--(performs a 16-bit

by 16-bit unsigned divide)

Page 46: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.10 Character Information

• ASCII—American Standard Code for Information Interchange.

• Usually 7 bits with 8th bit (MSB) set to 0.• See Table 3.21 (page 98).• ISO/IEC 8859 uses the 8th bit to define additional

characters.• Unicode Standard—handles some ambiguities,

but is more complex.• Figure 3.33 illustrates the concept of “null-

termination for storage of a string of ASCII.

Page 47: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.11 Conversions

• C-examples illustrate the conversion process.

Page 48: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

3.12 Debugging Monitor Using a LED

• Monitors are used in real-time systems as a debugging tool (page 102).

• An LED attached to a port is an example of a “Boolean” monitor.

Page 49: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE

Checkpoints

• Checkpoint 3.45: How is the character 0 represented in ASCII?

• Checkpoint 3.46: Assume Register A contains an ASCII code 0 to 9. Write assembly code that converts the ASCII code into the corresponding decimal number.

Page 50: Ch.3 Representation and Manipulation of Information From Introduction to Embedded Systems: Interfacing to the Freescale 9s12 by Valvano, published by CENGAGE