/****************************************************
项 目:韦根协议
设 计 人:
设计意义:通过该程序可以了解波特率,定时器设置方法,以及中断原理
定时器工作原理。
*****************************************************/
#include <reg51.h>// 51寄存器库
#include<math.h>
#define uchar unsigned char
char array[26]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
unsigned char temp=0;
uchar i=0,flag=0;
uchar i1,i2,i3,i4,count=0;
sbit pp1=P2^0; //定义蜂鸣器的端口
sbit RI485=P2^1;//定义485芯片的使能控制端口
void delay(uchar x)
{
uchar a;
for(a=0;a<250;a++)
for(x;x>0;x--);
}
/****************************************************
函数:串口初始化函数
*****************************************************/
void InitUART()
{
SCON=0x50; //串行口工作方式为1
TMOD=0x21; //设置波特率为9600,通过设置定时器1 的工作方式为2和初始值
PCON=0x00; //设置电源控制寄存器 波特率不变
PX0=1;
PX1=1;
TH1=0xfd;
TL1=0xfd;
TR1=1;//启动定时器1
ES= 1;//串行中断允许
IT0=1;//外部中断0下降沿触发
EX0=1;//外部中断0允许
IT1=1;//外部中断1下降沿触发
EX1=1;//外部中断1允许
EA=1;//开启总中断
}
/****************************************************
函数:串口发送数据函数
*****************************************************/
void fasong()
{
RI485=1; //MAX485处于发送状态
temp=0;
TI=0;
for(i2=1;i2<9;i2++)
{
temp+=array[i2]*pow(2,8-i2);//转换成为十进制发送
}
SBUF=temp;
while(!TI);