|
代码如下:用串口调试助手就是没反应。不知道为什么,求高手解答,用的是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)
{
unsigned int 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)
{
unsigned int buf;
while(!ri_u1c1);//寄存器中有数据,ri_u1c1 = 0有数据
buf = u1rbl;
return buf;
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|