MSP430-assembly language part-1-DIGITAL IO

Photo of author

By Jackson Taylor

HERE I AM USING NAKEN430ASM COMPILER AND MSP430G2231 CONTROLLER

To turn on the 2 led (P1.0 & P1.6)

.include "msp430g2x31.inc"
 org 0xf800    ;SETS THE ADDRESS OF program to be stored
    mov.w #(WDTPW|WDTHOLD), &WDTCTL ;DISABLES WATCH DOG TIMER
 mov.b #0x41, &P1DIR ;selects the direction of the  I/O pins
 mov.b #0x41, &P1OUT  output on the corresponding I/O pin   
loop:
 jmp loop            ;runs the program into infinity loop
 org 0xfffe  ;SETS THE ADDRESS OF Reset vector to be stored
 dw 0xf800

To blink led

.include "msp430g2x31.inc"
 org 0xf800                       
 mov.w #(WDTPW|WDTHOLD), &WDTCTL
      CLR P1OUT 
 mov.b #0x41, &P1DIR  
 L1:   MOV.W #0xcd40,R4
DELAY:
 DEC R4
 JNZ DELAY
 xor.b #0x41, &P1OUT  
 JMP L1
 org 0xfffe
 dw 0xf800

Toggle 2 LEDS

.include "msp430g2x31.inc"
 org 0xf800                            
 mov.w #(WDTPW|WDTHOLD), &WDTCTL
 CLR  P1OUT 
 mov.b #0x41, &P1DIR
 mov.b #0x40, &P1OUT                    
L1:   MOV.W #0xCD40,R4
DELAY:
 DEC R4
 JNZ DELAY
 xor.b #0x41, &P1OUT  
 JMP L1
 org 0xfffe
 dw 0xf800

Toggle leds using the function calling

.include "msp430g2x31.inc"
 org 0xf800               
 mov.w #(WDTPW|WDTHOLD), &WDTCTL
 mov.w #0x280, SP
 CLR  P1OUT 
 mov.b #0x41, &P1DIR
 mov.b #0x40, &P1OUT 
L2:   call #L1  
 JMP L2               
L1:   MOV.W #0xCD40,R4
DELAY:
 DEC R4
 JNZ DELAY
 xor.b #0x41, &P1OUT
 ret 
 org 0xfffe
 dw 0xf800

digital input using the P1.3 (pull down resistor required)

.include "msp430g2x31.inc"
 org 0xf800                   
 mov.w #(WDTPW|WDTHOLD), &WDTCTL
 CLR.B P1OUT
 CLR R5  
 mov.b #0x41, &P1DIR 
L1:   MOV.b &P1IN,  r5
 AND.b #0x8,r5
 tst r5
 JZ L1
 mov.b #0x41, &P1OUT 
L3:   jmp L3
 org 0xfffe
 dw 0xf800

Please see more @ http://jimmyjosep.blogspot.in/2013/12/msp430-assembly-language-part-1.html

digital input using the P1.3 (pull down resistor required)

.include "msp430g2x31.inc"
 org 0xf800                   
 mov.w #(WDTPW|WDTHOLD), &WDTCTL
 CLR.B P1OUT
 CLR R5  
 mov.b #0x41, &P1DIR 
L1:   MOV.b &P1IN,  r5
 AND.b #0x8,r5
 tst r5
 JZ L1
 mov.b #0x41, &P1OUT 
L3:   jmp L3
 org 0xfffe
 dw 0xf800

Please see more @ http://jimmyjosep.blogspot.in/2013/12/msp430-assembly-language-part-1.html

See also
BI DIRECTIONAL AND SPEED CONTROL OF AC MOTOR USING ARDUINO