?? example_slave430interface.s43
字號(hào):
;******************************************************************************
; MSP430F20xx Demo - I2C Slave Transmitter and Receiver
;
; Description: MSP430 I2C Slave communicates with MSP430 I2C Master using
; the USI module.
; The slave device receives 16 bytes of data from the master device and
; transmits it back. LED turns on when start condition is detected. Received
; data can be viewed in flash at location 0x1000.
;
; ACLK = n/a, MCLK = SMCLK = Calibrated 1MHz
;
; ***THIS IS THE SLAVE CODE***
;
; Slave Master
; (example_master430interface.s43)
; MSP430F20x2/3 MSP430F20x2/3
; ----------------- -----------------
; /|\| XIN|- /|\| XIN|-
; | | | | | |
; --|RST XOUT|- --|RST XOUT|-
; | | | |
; LED <-|P1.0 | | |
; | | | P1.0|-> LED
; | SDA/P1.7|------->|P1.7/SDA |
; | SCL/P1.6|<-------|P1.6/SCL |
;
; Note: Internal pull-ups are used in this example for SDA & SCL
;
; P. Thanigai
; Texas Instruments Inc.
; August 2007
; Built with IAR Embedded Workbench Version: 3.41A
;******************************************************************************
#include <msp430x20x2.h>
EXTERN TI_USI_I2C_SlaveInit
RSEG DATA16_N
RxFlashPtr DS 2
TxFlashPtr DS 2
;-------------------------------------------------------------------------------
RSEG CSTACK ; Define stack segment
;-------------------------------------------------------------------------------
RSEG CODE ; Assemble to Flash memory
EVEN
;-------------------------------------------------------------------------------
RESET mov.w #SFE(CSTACK),SP ; Initialize stackpointer
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
SetupDCO mov.b &CALBC1_1MHZ,&BCSCTL1 ; Load DCO calibration constants
mov.b &CALDCO_1MHZ,&DCOCTL
SetupPx bis.b #0x03,&P1DIR ; P1.0 and 1.1 as output
clr.b &P1OUT
EraseFlash mov.w #FWKEY+ERASE,&FCTL1 ; Set erase bit
mov.w #FWKEY+FSSEL_2+FN0,&FCTL2 ; Set flash timing
mov.w #FWKEY,&FCTL3 ; Clear lock bit
mov.w #0,&0x1000 ; Dummy write to start Flash erase
mov.w #FWKEY,&FCTL1
mov.w #FWKEY+LOCK,&FCTL3
mov.w #0x1000,&RxFlashPtr ; Initialize Rx pointer
mov.w #0x1000,&TxFlashPtr ; Initialize Tx pointer
SlaveCall
mov.b #0x48,R12 ; Address of slave
mov.w #StartCallback,R14 ; StartCallback fn. ptr
push.w #TxCallback ; Tx Callback fn. ptr
push.w #RxCallback ; Rx Callback fn. ptr
call #TI_USI_I2C_SlaveInit ; I2C Slave initialize
add #4,SP ; compensate stack pointer
bis.w #LPM4+GIE,SR ; enter LPM, enable interrupts
jmp $
StartCallback
bis.b #0x01,&P1OUT ; start received, LED on
ret
TxCallback
mov.w &TxFlashPtr,R6 ; pass data to be transmitted ...
mov.b @R6,0(R12) ; ... to the library
inc.w &TxFlashPtr ; increment tx pointer
mov.w #0,R12 ; stay in LPM
ret
RxCallback
mov.w #FWKEY+WRT,&FCTL1 ; Set WRT bit
mov.w #FWKEY,&FCTL3 ; Clear lock bit
mov.w &RxFlashPtr,R6 ; Move rxed byte to ...
mov.b R12,0(R6) ; ... flash location
mov.w #FWKEY,&FCTL1
mov.w #FWKEY+LOCK,&FCTL3 ; lock flash
inc.w &RxFlashPtr
mov.w #0,R12 ; stay in LPM
ret
;-------------------------------------------------------------------------------
COMMON INTVEC ; Interrupt Vectors
;-------------------------------------------------------------------------------
ORG RESET_VECTOR ; POR, ext. Reset
DW RESET
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -