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

📄 asm.s43

📁 MSP430F22X单片机开发套件源代码
💻 S43
字号:
#include "msp430x22x4.h"           
;                 MSP430F2274                       MSP430F2274 
;                       (1)                           (2)  
;             -----------------                     -----------------
;         /|\|              XIN|-                  -|XIN             |/|\
;          | |                 |                    |                | |
;          --|RST          XOUT|-                  -|XOUT         RST|--
;            |                 |                    |                |
;            |             P1.0|-->LED        LED<--|                |   
;            |      p3.4UCA0TXD|------------------->|p3.5UCA0RXD     |
;            |      p3.5UCA0RXD|------------------->|p3.4UCA0TXD     |
;            |             DVSS|--------------------|DVSS            | 
MEMPTR  EQU     0400h                         ;定义接收数据存放的起始地址
        NAME    main
        
        PUBLIC  main

;----------------------------------------------------------------------------- 
;       MSP430F22x中断向量表        
;-----------------------------------------------------------------------------      
        ORG     0FFFEh
        DC16    main
        ORG     0FFEEh
        DC16    rx_isr
        ORG     0FFECh
        DC16    tx_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                    ;所到的数据放入RAM的起始地址放到R6
        MOV.B   #0,R8                         ;R8中存放所要发送的数据
        
wait    BIC.B   #OFIFG,&IFG1                  ;等待晶振稳定           
        BIT.B   #OFIFG,&IFG1
        JNZ     wait
        
        BIS.B   #BIT0,&P1DIR                  ;点亮LED
        BIS.B   #BIT0,&P1OUT
        
        BIS.B   #BIT4+BIT5,&P3SEL             ;p3.4为TX,P3.5为RX
        BIS.B   #BIT4,&P3DIR                  ;P3.4为输出方向

        ;BIS.B   #UCLISTEN,&UCA0STAT          ;调试时用于自发自收
        BIS.B   #UCSSEL0,&UCA0CTL1            ;时钟源选择32768晶振
        MOV.B   #00H,&UCA0BR1                 ;设置波特率32768/1200=27.3
        MOV.B   #27,&UCA0BR0             
        BIS.B   #UCBRS1,&UCA0MCTL             ;UCBRSx=INT(0.3*8)=2
        BIC.B   #UCSWRST,&UCA0CTL1            ;退出USCI设置
        BIS.B   #UCA0RXIE+UCA0TXIE,&IE2       ;使能收发中断
        EINT                                  ;使能总中断
mainloop
        BIS.B   #LPM3,SR                      ;进入低功耗3
        NOP   

;------------------------------------------------------------------------------
rx_isr;    
;------------------------------------------------------------------------------
        XOR.B   #BIT0,P1OUT                   ;如果作为接收方,每收一帧LED翻转一次
        MOV.B   &UCA0RXBUF,0(R6)              ;将收到的数据放入R6所指向的RAM地址
        CMP.W   #MEMPTR+0FFh,R6               ;比较是否已经收到了256个数据
        JNZ     loop3                         ;如果接收到的数据不到256个,继续
        MOV.W   #MEMPTR,R6                    ;如果到了256个,R6再次指向初始值
loop3   INC.W   R6                            ;R6指向下一个地址
        RETI                                  ;中断返回
        
;------------------------------------------------------------------------------
tx_isr;    
;------------------------------------------------------------------------------        
        XOR.B   #BIT0,P1OUT                   ;如果作为接收方,每收一帧LED翻转一次
        MOV.W   #15000,R5                     ;在发送前一段延时,确保对方已经处理完上一帧数据
loop1   DEC.W   R5                            
        JNZ     loop1      
        MOV.B   R8,&UCA0TXBUF                 ;将待发数据放入发送缓存寄存器中
        INC.B   R8                            ;发送数据加1 
        RETI              	                                                   
        END     main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -