Lecture 11

advertisement
ME4447/6405
ME 4447/6405
Microprocessor Control of Manufacturing Systems
and
Introduction to Mechatronics
Instructor: Professor Charles Ume
Lecture #11
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
Homework Set #1 Solution
1. Write an assembly language program to clear the usable internal RAM in
the
MC9S12C32 [$0800 to $0DFF]
Solution: Clear Locations $0800 - $0DFF.
ORG
$1000
LDX
#$0800
LOOP CLR $00,X
INX
CPX
#$0E00
BNE
LOOP
SWI
END
(NOTE: You should hand-assemble this program.)
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
Homework Set #1 Solution
2. Write a program to add even/odd numbers located in addresses $0000 through $00FE.
Solution: (for adding odd numbers)
ORG
$1000
LDY
#$0000
1000
CD
0000
LDX
#$0000
1003
CE
0000
IND
LDAA
#$FF
1006
86
FF
LDAB
$00,X
1008
E6
00
0000 0011
0000 0001
BITB
#$01
100A
C5
01
0000 0001
BEQ
EVEN
100C
27
02
ABY
100E
19
ED
EVEN INX
1010
08
1st Time
STX
$2000
1011
7E
2000
$2001: 0000 0001
Acc A: 1111 1111
EORA $2001
1014
B8
2001
1111 1110
BNE
IND
1017
26
ED
SWI
1019
3F
END
George W. Woodruff School of Mechanical Engineering, Georgia Tech
OR
DECA 4A
If you use
this, then
IND should
be moved
down to the
next line
ME4447/6405
Homework Set #1 Solution
2. Write a program to add even/odd numbers located in addresses
$0800 through $0900. Solution: (for adding odd numbers)
ORG
LDY
LDX
IND
LDAB
BITB
BEQ
ABY
EVEN INX
CPX
BNE
SWI
END
$1000
#$0000
#$0800
$00,X
#$01
EVEN
1000
1003
1006
1008
100A
100C
100E
#$0901 100F
IND
1012
1014
CD
CE
E6
C5
27
19
08
8E
26
3F
George W. Woodruff School of Mechanical Engineering, Georgia Tech
0000
0800
00
01
02
ED
0901
ED
ME4447/6405
Homework Set #2 Solution
Write an assembly language program to find the largest signed number in a list of numbers
stored in address $0020 thru $0029, and store it in $2000. Repeat for unsigned number.
FIRST
LAST
ANSWR
NUB
EQU
EQU
EQU
ORG
LDX
LDAA
STAA
INX
LDAB
LDAA
CMPA
BLE
$0020
$002A
$2000
$1000
#FIRST
FIRST
ANSWR
#$0A
$00,X
ANSWR
NEXT; (signed)*
OR
BLS
NEXT
George W.
NEXT; (unsigned)**
Goes with DECB. If DECB is removed, then
LDAB must be removed
(A - ANSWR)
*(Branches if 2's complement
number in register A is less than or
equal to the 2's complement
number represented by ANSWR)
**(Branch if lower or
same, i.e, Branch if
register A was lower or
same as ANSWR)
STAA ANSWR
INX
CPX
#LAST OR DECB
BNE
NUB
SWI
Woodruff
School of Mechanical
END
Engineering, Georgia Tech
ME4447/6405
Homework Set #2 Solution Continued
Signed Example:
#$3F (positive)
#$F4 (negative)
Convert Numbers to Decimal:
#$F4 = %11110100
Un-Signed Example:
#$3F (positive)
#$F4 (positive)
Convert Numbers to Decimal:
#$F4 = %11110100
#$F4 = 24410
1's Comp #$0B = %00001011
2's Comp #$0C = %00001100
#$F4 = -1210
#$3F = %00111111
#$3F = 6310
#$3F = %00111111
#$3F = 6310
#$F4 is larger than #$3F since 24410 is larger than
6310
#$3F is larger than #$F4 since 6310 is larger than -1210
George W. Woodruff School of Mechanical Engineering, Georgia Tech
Homework Set #3 Solution
ME4447/6405
1. Write a subroutine to save the first 5 odd (8-bit) numbers pointed to by the
x-register (passed in) onto the stack.
Solution:
SUB1
NEXT
ODD
LDAA
PULY
BRSET
INX
BRA
LDAB
PSHB
INX
DECA
BNE
PSHY
RTS
#$05
$00,X #$01 ODD
NEXT
$00,X
NEXT
Note: For subroutine to execute in main program, a BSR or JSR command
must be used in main program.
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
Homework Set #3 solution
2. Write a program to output a square wave thru port S pin
The output can be observed on the scope, and the
period T of the wave should be measured. More than
one period wave should be generated. The machine
cycle time of the MC9S12C32 should be estimated.
Draw the square wave.
George W. Woodruff School of Mechanical Engineering, Georgia Tech
Homework Solution Cont’d
ME4447/6405
Solution:
ORG $2000
FCB $XX
FCB $04
ORG
LDAA
STAA
LDAB
CYCLE
STAA
EORA
STAA
LDAA
NEXT
BNE
DECB
BEQ
JMP
EXIT
END
$1000
#$04
$024A
#$04
LDAA
$0248
#$04
$2001
$2000
DECA
NEXT
EXIT
CYCLE
SWI
Address
$2001
3
1
3
3
3
1
3/1
1
3/1
3
1000
1002
1005
1007
100A
100D
100F
1012
1015
1016
1018
1019
101B
101E
Opcode
86
7A
C6
B6
7A
88
7A
B6
43
26
53
27
06
3F
Postbyte
Operand
04
024A
04
2001
0248
04
2001
2000
FD
Configures PS2
as output.
Helps us to output two
periods.
Outputs signal from PS2
Switch $2001(toggle)
Delay
03
1007
(Note: BNE and BEQ take 3 machine
cycles to execute if the branch is
taken and one machine cycle if it is
not taken)
George W.
WoodruffCycle
School
of Mechanical Engineering, Georgia Tech
T/2=Machine
Time*[3+3+1+3+3+COUNT*(1)+(COUNT-1)*3+1+1+3]
(Note: Count = #$XX)
ME4447/6405
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ASCII Character Codes
ME4447/6405
ASCII – American Standard Code for Information Interchange
ASCII assigns a hexadecimal ‘code’ to individual characters
Examples:
Character
‘A
‘E
‘e
‘1
BS
ASCII
$41
$45
$65
(Note: Different codes for lower
and upper case)
$31
$08
(Note: BS is Backspace. )
A microcontroller must send these codes to a display terminal in
order for the terminal to display these characters.
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
ASCII Character Codes (continued)
Hex to ASCII Conversion table
from Programming Reference
Guide Page 58
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
ASCII Character Codes
An array of characters is called a string
Example:
character array
‘H ‘e ‘l ‘l ‘o
String
“Hello”
(Note:
Character
‘H
‘e
‘l
‘o
ASCII Representation
$48 $65 $6C $6C $6F
ASCII
$48
$65
$6C
$6F
)
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
Assembly Directive Types
Assembly Control
• ORG, END
Symbol Definition
• EQU
Data Definition/Storage Allocation
• FCC, FCB, FDB, RMB, ZMB, BSZ, FILL
Listing Control
• PAGE, OPT
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
Assembly Control
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
ORG and END
ORG : Store translated machine language instructions in sequence
starting at given address for any mnemonic instructions that follow
END: Stop translating mnemonics instructions until another ORG is
encountered
(Note: These were already discussed in Lecture 7)
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
Symbol Definition
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
EQU
EQU lets you refer to a number or an address as a variable name.
Example:
VALA EQU $10
ORG $1000
LDAA #VALA
LDAB VALA
*LABEL VALA USED TO REFER TO $10
*LOAD HEX NUMBER $10 IN ACCUMULATOR A
*LOAD CONTENT OF MEMORY LOCATION $10
*IN ACC. B
SWI
END
Same As:
VALA
EQU $10
ORG $1000
LDAA #$10
LDAB $10
*LABEL VALA USED TO REFER TO $10
*LOAD HEX NUMBER $10 IN ACCUMULATOR A
*LOAD CONTENT OF MEMORY
*LOCATION $10 IN ACC. B
SWI
George W. Woodruff School of Mechanical Engineering, Georgia Tech
END
ME4447/6405
Data Definition/Storage
Allocation
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
FCC
FCC – Form Constant Character string
• FCC stores ASCII characters into consecutive bytes of memory.
• Any printable ASCII characters can be contained in the string.
• String is specified between two identical delimiters, which can be
any printable ASCII character.
• First non-blank character after the string is used as a delimiter.
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
FCC Cont’d
Result
Example:
ORG $0400
FCC “12345”
Address
Prebyte
Opcode
Operand
$0400
31
$0401
32
$0402
33
$0403
34
$0404
35
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
FCB
FCB – Form Constant Byte
• FCB has one or more operands.
• Value of each operand is truncated to eight bits, and is
stored in single byte of object program.
• Operand may be a numeric constant, character
constant, a symbol or an expression.
• Multiple operands are separated by commas, and are
stored in successive memory
bytes.
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
FCB Cont’d
Example:
VALA EQU $10
ORG $0400
FCB $34,’A, $28AC, $0A ,VALA
Result
Address
Prebyte
Opcode
Operand
$0400
34
$0401
41
$0402
AC
$0403
$0404
0A
George W. Woodruff School of Mechanical Engineering, Georgia Tech
10
ME4447/6405
FDB
FDB – Form Constant Double Byte
• FDB stores a double (two byte) word.
• May have one or more operands separated by
commas.
• Operand may be a numeric constant, a character
constant, a symbol, or an expression.
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
FDB Cont’d
Result
Example:
ORG $0400
FDB $1234,’&,’G
Address
Prebyte
Opcode
Operand
$0400
12
$0401
34
$0402
00
$0403
26
$0404
00
$0405
47
Note: ASCII value for & is $26
ASCII value for G is $47
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
RMB
RMB – Reserve Memory Byte
•RMB saves a place in memory for a number.
Example:
XVAR
ORG $0400
RMB 2
ORG $1000
LDD #$FFAA
STD XVAR
SWI
END
*TWO MEMORY
*LOCATIONS $0400
*and $0401 ARE
*RESERVED FOR XVAR
Result
Address
Prebyte
Opcode
Operand
$0400
FF
$0401
AA
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
Question a student asked:
What happens if you change the previous example to "XVAR RMB 3"
instead of "XVAR RMB 2" ? What happens to the 3rd reserved byte
when a 2 byte number is stored in XVAR?
Answer: Remains unchanged
Modified Program:
XVAR
ORG $0400
RMB 3
ORG $1000
LDD #$FFAA
STD XVAR
SWI
END
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
ZMB, BSZ
ZMB – Zero Memory Byte and BSZ – Block Storage of Zero
• These directives fill a given number of memory locations with zero.
• Causes assembler to allocate a block of memory bytes, and each
memory byte is assigned a value of zero.
• Both directives do the same thing.
• Number of bytes allocated is given in the operand field.
Result
Example:
ORG $0400
ZMB #$02
BSZ #$02
Address
$00
$01
$02
$03
Prebyte
Opcode
Operand
00
00
00
00
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
FILL
Fill given number of memory locations with any
number. (Note: Fill uses one byte. If two bytes are
specified, then it will truncate it and use LS Byte.)
Example:
Result
ORG $0400
FILL #$FF, #$02
Address
Prebyte
Opcode
Operand
$00
FF
$01
FF
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
Question a student asked:
What happens when the previous example is changed to "FILL #$9ABC,
#$02" instead of "FILL #$FF,#$02"? What happens if you fill memory
with a 2 byte number?
Answer: FILL will just use the LS Byte
Modified Example:
ORG $0400
FILL #$9ABC,#$02
END
(Note:
There
no ”go 1000”
screen since
these are
just assembly
George
W.isWoodruff
Schoolon
ofthe
Mechanical
Engineering,
Georgia
Tech
directives and not a program)
ME4447/6405
Listing Control
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
PAGE
PAGE
• The PAGE directive causes a page break in
the list file.
• If no source listing is being produced, the
PAGE directive will have no effect.
• The directive is not printed on the source
listing.
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
OPT
OPT
• Allows for various options in assembly of a program, including
generating a listing and counting instruction cycles.
Options:
nol-no output listing (default)
l-do an output listing
noc-no cycle number count (default)
c-turn on cycle count using zero initial value
contc-turn cycle count on, begin with last value
cre-create a cross reference table (default anyway) RMB
s-create a symbol table (default anyway) EQU
Example:
OPT l – Print source listing from this point
George W. Woodruff School of Mechanical Engineering, Georgia Tech
Homework 3 Solution
ME4447/6405
Write a subroutine to save the first 5 odd (8-bit) numbers pointed to by the
x-register (passed in) onto the stack.
Solution:
SUB1
NEXT
ODD
LDAA
PULY
BRSET
INX
BRA
LDAB
PSHB
INX
DECA
BNE
PSHY
RTS
#$05
$00,X #$01 ODD
NEXT
$00,X
NEXT
Note: For subroutine to execute in main program, a BSR or JSR command
must be used in main program.
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
Homework 4 solution
Write a program to output a square wave thru port S pin 2. The output
can be observed on the scope, and the period T of the wave should
be measured. More than one period wave should be generated. The
machine cycle time of the MC9S12C32 should be estimated. Draw
the square wave.
George W. Woodruff School of Mechanical Engineering, Georgia Tech
ME4447/6405
Homework 4 Solution Cont’d
Solution:
ORG $2000
FCB $XX
FCB $04
ORG
LDAA
STAA
LDAB
CYCLE
STAA
EORA
STAA
LDAA
NEXT
BNE
DECB
BEQ
JMP
EXIT
END
$1000
#$04
$024A
#$04
LDAA
$0248
#$04
$2001
$2000
DECA
NEXT
EXIT
CYCLE
SWI
Address
$2001
3
1
3
3
3
1
3/1
1
3/1
3
1000
1002
1005
1007
100A
100D
100F
1012
1015
1016
1018
1019
101B
101E
Opcode
86
7A
C6
B6
7A
88
7A
B6
43
26
53
27
06
3F
Postbyte
Operand
04
024A
04
2001
0248
04
2001
2000
FD
Configures PS2
as output.
Helps us to output two
periods.
Outputs signal from PS2
Switch $2001(toggle)
Delay
03
1007
(Note: BNE and BEQ take 3 machine
cycles to execute if the branch is
taken and one machine cycle if it is
not taken)
George W.
WoodruffCycle
School
of Mechanical Engineering, Georgia Tech
T/2=Machine
Time*[3+3+1+3+3+COUNT*(1)+(COUNT-1)*3+1+1+3]
(Note: Count = #$XX)
ME4447/6405
QUESTIONS???
George W. Woodruff School of Mechanical Engineering, Georgia Tech
Download