#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位數(shù)據(jù),可變波特率
AUXR &= 0xBF; //定時器1時鐘為Fosc/12,即12T
AUXR &= 0xFE; //串口1選擇定時器1為波特率發(fā)生器
TMOD &= 0x0F; //清除定時器1模式位
TMOD |= 0x20; //設定定時器1為8位自動重裝方式
TL1 = 0xFD; //設定定時初值
TH1 = 0xFD; //設定定時器重裝值
ET1 = 0; //禁止定時器1中斷
TR1 = 1; //啟動定時器1
DR=0; //485控制端:“0”發(fā)送,“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--) //這個循環(huán)是毫秒數(shù)
for(y=110;y>0;y--); //這個循環(huán)是1毫秒循環(huán)次數(shù)
}
|