打印

C52的T2真的这么难用吗!求助!!

[复制链接]
2225|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
甄蔡组合|  楼主 | 2007-2-5 14:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我已经把程序简化了。就只是T2 作波特率发生器,用示波器观察P3.1却没什么波形输出。请大虾指点指点!!
#include<reg52.h>
#include<stdio.h>
#include<math.h>


sbit P1_4=P1^4;

void time_init(void);

void main(void)

{
SP=0x50;
EA=0;
P1=0x00;

time_init();
while(1)
{
if(TF2==1)
TF2=0;
}
}

void time_init(void)
{


T2CON=0x30;//T2 work in baud rate
TH2=0xff;TL2=0x19;//0.25ms timed
P1_4=~P1^4;
TR2=1;ET2=1;EA=1;

}
到底是哪出了问题呢!!

相关帖子

沙发
mon51| | 2007-2-6 13:23 | 只看该作者

本来就简单,是你自己复杂话了。

欢迎到HTTP://WWW.MON51.CN/


void InitBps (unsigned long Bps ){
    unsigned int i;
    
    i=-(Fosc/Bps/32);
    RCAP2L=i;
    RCAP2H=i>>8;
    T2CON=0x34;
    SCON=0x5a;    //    mode 1 用于PC接收!0101 1010B
}

使用特权

评论回复
板凳
vvvlon| | 2007-2-6 14:35 | 只看该作者

这样初始化看行不行

EA = 0;//关中断
uartmode = 1;//模式1
SCON = SCON | (uartmode<<6);//模式选择
SCON = SCON & 0xdf;//多机通信控制位
SCON = SCON |0x10;//允许接收
SCON = SCON & 0xf0;//TB8=0 RB8=0 TI=0 RI=0

T2CON = T2CON&0x3f//TF2=0 EXF2=0
T2CON = T2CON|0x30//串口1选择T2为波特率时钟
T2CON = T2CON&0xf7;//EXEN2=0
T2CON = T2CON&0xfb;//TR2 = 0;//关闭定时器2    
T2CON = T2CON&0xfd;//定时器工作方式
T2CON = T2CON&0xfe;//自动重载

PCON = PCON | 0x80;//SMOD=1

baudrate = 9600;
OCS = 22118400;
TH2 = (65536 - OCS/32/baudrate)/256;
TL2 = (65536 - OCS/32/baudrate)%256;
RCAP2H = (65536 - OCS/32/baudrate)/256;
RCAP2L = (65536 - OCS/32/baudrate)%256;
ET2= 0;//禁止T2中断
ES = 1;//启动串口1
TR2 = 1;//启动定时器2
EA = 1;//开中断

使用特权

评论回复
地板
甄蔡组合|  楼主 | 2007-2-7 08:39 | 只看该作者

谢谢

谢谢!楼上的。我试试。

使用特权

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

本版积分规则

33

主题

198

帖子

0

粉丝