专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
用C8051F320怎么样初始化才能使串口波特率为9600?
2020-02-05 09:27
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
9644
3
3
用C8051F320怎么样初始化才能使串口波特率为9600?
下面代码,串口输出的波特率貌似不对。错在哪?(感觉不对是因为用同样的设置,F340串口输出的波形宽度大概是F320的1/4)
#include"c8051F320.h"
#include "RS485.h"
sbit RELAY0 = P0^2;
sbit RELAY1 = P0^3;
sbit RELAY2 = P0^7;
/*
================================================================================
Function name : Clock_Init( )
Description : Initialize the system and USB clock
Input : None
Output : None
================================================================================
*/
void Clock_Init( void )
{
unsigned int i;
if( ( CLKMUL & ( 1<<5 ) ) ) return;
CLKMUL = 0;
CLKMUL |= ( 1<<7 );
for( i = 0; i < 250; i ++ );
CLKMUL |= 0xC0;
for( i = 0; i < 250; i ++ );
while( !( CLKMUL & ( 1<<5 ) ) );
CLKSEL = ( 2<<0 );
}
/*
================================================================================
Function name : GPIO_Init( )
Description : Initial the GPIOs and the crossbar
Input : None
Output : None
================================================================================
*/
void GPIO_Init( void )
{
P0MDOUT |= 0xdc;
P1MDOUT |= 0x00;
P2MDOUT |= 0xff;
XBR1 |= ( 1<<6 );
XBR0 |= ( 1<<0 );
}
/*
================================================================================
* Name : SystermInit( )
* Description : Initialize the Systerm
* Input : None
* Output : None
* Note : None
================================================================================
*/
void SystermInit(void)
{
RELAY0 = 0;
RELAY1 = 0;
RELAY2 = 0;
UART0_Init();
UART_SendStatue(0xa0,0x55);
}
/*
================================================================================
=================================The main entry=================================
================================================================================
*/
int main( void )
{
GPIO_Init();
Clock_Init(); //Config the clock
SystermInit();
while( 1 )
{
P2 = ~P2;
}
return 0;
}
/*
================================================================================
====================================End of file=================================
================================================================================
*/
复制代码
#include "C8051F320.h"
#include "RS485.h"
/*
================================================================================
* Name : Timer1_Init( )
* Description : Initialize the timer1 for baudrate
* Input : None
* Output : None
* Note : None
================================================================================
*///9600
void Timer1_Init( void )
{
TH1 = 0x30;
TL1 = 0x30;
TCON &= 0x3f;
TMOD &= 0x0F;
TMOD |= ( 2<<4 );
CKCON |= 0x00 | ( 0<<3 );
TCON |= ( 1<<6 );
}
/*
================================================================================
* Name : UART0_Init( )
* Description : Initialize the UART0, baudrate
* Input : None
* Output : None
* Note : None
================================================================================
*/
void UART0_Init( void )
{
RD485 = 1;
SCON0 = (1<<4)|(1<<5)|(1<<7); //(SCON0):S0MODE - MCE0 REN0 TB80 RB80 TI0 RI0
IE |= ( 1<<4 );
P0MDOUT |= ( 1<<4 );
Timer1_Init( );
}
void UART_SendChar(unsigned char ch)
{
SBUF0 = ch;
while(!TI0);
TI0 = 0;
}
void UART_SendStatue(unsigned char addr,unsigned char dat)
{
//Send Address
RD485 = 0;
TB80 = 1;
UART_SendChar(addr);
//Send Data
TB80 = 0;
UART_SendChar(dat);
RD485 = 1;
}
/*
void UART0_ISR( void ) interrupt 4
{
unsigned char i;
if( SCON0 & ( 1<<1 ) )
{
//TX ok
SCON0 &= ~( 1<<1 );
}
else if( SCON0 & ( 1<<0 ) )
{
//RX ok
SCON0 &= ~( 1<<0 );
i = SBUF0;
SBUF0 = i;
}
}
*/
复制代码
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
jssd
2020-02-05 15:25
精彩回答 2 元偷偷看……
0人看过
加载中...
查看其它3个回答
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一周热门 更多>