📄 main.c
字号:
#include "p89v51.h"
#include "AD7705.h"
sbit X5645CS = P1^6;
unsigned char Send_flag; //1未发送完 0发送完成1帧
unsigned char send_buf[10]; //发送数组
/***********************************************
功能: 串口中断
************************************************/
void ser_interrupt() interrupt 4 using 2 /*串口中断*/
{
static unsigned char send_byte=0;
if(TI)
{
TI=0;
send_byte++;
if(send_byte>7)
{
send_byte=0;
Send_flag=0;
}
else SBUF=send_buf[send_byte];
}
}
/************************************************
功能:延时 NUM*200uS
************************************************/
void delay(unsigned int NUM)
{
unsigned int i;
unsigned char j;
for(i=NUM;i>0;i--)
for(j=200;j>0;j--);
}
/************************************************
功能:主函数
************************************************/
void main()
{
unsigned char i,stat=0x03;
unsigned int temp,ADcode1,ADcode2;
delay(5);
PCON=0x80;// 波特率翻倍
TMOD=0x21;// 定时器0 16位模式 定时器1 为波特率发生器
TCON=0x55;// 开启定时器
TH1 =0xFF;// 定时器1波特率为57600 0xFF (11.0592)
TL1 =0xFF;
SCON=0x50;// 串行口模式1
IEN0=0x90;
X5645CS = 1;
delay(1000);
adc_rest();
adc1_init(ADC_SELF,ADC_GAIN_128,ADC_BIPOLAR,ADC_50);
adc2_init(ADC_SELF,ADC_GAIN_128,ADC_BIPOLAR,ADC_50);
while(1)
{
temp = adc1_read_value(1);
if(temp)
{
ADcode1 = temp;
stat&=0x0e;
}
temp = adc2_read_value(1);
if(temp)
{
ADcode2 = temp;
stat&=0x0d;
}
if(Send_flag==0) //如果串口发送空闲
{
if(stat==0)
{
send_buf[6]=0xaa;
send_buf[5]=ADcode2;
send_buf[4]=ADcode2>>8;
send_buf[3]=ADcode1;
send_buf[2]=ADcode1>>8;
send_buf[1]=0x7f;
send_buf[0]=0xfe;
send_buf[7]=0;
for(i=0;i<7;i++)send_buf[7] += send_buf[i];
SBUF=send_buf[0]; //开始发送
Send_flag=1;
stat=0x03;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -