⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asm.s43

📁 MSP430F22X单片机开发套件源代码
💻 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 + -