打印
[DSP编程]

DSP汇编串口接收中断,不知道哪出了问题。发送和接收不一

[复制链接]
1678|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhoushiqun|  楼主 | 2014-3-20 15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhoushiqun 于 2014-3-20 20:09 编辑

程序哪儿有问题,请高手指点一二。
_c_int0   
        SETC         INTM
            CLRC         SXM
            CLRC         OVM
        CLRC         CNF        
        LDP         #0E0H
        SPLK        #43FEH,SCSR1        ;CLKIN=15M,CLKOUT=15M
        SPLK        #0E8h,WDCR                ;关看门狗
                CALL        SCI_INIT                ;调串口初始化程

TXD_LOOP:        
                LDP                #5H
                BIT                SCI_FLAG,BIT0
                BCND          TXD_DATA,TC        ;SCI_FLAG.0=1则发送数据
                B                WAIT
TXD_DATA:                                                ;发送N个数据程序
                MAR                *,AR0
        
                BCND        TXD_DATA_END,TC;判数据发送完?
                MAR                *,AR2
                SACL        *,AR4                        ;数据送SCITXBUF寄存器
XMIT_RDY:        
                LDP                #DP_PF1
                BIT                SCICTL2,BIT7
                BCND        XMIT_RDY,NTC        ;判发送器是否空?
                B                TXD_DATA
TXD_DATA_END:
                MAR                *, AR1
                LACC    *,AR2
                SACL    *   
                LDP                  #5H
                SPLK        #00H,SCI_FLAG        ;清发送软件标志位
WAIT:        NOP
                B                TXD_LOOP

;(3)串行通信初始化程序:
SCI_INIT:
                LDP                 #0E1H
                LACL        MCRA
                OR                #03H
                SACL        MCRA                        ;配置串行口引脚为特殊功能:TXD、RXD
                LDP                 #DP_PF1        
                SPLK         #000FH,SCICCR   ;地址位唤醒模式,8位数据,1位停止位,无奇偶校验
        SPLK         #0013H,SCICTL1         ;接收、发送、内部时钟使能 ,SLEEP=0
            SPLK         #0002H,SCICTL2         ;接收中断使能
            SPLK         #0000H,SCIHBAUD
            SPLK         #00C2H,SCILBAUD ;波特率为9600
            SPLK         #0027H,SCICTL1         ;串口初始化完成
            LAR                AR1,#SCIRXBUF        ;接收缓冲寄存器地址
            LAR                AR2,#SCITXBUF        ;发送缓冲寄存器地址

        LDP                #0
        SPLK        #0FFFFh,IFR                ;清所有中断标志
                SPLK        #0001h,IMR                ;允许INT1中断
                CLRC        INTM                        ;开总中断
                RET


GISR1:                                                        ;优先级INT1中断人口
                ;保护现场

                LDP                #0E0H
                LACC        PIVR,1                        ;读取外设中断向量寄存器(PIVR),并左移一位
                ADD                #PVECTORS                ;加上外设中断人口地址
                BACC                                        ;跳到相应的中断服务子程序
SCI_RX_ISR:                                                ;接收中断服务程序
                LDP                #DP_PF1
                BIT     SCIRXST,BIT6
                BCND    RXD_DATA,TC
RXD_DATA:
                MAR                *,AR1
                LACC        *
                LDP                #5H
        SPLK        #01H,SCI_FLAG                                                                         ;置发送标志
         B       SCI_RX_END


SCI_RX_END:                                                ;中断返回
                ;恢复现场
               
        CLRC        INTM
                                ;开总中断,因为一进中断就自动关闭总中断
                RET
;(5)假中断程序
PHANTOM         
        KICK_DOG                                ;复位看门狗
                RET
                END

相关帖子

沙发
zhangmangui| | 2014-3-20 17:50 | 只看该作者
汇编编写   没搞过  帮忙顶

使用特权

评论回复
板凳
zhoushiqun|  楼主 | 2014-3-20 20:09 | 只看该作者
用串口助手发送和接收到的数据不一致,不知道哪儿出了问题。

使用特权

评论回复
地板
zhoushiqun|  楼主 | 2014-3-20 20:20 | 只看该作者
zhoushiqun 发表于 2014-3-20 20:09
用串口助手发送和接收到的数据不一致,不知道哪儿出了问题。

DSP采用的是DSP2407.

使用特权

评论回复
5
zhangmangui| | 2014-3-20 21:59 | 只看该作者
zhoushiqun 发表于 2014-3-20 20:09
用串口助手发送和接收到的数据不一致,不知道哪儿出了问题。

只要能接收到   说明硬件是没问题的  
最大的可能就是波特率不正确

使用特权

评论回复
6
zhoushiqun|  楼主 | 2014-3-24 10:42 | 只看该作者
zhangmangui 发表于 2014-3-20 21:59
只要能接收到   说明硬件是没问题的  
最大的可能就是波特率不正确

哈哈,果然,系统频率设错一位,谢谢。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝