In this lab you will be introduced to assembly programming. The specific assembly language instruction set of the MSP will be explained. Setting up and executing assembly projects in Crossworks will also be explained. Finally you will implement the blinking lights program from the previous lab in assembly.
Read the following modules before you begin lab exercises:
Formulate instructions to do the following things:
- Set bit 3 to 1 at the memory address 0xd640 while leave bits 0-2 and 4-16 unaffected.
- Jump to the instruction labeled POINT if the carry bit is set.
- Shift register R6 right one place while preserving the sign.
Examine this loop:
... more instructions...
Mov.w &I, R4
Cmp.w #0x0000, R4
JZ After_loop
Start_loop:
Dec.w #0x0001, R4
JZ After_loop
BR #Start_loop
After_loop:
...more instructions...
- How many times will this loop execute?
- Why do we use the BR instruction with a #Start_loop, but with the JZ we use a plain After_loop?
- What does the first JZ instruction do? If we did not have this initial Cmp and JZ, what (possibly) inadvertent effect might occur?
Re-write the blinking light program from Lab 2, now using assembly code. The program should do the following:
- When the program starts all three LED’s should light up for about a second then turn off.
- Next, the green LED should blink for about 1/2 second on, 1/2 second off while the other two LED’s are off.
- Pushing Button 1 should cause the green LED to stop blinking and cause the red LED to start the blinking pattern.
- Pushing the button again should continue the pattern with the yellow LED, and pushing it more times should repeat the green, red, yellow pattern. Note that the current LED that's blinking should stop as soon as the button is pressed and the next LED should begin immediately.
"Basic introduction to microcontroller-based embedded systems development. Includes structured laboratory exercises in the following areas: assembly programming, C language programming, peripheral […]"