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;
}
论坛的高手帮忙解答下好吗?我又改成中断的也不行
页:
[1]