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

📄 asm.s43

📁 MSP430F22X单片机开发套件源代码
💻 S43
字号:
#include "msp430x22x4.h"
;此程序是USCIB0的I2C模式主机程序
;首先按下图连接好导线,在启动主机程序前先启动从机程序
;然后再启动主机程序,主机连续发送100个数据,当发完后在最后一个字节后加入停止位
;                                 /|\  /|\
;                MSP430x22x4     10k  10k    MSP430x22x4
;                    slave         |    |        master
;              -----------------   |    |  -----------------
;            -|XIN  P3.1/UCB0SDA|<-|---+->|P3.1/UCB0SDA  XIN|-
;       32kHz |                 |  |      |                 | 32kHz
;            -|XOUT             |  |      |             XOUT|-
;             |     P3.2/UCB0SCL|<-+----->|P3.2/UCB0SCL     |
;             |                 |         |                 |
        NAME    main
        
        PUBLIC  main
;----------------------------------------------------------------------------- 
;       MSP430F22x中断向量表        
;-----------------------------------------------------------------------------      
        ORG     0FFFEh
        DC16    main
        ORG     0FFECh
        DC16    i2c_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.B   #00h,R8                       ;R8中存放所要发送的数据           
        BIS.B   #BIT0,&P1DIR                  ;LED能使          
        BIS.B   #BIT1+BIT2,&P3SEL             ;p3.1为UCB0SDA,P3.2为UCB0SCL        
        BIS.B   #UCSSEL1,&UCB0CTL1            ;时钟源选择smclk
        MOV.B   #00h,&UCB0BR1                 ;SMCLK/11
        MOV.B   #11,&UCB0BR0        
        BIS.B   #UCMST+UCSYNC+UCMODE1+UCMODE0,&UCB0CTL0;选择I2C主机模式 
        MOV.W   #88,&UCB0I2CSA                ;设定从机地址为88
        BIC.B   #UCSWRST,&UCB0CTL1            ;进入I2C工作模式
        BIS.B   #UCB0TXIE,&IE2                ;使能UCB0TX发送中断
        BIS.B   #UCTR+UCTXSTT,&UCB0CTL1       ;发送起始位,并将主机设为发送模式
        BIS.B   #LPM0+GIE,SR                  ;进入低功耗0        
loop    BIT.B   #UCTXSTP,UCB0CTL1             ;等待停止位发送完毕
        JZ      loop
mainloop
        JMP     mainloop
;------------------------------------------------------------------------------ 
i2c_tx_isr
;------------------------------------------------------------------------------
        CMP.B   #100,R8                      ;100个数据是否发送完
        JNZ     next1
        NOP                                  ;用于调试,当程序执行到此处时,来停止从机程序来查看数据接收情况
        BIS.B   #UCTXSTP,&UCB0CTL1           ;发送stop位   
        BIC.B   #UCB0TXIFG,&IFG2             ;清发送中断标志位
        BIC.B   #LPM0,0(SP)                  ;退出低功耗0
        JMP     end_i2c_tx_isr               
next1   MOV.B   R8,&UCB0TXBUF                ;将待发数据放入发送缓存寄存器中
        INC.B   R8                           ;发送数据增1
end_i2c_tx_isr
        RETI                                 ;中断返回
        END     main

⌨️ 快捷键说明

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