打印

请斑竹帮忙看个串口程序,简单的。

[复制链接]
1828|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zenwall|  楼主 | 2011-6-17 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
情况如下,只要确认串口能工作。T2波特率发送器,串口工作方式1,代码如下。
时钟初始化
void ClockInit (void)
{
    uint16 i;

    CLKCON &= 0x9F;                                 // 不分频
    CLKCON |= 0x08;                                 // 打开高频振荡器
    for (i = 0; i < 1000; i++);                     // 延时2ms以上
    CLKCON |= 0x04;                                 // 选择内部16.6MHz高频振荡器
}

串口初始化
void UartInit (void)
{
    P1CR = 0x04;
    P1PCR = 0x02;
    P1 |= 0x04;
    TR2 = 0;
    T2MOD = 0x80;
    T2CON = 0x30;
    PCON = 0x00;
    SCON = 0x50;
    TH2 = 0xFF;
    TL2 = 0xCA;
    RCAP2H = 0xFF;
    RCAP2L = 0xCA;
    TR2 = 1;
}

发生一字节函数
void UartSendOne (uint8 dat)
{
    SBUF = dat;
    while (TI == 0);
    TI = 0;
}


主程序

    while (1)
    {
        UartSendOne('z');
    }

串口调试助手没有任何反应:
1:是不是内部晶振不稳定?
2:IO口配置错误?
3:定时器、串口的寄存器配置错误?
4:发送函数有问题?
:L
沙发
bananarer| | 2011-6-17 13:19 | 只看该作者
哪颗IC?有仿真器么?while (TI == 0); 后面加一个断点试试?
配置没有办法看。不知道哪颗IC

使用特权

评论回复
板凳
llljh| | 2011-6-17 13:19 | 只看该作者
应该不是不稳的的问题吧

使用特权

评论回复
地板
zenwall|  楼主 | 2011-6-17 13:24 | 只看该作者
to 2L:79sh085

使用特权

评论回复
5
bananarer| | 2011-6-17 14:45 | 只看该作者
IO配置OK;
Uart好像也行的,timer2也行啊
你用示波器看看有否波形?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

141

帖子

1

粉丝