<< Chapter < Page | Chapter >> Page > |
The assembly program begins execution at the reset interrupt. The reset interrupt is the first thing that occurs when power is given to the processor. By default in the Workbench files, the reset interrupt is loaded to send the execution of the program to the start of the written code. Until a branch is reached, the processor will execute each instruction in turn. If the program does not loop back to an earlier point to keep going, eventually the execution will reach the end of the valid instructions in memory and attempt to execute the "instructions" in the following memory addresses (which are invalid and possibly gibberish). You should never let this happen.
The control of a programs execution is called control flow , and it is accomplished through branching, jumping, function calls, and interrupts. Interrupts are the subject of future labs. Branching and jumping refer to changing the next instruction from the next one sequentially to an instruction elsewhere in the program. By branching to an instruction above the branch itself you can cause the program to repeat itself. This is a basic loop in assembly. Branches can also be conditional. In the MSP architecture conditional branches are generally dependent on the status register (SR) bits to decide whether to execute the next instruction after the branch or the instruction the branch specifies. Many arithmetic and logical operations can set the relevant bits in the status register; check the ez430's User’s Guide for which ones you will need. A full description of each of the Assembly instructions for the ez430 can be found in Section 3.4 .
To store values to perform operations, you must use the ez430's registers to store values. The ez430 has 16 CPU registers. Of these 16, the upper 12 are general purpose 16 bit registers (R4-R15). The lower four are:
Once you understand the basics of assembly you should be able to write some simple routines.
Once you create a new Assembly project in Workbench, replace the default code with the following. You'll see that the Watchdog timer has already been deactivated. Put your assembly code in the place indicated. Also, notice the difference in location of instructions and
labels . Labels, which mark the begining of certain blocks of code, are left aligned such as the "RESET" seen below. Instructions, however, are tabbed over. Remember to follow this convention because the compiler will assume anything left aligned is a label.
#include "msp430x20x1.h"
;-------------------------------------------------------------------------------
ORG 0xF800 ; Begining PsuedoOP
;-------------------------------------------------------------------------------
RESET mov.w #0x280,SP ; Set stackpointer
mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer
;; **YOUR CODE GOES HERE**
;-------------------------------------------------------------------------------
; Interrupt Vectors
;-------------------------------------------------------------------------------
ORG 0xFFFE ; MSP430 RESET Vector
DW RESET ;
END
Notification Switch
Would you like to follow the 'Introduction to the texas instruments ez430' conversation and receive update notifications?