2762|2

21

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

msp430f147异步收发有误,有程序,求大神 [复制链接]

有两个msp430f147进行异步通信。一个发送,一个接收。发送是不断在发65,接收是把65存到buffer区域的一个固定位置(0200)。发现接收到的东西总是不对。。。下面是代码。

发送程序:

       #include "msp430.h"                     ; #define controlled include file

        NAME    main                    ; module name

        PUBLIC  main                    ; make the main label vissible
                                        ; outside this module
        ORG     0FFFEh
        DC16    init                    ; set reset vector to 'init' label

        RSEG    CSTACK                  ; pre-declaration of segment
        RSEG    CODE                    ; place program in 'CODE' segment

init:   MOV     #SFE(CSTACK), SP        ; set up stack

main:   NOP                             ; main program
        MOV.W   #WDTPW+WDTHOLD,&WDTCTL  ; Stop watchdog timer
        CALL    #UART0_INIT
        MOV     #65,   R4
Tchk:   BIT.B   #UTXIFG0,&IFG1
        JZ      Tchk
        MOV.B   R4,&U0TXBUF
        CALL    #delay
        JMP     Tchk

delay:  PUSH    SR
    MOV     #00FFh, R5
ww:     DEC     R5
        JNZ     ww
        POP     SR
        RET

UART0_INIT:
        BIS.B   #SWRST, &U0CTL
        BIS.B   #BIT4+BIT5,&P3SEL
        ;BIS.B   #SPB+CHAR,&U0CTL
        BIS.B   #PENA+PEV+SPB+CHAR,&U0CTL
        BIC.B   #BIT5,&U0TCTL
        BIS.B   #BIT4,&U0TCTL
        BIS.B   #URXEIE,&U0RCTL
        MOV.B   #03h,   &U0BR0
        MOV.B   #00h,   &U0BR1
        MOV.B   #13h,   &U0MCTL
        BIS.B   #UTXE0+URXE0,&ME1
        BIC.B   #SWRST, &U0CTL
        RET

        END

 
点赞 关注

回复
举报

21

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

接收程序:

            #include "msp430.h"                     ; #define controlled include file
        NAME    main                    ; module name
        PUBLIC  main                    ; make the main label vissible
                                        ; outside this module
        ORG     0FFFEh
        DC16    init                    ; set reset vector to 'init' label
        ORG     0FFF2h                  ;接收中断
        DC16    USART0RX_ISR
        RESEG   DATA16_N
Buffer:  DS8      200
        RSEG    CSTACK                  ; pre-declaration of segment
        RSEG    CODE                    ; place program in 'CODE' segment
init:   MOV     #SFE(CSTACK), SP        ; set up stack
main:   NOP                             ; main program
        MOV.W   #WDTPW+WDTHOLD,&WDTCTL  ; Stop watchdog timer
        CALL    #UART0_INIT             ;初始化程序
        MOV     #Buffer,  R4             ;把赋给R4
        BIS.B   #GIE,   SR               ;开总控位
        JMP     $
UART0_INIT:                             ;初始化程序
        BIS.B   #SWRST, &U0CTL          ;软件复位
        BIS.B   #BIT4+BIT5,&P3SEL        
        ;BIS.B   #SPB+CHAR,&U0CTL         ;偶校验,8位
        BIS.B   #PENA+PEV+SPB+CHAR,&U0CTL  ;奇偶校验允许
        BIS.B   #BIT4,&U0TCTL               ;选择ACLK
        BIC.B   #BIT5,&U0TCTL             
        BIS.B   #URXEIE,&U0RCTL            ;全收
        MOV.B   #03h,   &U0BR0              ;N=3
        MOV.B   #00h,   &U0BR1
        MOV.B   #0E0h,   &U0MCTL
        BIS.B   #UTXE0+URXE0,&ME1           ;打开使能
        BIC.B   #SWRST, &U0CTL              
        BIS.B   #URXIE0,&IE1                 ;打开分控位
        RET
USART0RX_ISR                              ;中断子程
        MOV.B   &RXBUF0,0(R4)      ;把接收缓冲器中的内容移至以R4为地址的空间
        RETI
        END

 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
不知道有没有大神看出哪里有问题啊???
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表