MSP430-assembly language part-1.1-Interrupt & Pull up/down

Photo of author

By Jackson Taylor

Digital input with INTERNAL PULL DOWN in “P1.4”

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

External interrupt at port 1

Basic Steps

  1. Enable global interrupt(eint)
  2. Enable external interrupt (on p1.4–P1IE)
  3. Select interrupt edge (IP1IES)
  4. Clear P1IFG flag starting the program
  5. Clear P1IFG flag in your interrupt service routine
.include "msp430g2x31.inc"
org 0xf800
mov.w #(WDTPW|WDTHOLD), &WDTCTL
mov.w #0x280, SP
mov.b #0x10, P1REN
CLR.B P1OUT
mov.b   #001h,&P1DIR
bis.b   #010h,&P1IE    ;enable interrupt on p1.4
bis.b   #010h,&P1IES   ;select -ve edge
bic.b   #010h,&P1IFG   ;clear interuupt flag
eint    ;enables interrup
gg:jmp gg
P1ISR:    mov.b   #001h,&P1OUT
         bic.b   #010h,&P1IFG
         reti
         ORG     0FFE4h
         DW      P1ISR
         ORG     0FFFEh
         DW      0xf800

LONG DELAY LOOP

.INCLUDE "msp430x2xx.inc"
ORG 0xf800
MOV #(WDTPW|WDTHOLD), &WDTCTL
MOV #0x280,SP
MOV.B #0x41, &P1DIR
MOV.B #0x41, &P1OUT
LOOP1:
 MOV #65000,R4
 MOV #65000,R5
 CALL #LOOP2
 JMP LOOP1
LOOP2:
 DEC R4
 TST R4
 JNZ LOOP2
LOOP3:
 DEC R5 
 TST R5
 JNZ LOOP3
 XOR.B #0x41,&P1OUT
 RET
 ORG 0xfffe DW 0xF800

LED BLINKING USING BIT INSTRUCTION

.INCLUDE "msp430x2xx.inc"
ORG 0xf800
MOV #(WDTPW|WDTHOLD), &WDTCTL
MOV #0x280,SP
MOV.B #0x41, &P1DIR
MOV.B #0, &P1OUT
LOOP2:
 MOV #65000,R4
 CALL #LOOP1
 JMP LOOP2
LOOP1:
 DEC R4
 BIT #0xFFFE,R4   ;SIMPLY "AND"S BETWEEN SRC & DST.
                 ;RESULT WILL NOT AFFECT SRC & DST.
                 ;USED FOR BIT TESTING
 JNZ LOOP1
 XOR.B #0x41,&P1OUT
 RET
 ORG 0xfffe
 DW 0xF800

Next Timer

http://jimmyjosep.blogspot.in/2013/12/msp430-assembly-language-part-2.html

for More examples visit http://www.mikekohn.net/micro/naken_asm.php

External interrupt at port 1

Basic Steps

  1. Enable global interrupt(eint)
  2. Enable external interrupt (on p1.4–P1IE)
  3. Select interrupt edge (IP1IES)
  4. Clear P1IFG flag starting the program
  5. Clear P1IFG flag in your interrupt service routine
.include "msp430g2x31.inc"
org 0xf800
mov.w #(WDTPW|WDTHOLD), &WDTCTL
mov.w #0x280, SP
mov.b #0x10, P1REN
CLR.B P1OUT
mov.b   #001h,&P1DIR
bis.b   #010h,&P1IE    ;enable interrupt on p1.4
bis.b   #010h,&P1IES   ;select -ve edge
bic.b   #010h,&P1IFG   ;clear interuupt flag
eint    ;enables interrup
gg:jmp gg
P1ISR:    mov.b   #001h,&P1OUT
         bic.b   #010h,&P1IFG
         reti
         ORG     0FFE4h
         DW      P1ISR
         ORG     0FFFEh
         DW      0xf800

LONG DELAY LOOP

.INCLUDE "msp430x2xx.inc"
ORG 0xf800
MOV #(WDTPW|WDTHOLD), &WDTCTL
MOV #0x280,SP
MOV.B #0x41, &P1DIR
MOV.B #0x41, &P1OUT
LOOP1:
 MOV #65000,R4
 MOV #65000,R5
 CALL #LOOP2
 JMP LOOP1
LOOP2:
 DEC R4
 TST R4
 JNZ LOOP2
LOOP3:
 DEC R5 
 TST R5
 JNZ LOOP3
 XOR.B #0x41,&P1OUT
 RET
 ORG 0xfffe DW 0xF800

LED BLINKING USING BIT INSTRUCTION

.INCLUDE "msp430x2xx.inc"
ORG 0xf800
MOV #(WDTPW|WDTHOLD), &WDTCTL
MOV #0x280,SP
MOV.B #0x41, &P1DIR
MOV.B #0, &P1OUT
LOOP2:
 MOV #65000,R4
 CALL #LOOP1
 JMP LOOP2
LOOP1:
 DEC R4
 BIT #0xFFFE,R4   ;SIMPLY "AND"S BETWEEN SRC & DST.
                 ;RESULT WILL NOT AFFECT SRC & DST.
                 ;USED FOR BIT TESTING
 JNZ LOOP1
 XOR.B #0x41,&P1OUT
 RET
 ORG 0xfffe
 DW 0xF800

Next Timer

http://jimmyjosep.blogspot.in/2013/12/msp430-assembly-language-part-2.html

See also
MSP430G2 LAUNCH PAD Examples

for More examples visit http://www.mikekohn.net/micro/naken_asm.php

http://jimmyjosep.blogspot.in/2013/12/msp430-assembly-language-part-2.html

for More examples visit http://www.mikekohn.net/micro/naken_asm.php

http://jimmyjosep.blogspot.in/2013/12/msp430-assembly-language-part-2.html

for More examples visit http://www.mikekohn.net/micro/naken_asm.php

http://jimmyjosep.blogspot.in/2013/12/msp430-assembly-language-part-2.html

for More examples visit http://www.mikekohn.net/micro/naken_asm.php

http://jimmyjosep.blogspot.in/2013/12/msp430-assembly-language-part-2.html

for More examples visit http://www.mikekohn.net/micro/naken_asm.php

http://jimmyjosep.blogspot.in/2013/12/msp430-assembly-language-part-2.html

for More examples visit http://www.mikekohn.net/micro/naken_asm.php