2680|0

70

帖子

4

TA的资源

一粒金砂(中级)

楼主
 

串口在线仿真与软件仿真 [复制链接]

最近写了个串口通信小程序,在做软件仿真时,数据能够存入发送寄存器,但连接芯片做在线仿真时,数据就不能够存入发送寄存器了.想请教一下大家.

一下是程序部分:


#include "p30F5011.h"                           //调用头文件

/*-------------------------------------------------------------------------

                全局变量定义

-------------------------------------------------------------------------*/

unsigned char rxBuff[8],inputReg[80];

unsigned char txBuff[8]= {9,0,3,4,5,6,7,8};



unsigned char RxTxPTR=0,overflow;



/*--------------------------------------------------------------------------

                全局变量定义

---------------------------------------------------------------------------*/

#define LED1 _LATD5

#define LED2 _LATD4

#define LED3 _LATD3

#define LED4 _LATD2

#define LED5 _LATD1

/*--------------------------------------------------------------------

                配置位定义

--------------------------------------------------------------------*/

_FOSC(CSW_FSCM_OFF & XT_PLL4);                                //disable Clock switching and clock monitor

_FWDT(WDT_OFF & WDTPSA_64 & WDTPSB_10);                 //open WDT,

_FBORPOR(MCLR_EN & PBOR_ON);                                //Power-on Reset Value=128mS

_FBS(CODE_PROT_OFF);

_FSS(CODE_PROT_OFF);

_FGS(CODE_PROT_OFF);                                                               

/*--------------------------------------------------------------------

        上电初始化

--------------------------------------------------------------------*/

void initialize (void)

{       

        IFS0 = 0;                                //中断标志清零

        IEC0 = 0;                                //中断允许控制寄存器               

        TRISB = 0XFE3F;                        //RB0-RB13为输入,RB14-RB15为输出

        TRISC = 0X0006;

        TRISD = 0X0C00;

        TRISF = 0;

        TRISG = 0X83C0;

       

        PORTC=0;

        PORTD=0;

        PORTF=0;

        PORTG=0;

        initUART1();        //485接口

       

}



/*------------------------------------------------------------------------------

        串口1初始化

------------------------------------------------------------------------------*/

void initUART1(void)

{   

    IPC2bits.U1RXIP = 3;        /* set priority */

    IPC2bits.U1TXIP = 3;

        U1MODE = 0;             //8位

        U1MODEbits.UARTEN=1;        //打开UART1

    IEC0bits.U1RXIE =1;                /* enable interrupt */

    IEC0bits.U1TXIE =1;           /* disable interrupt */

    U1STA=0;

    U1STAbits.UTXISEL=0;        //发送缓冲器空产生中断

        U1STAbits.URXISEL=0B00;        //接收缓冲器接收到1个字节产生中断

    U1STAbits.UTXEN=1;                //发送器

        U1BRG=64;                                //波特率为9600

        IFS0bits.U1RXIF = 0;        /* clear IF flags */

    IFS0bits.U1TXIF = 0;

       

}

/*--------------------------------------------------------------------------

                USART发送中断

--------------------------------------------------------------------------*/

void __attribute__((interrupt, no_auto_psv)) _U1TXInterrupt(void)

{

        LED4=~LED4;

    IFS0bits.U1TXIF = 0;

        U1TXREG=txBuff[RxTxPTR];

        RxTxPTR++;       

        LED1==1;

    LED2=1;



}



/*--------------------------------------------------------------------------

                USART接收中断

--------------------------------------------------------------------------*/

void __attribute__((interrupt, no_auto_psv)) _U1RXInterrupt(void)

{

        unsigned char inregaddr,i;

        unsigned int rxCRC;

        IFS0bits.U1RXIF = 0;

        LED1=1;                //通讯指示灯亮

        if(overflow) RxTxPTR=0;

        overflow=0;

        TMR4=0;

        while (U1STAbits.URXDA==1)                //读接收的数据直到缓冲器为空

        {

                rxBuff[RxTxPTR]=U1RXREG;

                RxTxPTR++;               

        }

}



int main(void)

{

        initialize();   

}



点赞 关注
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
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
快速回复 返回顶部 返回列表