📄 set.c
字号:
#include <reg2051.h>
#include "Dialer_program.h"
unsigned char data address;
//unsigned char data key;
unsigned char data setkeycount;
unsigned char *ptr;
unsigned char ipRouter[3];
unsigned char data keytemp0;
unsigned char data keytemp1;
unsigned char data keytemp2;
unsigned char data key;
bit setbit;
bit keyack;
#define bcbcbb 80 //add + 7
#define bcbc04 12 //add + 2
#define bcbc05 19 //add + 7
#define bcbc06 27 //add + 9
#define bcbc07 37 //add + 9
#define bccc 47 //add + 32
#define bcbc56 88 //add + 9
#define bcbc08 98 //add + 7
#define bcbc03 106 //add + 2
#define bcbc50 108 //add + 2
#define bccb 106
#define bbccc 0x12 //add = 8 char
#define bbccb 0x12 //add = 8 char
#define bbcbb 0x12 //add = 4 char psid
#define error_nkey 0xffff
void setkey(void){
static unsigned char odd = 1;
if (setbit & keyack){
if (odd){
keybuf[nkey] = key * 0x10;
odd=~odd;
}
else {
keybuf[nkey] = keybuf[nkey] | key;
odd = ~odd;
nkey++;
}
keyack = 0;
switch (nkey){
case 0x00: case 0x01:case 0x02:case 0x04:
setkeycount ++;
nkey++; //*
break;
case 0x03:
switch (keybuf[0]*0x100+keybuf[1]){
case 0xbcbc:
setkeycount++;
nkey ++;
break;
case 0xbccc:
setkeycount++;
ptr = &p[0];
nkey = bccc;
break;
case 0xbbcc:
setkeycount++;
nkey = bccb;
break;
case 0xbccb:
setkeycount++;
nkey = bccb;
break;
default:
play(errormusic);
setkeycount=0;
nkey = error_nkey;
break;
}
break;
case 0x05:
switch (keybuf[2]){
case 0x00: //复位
ipRouter[0]=0x00;
ipRouter[1]=0x11;
ipRouter[2]=0x1f;
// EEWritePage (&ipRouter[0], (ipRouter_add/0x100), (ipRouter_add%0x100), 3); //读IP路由信息
case 0x08: //设定本地手机路由
setkeycount++;
nkey = bcbc08;
play(suremusic);
break;
default:
play(errormusic);
nkey = error_nkey;
break;
}
break;
//*********************************************************************设置ip路由
case bcbc08:
case bcbc08+1:
case bcbc08+2:
case bcbc08+3:
case bcbc08+4:
setkeycount++;
nkey++;
break;
case bcbc08+5:
if (key == 0x0c){
// EEWritePage (&keybuf[3], (ipRouter_add/0x100), ipRouter_add%0x100, 3);
// EEDelayMs(0x50);
// EEReadPage (&ipRouter[0], (ipRouter_add/0x100), ipRouter_add%0x100, 3);
if (keybuf[3] != ipRouter[0]){play(errormusic);return;}
play(suremusic);
nkey = 0;
}
else play(errormusic);
break;
//*********************************************************************设置ip号
case bccc:
switch(keybuf[2]){
case 0x10:
case 0x20:
case 0x30:
case 0x40:
case 0x50:
nkey = (bccc+1);
setkeycount = 3;
odd = 1;
play(suremusic);
break;
default:
play(errormusic);
nkey = error_nkey;
break;
}
break;
case(bccc+1): case(bccc+2): case(bccc+3): case(bccc+4):
case(bccc+5): case(bccc+6): case(bccc+7): case(bccc+8):
case(bccc+9): case(bccc+10):case(bccc+11):case(bccc+12):
case(bccc+13):case(bccc+14):case(bccc+15):case(bccc+16):
case(bccc+17):case(bccc+18):case(bccc+19):case(bccc+20):
case(bccc+21):case(bccc+22):case(bccc+23):case(bccc+24):
case(bccc+25):case(bccc+26):case(bccc+27):case(bccc+28):
case(bccc+29):case(bccc+30):case(bccc+31):case(bccc+32):
if ((keytemp0 != key || (key < 0x0a))){
keytemp2 = keytemp1;
keytemp0 = keytemp1 = key;
if (keytemp2 != 0xff){
if (odd) {
*ptr = ((keytemp2 * 0x10 )|0x0f);
}
else {
*ptr &= (keytemp2|0xf0);
ptr++;
}
}
nkey++;
}
else {
if ((key==0x0b) && (keytemp1 < 0x0f))keytemp1 ++;
odd = ~odd;
if (key==0x0c){
// EEWritePage (&p[0], (ip_number_add/0x100), ((keybuf[2]-0x10))%0x100, 16); //读IP路由信息
EEReadPage (&p[16], (ip_number_add/0x100), ((keybuf[2]-0x10))%0x100, 3); //读IP路由信息
if ((p[16] == p[0]) && (p[17] == p[1]) && (p[18] == p[2])){
play(suremusic);
}
else {
play(errormusic);
nkey = error_nkey;
}
}
}
break;
//*********************************************************************设置ip号
}
}
}
void scankey (void) interrupt 0 {
unsigned char key;
STD = 1;
if (!STD){
audiopin = 1;
key = _9270 & 0x0f;
key = key >>1;
a3 = CY;
key = key >>1;
a2 = CY;
key = key >>1;
a1 = CY;
key = key >>1;
a0 = CY;
a4 = 1;
a5 = 1;
a6 = 0;
a7 = 0;
keybuf[nkey] = B;
while(!STD);
nkey++;
if (B == 0x3C){
// led = ~led;
dialbit = 1;
// still = 1;
}
// led = ~led;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -