基于飞思卡尔DZ60的AD 1302 KEY 485 CAN FLASH LCD程序
#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[
飞思卡尔DZ60AD 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)