?? asm.s43
字號:
#include "msp430x22x4.h"
;此程序是USCIB0的I2C模式從機程序
;首先按下圖連接好導線,在啟動主機程序前先啟動從機程序
;然后再啟動主機程序,從機程序將每次收到的數據以中斷的方式存入0400開始的ram中
;當主機發滿100的數據時,在最后一位后面加入停止位,從機接收到停止位時,進入相應中斷,
;并在中斷服務中,設置sp,來使主程序退出低功耗
; /|\ /|\
; MSP430x22x4 10k 10k MSP430x22x4
; slave | | master
; ----------------- | | -----------------
; -|XIN P3.1/UCB0SDA|<-|---+->|P3.1/UCB0SDA XIN|-
; 32kHz | | | | | 32kHz
; -|XOUT | | | XOUT|-
; | P3.2/UCB0SCL|<-+----->|P3.2/UCB0SCL |
; | | | |
MEMPTR EQU 0400h ;定義接收數據存放的起始地址
NAME main
PUBLIC main
;-----------------------------------------------------------------------------
; MSP430F22x中斷向量表
;-----------------------------------------------------------------------------
ORG 0FFFEh
DC16 main
ORG 0FFEEh
DC16 i2c_stt_stp
ORG 0FFECh
DC16 i2c_rx_isr
;------------------------------------------------------------------------------
RSEG CODE ;程序開始
;------------------------------------------------------------------------------
main MOV.W #0600H,SP ;設置堆棧指針
stopWDT MOV.W #WDTPW+WDTHOLD,&WDTCTL ;關看門狗
MOV.B &CALBC1_1MHZ,&BCSCTL1 ;設定DCO為1MHZ
MOV.B &CALDCO_1MHZ,&DCOCTL
MOV.W #MEMPTR,R6 ;將MEMPTR值放入R6
BIS.B #BIT0,&P1DIR ;LED使能
BIS.B #BIT1+BIT2,&P3SEL ;p3.1為UCB0SDA,P3.2為UCB0SCL
MOV.B #UCSYNC+UCMODE_3,&UCB0CTL0 ;UCB0為I2C從機模式
MOV.W #88,&UCB0I2COA ;設定本機從機地址位88
BIC.B #UCSWRST,&UCB0CTL1 ;進入I2C工作模式
BIS.B #UCSTPIE+UCSTTIE,&UCB0I2CIE ;開始位和停止位中斷使能
BIS.B #UCB0RXIE,&IE2 ;使能I2C接收中斷
BIS.B #LPM0+GIE,SR ;進入低功耗0
NOP
mainloop
JMP mainloop
;------------------------------------------------------------------------------
i2c_rx_isr;UCB0I2C接收中斷服務程序
;------------------------------------------------------------------------------
MOV.B &UCB0RXBUF,0(R6) ;將接收數據存入R6所指向的地址
INC.W R6
RETI
;------------------------------------------------------------------------------
i2c_stt_stp;數據開始,停止位標志中斷服務
;------------------------------------------------------------------------------
BIT.B #UCSTPIFG,UCB0STAT ;查詢中斷是否來自停止位
JZ next1
BIC.B #LPM0,0(SP) ;如果接收到停止位就退出低功耗
next1 BIC.B #UCSTPIFG+UCSTTIFG,&UCB0STAT ;清中斷標志位
RETI
END main
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -