微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于飞思卡尔DZ60的AD 1302 KEY 485 CAN FLASH LCD程序

基于飞思卡尔DZ60的AD 1302 KEY 485 CAN FLASH LCD程序

时间:12-01 来源:互联网 点击:

#define DI1 PTGD_PTGD2 //外触发1----->

#define DI2 PTED_PTED5 //外触发2----->

#define DI3 PTED_PTED4 //外触发3----->

#define DI4 PTED_PTED3 //外触发4----->

#define JDQ1 PTCD_PTCD4 //继电器1----->

#define JDQ2 PTAD_PTAD5 //继电器2----->

#define JDQ3 PTBD_PTBD5 //继电器3----->

#define JDQ4 PTAD_PTAD6 //继电器4----->

#define JDQ5 PTBD_PTBD6 //继电器5----->

#define DE485 PTED_PTED2 //485 T R切换----->

if ( value_buf[i]>

if(MonthC1>

minutes=((ReadValue&0x70)>>

day=((ReadValue&0x70)>>

year=((ReadValue&0x70)>>

if(MonthC2>

nian=((temp&0x70)>>

if(nian>

if(MonthC3>

I1send (MW34L);

SCI1send (0x00); //MW35

SCI1send (MonthF2);

SCI1send (0x00); //MW36

SCI1send (DateF2);

SCI1send (SendSum); //累加和

asm(nop);

Delay(10);

SCI1send (0x01); //站号

SCI1send (0x52); //读命令

SCI1send (0x13); //19号地址判断在哪个页面

SCI1send (0x01); //1个地址

SCI1send (0x67);

Delay(1); //必须加段延时确保数据发送出去

DE485 = 0; //485切换到接收状态

asm(nop);

}

}

}

}

//==========================================

//定时器1中断函数 中断向量号11 250毫秒定时

//==========================================

void interrupt 11 TPM1_ISR(void)

{

static byte i,j,k;

if((TPM1SC & 0x80)==0x80)

{

TPM1SC_TOF=0;

ADSET = 1;

}

i++;

if(!PAGE8) //

{

j = 0;

}

else

{

j++;

if(j>PAGE8) //大于5秒

{

j = 0;

RR = 2; //转判断ENT键是否按下程序

PAGE8 = 0;

}

}

if(!TENT)

{

k = 0;

}

else

{

k++;

if(k>TENT)

{

k = 0;

T20 = 1; //如果ENT键1分钟内没有按下则跳转到2界面(显示电压,电流)

TENT = 0;

}

}

if(i>3)

{

i = 0;

ReadTimeFlag = 1;

}

}

//==========================================

//串口接收中断 VectorNumber_Vsci1rx 中断向量号17

//==========================================

interrupt VectorNumber_Vsci1rx void SCI_RE(void)

{

static byte j;

static byte i;

byte Rcv;

if(SCI1S1_RDRF) //串口接收中断标志位

{ //清标志位

SCI1S1_RDRF = 0; //接收数据送缓存

Rcv = SCI1D;

//*********************读页面数值*****************************

if(RR == 1)

{

if(Rcv == 0x13)

{

j = 1;

Buffer[0]=Rcv;

}

else

{

if(j < 5) //5个字节

{

Buffer[j] = Rcv;

j++;

}

}

if((Buffer[3]==0x08)&&(Buffer[4]==0x1d)) //如果检测到是第8页面则处理数据

{

PAGE8 =20; //如果停在8页面设置一个计数器,5秒时间内如果还在则认为在修改时间

TENT = 240; //2分钟内ENT键没有按下,则跳转到2页面;

}

if(Buffer[3]!=0x08) //如果跳转到别的界面,马上清零

{

PAGE8 = 0;

TENT = 0;

RR = 1; //回到正常状态

}

}

//****************判断ENT键按下与否******************************* ENT键按下的话20站号变成1

if(RR ==2)

{

if(Rcv == 0x14)

{

j = 1;

Buffer[0]=Rcv;

}

else

{

if(j < 5) //5个字节

{

Buffer[j] = Rcv;

j++;

}

}

if((Buffer[3]==0x01)&&(Buffer[4]==0x17)) //ENT键已经按下

{

RR = 3;

}

}

//******************************读取要修改的时间*******************************

if(RR ==4) //此时ENT已经清零

{

Buffer[j]=Rcv;

if(!i)

{

if(Buffer[j]== 0x0b) //接收到11

{

Buffer[0] =0x0b;

j=1; //才开始类加

}

if(Buffer[1]== 0x06)

{

i = 1;

}

}

if(i)

{

if(j< 15)

{

Buffer[j] = Rcv;

j++;

}

}

if(j==15)

{

i = 0;

}

if(Buffer[14]==(Buffer[3]+Buffer[5]+Buffer[7]+Buffer[9]+Buffer[11]+Buffer[13]+0x12))

{

RR = 0;

time_buf1[1] = Buffer[3] ; //年

time_buf1[2] = Buffer[5] ; //月

time_buf1[3] = Buffer[7] ; //日

time_buf1[4] = Buffer[9] ; //时

time_buf1[5] = Buffer[11]; //分

time_buf1[6] = Buffer[13]; //秒

}

}

}

}

//==========================================

//ADC转换完成中断服务程序 VectorNumber_Vadc中断向量号23

//==========================================

interrupt VectorNumber_Vadc void ADC_ISR(void)

{

static byte count;

switch(ADch_s)

{

case 19:

ADCbuffer1[

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top