📄 sub.c
字号:
#include <inc.h>
void delay(unsigned int i)
{
while(i != 0)
{
WDI = ~WDI;
i--;
}
}
void Beep(unsigned int t )
{
while(t--)
{
beep=0;
}
beep=1;
}
unsigned char scankey(void)
{
unsigned char key;
BUTTON1=1;
// BUTTON2=1;
//key=0;
delay(10);
key=BUTTON1;
if(BUTTON1==0) delay(50);
if(BUTTON1==0)
{
while(BUTTON1==0);
return 1;
}
else return 0;
//key=0;
delay(10);
/* key=BUTTON2;
if(BUTTON2==0) delay(100);
if(BUTTON2==0)
{
while(BUTTON2==0);
return 2;
} */
/// else return 0;
/* if(BUTTON1==0) i=1;
goto button_exit;
if(BUTTON2==0) i=2;
goto button_exit;
button_exit:
key=i;
if(key==0&&KeyCount<=KEY_DLY_COUNT)
{
KeyCount=0;
return;
}
if(key==0&&KeyCount>KEY_DLY_COUNT)
{
KeyCount=0;
NewKey = 1;
KeyValue = PrevKey;
// Beep(8);
return;
}
if(key!=0&&KeyCount<220)
{
KeyCount++;
PrevKey=key;
return;
}
if(key!=0&&KeyCount>=220)
{
if( ++KeyRepeat > 100 )
{
KeyRepeat = 0;
NewKey = 1;
KeyValue = PrevKey;
// Beep(8);
return;
}
} */
}
void out595()
{
unsigned char i;
for(i=0x80;i!=0;i/=2)
{
SER = 1;
if( (i & VAL_595) == 0 ) SER = 0;
delay(2);
SRCLK = 0;
delay(2);
SRCLK = 1;
delay(2);
}
RCLK = 0;
delay(2);
RCLK = 1;
}
void timer0() interrupt 1 using 2
{
TR0=0;
TL0=0xfe;
TH0=0xed; //5ms定时
TR0=1;
WDI = ~WDI;
del_coun++;
if(del_coun>=200)
{
del_coun=0;
addtime();
}
display();
}
void addtime(void)
{
js_coun0++;
if(key1)
{
js_coun1++;
if(js_coun1>=60) js_coun1=60;
if(js60s_flag==0 && js_coun1>=60) js60s_flag=1;
}
}
void display(void)
{
switch(DISP_COUN)
{
case 0:
VAL_595 = DISP_LED0;
out595();
L1= 0;
L2= 1;
// L3= 1;
// L4= 1;
break;
case 1:
VAL_595 = DISP_LED1;
out595();
L1= 1;
L2= 0;
// L3= 1;
// L4= 1;
break;
/* case 2:
VAL_595 = DISP_LED2;
out595();
L1= 1;
L2= 1;
L3= 0;
L4= 1;
break;
case 3:
VAL_595 = DISP_LED3;
out595();
L1= 1;
L2= 1;
L3= 1;
L4= 0;
break; */
}
if(DISP_COUN++ >=2) DISP_COUN=0;
}
void keyloop(void)
{
unsigned char i;
for(i=0;i<4;i++)
{
KeyValue=scankey();
switch(KeyValue)
{
case 0: break;
case 1: key1=~key1;
if( key1) js_coun1=0;
break;
/* case 2: key2=~key2;
if( key2) js_coun2=0;
break; */
}
if(key1)
{
DISP_LED0=BCD[(js_coun1/10)%10];
DISP_LED1=BCD[js_coun1%10];
}
else
{
DISP_LED0 = 0xc0;
DISP_LED1 = 0xc0;
js60s_flag=0;
}
/* if(key2)
{
DISP_LED2=BCD[(js_coun2/10)%10];
DISP_LED3=BCD[js_coun2%10];
}
else
{
DISP_LED2 = 0xc0;
DISP_LED3 = 0xc0;
} */
}
}
unsigned int calcCRC(unsigned char sendLen)
{
unsigned int CRC=0xffff;
bit f;
unsigned char i,j;
for(i=0;i<sendLen;i++)
{
CRC ^= sendData[i];
for(j=0;j<8;j++)
{
if( (CRC&1) != 0)
{
f = true;
}
else
{
f = false;
}
CRC >>= 1;
if(f)
{
CRC ^= 0xA001;
}
}
}
return CRC;
}
/////////控制函数
void net_send(unsigned char c)
{
RX_DX = 1;
SBUF=c;
while (!TI) ;
TI = 0;
RX_DX = 0;
}
bit net_sendData() ////发送
{
unsigned char i;
for(i=0;i<commInLong;i++)
{
net_send(sendData[i]);
}
return 0;
}
unsigned char whp_getTemp()
{
unsigned char sendLen;
unsigned int i;
sendData[0] = 1;
sendData[1] = 4;
sendData[2] = 0;
sendData[3] = 0;
sendData[4] = 0;
sendData[5] = 1;
sendLen = 6;
i = calcCRC(sendLen);
sendData[6] = (unsigned char)(i & 0xff);
sendData[7] = (unsigned char)(i>>8);
commInLong=8;
commOutLong = 0;
pVal=0;
if(net_sendData()!=0)
{
return 1;
}
incept_flag = 1;
delay(5000);
incept_flag = 0;
// pVal=commOutLong;
// if(c!=9)
// {
// return 2;
// }
/* if( (receData[3] & 0x80) == 1)
{
receData[3] &= 0x7f;
pVal = receData[3]*256+receData[4];
// pVal =0- pVal;
}
else*/ pVal=receData[3]*256+receData[4];
pVal =pVal/25-100;
return 0;
delay(2000);
}
unsigned char whp_getSvTemp()
{
unsigned char sendLen;
unsigned int i;
sendData[0] = 1;
sendData[1] = 3;
sendData[2] = 0;
sendData[3] = 2;
sendData[4] = 0;
sendData[5] = 1;
sendLen = 6;
i = calcCRC(sendLen);
sendData[6] = (unsigned char)(i & 0xff);
sendData[7] = (unsigned char)(i>>8);
commInLong=8;
if(net_sendData()!=0)
{
return 1;
}
commOutLong = 0;
incept_flag = 1;
delay(5000);
incept_flag = 0;
if(commOutLong<7)
{
return 2;
}
/* if( (receData[3] & 0x80) == 1)
{
receData[3] &= 0x7f;
sVal=receData[3]*256+receData[4];
// sVal =0 - sVal;
}
else*/ sVal=(receData[3]*256+receData[4]);
sVal =sVal/25-100;
return 0;
delay(2000);
}
void serial() interrupt 4 using 2
{
unsigned char c;
if(_testbit_(RI))
{
c = SBUF;
if(incept_flag == 1)
{
if(commOutLong<15)
{
receData[commOutLong++]=c;
}
}
}
}
/*
unsigned char dprintf(char *fmt, ...)
{
va_list arg_ptr;
unsigned char uLen;
va_start(arg_ptr, fmt);
uLen = (unsigned char)vsprintf(sendData, fmt, arg_ptr);
va_end(arg_ptr);
return uLen;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -