📄 asm.s43
字号:
#include "msp430x22x4.h"
;此程序是USCIA0的SPI模式查询方式的主机程序
;首先按下图连接好导线,在启动主机程序前先启动从机程序
;然后再启动主机程序,主机程序以查询的方式将每次收到的数据存入0400开始的ram中
;在将收中断的NOP指令处设置断点,当程序运行到此处时观察0400-0500的ram数据
; MSP430F2274 MSP430F2274
; master slavor
; ----------------- -----------------
; /|\| XIN|- -|XIN |/|\
; | | | | | |
; --|RST XOUT|- -|XOUT RST|--
; | | | |
; | P1.0|-->LED LED<--| |
; | p3.0UCA0CLK |------------------->|P3.0 |
; | p3.4UCA0SIMO|------------------->|p3.4UCA0SIMO |
; | P3.5UCA0SOMI|<-------------------|P3.5UCA0SOMI |
; | DVSS|--------------------|DVSS |
MEMPTR EQU 0400h ;定义接收数据存放的起始地址
NAME main
PUBLIC main
;-----------------------------------------------------------------------------
; MSP430F22x中断向量表
;-----------------------------------------------------------------------------
ORG 0FFFEh
DC16 main
;------------------------------------------------------------------------------
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
MOV.B #01h,R8 ;R8中存放所要发送的数据
wait_osc
BIC.B #OFIFG,&IFG1 ;等待晶振稳定
BIT.B #OFIFG,&IFG1
JNZ wait_osc
BIS.B #BIT0,&P1DIR ;LED引脚为输出方向
BIS.B #BIT4+BIT5+BIT0,&P3SEL ;p3.4为TX,P3.5为RX,P3.0为UCA0CLK
BIS.B #BIT4,&P3DIR ;P3.4为输出方向
BIS.B #UCSSEL0,&UCA0CTL1 ;时钟源选择32768晶振
BIS.B #UCMST+UCSYNC+UCCKPL+UCMSB,&UCA0CTL0;spi主机模式,spi通讯,时钟极性选为高电平无效,选择最高有效位先发
MOV.B #00h,&UCA0BR1 ;32768/1200=27.3
MOV.B #27,&UCA0BR0
MOV.B #00h,&UCA0MCTL
BIC.B #UCSWRST,&UCA0CTL1 ;进入SPI工作模式
MOV.B R8,&UCA0TXBUF ;主机首先发一帧
mainloop
BIT.B #UCA0RXIFG,&IFG2
JZ mainloop
MOV.B &UCA0RXBUF,0(R6) ;将收到的数据放入R6所指向的ram地址
INC.W R6 ;ram地址增1
CMP.W #MEMPTR+256,R6 ;判断是否已经存满256个字节
JNZ wait_txifg
MOV.W #MEMPTR,R6 ;如果存满将ram指针指向开始地址
NOP
wait_txifg
INC.B R8
BIT.B #UCA0TXIFG,&IFG2
JZ wait_txifg
MOV.B R8,&UCA0TXBUF
JMP mainloop
NOP
END main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -