📄 main.c
字号:
#include <string.h>
#include <stdlib.h>
#include <reg89C58.h>
#include <stdio.h>
#include <intrins.h>
#include "net.h"
#include "eth.h"
#include "analog.h"
#include "arp.h"
#include "tcp.h"
#include "ip.h"
#include "udp.h"
#include "24c04.h"
#define uchar unsigned char
#define uint unsigned int
sbit lamp=P1^7;
UCHAR bdata bit_dat;
sbit bt7=bit_dat^7;
sbit bt0=bit_dat^0;
sbit lapck=P1^0;
sbit ck=P1^1;
sbit kdat=P1^2;
sbit as1=P1^3;
sbit as2=P1^4;
sbit as3=P1^5;
sbit as4=P1^6;
sbit warry=P3^3; ///THE FOOT IS WARRY
UCHAR warrypost;
bit udpst;
bit QUT;
bit KT;
bit DG;
bit OL;
bit STP;
bit KFF;
bit KBB;
bit LR;
bit OC;
bit NEX;
bit LAS;
bit PLY;
bit PWR;
bit RSS;
bit DVD;
bit VCER;
bit CAMER;
bit CAPE;
bit PIN;
bit ZANTAI;
bit LIAN;
bit SYTECH;
bit COMPUTER;
bit BOOK;
bit MUTE;
bit FCOUS;
bit BLAMP;
bit SYSON;
bit FREES;
bit SYSOFF;
bit YY;
bit sendkey;
UCHAR LED;
UCHAR sound1;
UCHAR pc;
UCHAR warrymode;
// Global variables
UINT volatile event_word;
char xdata text[20];
UCHAR idata debug;
UCHAR idata rcve_buf_allocated;
UCHAR data timeflg=0x3F;
// This sets my hardware address to 00:01:02:03:04:05
//UCHAR data my_hwaddr[6] = {0x08, 0x07, 0x06, 0x05, 0x05, 0x04};
UCHAR data my_hwaddr[6];
//UCHAR code sucee[10]="compiling";
// Hardware addr to send a broadcast
UCHAR code broadcast_hwaddr[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
UCHAR code sysbak1[16]={0x08,0x07,0x06,0x05,0x04,0x01,0xc0,0xa8,0x00,0x07,0x40,0x00,0xc0,0xa8,0x00,0x04};
UCHAR code sysbak2[12]={0x04,0xd2,0xff,0xff,0xff,0x00,0xc0,0xa8,0x00,0x01,0x02,0xff};
// This sets my IP address to 192.168.0.10
//ULONG data my_ipaddr = 0xc0a8000aL;
ULONG data my_ipaddr;
ULONG data my_temote_ipaddr;
UINT data my_remote_port;
// This sets my subnet mask to 255.255.255.0
//ULONG code my_subnet = 0xFFFFFF00L;
ULONG idata my_subnet;
// Set to 0 if no gateway is present on network
//ULONG code gateway_ipaddr = 0xc0a80001L;
ULONG idata gateway_ipaddr;
UCHAR data netsdbuf[10]={0XFF,0X31,0X32,0X33,0X34,0X35,0X31,0X00,0X0D,0X2D};
uchar data sdbuf[8]={0XFF,0X00,0X32,0X32,0X00,0X00,0X00,0X00};
UCHAR idata pmtime;
uchar ALLOFF;
uchar BER;
uchar PM;
uint bbbb;
uint timer;
uchar SYSST;
uchar POWST;
UCHAR stopqhy;
UINT idata PMDLY;
//--------------------------------------------------------------------------
// Initialize the memory management routines
// Initialize variables declared in main
//--------------------------------------------------------------------------
void delay(uint i)
{ while(i--);
}
void init_main(void)
{
init_mempool((void xdata *)1000, 1500);
memset(text, 0, sizeof(text));
event_word = 0;
rcve_buf_allocated = FALSE;
debug = 1;
}
void Timer_Init (void)
{
TH0 = 0; // set Timer0 to overflow in 1ms
TL0 = 0;
TH1=0XEE;
TL1=0XEE;
PCON=0X80;
SCON=0X50;
TMOD = 0X21;
TR1=1;
TR0 = 0; // STOP Timer0
ET1=0;
ET0=1;
ES=1;
EA=1;
}
void wdog(void)
{
SWDT=0;
WDTD=timeflg;
WDTC=0X0F;
}
/*
void SD_RS(UCHAR x)
{ UCHAR i;
TH1=0xEE;TL1=0xEE;PCON=0x80;
for(i=0;i<1;i++){SBUF=x;while(TI!=1);TI=0;}
TH1=0XEE;TL1=0XEE;PCON=0X80;
}
*/
void display(UCHAR x)
{ UCHAR idata i;
bit_dat=x;
for(i=0;i<8;i++){
kdat=bt7;lapck=0;bit_dat=_crol_(bit_dat,1);
_nop_();
_nop_();
lapck=1;
}
}
////////////////////////////////////////key-164//////////////////
bit k164_hit(void) //8bit-send
{ uchar i;
bit_dat=0;
for(i=0;i<8;i++){
kdat=bt7;ck=0;bit_dat=_crol_(bit_dat,1);
_nop_();_nop_();ck=1;
}
if((as1&as2&as3&as4)==0)return(1);
else return(0);
}
uchar k164(void) //8bit-send
{ uchar i,j,key_num;
uchar kk;
if(k164_hit())delay(40000);
else return(0xff);
if(k164_hit()){
lamp=1;
kk=0x7f;
for(j=0;j<8;j++){bit_dat=kk;
for(i=0;i<8;i++){
kdat=bt7;ck=0;bit_dat=_crol_(bit_dat,1);
_nop_();_nop_();ck=1;
}
if((as1&as2&as3&as4)==0)goto find;
kk=_cror_(kk,1);
}
find: if(as1==0)key_num=j;
if(as2==0)key_num=j+8;
if(as3==0)key_num=j+16;
if(as4==0)key_num=j+24;
//WR=0;
if(key_num<10)key_num=key_num+'0';
else if(key_num<32)key_num=key_num+'A'-10;
else key_num=key_num+'A'-14;
// while(k164_hit());lamp=0;
return(key_num);
}
else return(0xff);
}
void send_ch()
{ uchar i;
netsdbuf[7]=0;
for(i=1;i<7;i++)netsdbuf[7]=netsdbuf[7]+netsdbuf[i];
udp_qhysend(netsdbuf, 1024,my_remote_port,my_temote_ipaddr, 10);
}
void sendcom_ch()
{ uchar i;
sdbuf[7]=0;
for(i=1;i<7;i++)sdbuf[7]=sdbuf[7]+sdbuf[i];
EA=0;
for(i=0;i<8;i++){SBUF=sdbuf[i];while(TI!=1);TI=0;}
SBUF=0X0D;while(TI!=1);TI=0;
SBUF=0X2D;while(TI!=1);TI=0;
EA=1;
}
void fu_key(uchar kk)
{ switch(kk){
case 0:break;
case 'J':if(ALLOFF){ LED=(LED&0X80)|0X80;display(LED); //THIS KEY IS DVD KEY
DVD=~DVD;if(DVD)sdbuf[5]='e';else sdbuf[5]='f';netsdbuf[2]='4';
delay(30000);}
lamp=0;
break;
case 'K':if(ALLOFF){ LED=(LED&0X40)|0X40;display(LED); //THIS KEY IS VCR
VCER=~VCER;if(VCER)sdbuf[5]='g';else sdbuf[5]='h';netsdbuf[2]='5';
delay(30000);}
lamp=0;
break;
case 'L':if(ALLOFF){ LED=(LED&0X20)|0X20;display(LED); //THIS KEY IS CARM
CAMER=~CAMER;if(CAMER)sdbuf[5]='i';else sdbuf[5]='j';netsdbuf[2]='7';
delay(30000);}
lamp=0;
break;
case 'M':if(ALLOFF){ LED=(LED&0X10)|0X10;display(LED); //THIS IS KEY IS CAPE
CAPE=~CAPE;if(CAPE)sdbuf[5]='k';else sdbuf[5]='l';netsdbuf[2]='8';
delay(30000);}
lamp=0;
break;
case '7':if(ALLOFF){ //THIS IS SCRESS DOWN AND UP
PIN=~PIN;PM=1;
if(PIN)sdbuf[5]='u';else sdbuf[5]='v';
timer=0;TR0=1;
delay(30000);}
lamp=0;
break;
case '1':if(ALLOFF){PM=1;delay(30000);}lamp=0;break; //THIS IS SCRESS STOP
case 'V':if(POWST==0){
ALLOFF=~ALLOFF;if(ALLOFF) //POWER KEY
{
sdbuf[5]='z';
TR0=0;BER=0;bbbb=0; netsdbuf[2]='1';netsdbuf[3]='2';netsdbuf[6]='3';
LED=(LED&0X08)|0X08;
display(LED);
}
else
{
sdbuf[5]='y';
TR0=1;BER=1;bbbb=0; netsdbuf[2]='9';netsdbuf[3]='1';
}
}
delay(35000);lamp=0;
break;
case 'U':if(ALLOFF){ LED=(LED&0X01)|0X01;display(LED); //ZANTAI
KT=~KT;if(KT){sdbuf[5]='m';}else {sdbuf[5]='n';};netsdbuf[2]='6';
delay(30000);}
lamp=0; break;///zoom up
// case '8':if(ALLOFF){ //SYSCYNL STUDIO
// SYTECH=~SYTECH;if(SYTECH)sdbuf[5]='m';else sdbuf[5]='n';
// delay(30000);lamp=0;}
// RD=0; break;
case 'R':if(ALLOFF){ LED=(LED&0X08)|0X08;display(LED); //COMPUTER
COMPUTER=~COMPUTER;if(COMPUTER)sdbuf[5]='o';else sdbuf[5]='p';netsdbuf[2]='1';
delay(30000);}
lamp=0; break;
case 'S':if(ALLOFF){LED=(LED&0X04)|0X04;display(LED); //NOTBOOK
BOOK=~BOOK;if(BOOK)sdbuf[5]='q';else sdbuf[5]='r';netsdbuf[2]='2';
delay(30000);}
lamp=0; break;
case 'T':if(ALLOFF){ LED=(LED&0X02)|0X02;display(LED); //DIGIATL ZANTAI
QUT=~QUT;if(QUT)sdbuf[5]='3';else sdbuf[5]='4';netsdbuf[2]='3';
delay(30000);}
lamp=0; break;
case 'F':if(ALLOFF) { //窗帘开合
LIAN=~LIAN;PM=1;if(LIAN)sdbuf[5]='w';else sdbuf[5]='x';
timer=0;TR0=1;
delay(30000);}
lamp=0;break;
case '2':if(ALLOFF){ //窗帘停
PM=1;delay(30000);}lamp=0; break;
// case 'E':if(ALLOFF){if(MUTE){sdbuf[5]='Y';}
// else {sdbuf[5]='X';}
// delay(30000);RD=0;}RD=0;break;
// case 'F':if(ALLOFF){
// DG=~DG;if(DG){sdbuf[5]='5';}else {sdbuf[5]='6';};
// delay(30000);RD=0;}RD=0; break;////zoom down
case 'B':if(ALLOFF){ //上一曲
LAS=~LAS;if(LAS)sdbuf[5]='7';else sdbuf[5]='8';
delay(30000);}lamp=0;break;
case '8':if(ALLOFF){ //快回
KBB=~KBB;if(KBB)sdbuf[5]='9';else sdbuf[5]='A';
delay(30000);}lamp=0;break;
case 'O':if(ALLOFF){ //PLAY
PLY=~PLY;if(PLY)sdbuf[5]='B';else sdbuf[5]='C';
delay(30000);}lamp=0;break;
case 'D':if(ALLOFF){ //快进
KFF=~KFF;if(KFF)sdbuf[5]='D';else sdbuf[5]='E';
delay(30000);}lamp=0;break;
case 'E':if(ALLOFF){ //下一曲
NEX=~NEX;if(NEX)sdbuf[5]='F';else sdbuf[5]='G';
delay(30000);}lamp=0;break;
case 'A':if(ALLOFF){ //主音量+
if(sdbuf[2]<8+'0'){
if(sdbuf[2]<8+'0')sdbuf[2]++;delay(30000);
}
}lamp=0;
break;
case '9':if(ALLOFF){ //话筒音量+
if(sdbuf[3]<8+'0'){if(sdbuf[3]<8+'0')sdbuf[3]++;
delay(30000);
}
}lamp=0;
break;
// case 'N':if(ALLOFF){
// FCOUS=~FCOUS;if(FCOUS)sdbuf[5]='V';else sdbuf[5]='W';
// delay(30000);RD=0;}RD=0;break;
// case 'O':if(ALLOFF){
// PWR=~PWR;if(PWR)sdbuf[5]='H';else sdbuf[5]='I';
// delay(30000);RD=0;}RD=0;break;
case 'H':STP=~STP;if(STP)sdbuf[5]='J';else sdbuf[5]='K'; //暂停
delay(30000);while(k164_hit());
lamp=0; break;
case 'P':if(ALLOFF){ //出他
OL=~OL;if(OL)sdbuf[5]='L';else sdbuf[5]='M';
delay(30000);}lamp=0; break;
// case 'Q':if(ALLOFF){delay(30000);RD=0;}RD=0; break;
case 'G':if(ALLOFF){ //声道
LR=~LR;if(LR)sdbuf[5]='N';else sdbuf[5]='O';
delay(30000);}lamp=0; break;
case '0':if(ALLOFF){if(sdbuf[2]>1+'0'){if(sdbuf[2]>1+'0')sdbuf[2]--;//主音量_-
delay(30000);}
}lamp=0; break;
case '3':if(ALLOFF){if(sdbuf[3]>1+'0'){if(sdbuf[3]>1+'0')sdbuf[3]--;//话筒音量-
delay(30000);}
}lamp=0; break;
// case 'V':if(ALLOFF){BLAMP=~BLAMP;if(BLAMP)sdbuf[5]='T';else sdbuf[5]='U';
// delay(30000);RD=0;}RD=0; break;
case '6':if(ALLOFF){SYSOFF=~SYSOFF;netsdbuf[6]='2';if(SYSOFF)sdbuf[5]='a';else sdbuf[5]='b';
POWST=0;PM=1;BER=1;bbbb=0;timer=0;TR0=1;
delay(30000);}lamp=0;break;
// case 'X':if(ALLOFF){FREES=~FREES;if(FREES)sdbuf[5]='R';else sdbuf[5]='S';
//
// delay(30000);RD=0;}RD=0;
// break;// this is zheng fu pian
case '5':if(ALLOFF){SYSON=~SYSON;netsdbuf[6]='1';if(SYSON)sdbuf[5]='c';else sdbuf[5]='d';
POWST=1;PM=1;timer=0;TR0=1;BER=0;
delay(30000);}lamp=0; break;
// case 'Z':if(ALLOFF){OC=~OC;if(OC)sdbuf[5]='P';else sdbuf[5]='Q';
// delay(30000);RD=0;}RD=0; break;
case 'X':warrymode=0;netsdbuf[6]=warrypost;break; //the recive warry
default:break;
}
}
void timer0() interrupt 1 //timer0 init for DELAY
{
TH0=0;TL0=0x0;
if(PM){
timer++;
if(timer>PMDLY){
if(ALLOFF){PM=1;}
//fu_key('1');
sdbuf[1]='1';sendcom_ch();
// fu_key('2');
sdbuf[1]='2';sendcom_ch();timer=0;
PM=0;
if(!BER){TR0=0;}
}
}
if(BER){stopqhy++;bbbb++;
if(stopqhy>40){lamp=1;delay(200);stopqhy=0;}
else lamp=0;
if(bbbb==5760){sdbuf[2]='3';sdbuf[3]='3';//FOR SOUND START
sendcom_ch();sdbuf[1]='R';
if(ALLOFF){ //COMPUTER
COMPUTER=~COMPUTER;if(COMPUTER)sdbuf[5]='o';else sdbuf[5]='p';
}
//fu_key('R');
sendcom_ch();
TR0=0;bbbb=0;BER=0;ALLOFF=0;
SYSST=0;netsdbuf[6]='3';netsdbuf[2]='A'; netsdbuf[3]='1';}
}
}
void ssio(void) interrupt 4 using 1
{
RI=0;ES=0;
if(SBUF!=0XFF){ES=1;goto reti;}
while(RI!=1);RI=0;pc=SBUF;
if(pc==0x7f)
{
YY=1;
}
else {sendkey=1;}
ES=1;
reti: ;
}
void SYSOFF_DLY()
{ switch(pmtime)
{
case 0X01:PMDLY=1440;break; //45 SECEDND
case 0X02:PMDLY=1920;break; //60
case 0X03:PMDLY=2400;break; //75
case 0X04:PMDLY=2880;break; //90
case 0X05:PMDLY=3840;break; //120
default:break;
}
}
void systemdat_init()
{
//UCHAR i;
STORECODE data * istore;
UCHAR data net_dcode[28];
read_temp(0x00,28,net_dcode);
istore=(STORECODE data *) net_dcode;
memcpy(my_hwaddr,istore, 6); //the code is mac phy netcard
delay(3000);
my_ipaddr=istore->local_ipaddr; //THE CODE IS LOAD LOCALIPADDR
delay(1000);
my_temote_ipaddr=istore->remote_ipaddr; //the code is load temote_ipaddr
delay(1000);
my_remote_port=istore->remote_port; //the code is load temote_port
delay(1000);
my_subnet=istore->subnet; //the code is load subnet
delay(1000);
gateway_ipaddr=istore->gatewayip; //the code is load gatewayip
delay(1000);
pmtime=istore->pmdelay; //the code is load pmdlay
SYSOFF_DLY();
}
void main (void)
{
UINT j, event_word_copy;
UCHAR xdata * inbuf;
UCHAR hkey;
udpst=0;
ALLOFF=0;
POWST=0;
BER=0;
bbbb=0;
timer=0;
stopqhy=0;
YY=0;
sendkey=0;
Timer_Init();
systemdat_init();
init_main();
lamp=0;
j=0;
init_tcp();
EA=1;
init_arp();
init_8019();
if(WDTS){wdog();}
WDTD=timeflg;
WDTC=0X0F;
SYSST=0;
LED=0X00;
display(LED);
netsdbuf[6]='3'; ///设备无电
netsdbuf[3]='1'; //设备未上电
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -