那么、基本上这里是布局。 我有一个主 HC-05蓝牙模块 通过一个操纵杆连接到一个 MSP、另一个具有从设备。
这是主设备 HC-05 MSP 的代码
第一个 MSP 代码
#include "msp430.h";#define controlled include 文件
名称 main;模块名称
公共主;使主标签可见
;在本模块之外
org 0FFFEh
DC16 init;将复位矢量设置为'init'标签
RSEG CSTACK;段的预先声明
RSEG 代码;将程序置于“代码”段中
RSEG DATA16_N
TXData DW 0h
电压 DW 0h
初始化:MOV #SFE (CSTACK),SP;设置堆栈
主程序:NOP;主程序
MOV.W #WDTPW+WDTHOLD、&WDTCTL;停止看门狗计时器
;18:E4:35F093 <--蓝牙地址
;端口
BIS.b #BIT0、P1DIR
BIC.b #BIT0、P1OUT
;按钮设置
BIS.B #BIT7、&P2REN;P2.7上拉或下拉寄存器被启用
BIS.B #BIT7、&P2OUT;P2.7设置为下拉寄存器
BIS.B #BIT7、&P2IES;P2.7低/高边沿被启用
BIC.B #BIT7、&P2IFG;P2.7 IFG 被清零
;设置时钟
BIS.w #SCG0、SR
BIS.w #SELREF_REFOCLK、&CSCTL3;为时钟源= REFOCLK 创建基准
MOV.w #0、&CSCTL0
BIC.w #DCORSEL_7、&CSCTL1;清除数据@ CSCTL1
BIS.w #DCORSEL_0、&CSCTL1;将 DCO 设置为1MHz 运行
MOV.w #FLLD_0+30、&CSCTL2;FLLD+30 = 1MHz DCO 的 FLLD
BIC.w #SCG0、SR
;设置 ADC
MOV.w #ADCPCTL1、&SYSCFG2
BIC.w #LOCKLPM5、PM5CTL0
MOV.w #ADCSHT_2|ADCON、&ADCCTL0
BIS.w #ADCSHP、&ADCCTL1
BIS.w #ADCRES、&ADCCTL2
BIS.w #ADCINCH_1、&ADCMCTL0
BIS.w #ADCIE0、&ADCIE
解锁 FLL:
MOV.w &CSCTL7、R13
和.w #FLLUNLOCK0|FLLUNLOCK1、R13
Jnz 解锁 FLL
MOV.w #SELMS_DCOCLKDIV+SELA_REFOCLK、&CSCTL4
BIC.w #LOCKLPM5、PM5CTL0
;设置 UART
BIS.b #BIT4+BIT4、&P1SEL0
BIS.w #UCSWRST、&UCA0CTLW0
BIS.w #UCSSEL_SMCLK、和 UCA0CTLW0
MOV.b #104、UCA0BR0
CLR.b 和 UCA0BR1
BIS.w #UCBRS0、&UCA0MCTLW
BIC.w #UCSWRST、&UCA0CTLW0
大型环路:
BIS.w #ADCENC|ADCSC、&ADCCTL0
NOP
BIS.w #LPM3+GIE、SR
NOP
CMP #250h、电压
JHS L2
CMP #01ffh、电压
JL L3
BIC.b #BIT0、&P1OUT
JMP MainLoop
bit.w #0x03、TXData
调用#Send_Data
JMP MainLoop
L3:
bit.w #0x01、TXData
XOR.b #BIT0、P1OUT
调用#Send_Data
JMP MainLoop
L2:
bit.w #0x02、TXData
XOR.b #BIT0、P1OUT
调用#Send_Data
JMP MainLoop
ADC_ISR:
MOV.w &ADCMEM0、电压
BIC.w #LPM3、0 (SP)
TI
发送数据:
CMP.w #0x1、&UCTXIFG
JZ 发送数据
MOV.w TXData、&UCA0TXBUF
可重置
常见的 INTVEC
org ADC_vector
DW ADC_ISR
结束
第二个 MSP 代码
这是我的从器件 MSP 的代码
#include "msp430.h";#define controlled include 文件
名称 main;模块名称
公共主;使主标签可见
;在本模块之外
org 0FFFEh
DC16 init;将复位矢量设置为'init'标签
RSEG CSTACK;段的预先声明
RSEG 代码;将程序置于“代码”段中
RSEG DATA16_N
RXData DW 0h
初始化:MOV #SFE (CSTACK),SP;设置堆栈
主程序:NOP;主程序
MOV.W #WDTPW+WDTHOLD、&WDTCTL;停止看门狗计时器
;18:E4:35F093 <--蓝牙地址
;端口
BIS.b #BIT0、P1DIR
BIC.b #BIT0、P1OUT
;中继端口
;转发
;正面
BIS.b #BIT0、P2DIR
BIS.b #BIT1、P2DIR
BIS.b #BIT0、P2OUT
BIC.b #BIT1、P2OUT
;返回
BIS.b #BIT5、P2DIR
BIS.b #BIT6、P2DIR
BIS.b #BIT5、P2OUT
BIC.b #BIT6、P2OUT
;向后
;正面
BIS.b #BIT0、P2DIR
BIS.b #BIT1、P2DIR
BIS.b #BIT1、P2OUT
BIC.b #BIT0、P2OUT
;返回
BIS.b #BIT5、P2DIR
BIS.b #BIT6、P2DIR
BIS.b #BIT6、P2OUT
BIC.b #BIT5、P2OUT
BIS.w #SCG0、SR
BIS.w #SELREF_REFOCLK、&CSCTL3;为时钟源= REFOCLK 创建基准
MOV.w #0、&CSCTL0
BIC.w #DCORSEL_7、&CSCTL1;清除数据@ CSCTL1
BIS.w #DCORSEL_0、&CSCTL1;将 DCO 设置为1MHz 运行
MOV.w #FLLD_0+30、&CSCTL2;FLLD+30 = 1MHz DCO 的 FLLD
NOP
NOP
NOP
BIC.w #SCG0、SR
解锁 FLL:
MOV.w &CSCTL7、R13
和.w #FLLUNLOCK0|FLLUNLOCK1、R13
Jnz 解锁 FLL
MOV.w #SELMS_DCOCLKDIV+SELA_REFOCLK、&CSCTL4
BIC.w #LOCKLPM5、PM5CTL0
BIS.b #BIT4+BIT4、&P1SEL0
BIS.w #UCSWRST、&UCA0CTLW0
BIS.w #UCSSEL_SMCLK、和 UCA0CTLW0
MOV.b #104、UCA0BR0
CLR.b 和 UCA0BR1
BIS.w #UCBRS0、&UCA0MCTLW
BIC.w #UCSWRST、&UCA0CTLW0
CLR.w RXData
BIS.w #UCRXIE、&UCA0IE
NOP
BIS.w #LPM3+GIE、SR
NOP
USC_ISR:
MOV.w &UCA0RXBUF、RXData
BIC.w #UCRXIFG、&UCA0IFG
XOR.b #BIT0、P1OUT
TI
常见的 INTVEC
org USCI_A0_Vector
DW USC_ISR
结束
只要我切换操纵杆并切换灯、我就可以传输它、但我会得到一些时髦的数据。 我尝试仅传输#0x01、但另一端的传输量为255 是否有关于如何解决此问题的建议?