📄 sa485z.c
字号:
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////
#include <Reg935.h>
#include <intrins.h>
#include <cewen.h>
#include <I2C.H>
#include <max6675.h>
#include <UART2.H>
////////////////////////////////////////////////////
////////////////////////////////////////////////////
//////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//---------------------------------------------------------------------------------------
//delayms: 在使用内部RC震荡器时延时毫秒子程序
//入口参数: i 延时MS数
//出口参数: (无)
//---------------------------------------------------------------------------------------
void delayms(int i)
{
unsigned int k;
while(i>0)
{
for(k=0;k<670;k++);
i--;
}
}
//---------------------------------------------------------------------------------------
//InitTimer: 初始化系统定时器
//---------------------------------------------------------------------------------------
void InitTimer(void)
{
AUXR1=0x10; //ENT0=1,允许T0溢出触发输出
TMOD = 0x12; //TIMER0工作在MODE6,TIMER1工作在MODE1
TAMOD = 0x01;
//TH0=0x80; //赋初值
//TR0=1; //启动定时器0
ET1=1;
EA=1;
}
/////////////////////////////////////////////////////////////////////////////////////////
void Init_Serial(void)
{
PCON&=0x3f; /*UART 设置工作方式3,11 位数据*/
SCON=0xd0;
SSTAT=0x00;
BRGCON=0x00; /*装入波特率常数,1200bps*/
BRGR1=BRGR1_DATA;
BRGR0=BRGR0_DATA;
BRGCON=0x03;
ESR=0;
}
/////////////////////////////////////////////////////////////////////////////////////////
//初始化CPU——IO口
////////////////////////////////////////////////////////////////////////////////////////
void Init_cpuio(void)
{ P0M1=0x5e; //01011110 //P0.4~p0.1设置为仅为输入状态AD_io//
P0M2=0xC0; //11000000 //p0.0-key1,p.05-key2//p0.6-RX,p0.7-TX 无线接收发射//
/////////////////////////////////////////////////////////////////////////////////////
P1M1=0x3e; //00111110 //P10-RXD,P11-TXD
P1M2=0xff; //11111111 //P16-LED_RED,LED-GREE
/////////////////////////////////////////////////////////////////////////////////////
P2M1=0xef; //11101111 //RFC-P20,SD3-P21,
P2M2=0xff; //11111111 //SD2-P26,SD1-P27
}
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
void LM75A_Transition(unsigned char *T_dati,unsigned char *T_dat_af)
{unsigned char tdat1=0,tdat2=0;
uint t;
tdat1= *T_dati;
tdat2= *(T_dati+1);
t=((tdat2&0xe0)>>5)*125;
*(T_dat_af+2)=t&0x00ff;
*(T_dat_af+1)=(t&0xff00)>>8;
////////////////////////////////////////////////////////
*T_dat_af=tdat1;
}
///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
/*--------------------------------------------------*/
// main
/*--------------------------------------------------*/
main()
{
bit k;
uchar data MRD[2]={0};
uchar data MRD_T[3]={0};
uchar data MRD1[2]={0};
uchar data MRD1_T[3]={0};
uchar data ser_dat[60]={0};
uchar i,j,ki;
RFC=1;uart2txd=0;
LED_red=0;
LED_green=0;
LED_red=1;
LED_green=1;
InitTimer();
Init_Serial();
Init_cpuio();
/* ADINS=0x20; //0000 0001, 选择channel
ADMODA=0x10; //0000 0001, 选择转换工作模式:单次转换模式
ADMODB=0x00; //500Khz < ADC CLK < 3.3Mhz,,*/
k=I2C_Gets(0x48,0,0,MRD,2);
LM75A_Transition(MRD,MRD_T);
max6675_Read(MRD1);
max6675_Transition( MRD1,MRD1_T);
CTRL485=1;RI=0;
while(1){/*if(key1==0)
{for(i=0;i<60;i++)
{ACC=i;
TB8=P;TI=0;
SBUF=i;
while(!TI);
TI=0;
}
while(key1==0);
}
delayms(200);
LED_red=!LED_red;*/
for(i=0;i<60;i++)
{ while(!RI);
ACC=SBUF;
if(RB8==P){ser_dat[i]=SBUF;}
RI=0;
}
delayms(200);
LED_red=!LED_red;
uart2txd=0;
RFC=0;
delayms(10);
ser_dat[0]=0x35; ser_dat[1]=0x0d;
ser_dat[2]=0x01; ser_dat[3]=0x05;
ser_dat[4]=0x05; ser_dat[5]=0x02;
ser_dat[6]=0x00; ser_dat[7]=0x00;
ser_dat[8]=0x01; ser_dat[9]=0x00;
ser_dat[10]=0x00;ser_dat[11]=0x01;
ser_dat[12]=0x03;ser_dat[13]=0x08;
ser_dat[14]=0xd9;ser_dat[15]=0xff;
for(i=0;i<10;i++)uart2send(0x55);
for(i=0;i<2;i++)uart2send(0xff);
for(i=0;i<16;i++)uart2send(ser_dat[i]);
}
while(1){
while(1){
if(uart2read()==0x55)ki++;
else ki=0;
if(ki>5)break;}
while(1){if(uart2read()==0x00)break;}
for(i=0;i<60;i++)
{ser_dat[i]=uart2read();}
for(i=0;i<15;i++)
{if(ser_dat[i]!=0x00&&ser_dat[i]!=0x55)break;}
for(j=0;j<30;j++)
{if(ser_dat[j+i]!=(j+1))break;}
if(i>8&&j>=29)LED_red=!LED_red;
else LED_green=!LED_green;
if(i!=9){
delayms(200);
}
delayms(200);
LED_red=!LED_red;
}
while(1){uart2txd=0;
if(key1==0){for(i=0;i<20;i++)uart2send(0x55);
for(i=0;i<10;i++)uart2send(0x00);
for(i=0;i<30;i++)uart2send(i);
LED_red=!LED_red;}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -