|
//定时器与串行通信如果要同时使用,记住要把记时器中的模式设为记数模式,不然是不成功的,我调试了两天两夜///才发现这个问题,,唉,,,,
void t0init()//定时器0初始化函数
{
TMOD|=0x01; //定时器工作在方式1
IE|=0x82;
TH0=0x4c;//50毫秒对TH0 TL0赋值
TL0=0x00;//(65536-50000)%256; //使定时器0.05秒中断一次
TR0=1; //开始计时
IP=0x02;
}
void infirst(void)//串行通信的初始化
{
SCON=0x50; //串行口工作方式1, 10位异步收发 波特率由定时器来控制
TMOD |=0x20; //定时器工作方式设置,启用定时器1,工作方式2
PCON |=0x80; //电源控制设置SMOD 为1
TH1 =0xf4; //设置波特率为4800 晶振是11.0592Mhz 这一个波特率一定要经过计算出来的,
IE |=0x90; //中断允许寄存器设置,其实就是设EA=1 CPU开中断 还有设置ES=1 串行口开中断
TR1 =1; //定时器1启动
}
|
|