搜索
bottom↓
回复: 13

c8051f020单片机与pc机之间的串口通信

[复制链接]

出0入0汤圆

发表于 2010-11-5 09:48:29 | 显示全部楼层 |阅读模式
大家帮我看看这个程序哪儿有问题,谢谢了
#include<c8051f020.h>
unsigned char flag,a;
void main()
{

        TMOD=0x20;//设置定时器1为工作方式2
        TH1=0xfa;//晶振22.1184MHz,波特率9600
        TL1=0xfa;
        TR1=1;
        SCON0=0x50;//串口工作方式1
        EA=1;
        ES0=1;
        while(1)
                {
                if(flag==1)
                  {
                        ES0=0;
                        flag=0;
                        SBUF0=a;
                        while(!TI0);       
                        TI0=0;
                        ES0=1;
                   }
                }
}

void ser() interrupt 4
{
        RI0=0;
        a=SBUF0;
        flag=1;
}
在串口调试助手里面发送一个数据之后接收区没有反应,不知道是什么问题。。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-11-5 13:37:38 | 显示全部楼层
XBR0 = 0x04;

出0入0汤圆

发表于 2010-11-5 13:38:42 | 显示全部楼层
再禁用看门狗
楼主还是多看看C8051的资料吧,和普通的8051不是一样的

出0入0汤圆

 楼主| 发表于 2010-11-5 15:26:28 | 显示全部楼层
回复【2楼】amazing030
-----------------------------------------------------------------------

谢谢哦,看来得慢慢看了。。。

出0入0汤圆

发表于 2010-11-5 19:17:37 | 显示全部楼层
楼上说的没错

出0入0汤圆

发表于 2010-11-5 19:58:19 | 显示全部楼层
1、未配置交叉开关指定到IO口上;
2、未选择外部时钟22.1184MHz;
3、未禁止看门狗;

/////////////////////////////////////
//  Generated Initialization File  //
/////////////////////////////////////

#include "C8051F020.h"

// Peripheral specific initialization functions,
// Called from the Init_Device() function
void Reset_Sources_Init()
{
    WDTCN     = 0xDE;
    WDTCN     = 0xAD;
}

void Timer_Init()
{
    CKCON     = 0x10;
    TCON      = 0x40;
    TMOD      = 0x20;
    TH1       = 0xB8;
}

void UART_Init()
{
    SCON0     = 0x50;
}

void Port_IO_Init()
{
    // P0.0  -  TX0 (UART0), Open-Drain, Digital
    // P0.1  -  RX0 (UART0), Open-Drain, Digital
    // P0.2  -  Unassigned,  Open-Drain, Digital
    // P0.3  -  Unassigned,  Open-Drain, Digital
    // P0.4  -  Unassigned,  Open-Drain, Digital
    // P0.5  -  Unassigned,  Open-Drain, Digital
    // P0.6  -  Unassigned,  Open-Drain, Digital
    // P0.7  -  Unassigned,  Open-Drain, Digital

    // P1.0  -  Unassigned,  Open-Drain, Digital
    // P1.1  -  Unassigned,  Open-Drain, Digital
    // P1.2  -  Unassigned,  Open-Drain, Digital
    // P1.3  -  Unassigned,  Open-Drain, Digital
    // P1.4  -  Unassigned,  Open-Drain, Digital
    // P1.5  -  Unassigned,  Open-Drain, Digital
    // P1.6  -  Unassigned,  Open-Drain, Digital
    // P1.7  -  Unassigned,  Open-Drain, Digital

    // P2.0  -  Unassigned,  Open-Drain, Digital
    // P2.1  -  Unassigned,  Open-Drain, Digital
    // P2.2  -  Unassigned,  Open-Drain, Digital
    // P2.3  -  Unassigned,  Open-Drain, Digital
    // P2.4  -  Unassigned,  Open-Drain, Digital
    // P2.5  -  Unassigned,  Open-Drain, Digital
    // P2.6  -  Unassigned,  Open-Drain, Digital
    // P2.7  -  Unassigned,  Open-Drain, Digital

    // P3.0  -  Unassigned,  Open-Drain, Digital
    // P3.1  -  Unassigned,  Open-Drain, Digital
    // P3.2  -  Unassigned,  Open-Drain, Digital
    // P3.3  -  Unassigned,  Open-Drain, Digital
    // P3.4  -  Unassigned,  Open-Drain, Digital
    // P3.5  -  Unassigned,  Open-Drain, Digital
    // P3.6  -  Unassigned,  Open-Drain, Digital
    // P3.7  -  Unassigned,  Open-Drain, Digital

    XBR0      = 0x04;
    XBR2      = 0x40;
}

void Oscillator_Init()
{
    OSCICN    = 0x0C;
}

void Interrupts_Init()
{
    IE        = 0x90;
}

// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
    Reset_Sources_Init();
    Timer_Init();
    UART_Init();
    Port_IO_Init();
    Oscillator_Init();
    Interrupts_Init();
}

出5入8汤圆

发表于 2010-11-5 20:15:36 | 显示全部楼层
楼上说的对,你这是完全把C8051当普通51使啊。新手的话,可以学楼上配置向导生成程序框架。

出0入0汤圆

 楼主| 发表于 2010-11-6 11:54:59 | 显示全部楼层
回复【5楼】cpp12003
1、未配置交叉开关指定到io口上;
2、未选择外部时钟22.1184mhz;
3、未禁止看门狗;
/////////////////////////////////////
//  generated initialization file  //
/////////////////////////////////////
#include "c8051f020.h"
// peripheral specific initialization functions,
// called from the init_device() function
void reset_sources_init()
{
    wdtcn     = 0xde;
    wdtcn     = 0xad;
}
void timer_init()
{
    ckcon    ......
-----------------------------------------------------------------------

多谢了,我菜鸟级别,还没入门。。

出0入0汤圆

 楼主| 发表于 2010-11-6 11:56:43 | 显示全部楼层
回复【5楼】cpp12003
1、未配置交叉开关指定到io口上;
2、未选择外部时钟22.1184mhz;
3、未禁止看门狗;
/////////////////////////////////////
//  generated initialization file  //
/////////////////////////////////////
#include "c8051f020.h"
// peripheral specific initialization functions,
// called from the init_device() function
void reset_sources_init()
{
    wdtcn     = 0xde;
    wdtcn     = 0xad;
}
void timer_init()
{
    ckcon    ......
-----------------------------------------------------------------------

可以留个联系方式否,QQ也行,有问题也可以请教下你。谢谢哦

出0入0汤圆

发表于 2010-11-8 20:07:24 | 显示全部楼层
qq:103507640

出0入0汤圆

发表于 2011-11-12 23:06:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-8-2 21:16:38 | 显示全部楼层
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

出0入0汤圆

发表于 2013-8-14 19:59:08 来自手机 | 显示全部楼层
mark……
顶一个…

出0入0汤圆

发表于 2013-9-17 12:57:37 | 显示全部楼层
mark……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 14:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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