#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar t;
sfr AUXR=0x8e;
sbit DR = P1^1;
void delay(uint z);
void main()
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
DR=0; //485控制端:“0”发送,“1”接收
t=0;
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TMOD |=0x01; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0xEE; //设置定时初值
TF0 = 0; //清除TF0标志
ET0=1;
TR0 = 1;
ES=1;
EA=1;
while(1)
{
if(t==1000)
{
t=0;
SBUF=0x02;
while(!TI);
TI=0;
ES=1;
}
//delay(5000);
}
}
void ser() interrupt 4
{
RI=0;
/* a=SBUF;
ptr[len++]=a;
if(len>=3)
len=0;*/
}
void timer0() interrupt 1
{
TL0 = 0x00; //设置定时初值
TH0 = 0xEE;
t++;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--) //这个循环是毫秒数
for(y=110;y>0;y--); //这个循环是1毫秒循环次数
}
|