MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16
1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6
4 12 SR SP SR CPU
SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU
EXIT
SP PC SP SP 2 RAM
RAM JATG
MSP430 MOV #1234H R11 MSP430 7 7 7
MSP430 1 MOV #1234H R11 MOV R9 R11 MOV R9 &220H 2 MOV[.B] X(Rn) Y(Rn) MOV 2(R8) R11 MOV R9 4(R8) ADD @R9 4(R10) MOV 2(R9) 4(R8)
MSP430 3 MOV EDE TONI MOV.B R8 LOOP0 MOV TAB R8 ADD TAB &410H
MSP430 4 : MOV &EDE &TONI 1 MOV #1234H &LOOP0 MOV &TAB R8 ADD TAB &410H MOV.B &220H, R5 2 Reset AAA MOV #1234H R6 MOV R5 R8 SUB &AAA &Reset
MSP430 5 @ MOV @R10 2(R11) MOV.B @R8 &220H MOV @R5 4 R8 ADD @R5 &AAA MOV @R5 R8
MSP430 MOV @R10+ 2(R11) R10 (R10+2 R10) 1 2 SUB.B @R8+ &220H MOV @R5+ 4 R8 MOV @R5 + &AAA ADD @R5+ R8
MSP430 MOV #1234H 2(R11) MOV.B #12H &220H MOV #1234 4 R8 ADD #2345H &AAA MOV #2345H R8
1. MOV CLR POP PUSH SWPB MOV #1234 R5 MOV #EDE, R10 ; EDE CLR R6 CLR.B &EDE ; MOV #8912H, R10 MOV #8912H, 210H SWPB R7 PUSH R9 POP R13
ADC 2. ADD ADDC DADC DADD INC INCD SUB SUBC DEC DECD SBC CMP TST ADD @R13, 0(R12) ADC 2(R12) : SR,.
3. AND BIC BIS BIT XOR RLA RRA RLC RRC INV CLRC CLRN CLRZ DINT EINT SETC SETZ SETN
BR 64K CALL JC/JHS JZ/JEQ JGE JL JMP JLO JN JNC JNE/JNZ RET RETI NOP
: BR EXEC ; EXEC BR @R5 ; R5 CALL R5 CALL EXEC CMP #15,R5 JHS LABEL BIT #10H,&P0IN JC PROGA
[ ] [:] ( ) [ 1] [ 2] [
1 2 3 4 5 6 7 8 :
1. NAME ADD1 ADD1 ENDMOD
2. : EQU = DEFINE sfrb sfrw DEFC #define READ_ONLY DEFC HHH EQU 200H HHH 200H
3. ASEG STACK COMMON ORG ALIGN EVEN ORG 03000H 3000H
4. DL 32 DW 16 DB 8 DF 32 DS N 10 table DS 0xA
1 2 3 4 5
RAM 1 2 3 4
CPU MOV WHILE DO WHILE
MOV #60000 R5 LOOP DEC R5 JNZ LOOP 1 60000*3
1 C 8 16 32 64 sfrb sfrw int long ; 2 C430 char unsigned int unsigned long float 430 430
1 2 3 1 2 3 4 4 MSP430 C math.h string.h void *memmove(void *s1,const void *s2,size_t n) s1: s2: n 5
1.s43 C MSP430 IAR 2 C.c
3.h
#include <msp430x44x.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT IE2 = BTIE; // Enable BT interrupt BTCTL = BTSSEL+BTIP2+BTIP1+BTIP0; P5DIR = 0x02; // Set P5.1 to output direction _EINT(); // Enable interrupts for (;;) { _BIS_SR(CPUOFF); // Enter LPM0 _NOP(); // Required only for C-spy } } interrupt[basictimer_vector] void basic_timer(void) { P5OUT ^= 0x02; // Toggle P5.1 using exclusive-or }
C unsigned int varword; char varbyte; PUBLIC EXTERN varword EXTERN varbyte MOV.B #00011H varbyte MOV #01111H varword
C