找回密码
 注册会员
img_loading
智能检测中
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

急!!!关于串口通讯的求助!!!

[复制链接]
admin 发表于 2012-8-24 10:58:56 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
单片机想PC发送数据,但是程序停在一个while 循环里就不同了。。。
代码如下:
/////////////////////////////////////////////////
//// 实现功能 ////
//// 单片机与PC间的串口异步通信 ////
/////////////////////////////////////////////////
#include<c8051F340.h>
//===============================================
//------------------位定义-----------------------
//===============================================
sbit LED_1 = P1^3;
//===============================================
//-----------------函数声明----------------------
//===============================================
void SYS_CLOCK_INIT (void); //系统时钟初始化
void PORT_INIT (void); //端口初始化
void TIMER_INIT (void); //定时器0,1初始化
void ZHONG_DUAN_INIT(void); //中断初始化
//UART0_INIT (void); //串口0初始化
void RS232_SENDDATA ( unsigned char sdata);//发送缓冲区声明
//===============================================
//------------------主程序-----------------------
//===============================================
void main (void)
{
PCA0MD &= ~0x40; //关闭看门狗
SYS_CLOCK_INIT (); //调用系统时钟初始化子函数
PORT_INIT (); //调用端口初始化子函数
TIMER_INIT(); //调用定时器0,1初始化子函数
ZHONG_DUAN_INIT(); //调用中断初始化子函数
//UART0_INIT (); //调用串口0初始化函数
while(1)
{
RS232_SENDDATA('1');
}
}
//===============================================
//------------------初始化-----------------------
//===============================================
//----------------系统时钟初始化-----------------
void SYS_CLOCK_INIT (void)
{
OSCICN |= 0x83; //启动内部高频震荡,系统时钟不分频
}
//----------------端口初始化---------------------
void PORT_INIT (void)
{
P0SKIP |= 0x30; //跳过端口 P0.4 P0.5
P1SKIP |= 0x08; //跳过端口P1.3
P0MDOUT |= 0x10; //设置P0.4 TX0为推挽
P0MDIN |= 0X20; //设置P0.5 RX0为数字输入
XBR0 |= 0x01; //开启UART TX0,RX0到P0.4,P0.5
XBR1 |= 0x40; //交叉开关使能
}
//----------------计时器初始化-------------------
void TIMER_INIT(void) //TO用于普通计时,T1用于波特率发生器
{
CKCON = 0x01; //设置定时器0,1使用系统时钟4分频
TMOD = 0x22; //设置T0,T1工作在模式2,即8位自动重载模式
TCON |= 0x20; //开启定时器T0计时 中断入口1
TH1 = 0x64; //设置波特率为9600bps
TL1 = TH1;
TR1 = 1; //开启计时器1计时
XBR0 = 0x01;
XBR1 = 0x40;
P0MDOUT = 0x10;

}
//----------------中断初始化---------------------
void ZHONG_DUAN_INIT(void)
{
//IE |= 0x92; //开启总中断,允许串口、T1中断
//IP = 0x10; //设置串口中断优先级为高
}
//----------------发送缓冲区---------------------
void RS232_SENDDATA (unsigned char sdata)
{
//TI0 = 1;
SBUF0 = sdata;
while (TI0==0);
TI0 = 0;
}
您需要登录后才可以回帖 登录 | 注册会员

*滑块验证:
img_loading
智能检测中
本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2025-6-18 19:29 , Processed in 0.072775 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表