onbluesun 发表于 2012-5-25 22:36:01

定时器1不够用

STC12C5A60S2+ENC28j60+RS232+RS485需要用到三个定时器1作为波特率发生器,但是STC12C5A60S2只有1个定时器1和一个独立波特率发生器,还少一个怎么办?
RS232和RS485都需要用到波特率发生器我明白,但是ENC28j60也需要用到波特率发生器我不太明白,下面是ENC28j60驱动文件中使用T1的代码:void init_uart()
{
//        if (fre == 1200)       //only support 1200 Baud rate
//        {   
//                CKCON |=0x04;
                TMOD = 0x20;
                TH1= 0xFD;
                TL1= 0xFD;
                SCON = 0x50;
                PCON = PCON|0x80;
                TR1= 1;
//                TI = 1;
//                printf("Hello world!\r\n");
//         }
}大神们求助!

BDXing6 发表于 2012-5-25 22:38:09

用PCA还可以做两个定时器

onbluesun 发表于 2012-5-25 22:42:14

BDXing6 发表于 2012-5-25 22:38 static/image/common/back.gif
用PCA还可以做两个定时器

用PCA做的定时器可以用做波特率发生器吗?

BDXing6 发表于 2012-5-25 22:43:59

不能,但你要那多的波特率发生器干什么?
这个U最多只有两个串口,多了也没用吧。

onbluesun 发表于 2012-5-25 22:45:03

BDXing6 发表于 2012-5-25 22:43 static/image/common/back.gif
不能,但你要那多的波特率发生器干什么?
这个U最多只有两个串口,多了也没用吧。 ...

STC12C5A60S2+ENC28j60+RS232+RS485总共需要用到三个波特率发生器。。。

BDXing6 发表于 2012-5-25 22:45:59

你把232与485分开了?

onbluesun 发表于 2012-5-25 22:47:00

BDXing6 发表于 2012-5-25 22:45 static/image/common/back.gif
你把232与485分开了?

是的,单片机的双串口全用到了。

BDXing6 发表于 2012-5-25 22:47:27

你得先拿出硬件图,再考虑U资源的分配问题。

sun_sky 发表于 2012-5-25 22:47:37

ENC29J60不用定时器,这个程序初始化UART是为了调试用

onbluesun 发表于 2012-5-25 22:50:40

BDXing6 发表于 2012-5-25 22:47 static/image/common/back.gif
你得先拿出硬件图,再考虑U资源的分配问题。

单片机的串口1接的MAX232再接到RS232,串口2接的MAX485再接到RS485,木有电路图。。。直接焊的

onbluesun 发表于 2012-5-25 22:51:19

sun_sky 发表于 2012-5-25 22:47 static/image/common/back.gif
ENC29J60不用定时器,这个程序初始化UART是为了调试用

但是如果我把调用的这段程序删掉后,电脑就不能PING通单片机了。

onbluesun 发表于 2012-5-25 22:57:45

好了,谢谢大家,我把那段调试的程序删掉还不够,还要把ENC29J60驱动中调用这段程序的代码删掉。
页: [1]
查看完整版本: 定时器1不够用