📄 demo.c
字号:
/*------------------------------------------------------------------------
DEMO.C
Fireware for XYYQ demo board
Copyright 2000 Xingyuan Instrument and equipment Co.,Ltd
-------------------------------------------------------------------------*/
#include <reg51.h>
#include "demo.h"
struct _Userdate Userdate;
BYTE Flag_rs232=0,recbyte[3];
//========================================================================
// INIT
//========================================================================
void init(void)
{
ScreenEnable = 0; //SYNC ON
LoadEEPROM0(); //read user date from eeprom
//init7219
setMAXICmode(XF,0); //LED normal operation
setMAXICmode(X9,0); //No decode for digits 7-0
setMAXICmode(XA,X5); //LED display brightness
setMAXICmode(XB,X5); //display digits 012345
setMAXICmode(XC,1); //normal operation
}
//========================================================================
//display picture
//=======================================================================
void showPictureOnLCD(void)
{
write3106();
write3500();
write2111();
AdjustPow( Userdate.value4.items.m_pow);
LoadEEPROM0(); //read user date from eeprom
write3500AddrByte(0x02,Userdate.value4.items.moveRightorLeft);
write3500AddrByte(0x03,Userdate.value4.items.moveUporDown);
init_M62393();//add by chwh 2002/7/22
}
/**********add RS232 interrupt*****************/
/*************for RS232 init**********************/
void myinit(void)
{ TMOD=0x21;//T1 is mode 1
TL1=0xfa; //set buad rate is 4800
TH1=0xfa;
SCON=0x50; //set rs232 is mode 1 and enable receive
TR1=1; //start count T1;
IP=0x02;
EA=1; //enable cpu interrupt
ES=1; //ebable rs232
ET0=1; //ENABLE to interrupt
TR0=1;
}
/************************************/
/*****************do the event rs232********************/
void do_RS232(void)
{
if(recbyte[0]==0xfb)
{ SBUF=0xfb;
while(TI==0);TI=0;
Isp_64K_4K();
}
while(RI==0); RI=0;
recbyte[1]=SBUF;
while(RI==0); RI=0;
recbyte[2]=SBUF;
switch(recbyte[0])
{
case 0x11: SBUF=recbyte[0];while(TI==0);TI=0;
break;//detect the rs232
case 0x28: Set_M62393(recbyte[1],recbyte[2]);
switch(recbyte[1])
{
case 0x01:Userdate.value3.items.m393_clplev =recbyte[2];break;
case 0x02:Userdate.value3.items.m393_gain =recbyte[2];break;
case 0x03:Userdate.value3.items.m393_bias =recbyte[2];break;
case 0x04:Userdate.value3.items.m393_prglev =recbyte[2];break;
case 0x05:Userdate.value3.items.m393_sidlev =recbyte[2];break;
case 0x06:Userdate.value3.items.m393_dlcyr =recbyte[2];break;
case 0x07:Userdate.value3.items.m393_dlcyg =recbyte[2];break;
case 0x08:Userdate.value3.items.m393_dlcyb =recbyte[2];break;
}
break;//set m62393
case 0x29: //send 9 bytes data
SBUF=Userdate.value3.items.m393_clplev;
while(TI==0);TI=0;
SBUF=Userdate.value3.items.m393_gain;
while(TI==0);TI=0;
SBUF=Userdate.value3.items.m393_bias;
while(TI==0);TI=0;
SBUF=Userdate.value3.items.m393_prglev;
while(TI==0);TI=0;
SBUF=Userdate.value3.items.m393_sidlev;
while(TI==0);TI=0;
////////////////////////
SBUF=Userdate.value3.items.m393_dlcyr;
while(TI==0);TI=0;
SBUF=Userdate.value3.items.m393_dlcyg;
while(TI==0);TI=0;
SBUF=Userdate.value3.items.m393_dlcyb;
while(TI==0);TI=0;
SBUF=0x29;
while(TI==0);TI=0;
break;
case 0x2A: REST_M62393=~REST_M62393;
break;
case 0x2c:
if(recbyte[2]==0xdd)
{
SBUF=read24c16(recbyte[1]);
while(!TI);TI=0;
SBUF=0X11;
while(!TI);TI=0;
}
else
{
SBUF=Userdate.value2.items.minute ;
while(!TI);TI=0;
SBUF=(BYTE)(Userdate.value2.items.hour>>8);
while(!TI);TI=0;
SBUF=(BYTE)(Userdate.value2.items.hour);
while(!TI);TI=0;
SBUF=read24c16(50);
while(!TI);TI=0;
SBUF=read24c16(51); //height hour
while(!TI);TI=0;
SBUF=read24c16(52); //low hour
while(!TI);TI=0;
}
break;
case 0x2d:
if( recbyte[1]==10)
{ Userdate.value2.items.minute=recbyte[2];
write24c16(50,Userdate.value2.items.minute);
}
else if( recbyte[1]==11)
{ Userdate.value2.bytes[3]=recbyte[2]; //hour height
write24c16(51,Userdate.value2.bytes[3]);
}
else if( recbyte[1]==12)
{ Userdate.value2.bytes[4]=recbyte[2];
write24c16(52, Userdate.value2.bytes[4]); //hour low
}
else
write24c16(recbyte[1],recbyte[2]);
break;
case 0xaa:UILevel=recbyte[1];
//SBUF=recbyte[0];while(TI==0);TI=0;
ButtonEnterUp();break; //EnterUp key
case 0xb0:seutity();break; //set secuity
case 0xb1:reset_CPU();break;
case 0xb5:
readlock();
break;
case 0xb6:
setlock();
break;
case 0xb7: readboardinfo();
break;
case 0xb8: setboardinfo();
break;
case 0xbb:UILevel=recbyte[1];
//SBUF=recbyte[0];while(TI==0);TI=0;
ButtonEnterDown();break; //EnterDown key
case 0xcc:UILevel=recbyte[1];
//SBUF=recbyte[0];while(TI==0);TI=0;
if(UILevel!=0)
ButtonMns();
else DefaultOnLED();
break; //Mns key
case 0xdd:UILevel=recbyte[1];
//SBUF=recbyte[0];while(TI==0);TI=0;
ButtonPlus();break; //Plus key
case 0xee://UILevel=recbyte[1];
//SBUF=recbyte[0];while(TI==0);TI=0;
ButtonSave();
break; //Save key
case 0xff:sendparamtopc(); break;
case 0xfc: ScreenEnable = 0; //SYNC ON
mywrite3106();
write2111();
DefaultOnLED(); //default date display on LED(0 0 H H H H)
break;//use pc to modify 3106
case 0xfe:
if(recbyte[1]==0x09)Userdate.value4.items.m_address9=recbyte[2];
else if(recbyte[1]==0x02)Userdate.value4.items.moveRightorLeft=recbyte[2];
else if(recbyte[1]==0x03)Userdate.value4.items.moveUporDown=recbyte[2];
write3500AddrByte(recbyte[1],recbyte[2]);
break;//use pc modfily 3500 param
}
Flag_rs232=0;
ES=1;
IP=0X02;
EA=1;
}
/*************up is new add to test!*********************/
/////////////////////////////////////////////////////////////////////////
//
// Main Function
//
/////////////////////////////////////////////////////////////////////////
BYTE UILevel = 0,LEDdate; //button status and display date of LED
void main(void)
{
WORD idata TimeFlag=0;
BYTE idata ssecond=0;
myinit(); //init rs232
init(); //init LED register and load eeprom
showPictureOnLCD(); //display picture
DefaultOnLED(); //default date display on LED(0 0 H H H H)
while(1)
{ if(Flag_rs232)do_RS232(); //if is the pc control
scanButton();
if(TimeFlag !=( InterruptCount / 1000))
{//光源寿命计算
TimeFlag = InterruptCount / 1000;
P35=~P35; // toggle LED
ssecond++;
if(ssecond>59)
{
ssecond = 0;
Userdate.value2.items.minute++;
if(Userdate.value2.items.minute>59)
{
Userdate.value2.items.minute = 0;
Userdate.value2.items.hour++;
}
//SaveEEPROM0(); //change by chwh 2002/7/19
write24c16(50,Userdate.value2.items.minute);
write24c16(51,(BYTE)(Userdate.value2.bytes[3]));
write24c16(52,(BYTE)Userdate.value2.bytes[4]);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -