📄 init.c
字号:
#ifndef _init_c
#define _init_c
#endif
#include "net.h"
#include "struct.h"
#include "fundef.h"
#include "variable.h"
void delay_ms(unsigned char ms_number)
{
unsigned int i;
unsigned char j;
for(j=0;j<ms_number;j++)
for(i=0;i<229;i++);
}
/*
void delay_100ms(unsigned char number)
{
unsigned char i;
for (i=0;i<number;i++)
{
delay_ms(100);
}
}
*/
void timer0_init()
{
timer0_mode_16bit;
th0=0;tl0=0;
timer0_run;
}
/* 串行口初始化 */
void serial_init()
{/*串口初始化 */
unsigned char address,temp;
sl_baud=0;
P1=1;
address=P1;
sl_baud=1;
temp=address&0x08;
if(temp==0x08)
{
b_debug=1;
}
else
{
b_debug=0;
}
address=address&0x07;
switch(address)
{
case 0 : serial_baud_1200;
break;
case 1 : serial_baud_57600;
break;
case 2 : serial_baud_2400;
break;
case 3 : serial_baud_4800;
break;
case 4 : serial_baud_9600;
break;
case 5 : serial_baud_19200;
break;
case 6 : serial_baud_38400;
break;
case 7 : serial_baud_115200;
break;
default : break;
}
serial_uart_8; /*工作方式为8位数据 */
serial_receive_enable;/*允许接收*/
ti=1;
}
void interrupt_init(void)
{
timer2_interrupt_disable;
timer0_interrupt_enable;
timer1_interrupt_disable;
int0_interrupt_disable;
// timer0_priority_high;
int1_interrupt_disable;
serial_priority_high;
serial_interrupt_enable;
int0_mode_hightolow;
int0_priority_low;
}
/*
用拨码开关设定IP地址
用在中断初始化前,不用屏蔽中断。
*/
void set_my_ip_address()
{
unsigned char address;
sl_ipaddress=0;
P1=1;
address=P1;
sl_ipaddress=1;
my_ip_address.bytes[0]=0xC0;
my_ip_address.bytes[1]=0xA8;
my_ip_address.bytes[2]=0x00;
my_ip_address.bytes[3]=address;
}
void set_my_ethernet_addr()
{
my_ethernet_address.bytes[0]=0x12;
my_ethernet_address.bytes[1]=0x34;
my_ethernet_address.bytes[2]=my_ip_address.bytes[0];
my_ethernet_address.bytes[3]=my_ip_address.bytes[1];
my_ethernet_address.bytes[4]=my_ip_address.bytes[2];
my_ethernet_address.bytes[5]=my_ip_address.bytes[3];
}
void FunVarInit(void)
{
unsigned int i;
for(i=0;i<com_rxd_buffer_size;i++)
{
comrxdbuf[i]=0;
comtxdbuf[i]=0;
}
for(i=0;i<=rt_size;i++)
{
retransmit_buffer[i].rtframe.status=0;
retransmitpacket[i].status=0;
}
for(i=0;i<3;i++){txdnet.etherframe.sourcenodeid[i]=my_ethernet_address.words[i];}
c_writecommand=0;
c_readcommand=0;
tcp1024.state=0;
tcp1024.snd_nxt=0x0000;
pwdi=!pwdi;
b_dvrcommand=0;
b_RunDvrCommand=0;
c_DvrReadBuffer=0;
c_DvrWriteBuffer=0;
tcp_count=RetryTcp_Count;
c_RstTcpCount=0;
c_DvrRunTime=0;
frameindex=0; //IP包的序列号
comrxdread=0; //串口接收读指针
comtxdread=0; //串口发送读指针
comrxdwrite=0; //串口接收写指针
comtxdwrite=0;
bCommandFlag=0;
bDataFlag=0;
c_type=0;
}
void init(void)
{
// unsigned int i;
unsigned char l,k;
for(l=0;l<0x80;l++)//清空ram
{
for(k=0;k<0xff;k++)
{
XBYTE[k+l*0xff]=0;
}
pwdi=!pwdi;
}
sl_baud=1;
sl_ipaddress=1;
//reset=0;
pwdi=!pwdi;
//delay_100ms(1);//延时 0.1 秒;
/*以下为单片机初始化 */
timer0_init();/*定时器初始化*/
serial_init();/*串口初始化*/
if(b_reset==0)
{
b_reset=1;
set_my_ip_address();
set_my_ethernet_addr();
gateway_ip_address.dwords=0xC0A80001;
mask_ip_address.dwords=0xffffff00;
ping_ip_address.dwords=0xc0a80002;
dvr_ip_address.dwords=0xc0a80003;
}
netcard_init();/*对网卡的工作参数进行设置*/
delay_ms(10);/*delay_ms为延时函数,延时单位为毫秒*/
pwdi=!pwdi;
FunVarInit();
interrupt_init();/*中断初始化*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -