打印

困扰我N天的定时器2 波特率的使用(附程序)

[复制链接]
6105|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
neng10128|  楼主 | 2008-12-29 15:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题原因已经找出来了,谢谢大家类!
我差点被雷倒啊,我用的单片机根本没有定时器2哇。故软件模拟可以,烧写到片上就不行了。  血的教训啊,现在研究它的PCA的定时器去了,只能用那个定时器了。这个项目至少要3个定时器,来实现上位机对一个云台的控制。再次感谢21IC的网友:quakegod ,一语雷倒我啊!我可几天对它没辙了。。。。。。
问题:下载到单片机(STC12C4052AD),开串口调试助手(波特率57600),接受不收到任何东西.  因为项目已经占用了T0 T1,故必须用T2了。 求各位不吝赐教。 谢谢了

下面的程序是打个比方的,根本收不到任何东西。

#include <STC12C2052AD.H>
#define uchar unsigned char
#define uint unsigned int
void delay(uint x)                    //延时x=1为1ms
{
    uint y,z;
    for(y=112;y>0;y--)
        for(z=x;z>0;z--);
}


void send_char(uchar w)               //串口发送一个字符
{
    SBUF = w;
    while(TI == 0);
    TI = 0;
}
void main(void)

{        
    SCON = 0x50;        // SM0 SM1 SM2 REN TB8 RB8 TI RI:9 bit
    RCAP2H = 0xff;      //波特率 57600 
    RCAP2L = 0xfa;
    TH2 = 0xff;
    TL2 = 0xfa;   
    PCON = 0x00;        // baut rate, 80h:double; 00h: normal       
    T2CON = 0x34;           // t2 做波特率发生器  57600  
    ES = 1;             // 串口中断允许   1-enable             
//  PS = 0;             // 串口中断优先级 1-高,0-低         
    EA = 1;         //总中断开关
    while(1)
       {
            send_char(0x88);
            delay(10);
       }

}

相关帖子

沙发
neng10128|  楼主 | 2008-12-29 15:58 | 只看该作者

麻烦大家看看,指点新手一下吧

我看了STC的PDF,查了很多网上的例子。都不成啊,板子也焊了两块啊。要郁闷死了。大家帮帮忙吧!

使用特权

评论回复
板凳
neng10128|  楼主 | 2008-12-29 16:24 | 只看该作者

在线求救啊

高人请留步,指点一下啊!

使用特权

评论回复
地板
lxlfriend| | 2008-12-29 17:07 | 只看该作者

困扰我N天的定时器2 波特率的使用

你量一下pin上有没波形输出

使用特权

评论回复
5
computer00| | 2008-12-29 18:14 | 只看该作者

开了中断又不写中断服务程序?

波特率跟系统时钟频率有关,你先使用keil纯软件仿真,看波特率是否对了。

使用特权

评论回复
6
dong1021| | 2008-12-30 10:59 | 只看该作者

你用的是485还是232通讯呀

485通讯就有问题呀

使用特权

评论回复
7
dong1021| | 2008-12-30 11:01 | 只看该作者

还有你这只是部分程序呀

而且你查硬件了吗,硬件可能有问题

使用特权

评论回复
8
大漠孤烟| | 2008-12-30 12:16 | 只看该作者

在UV2上模拟可以输出0x88

还是检查你硬件连接以及时钟频率吧

使用特权

评论回复
9
neng10128|  楼主 | 2008-12-30 14:06 | 只看该作者

谢谢楼上各路大侠

谢谢楼上各路大侠

圈圈 正解呀!

KEIL中模拟是可以的,跟电脑系统时钟果然不兼容。
调试暂时用232通信,PCB上我画的是485跟云台和相机通信用的。
不过是有点奇怪的,用T1的话是可以的。用T2的话电脑的串口用具好像不兼容。

还有个问题哦,项目里是电脑的上位机来跟单片机通信的。这样不兼容的话,我是不是要用T1定时器来做串口通信了。
还是只是串口调试工具不行,实际上上位机跟单片机的通信是正常的?

使用特权

评论回复
10
草履虫| | 2008-12-30 23:54 | 只看该作者

我也曾经用串口调试工具。

那个东西对于初期调试(没有经过测试的串口程序)是不太好用的。最好是用示波器加I/O的方式进行调试或者直接看KEIL的仿真(挺好用的,我是用仿真,直接改定时器的值,看波特率变化)。

使用特权

评论回复
11
quakegod| | 2008-12-31 01:45 | 只看该作者

你用的那个STC12C4052AD单片机根本就没有T2定时器

如果还要用定时器,就用它那里的PCA单元吧

使用特权

评论回复
12
eduhf_123| | 2009-1-5 17:36 | 只看该作者

标准51在逻辑上可以有3个定时器

用它的T1工作在方式2做波特率发生器,然后T0工作在方式3拆分成两个定时器用。

使用特权

评论回复
13
hotpower| | 2009-1-5 18:00 | 只看该作者

T1简单

使用特权

评论回复
14
hx353105458| | 2013-6-6 07:54 | 只看该作者
资料公布全一些呀  着就几行代码怎么看呀

使用特权

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

本版积分规则

4

主题

16

帖子

0

粉丝