📄 lab-08-4619.s43
字号:
;*******************************************************************************
; MSP430xG461x Demo - USCI_B0 I2C Master TX multiple bytes to MSP430 Slave
;
; Description: This demo connects two MSP430's via the I2C bus. The master
; transmits to the slave. This is the master code. It continuously
; transmits an array of data and demonstrates how to implement an I2C
; master transmitter sending multiple bytes using the USCI_B0 TX interrupt.
; ACLK = 32kHz, MCLK = SMCLK = TACLK = BRCLK = 1MHz
; ***THIS IS THE MASTER CODE***
;
; MSP430F2013 MSP430xG461x
; slave master
; ----------------- -----------------
; -|XIN SDA/P1.7|<------->|P3.1/UCB0SDA XIN|-
; 32kHz | | | | 32kHz
; -|XOUT | | XOUT|-
; | SCL/P1.6|<------->|P3.2/UCB0SCL |
; | | | |
;
; Note: internal pull-ups are used in this example for SDA & SCL
;
; A. Dannenberg/ K. Venkat
; Texas Instruments Inc.
; Dec 2006
; Built with IAR Embedded Workbench Version: 3.41A
;*******************************************************************************
#include "msp430xG46x.h"
ORG 250
RxBuffer DW 1
;-------------------------------------------------------------------------------
RSEG CSTACK ; 定义堆栈
;-------------------------------------------------------------------------------
RSEG CODE ;
;-------------------------------------------------------------------------------
RESET mov.w #SFE(CSTACK),SP ; 堆栈起始地址
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; 关看门狗
bis.b #0x1,&IE1
SetupP1 bis.b #0x1,&P1IES
bis.b #0x1,&P1IE
SetupP3 bis.b #06h,&P3SEL ; 选择 I2C 功能
SetupUCB0 bis.b #UCSWRST,&UCB0CTL1 ; 使能 SW
mov.b #UCMST+UCMODE_3+UCSYNC,&UCB0CTL0
; I2C 主机,同步模式
mov.b #UCSSEL_2+UCSWRST,&UCB0CTL1
mov.b #11,&UCB0BR0 ; fSCL = SMCLK/11 = 95.3kHz
mov.b #00,&UCB0BR1
mov.w #048h,&UCB0I2CSA ; 从机地址 048h
bic.b #UCSWRST,&UCB0CTL1 ; 清 SW
bis.b #UCB0TXIE,&IE2 ; 使能接收中断
EINT
Main BIS.W #0X18,SR ; 进入低功耗 LPM0,中断使能
Main_1 nop
nop
jmp Main ; 循环
;-------------------------------------------------------------------------------
PORT1_ISR;
;-------------------------------------------------------------------------------
bic.b #0x1,&P1IE
mov.w #0x5a1d,&WDTCTL
clr.b &P1IFG
bis.b #0X2,&UCB0CTL1
test bit.b #0x2,&UCB0CTL1
jc test
bis.b #0x4,&UCB0CTL1
reti
;-------------------------------------------------------------------------------
USCIAB0TX_ISR;
;-------------------------------------------------------------------------------
mov.b &UCB0RXBUF,& RxBuffer ; 发送缓存
bic.w #0x10,0x0(sp) ; 下一个数据
reti
;-------------------------------------------------------------------------------
WDT_ISR;
;-------------------------------------------------------------------------------
clr.b &P1IFG
bis.b #0X1,&IE1
mov.w #0X5A80,&WDTCTL
reti
;-------------------------------------------------------------------------------
COMMON INTVEC ; 中断向量
;-------------------------------------------------------------------------------
ORG USCIAB0TX_VECTOR ; USCI_B0 中断向量
DW USCIAB0TX_ISR
ORG PORT1_VECTOR ; P1口中断向量
DW PORT1_ISR
ORG WDT_VECTOR ; 看门狗中断向量
DW WDT_ISR
ORG RESET_VECTOR ; 复位向量
DW RESET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -