小混hun 发表于 2012-10-9 11:27:37

R8C串口通信憋死人求帮忙

代码如下:用串口调试助手就是没反应。不知道为什么,求高手解答,用的是R5F211B4


/***********************************************************************/
/*                                                                     */
/*FILE      :URAT1.c                                             */
/*DATE      :Mon, Sep 24, 2012                                     */
/*DESCRIPTION :main program file.                                    */
/*CPU GROUP   :1B                                                    */
/*                                                                     */
/*This file is generated by Renesas Project Generator (Ver.4.19).    */
/*NOTE:THIS IS A TYPICAL EXAMPLE.                                    */
/***********************************************************************/

#include "sfr_r81b.h"
#include "urat1.h"
//#include "var_def.h"

//unsigned char UART1_SEND_TAB[] = "Oh,Succeed!\n";

void main(void);

void main(void)
{
        unsignedint data;

           UART1_Init();
           while(1)       
           {
              UART1_SendByte(2);                          // 发送数据
                data = UART1_RcvByte();                  // 等待PC发送数据
           }
}

//*********************************************************************
//
//函数名:void UART1Init(unsigned int BPS);
//功能:初始化UART1包括,设置波特率数据位长度,停止位,奇偶校验
//      默认设置位8位数据位,1位停止位,无奇偶校验
//入口参数:BPS(波特率)
//出口参数:无
//
//*********************************************************************

void UART1_Init(void)
{
        te_u1c1 = 0;                //禁止发送
        re_u1c1 = 0;                //禁止接受
       
        p3_7 = 1;                   //设置p3_7为输出高电平
        pd3_7 = 1;                  //设置TXD1为输出
        pd4_5 = 0;                  //设置RXD0为输入
       
       
        u1sel0 = 1;               //管脚设置为串口
        u1sel1 = 1;
       
        prc0 = 1;                   //打开寄存器写保护
        //u1mr = 0x05;                //设置传送数据位8位
                                                                //使用内部时钟、1个停止位、无校验
        ckdir_u1mr = 0;
        smd0_u1mr = 0;
        smd1_u1mr = 1;
        smd2_u1mr = 1;
       
        //u1c0 &= 0x14;               //选择f1、TXD1为COMS输出、先传低位
       
        clk0_u1c0 = 0;                //选择f1位计数源
        clk1_u1c0 = 0;
       
        txept_u1c0 = 1;               //发送寄存器空标志
        nch_u1c0 = 0;               //TXD1管脚为COMS输出
        ckpol_u1c0 = 0;               //在传送时钟的下降沿输出发送数据,在上升沿输入接收数据
        uform_u1c0 = 0;               //选择低位先传
       
       
        //u1brg = 0x40;               //设置波特率位9600
        u1brg = 0x40;
        prc0 = 0;
       
        te_u1c1 = 1;                //使能发送
        re_u1c1 = 1;                //使能接受
       
}

//*********************************************************************
//
//函数名:void UART1SendByte(unsigned int data)
//功能:发送1字节数据并等待发送完毕
//入口参数:data等待发送的数据
//出口参数:无
//
//*********************************************************************

/*void UART1_SendByte(unsigned int dat)
{
        unsigned long int i ;
        unsigned int temp1 = 2;
        temp1 = ri_u1c1;
        //ti_u1c1 = 0;
        u1tbl = dat;
        //for(i = 1000;i > 0; i--);
        while(!ti_u1c1);//ti_u1c1 = 0则发送寄存器有数据,否则为空
        u1tbl = dat;       
}
*/

void UART1_SendByte(unsigned int dat)
{
        while(!ti_u1c1);//ti_u1c1 = 0则发送寄存器有数据,1为空
        u1tbl = dat;       
}

//*********************************************************************
//
//函 数 名:unsigned int UART1RcvByte(void)
//功    能:接收1字节数据并等待发送完毕
//入 口 参: 无
//出口参数:等待接收1字数:无节数据
//
//*********************************************************************

unsigned int UART1_RcvByte(void)
{
        unsignedint buf;

        while(!ri_u1c1);//寄存器中有数据,ri_u1c1 = 0有数据
        buf = u1rbl;
        return buf;       
}
















小混hun 发表于 2012-10-12 09:48:32

论坛的高手帮忙解答下好吗?我又改成中断的也不行
页: [1]
查看完整版本: R8C串口通信憋死人求帮忙