📄 wqxqz.c
字号:
{
CLRWDT();
uchar nollbyte1;
uchar tempp11=0;
READ_E2PROM(&nollbyte1,E2_ADDR_COUNTER,0X01);
CLRWDT();
if((nollbyte1 == 'x')||(nollbyte1==0xff))
{
CLRWDT();
rxtxdatabuf[6]=0xbb;
rxtxdatabuf[7]=0x0; //[8][9][10]
ACCOUNT_CHKSUM(11);
UART_T (fe,3);
UART_T (rxtxdatabuf,11);
}
else
{
CLRWDT();
rxtxdatabuf[6]=0xbb;
rxtxdatabuf[7]=nollbyte1; //[8][9][10]
UART_T (fe,3);
UART_T (rxtxdatabuf,11);
ACCOUNT_CHKSUM(11);
for(tempp11 = 0;tempp11 < nollbyte1;tempp11++)
{
CLRWDT();
READ_E2PROM( (&rxtxdatabuf[11]) , E2_ADDR_FRIST_ADDR + tempp11 * 4 , 0X04);
UART_T ( &(rxtxdatabuf[11]) , 4 );
rxtxchksum = rxtxchksum +rxtxdatabuf[11]+rxtxdatabuf[12]
+rxtxdatabuf[13]+rxtxdatabuf[14];
}
rxtxdatabuf[15] = 0x16;
UART_T ( &rxtxchksum , 1 );
UART_T ( &(rxtxdatabuf[15]) , 1 );
CLRWDT();
}
}
void SYS_CLEAR_ADDR(void)
{
CLRWDT();
uchar nollbyte = 'x';
WRITE_E2PROM(&nollbyte,E2_ADDR_COUNTER,0X01);//clear address must set e2prom addr20h to ''(nol)
READ_E2PROM(&nollbyte,E2_ADDR_COUNTER,0X01);
if(nollbyte == 'x')
{
CLRWDT();
rxtxdatabuf[6]=0xbb;
rxtxdatabuf[11]=ACCOUNT_CHKSUM(11);
UART_T (fe,3);
UART_T (rxtxdatabuf,13);
}
}
void SYS_READ_STATE(void)
{
CLRWDT();
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
// TEST POWER OUTPUT1 ON ///
//////////////////////////////////////////////////////////////
//
//
rxtxdatabuf[6]=0xbb;
rxtxdatabuf[7]=0x04;
if(P3OUT & 0X08)
rxtxdatabuf[11]=0x59;
else
rxtxdatabuf[11]=0x4E;
rxtxdatabuf[12]=ACCOUNT_CHKSUM(12);
rxtxdatabuf[13]=0X16;
UART_T (fe,3);
UART_T (rxtxdatabuf,14);
CLRWDT();
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
/*
CLRWDT();
rxtxdatabuf[6] = 0xbb;
rxtxdatabuf[7] = 0x04;
rxtxdatabuf[11] = whichway;
rxtxdatabuf[12] = ACCOUNT_CHKSUM(12);
rxtxdatabuf[13] = 0X16;
UART_T (fe,3);
UART_T (rxtxdatabuf,14);
CLRWDT();
*/
}
//////////////////download READ METER TIME/////////////////////
void SYS_DOWNLOAD_METER_DAY(void)
{
CLRWDT();
uchar tempset;
meterday[0] = rxtxdatabuf[11];
meterday[1] = rxtxdatabuf[12];
meterday[2] = rxtxdatabuf[13];
meterday[3] = rxtxdatabuf[14];
meterday[4] = rxtxdatabuf[15];
meterday[5] = rxtxdatabuf[16];
meterday[6] = rxtxdatabuf[17];
WRITE_E2PROM(meterday,E2_METER_DAY,0X07); //updata new metertime
CLRWDT();
tempset='S';
WRITE_E2PROM(&tempset,E2_METER_DAY_BESET,0X01); //WRITE METER_DAY BESET 'S'
rxtxdatabuf[6] = 0xbb;
rxtxdatabuf[7] = 0x03;
rxtxdatabuf[11] = ACCOUNT_CHKSUM(11);
rxtxdatabuf[12] = 0x16;
UART_T (fe,3);
UART_T (rxtxdatabuf,13);
CLRWDT();
}
//////////////////UPLOAD READ METER TIME//////////////////////
void SYS_UPLOAD_METER_DAY(void)
{
CLRWDT();
uchar tempset1;
READ_E2PROM(&tempset1,E2_METER_DAY_BESET,0X01);
if(tempset1 == 'S')
{
CLRWDT();
READ_E2PROM(meterday,E2_METER_DAY,0X07);
rxtxdatabuf[6] = 0xbb;
rxtxdatabuf[7] = 0x0a;
rxtxdatabuf[11] = meterday[0];
rxtxdatabuf[12] = meterday[1];
rxtxdatabuf[13] = meterday[2];
rxtxdatabuf[14] = meterday[3];
rxtxdatabuf[15] = meterday[4];
rxtxdatabuf[16] = meterday[5];
rxtxdatabuf[17] = meterday[6];
rxtxdatabuf[18] = ACCOUNT_CHKSUM(18);
rxtxdatabuf[19] = 0X16;
UART_T (fe,3);
UART_T (rxtxdatabuf,20);
CLRWDT();
}
else
{
CLRWDT();
rxtxdatabuf[6] = 0xbb;
rxtxdatabuf[11] = ACCOUNT_CHKSUM(11);
rxtxdatabuf[12] = 0x16;
UART_T (fe,3);
UART_T (rxtxdatabuf,13);
CLRWDT();
}
}
////////////////////CLEAR READ METER TIME/////////////////////
void SYS_CLEAR_METER_DAY(void)
{
CLRWDT();
meterday[0] = 0xff;
meterday[1] = 0xff;
meterday[2] = 0xff;
meterday[3] = 0xff;
meterday[4] = 0xff;
meterday[5] = 0xff;
meterday[6] = 0xff;
WRITE_E2PROM(meterday,E2_METER_DAY,0X07); //WRITE METER_DAY 0XFF
CLRWDT();
WRITE_E2PROM(&meterday[1],E2_METER_DAY_BESET,0X01); //WRITE METER_DAY BESET 0XFF
rxtxdatabuf[6] = 0xbb;
rxtxdatabuf[11] = ACCOUNT_CHKSUM(11);
CLRWDT();
UART_T (fe,3);
UART_T (rxtxdatabuf,13);
CLRWDT();
}
///length: how many byte codes before 'cs' code?
uchar ACCOUNT_CHKSUM(uchar length)
{
CLRWDT();
rxtxchksum=0;
uchar tempp2=0;
for(tempp2=0;tempp2<length;tempp2++)
rxtxchksum+=rxtxdatabuf[tempp2];
return rxtxchksum;
}
//////////////////////////////////////
//DS1302 DS1302
//DS1302 DS1302
//DS1302 DS1302
//DS1302 DS1302
//////////////////////////////////////
void ResetDs(void)
{
SCK_DSL;
_NOP();_NOP();
SRS_DSL;
_NOP();_NOP();
SRS_DSH;
}
//-------------------------------------------------
// Output one byte data
//-------------------------------------------------
void OutByte(uchar outdata)
{
uchar i;
for(i=0;i<8;i++)
{
if((outdata&1)==1) {
SDA_DSH;
}
else {
SDA_DSL;
}
_NOP();_NOP();
SCK_DSL;
outdata>>=1;
_NOP();_NOP();
SCK_DSH; //上升沿打入数据
_NOP();_NOP();
}
}
//-------------------------------------------------
//Get one byte of data
//-------------------------------------------------
uchar InByte(void)
{
uchar indata,i;
SDA_DSH;
SDA_SET_INPUT;
for(i=0,indata=0;i<8;i++)
{
SCK_DSH; //下降沿读入数据
_NOP();_NOP();
SCK_DSL;
_NOP();_NOP();
indata>>=1;
if(SDA_DS_INPUT == 0x02)
{
indata|=0x80;
}
else
indata &= (~0x80);
}
SDA_SET_OUTPUT;
return indata;
}
//----------------------------------------
// Wrirte one byte to pointed addr
//-----------------------------------------------
void WriteByteDs(uchar addr,uchar outdata)
{
ResetDs();
OutByte(addr);
OutByte(outdata);
SRS_DSL;
ResetDs();
}
//-------------------------------------------------
// Read one byte from pointed addr
//-------------------------------------------------
uchar ReadByteDs(uchar addr)
{
uchar indata;
ResetDs();
OutByte(addr);
indata=InByte();
ResetDs();
SRS_DSL;
return indata;
}
//-------------------------------------------------
//Read time from ds1302
//-------------------------------------------------
void ReadTime(uchar * time)
{
uchar i;
ResetDs();
OutByte(0xbf);
for(i=0;i<7;i++) {
*(time++)=InByte();
}
SRS_DSL;
ResetDs();
////?
SCK_DSH;//HIGH FOR LOWPOWER
}
//-------------------------------------------------
//Write new time to ds1302
//-------------------------------------------------
void WriteTime(uchar * time)
{
uchar i;
ResetDs();
OutByte(0xbe);
for(i=0;i<8;i++) {
OutByte(*(time++));
}
ResetDs();
SRS_DSL;
////?
SCK_DSH;//HIGH FOR LOWPOWER
}
void En_dswork(void)
{
ResetDs();
WriteByteDs(0x80,0); //允许时钟工作
ResetDs();
WriteByteDs(0x84,0); //24小时制
ResetDs();
WriteByteDs(0x8e,0); //write enable
ResetDs();
}
void TAKETELE(void)
{
CLRWDT();
UART_T (tele,6);
UART_T (telenum,5);
UART_T (&ent,1);
DELAY_ms(8000);
UART_T (theadd,4);
DELAY_ms(2);
UART_T (h0,5);
UART_T (&ent,1);
CLRWDT();
}
void RECTIME(void)
{
//uchar timetemp;
CLRWDT();
ReadTime(systemtime);
timer_min = BCDT0DEC(systemtime[1]);
if(timer_min>54)
timer_min = timer_min+5-60;
else
timer_min = timer_min+5;
CLRWDT();
timer_min = DECTOBCD (timer_min);
}
////////////////////////////////////////////////
//the BCDnumber to DECnumber
//
////////////////////////////////////////////////
uchar BCDT0DEC (uchar bcdtemp)
{
uchar tempa;
CLRWDT();
tempa = bcdtemp & 0x0f;
bcdtemp = (bcdtemp & 0xf0);
bcdtemp = (bcdtemp>>4);
bcdtemp = bcdtemp * 10;
CLRWDT();
return( bcdtemp+tempa );
}
////////////////////////////////////////////////
//the DECnumber to BCDnumber
//
////////////////////////////////////////////////
uchar DECTOBCD (uchar dectemp)
{
uchar tempb;
CLRWDT();
tempb = (dectemp % 10);
dectemp = dectemp-tempb;
dectemp = dectemp/10;
dectemp = dectemp<<4;
dectemp = dectemp+tempb;
CLRWDT();
return dectemp;
}
void LED_ONTIME(uchar mms)
{
CLRWDT();
LED_ON;
DELAY_ms(mms);
CLRWDT();
LED_OFF;
DELAY_ms(mms);
CLRWDT();
}
///////////////////////////////////////
//ledctlbb: 8bit define
//0:1-ON/0-OFF
//1:once time 1-LONG2s/0-SHORT1s
//2:once duty 1-%50/0-%20
//3:4:5:6:7:
//example
//0x03:open play with long %20
//0x07:open play with long %50
//0x01:open play with short %20
//0x05:open play with long %50
///////////////////////////////////////
void LEDPLAY (uchar ledctlbb)
{
if(ledctlbb | 0x01)
{
CCR2 = 0X1000;
CCTL2 = OUTMOD_7;
P1DIR |= 0x08; // P1.2 and P1.3 output
P1SEL |= 0x08; // P1.2 and P1.3 TA1/2 otions
TACTL |= MC0; // Start Timer_A in up mode
}
else
{
P1SEL &= (~0x08); // P1.2 and P1.3 TA1/2 otions
CCR2 = 0X0;
CCTL2 = OUTMOD_0;
}
}
///////////////claer wdt//////////////////
void CLRWDT(void)
{
//WDTCTL = WDTPW+WDTCNTCL+WDTSSEL;
}
////////////////led display//////////////////
//led on p1.3
//led on:1s,off:1s in one times
//uchar time : how many times for led display
/////////////////////////////////////////////
void LED_DISPLAY (uint times)
{
for(;times>1;times--)
{
LED_ON;
CLRWDT();
DELAY_ms(100);
LED_OFF;
CLRWDT();
DELAY_ms(60);
}
}
////////////////////////////////////////////////////////////////////////////////
void ANALYZE_WHICHWAY_POW(uchar tempway)
{
ALLOFF;
CLRWDT();
//systemflg |= 0x01;
DELAY_ms(5);
CLRWDT();
switch(tempway)
{
case 0x01: P_C_8_ON; break; //way1_power_out
case 0x02: P_C_4_ON; break; //way2_power_out
case 0x04: P_C_6_ON; break; //way3_power_out
case 0x08: P_C_2_ON; break; //way4_power_out
case 0x10: P_C_7_ON; break; //way5_power_out
case 0x20: P_C_3_ON; break; //way6_power_out
case 0x40: P_C_5_ON; break; //way7_power_out
case 0x80: P_C_1_ON; break; //way8_power_out
default: ALLOFF;
systemflg &= (~0x01);
whichway = 0X0;
break;
}
CLRWDT();
NO_ALLOFF; //enaible 74ls138
DELAY_ms(20);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -