#include "STC90.h" #include < intrins.h > #define uchar unsigned char #define uint unsigned int #define led_port P1 sbit IR_RE = P3^2; sbit led_r = P1^3; sbit led_g = P1^4; sbit led_b = P1^5; sbit led_wd = P1^7; sbit K1 =P3^0 ; //增加键 sbit K2 =P3^1 ; //减少键 sbit BEEP =P3^7 ; //蜂鸣器 uchar temp,temp1; bit k=0; //红外解码判断标志位,为0则为有效信号,为1则为无效 bit Flag2; uchar date[4]={0,0,0,0}; //date数组为存放地址原码,反码,数据原码,反码 uint lade_1,lade_2,lade_3,lade_4; uint num; uchar date_ram,ee_temp,ee_temp1; uchar WDT_NUM=0; uchar const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值01234567 uchar code seg[]={7,6,5,4,3,2,1,0};//分别对应相应的数码管点亮,即位码 unsigned long disp_date; void fade(); void fade1(); /*************************** 看门狗子程序*************************/ void watchdog_timer() { if(WDT_NUM==5) { WDT_NUM=0; led_wd=!led_wd; } WDT_NUM++; WDT_CONTR=0x3f; } /******************************************************************/ void delay(unsigned int cnt) { while(--cnt); } /*--------------------------延时1ms程子程序-----------------------*/ void delay_1ms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=126;y>0;y--); } /*--------------------------延时1ms程子程序-----------------------*/ delay1000() { uchar i,j; i=5; do{j=95; do{j--;} while(j); i--; } while(i); } /*---------------------------延时882us子程序-----------------------*/ delay882() { uchar i,j; i=6; do{j=71; do{j--;} while(j); i--; }while(i); } /*--------------------------延时2400us程子程序-----------------------*/ delay2400() { uchar i,j; i=5; do{j=237; do{j--;} while(j); i--; }while(i); } /**********************************************************************/ /* void display() { uchar i; for(i=0;i<8;i++) { P0=dofly[disp_date%10];//取显示数据,段码 P2=seg[i]; //取位码 delay_1ms(1); disp_date/=10; } } */ /*********************************************************************/ uchar EEPROM_read(uint addr)//EEPROM字节读 { ISP_CONTR=0x83; //系统时钟<12M时,对ISP_CONTR寄存器设置的值,本电路为11.0592M ISP_CMD=1; //字节读 ISP_ADDRH=(addr&0xff00)>>8; ISP_ADDRL=addr&0x00ff; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); _nop_(); return ISP_DATA; } //-------------------------------------------------------------------- void EEPROM_write(uint addr,uchar dat)//EEPROM字节写 { ISP_CONTR=0x83; //系统时钟<12M时,对ISP_CONTR寄存器设置的值,本电路为11.0592M ISP_CMD=2; //字节编程 ISP_ADDRH=(addr&0xff00)>>8; ISP_ADDRL=addr&0x00ff; ISP_DATA=dat; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); _nop_(); } //-------------------------------------------------------------------- void EEPROM_ERASE(uint addr)//EEPROM扇区擦除 { ISP_CONTR=0x83; //系统时钟<12M时,对ISP_CONTR寄存器设置的值,本电路为11.0592M ISP_CMD=3; //扇区擦除 ISP_ADDRH=(addr&0xff00)>>8; ISP_ADDRL=addr&0x00ff; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); _nop_(); } //************************************************************** /*----------------------------------------------------------*/ /*-----------------------红外解码程序(核心)-----------------*/ /*----------------------------------------------------------*/ void IR_decode() { uchar i,j; while(IR_RE==0); delay2400(); if(IR_RE==1) //延时2.4ms后如果是高电平则是新码 { delay1000(); delay1000(); for(i=0;i<4;i++) { for(j=0;j<8;j++) { while(IR_RE==0); //等待地址码第1位高电平到来 delay882(); //延时882us判断此时引脚电平 ///CY=IR_RE; if(IR_RE==0) { date[i]>>=1; date[i]=date[i]|0x00; } else if(IR_RE==1) { delay1000(); date[i]>>=1; date[i]=date[i]|0x80; } } //1位数据接收结束 } //32位二进制码接收结束 } } /* void LED_PWM() { lade_2=num; //384 lade_4=num; //384 while(lade_2!=0&Flag2==1) { for(lade_3=512;lade_3>lade_4;lade_3--) //512 { led_port=0x00; delay(1); } lade_3=512; //512 lade_4--; for(lade_1=0;lade_1<lade_2;lade_1++) { led_port=0x38; //c7 delay(1); } lade_1=0; lade_2--; if(temp!=0x0c&Flag2==1) { lade_2=0; } lade_2=num; //384 lade_4=num; //384 } } */ void calc() { EEPROM_read(0x2000); ee_temp1=ISP_DATA; ee_temp=ee_temp1&0x0f; //************************************* 1 /* if(date[3]==0xff&Flag2==1) { if(num>=20) { num=num-80; } //else num=1; LED_PWM(); } if(date[3]==0xfe&Flag2==1) { if(num<=500) { num=num+80; } // else num=511; LED_PWM(); } if(ee_temp1==0xfd) { led_port=0x00; watchdog_timer(); } if(ee_temp1==0xfc) { led_port=0x00; led_r=1; led_g=1; led_b=1; watchdog_timer(); } */ //********************************************** 2 if(ee_temp1==0xfb) { led_port=0x00; led_r=1; watchdog_timer(); } if(ee_temp1==0xfa) { led_port=0x00; led_g=1; watchdog_timer(); } if(ee_temp1==0xf9) { led_port=0x00; led_b=1; watchdog_timer(); } if(ee_temp1==0xf8) { led_port=0x00; led_r=1; led_g=1; led_b=1; watchdog_timer(); } //************************************** 3 if(ee_temp1==0xf7) { uint fade_1,fade_2,fade_3,fade_4; fade_2=448; //384 fade_4=448; //384 while(fade_2!=0&ee_temp==0x07) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x10; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x07) { fade_2=0; } watchdog_timer(); fade_2=448; //384 fade_4=448; //384 } } if(ee_temp1==0xf6) { uint fade_1,fade_2,fade_3,fade_4; fade_2=448; //384 fade_4=448; //384 while(fade_2!=0&ee_temp==0x06) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x20; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x06) { fade_2=0; } watchdog_timer(); fade_2=448; //384 fade_4=448; //384 } } if(ee_temp1==0xf5) { uint fade_1,fade_2,fade_3,fade_4; fade_2=448; //384 fade_4=448; //384 while(fade_2!=0&ee_temp==0x05) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x08; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x05) { fade_2=0; } watchdog_timer(); fade_2=448; //384 fade_4=448; //384 } } if(ee_temp1==0xf4) { while(ee_temp==4) { led_port=0x00; led_r=1; delay_1ms(200); led_port=0x00; led_r=1; led_g=1; delay_1ms(200); led_port=0x00; led_g=1; delay_1ms(200); watchdog_timer(); led_port=0x00; led_g=1; led_b=1; delay_1ms(200); led_port=0x00; led_b=1; delay_1ms(200); led_port=0x00; led_b=1; led_r=1; delay_1ms(200); watchdog_timer(); } } //************************************** 4 if(ee_temp1==0xf3) { uint fade_1,fade_2,fade_3,fade_4; fade_2=416; //384 fade_4=416; //384 while(fade_2!=0&ee_temp==0x03) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x10; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x03) { fade_2=0; } watchdog_timer(); fade_2=416; //384 fade_4=416; //384 } } if(ee_temp1==0xf2) { uint fade_1,fade_2,fade_3,fade_4; fade_2=384; //384 fade_4=384; //384 while(fade_2!=0&ee_temp==0x02) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x20; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x02) { fade_2=0; } watchdog_timer(); fade_2=384; //384 fade_4=384; //384 } } if(ee_temp1==0xf1) { uint fade_1,fade_2,fade_3,fade_4; fade_2=348; //384 fade_4=348; //384 while(fade_2!=0&ee_temp==0x01) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x08; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x01) { fade_2=0; } watchdog_timer(); fade_2=348; //384 fade_4=348; //384 } } if(ee_temp1==0xf0) { while(ee_temp==0) { led_port=0x00; led_r=1; delay_1ms(500); watchdog_timer(); led_port=0x00; led_g=1; delay_1ms(500); led_port=0x00; led_b=1; delay_1ms(500); watchdog_timer(); } } //******************************************** 5 if(ee_temp1==0xef) { uint fade_1,fade_2,fade_3,fade_4; fade_2=384; //384 fade_4=384; //384 while(fade_2!=0&ee_temp==0x0f) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x10; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0f) { fade_2=0; } watchdog_timer(); fade_2=384; //384 fade_4=384; //384 } } if(ee_temp1==0xee) { uint fade_1,fade_2,fade_3,fade_4; fade_2=320; //384 fade_4=320; //384 while(fade_2!=0&ee_temp==0x0e) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x20; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0e) { fade_2=0; } watchdog_timer(); fade_2=320; //384 fade_4=320; //384 } } if(ee_temp1==0xed) { uint fade_1,fade_2,fade_3,fade_4; fade_2=320; //384 fade_4=320; //384 while(fade_2!=0&ee_temp==0x0d) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x08; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0d) { fade_2=0; } watchdog_timer(); fade_2=320; //384 fade_4=320; //384 } } if(ee_temp1==0xec) fade(); //******************************************* 6 if(ee_temp1==0xeb) { led_port=0x00; led_r=1; led_g=1; watchdog_timer(); } if(ee_temp1==0xea) { led_port=0x00; //led_r=0; led_g=1; led_b=1; watchdog_timer(); } if(ee_temp1==0xe9) { led_port=0x00; led_r=1; //led_g=0; led_b=1; watchdog_timer(); } if(ee_temp1==0xe8) fade1(); } void fade() { // uchar i; uint fade_1,fade_2,fade_3,fade_4; fade_2=512; fade_4=511; while(fade_2!=0&ee_temp==0x0c) { for(fade_3=512;fade_3>fade_4;fade_3--) { led_port=0x10; delay(1); } fade_3=512; fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0c) { fade_2=0; } } watchdog_timer(); fade_2=512; fade_4=511; while(fade_2!=0&ee_temp==0x0c) { if(ee_temp!=0x0c) { fade_2=0; } for(fade_3=512;fade_3>fade_4;fade_3--) { led_port=0x20; delay(1); // watchdog_timer(); } fade_3=512; fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); // watchdog_timer(); } fade_1=0; fade_2--; } watchdog_timer(); fade_2=512; fade_4=511; while(fade_2!=0&ee_temp==0x0c) { if(ee_temp!=0x0c) { fade_2=0; } for(fade_3=512;fade_3>fade_4;fade_3--) { led_port=0x08; delay(1); watchdog_timer(); } fade_3=512; fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); watchdog_timer(); } fade_1=0; fade_2--; } watchdog_timer(); } void fade1() { // uchar i; uint fade_1,fade_2,fade_3,fade_4; fade_2=128; fade_4=127; while(fade_2!=0&ee_temp==0x08) { for(fade_3=128;fade_3>fade_4;fade_3--) { led_port=0x10; delay(1); } fade_3=128; fade_4--; for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x08) { fade_2=0; } } watchdog_timer(); fade_2=128; fade_4=127; while(fade_2!=0&ee_temp==0x08) { if(ee_temp!=0x08) { fade_2=0; } for(fade_3=128;fade_3>fade_4;fade_3--) { led_port=0x20; delay(1); } fade_3=128; fade_4--; for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; } watchdog_timer(); fade_2=128; fade_4=127; while(fade_2!=0&ee_temp==0x08) { if(ee_temp!=0x08) { fade_2=0; } for(fade_3=128;fade_3>fade_4;fade_3--) { led_port=0x08; delay(1); } fade_3=128; fade_4--; for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; } watchdog_timer(); } void init() { led_port=0x00; /* led_r=1; delay_1ms(500); led_port=0x00; led_g=1; delay_1ms(500); led_port=0x00; led_b=1; delay_1ms(500); led_port=0x00; */ delay_1ms(2); WDT_CONTR=0x3f; delay_1ms(500); } //******************************** void main() { init(); Flag2=0; SP=0x60; //堆栈指针 EX0=1; //允许外部中断0,用于检测红外遥控器按键 EA=1; num=255; while(1) { calc(); } } //******************************************************************** /*------------------------外部中断0程序-------------------------*/ /*------------------主要用于处理红外遥控键值--------------------*/ void int0() interrupt 0 { uchar i; Flag2=0; /////// k=0; EX0=0; //检测到有效信号关中断,防止干扰 for(i=0;i<4;i++) { delay1000(); if(IR_RE==1){k=1;} //刚开始为9ms的引导码. } led_port=0x00; if(k==0) { IR_decode(); //如果接收到的是有效信号,则调用解码程序 if(date[3]>=0xe8) { if(date[3]<=0xfb) { temp1=date[3]; EEPROM_ERASE(0x2000); //STC_EEROM_0X2000 temp1 EEPROM_write(0x2000,temp1); EEPROM_read(0x2000); ee_temp1=ISP_DATA; ee_temp=ee_temp1&0x0f; /* temp=date[3]&0x0f; EEPROM_ERASE(0x2004); //STC_EEROM_0X2004 temp EEPROM_write(0x2004,temp); */ } else { EEPROM_read(0x2000); ee_temp1=ISP_DATA; ee_temp=ee_temp1&0x0f; } } delay2400(); delay2400(); delay2400(); delay_1ms(500); } EX0=1; //开外部中断,允许新的遥控按键 }
上传时间: 2016-07-02
上传用户:184890962
4平方的铜线:4*6=24A 6平方的铜线:6*6=36A 10平方的铜线:10*6=60A 16平方的铜线:16*6=96A 4平方的铝线:4*5=20A 6平方的铝线:6*5=30A 10平方的铝线:10*5=00A 16平方的铝线:16*5=90A
标签: 电线
上传时间: 2016-12-28
上传用户:铁板上的牛排
问题描述:以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 1.基本要求 (1)首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。如下图所示迷宫。从入口(1,1)到出口(8,8)的求解结果如下: (1,1)(1,2),(2,2)(3,2)(3,1)(4,1)(5,1)(5,2)(5,3)(6,3)(6,4)(6,5)(5,5)(4,5)(4,6)(4,7)(3,7)(3,8)(4,8)(5,8)(6,8)(7,8)(8,8) (2)以方阵形式输出迷宫及其通路。 2.重点、难点 重点:针对迷宫问题的特点,利用栈的后进先出特点,选择适当的数据结构。 难点:递归算法的设计与求解。
标签: 迷宫
上传时间: 2018-07-03
上传用户:MOOMWHITE
概述 V K 3 6 N 4 I具有 4个触摸按键,可用来检 测外部触摸按键上人手的触摸动作。该 芯片具有较高的集成度,仅需极少的外 部组件便可实现触摸按键的检测。 提供了I2C输出功能,可方便与外部 MCU 之间的通讯,实现设备安装及触摸引脚 监测目的。芯片内部采用特殊的集成电 路,具有高电源电压抑制比,可减少按 键检测错误的发生,此特性保证在不利 环境条件的应用中芯片仍具有很高的可靠 性。 此触摸芯片具有自动校准功能,低待机 电流,抗电压波动等特性,为各种触摸 按键的应用提供了一种简单而又有效的实 现方法。 特性 • 工作电压:2.2V~5.5V • 低待机电流10uA/3V • 低压重置(LVR)电压2.0V • 4S自动校准功能 • 可靠的触摸按键检测 • 无键按下4S进入待机模式 • 防呆功能长按10S复位 • 具备抗电压波动功能 • I2C输出+INT中断脚 • 专用管脚外接电容(1nF-47nF)调整灵敏度 • OPT管脚选择输出低有效还是高有效 • 极少的外围组件 应用领域 • 大.小家电类产品 • 仪器.仪表类产品
上传时间: 2021-01-27
上传用户:szqxw1688
概述 V K 3 6 N 4 I具有 4个触摸按键,可用来检 测外部触摸按键上人手的触摸动作。该 芯片具有较高的集成度,仅需极少的外 部组件便可实现触摸按键的检测。 提供了I2C输出功能,可方便与外部 MCU 之间的通讯,实现设备安装及触摸引脚 监测目的。芯片内部采用特殊的集成电 路,具有高电源电压抑制比,可减少按 键检测错误的发生,此特性保证在不利 环境条件的应用中芯片仍具有很高的可靠 性。 此触摸芯片具有自动校准功能,低待机 电流,抗电压波动等特性,为各种触摸 按键的应用提供了一种简单而又有效的实 现方法。 特性 • 工作电压:2.2V~5.5V • 低待机电流10uA/3V • 低压重置(LVR)电压2.0V • 4S自动校准功能 • 可靠的触摸按键检测 • 无键按下4S进入待机模式 • 防呆功能长按10S复位 • 具备抗电压波动功能 • I2C输出+INT中断脚 • 专用管脚外接电容(1nF-47nF)调整灵敏度 • OPT管脚选择输出低有效还是高有效 • 极少的外围组件 应用领域 • 大.小家电类产品 • 仪器.仪表类产品
上传时间: 2021-01-27
上传用户:2937735731
1. Preface2. The concept2.2. Prescience 2.3. Reading guide 2.4. Abbreviations 2.5. Version management3. Hardware3.2. ESP32 3.3.2. Hardware schema 3.3.3. DHT22 and level shifter 3.3.4. Geekcreit® ESP32 Development Board4. Software4.2. Installatie van GIT 4.3. Installatation of the ESP32 Core 4.4. Installation of the Xtensa and ESP32 Tools 4.5. Python 4.5.1. Install Python 4.5.2. Installation of pySerial and EspTool 4.6. Test the software installation5. The ESP32 IoT project 5.1.1. WiFi connection 5.1.2. Setup date and time 5.1.3. MQTT connection 5.1.4. Determining temperature and humidity 5.2. IOT_ESP32_Project source6. Test6.2. ESP32, NodeJS, MongoDB en Mosca 6.2.1. Start MongoDB 6.2.2. Start NodeJS Express serve and Mosca broker 6.2.3. Start the ESP32 6.2.4. Start an Chrome browser
上传时间: 2022-04-05
上传用户:kingwide
网络是怎样连接的_户根勤---解压密码:666666目录浏览器生成消息 1——探索浏览器内部1.1 生成HTTP 请求消息51.1.1 探索之旅从输入网址开始 51.1.2 浏览器先要解析URL 71.1.3 省略文件名的情况 91.1.4 HTTP 的基本思路 101.1.5 生成HTTP 请求消息 141.1.6 发送请求后会收到响应 201.2 向DNS 服务器查询Web服务器的IP 地址241.2.1 IP 地址的基本知识 241.2.2 域名和IP 地址并用的理由 281.2.3 Socket库提供查询IP 地址的功能 301.2.4 通过解析器向DNS 服务器发出查询 311.2.5 解析器的内部原理 321.3 全世界DNS 服务器的大接力351.3.1 DNS 服务器的基本工作 351.3.2 域名的层次结构 381.3.3 寻找相应的DNS 服务器并获取IP 地址 401.3.4 通过缓存加快DNS 服务器的响应 441.4 委托协议栈发送消息451.4.1 数据收发操作概览 451.4.2 创建套接字阶段 481.4.3 连接阶段:把管道接上去 501.4.4 通信阶段:传递消息 521.4.5 断开阶段:收发数据结束 53COLUMN 网络术语其实很简单怪杰Resolver 55第章11920用电信号传输TCP/IP 数据 57——探索协议栈和网卡2.1创建套接字 612.1.1 协议栈的内部结构 612.1.2 套接字的实体就是通信控制信息 632.1.3 调用socket 时的操作 662.2 连接服务器682.2.1 连接是什么意思 682.2.2 负责保存控制信息的头部 702.2.3 连接操作的实际过程 732.3 收发数据752.3.1 将HTTP 请求消息交给协议栈 752.3.2 对较大的数据进行拆分 782.3.3 使用ACK 号确认网络包已收到 792.3.4 根据网络包平均往返时间调整ACK 号等待时间 832.3.5 使用窗口有效管理ACK 号 842.3.6 ACK 与窗口的合并 872.3.7 接收HTTP 响应消息 892.4 从服务器断开并删除套接字902.4.1 数据发送完毕后断开连接 902.4.2 删除套接字 922.4.3 数据收发操作小结 932.5 IP 与以太网的包收发操作952.5.1 包的基本知识 952.5.2 包收发操作概览 992.5.3 生成包含接收方IP 地址的IP 头部 1022.5.4 生成以太网用的MAC 头部 1062.5.5 通过ARP 查询目标路由器的MAC 地址 1082.5.6 以太网的基本知识 1112.5.7 将IP 包转换成电或光信号发送出去 1142.5.8 给网络包再加3 个控制数据 1162.5.9 向集线器发送网络包 1202.5.10 接收返回包 1232.5.11 将服务器的响应包从IP 传递给TCP 1252.6 UDP 协议的收发操作1282.6.1 不需要重发的数据用UDP 发送更高效 128第章22.6.2 控制用的短数据 1292.6.3 音频和视频数据 130COLUMN 网络术语其实很简单插进Socket 里的是灯泡还是程序 132从网线到网络设备 135——探索集线器、交换机和路由器3.1 信号在网线和集线器中传输1393.1.1 每个包都是独立传输的 1393.1.2 防止网线中的信号衰减很重要 1403.1.3 “双绞”是为了抑制噪声 1413.1.4 集线器将信号发往所有线路 1463.2 交换机的包转发操作1493.2.1 交换机根据地址表进行转发 1493.2.2 MAC 地址表的维护 1533.2.3 特殊操作 1543.2.4 全双工模式可以同时进行发送和接收 1553.2.5 自动协商:确定最优的传输速率 1563.2.6 交换机可同时执行多个转发操作 1593.3 路由器的包转发操作1593.3.1 路由器的基本知识 1593.3.2 路由表中的信息 1623.3.3 路由器的包接收操作 1663.3.4 查询路由表确定输出端口 1663.3.5 找不到匹配路由时选择默认路由 1683.3.6 包的有效期 1693.3.7 通过分片功能拆分大网络包 1703.3.8 路由器的发送操作和计算机相同 1723.3.9 路由器与交换机的关系 1733.4 路由器的附加功能1763.4.1 通过地址转换有效利用IP 地址 1763.4.2 地址转换的基本原理 1783.4.3 改写端口号的原因 1803.4.4 从互联网访问公司内网 1813.4.5 路由器的包过滤功能 182第章32122COLUMN 网络术语其实很简单集线器和路由器,换个名字身价翻倍? 184通过接入网进入互联网内部 187——探索接入网和网络运营商4.1 ADSL 接入网的结构和工作方式1914.1.1 互联网的基本结构和家庭、公司网络是相同的 1914.1.2 连接用户与互联网的接入网 1924.1.3 ADSL Modem 将包拆分成信元 1934.1.4 ADSL 将信元“调制”成信号 1974.1.5 ADSL 通过使用多个波来提高速率 2004.1.6 分离器的作用 2014.1.7 从用户到电话局 2034.1.8 噪声的干扰 2044.1.9 通过DSLAM 到达BAS 2054.2 光纤接入网(FTTH)2064.2.1 光纤的基本知识 2064.2.2 单模与多模 2084.2.3 通过光纤分路来降低成本 2134.3 接入网中使用的PPP 和隧道2174.3.1 用户认证和配置下发 2174.3.2 在以太网上传输PPP 消息 2194.3.3 通过隧道将网络包发送给运营商 2234.3.4 接入网的整体工作过程 2254.3.5 不分配IP 地址的无编号端口 2284.3.6 互联网接入路由器将私有地址转换成公有地址 2284.3.7 除PPPoE 之外的其他方式 2304.4 网络运营商的内部2334.4.1 POP 和NOC 2334.4.2 室外通信线路的连接 2364.5 跨越运营商的网络包2384.5.1 运营商之间的连接 2384.5.2 运营商之间的路由信息交换 2394.5.3 与公司网络中自动更新路由表机制的区别 2414.5.4 IX 的必要性 2424.5.5 运营商如何通过IX 互相连接 243第章4COLUMN 网络术语其实很简单名字叫服务器,其实是路由器 246服务器端的局域网中有什么玄机 2495.1 Web 服务器的部署地点2535.1.1 在公司里部署Web 服务器 2535.1.2 将Web 服务器部署在数据中心 2555.2 防火墙的结构和原理2565.2.1 主流的包过滤方式 2565.2.2 如何设置包过滤的规则 2565.2.3 通过端口号限定应用程序 2605.2.4 通过控制位判断连接方向 2605.2.5 从公司内网访问公开区域的规则 2625.2.6 从外部无法访问公司内网 2625.2.7 通过防火墙 2635.2.8 防火墙无法抵御的攻击 2645.3 通过将请求平均分配给多台服务器来平衡负载2655.3.1 性能不足时需要负载均衡 2655.3.2 使用负载均衡器分配访问 2665.4 使用缓存服务器分担负载2705.4.1 如何使用缓存服务器 2705.4.2 缓存服务器通过更新时间管理内容 2715.4.3 最原始的代理——正向代理 2765.4.4 正向代理的改良版——反向代理 2785.4.5 透明代理 2795.5 内容分发服务2805.5.1 利用内容分发服务分担负载 2805.5.2 如何找到最近的缓存服务器 2825.5.3 通过重定向服务器分配访问目标 2855.5.4 缓存的更新方法会影响性能 287COLUMN 网络术语其实很简单当通信线路变成局域网 291第章52324请求到达Web 服务器,响应返回浏览器 293——短短几秒的“漫长旅程”迎来终点6.1 服务器概览2976.1.1 客户端与服务器的区别 2976.1.2 服务器程序的结构 2976.1.3 服务器端的套接字和端口号 2996.2 服务器的接收操作3056.2.1 网卡将接收到的信号转换成数字信息 3056.2.2 IP 模块的接收操作 3086.2.3 TCP 模块如何处理连接包 3096.2.4 TCP 模块如何处理数据包 3116.2.5 TCP 模块的断开操作 3126.3 Web 服务器程序解释请求消息并作出响应3136.3.1 将请求的URI 转换为实际的文件名 3136.3.2 运行CGI 程序 3166.3.3 Web 服务器的访问控制 3196.3.4 返回响应消息 3236.4 浏览器接收响应消息并显示内容3236.4.1 通过响应的数据类型判断其中的内容 3236.4.2 浏览器显示网页内容!访问完成! 326COLUMN 网络术语其实很简单Gateway 是通往异世界的入口 328附录 330后记 334致谢 334作者简介 335
标签: 网络
上传时间: 2022-06-02
上传用户:fliang
1 准备1.1 硬件和编译环境1.1.1 开发板硬件选用PIC18F25K22,在淘宝上可以买到开发板, LIXUE 工作室出品的。价格在140 左右。1.1.2 IDE编译环境为MPLAB IDE V8.87C 编译器为MCC18,版本号为3.38(以上编译环境均由开发板中的光盘提供)1.1.3 仿真器PICkit3,同一家店买的1.2 FreeRTOS 相关移植文件准备1.2.1 下载移植文件在Microchip 官网下载通用移植文件http://embeddedcodesource.com/rtos我是选了下面这个,点击download 即可下载,解压后里面存在如下文件,1.2.2 查找有用的文件下载到的FreeRTOS为6.0.4 版本1)找到三个.c 文件如上图所示,解压后,主要的文件在FreeRTOS\Source文件夹中,如下所示:其中list.c , queue.c ,tasks.c 无需修改,作为主要的FreeRTOS的文件,2)找到与.c 文件对应的.h 文件如下图所示,与之对应的在FreeRTOS\Source\include文件夹中:找到list.h , queue.h ,tasks.h,也无需修改。3)另外还有用的文件包括FreeRTOS.h , portable.h ,projdef.h4)找到heap_1.c找到FreeRTOS\Source\portable\MemMang文件夹里面5)移植修改文件主要包括port.c portmacro.h,在找到FreeRTOS\Source\portable\MPLAB\PIC18F文件夹里面6)其他文件在FreeRTOS_C18\FreeRTOS PrimerEjemplo文件夹中包含了主体的Demo 工程文件,关注FreeRTOSConfig.h,还有两个.lkr 链接文件。2 示例Demo 说明点开FreeRTOS_C18\FreeRTOS PrimerEjemplo 文件夹中的.mcw 工程文件,发现提示丢失文件,如下所示,其实是定位出现文件,依次对应步骤1.2.2 中的各个文件夹位置查找,重新定位即可,定位好之后,编译即可通过,
标签: freertos
上传时间: 2022-06-24
上传用户:
VIP专区-嵌入式/单片机编程源码精选合集系列(102)资源包含以下内容:1. DMX512在PIC单片机上的汇编接收程序.2. 用XC9572来控制LCD12864的读写等时序,用89C52的总线方式来控制LCD.3. 对25AA040的EEPROM进行SPI读写.4. 一个测试USB器件PDIUSBD12的上位机源代码.5. 这个源码测试过,可以用.电路图也可以根据程序画,非常方便..6. VB开发的进行PLC通讯测试的程序.7. 使用梯形图开发的PLC控制程序.8. 开发的PLC梯形图程序.9. cgnal c8051f020 4*6键盘 4*8 液晶显示 大容量存储.10. 《嵌入式系统的C程序设计》电子版.11. maxim的对sd卡的串行spi模式进行读写操作控制的程序源码.12. 在用计算机进行数据传输时.13. u boot介绍.14. C++编写的针对PCI卡.15. 一个QT4开发的小界面。我也是新手做的一个小程序。希望和大家一起讨论QT.16. 基于AT89C2051的室内红外遥控电动车电路设计.17. 南京大学电子系抢答电路仿真课件.18. 这个是在UNIX下.19. 大名鼎鼎的AudioCodes的VOIP处理芯片AC483的数据手册,很多语音卡都是用这个芯片的..20. 《嵌入式开发实例》全书所附源代码.21. C++编写的针对CP5611 PCI卡的通讯程序Demo.22. H桥驱动电路.23. 红外遥控接收电路,常用于控制系统中.24. 电动小车的电机驱动及控制.25. 微型红外追踪及无线遥控车设计,这个文档包括一些毕业设计中所常用的设计电路.26. system c好资料--Modeling with SystemCTM Workshop Version 1.4.27. LPC2124 + proteus 仿真 ADS v1.2编译 实现数字显字功能.28. ALI-5661芯片MP3方案3100版本详细资料。 包含 M5661 Flash Support List_SDK_070122 M5661 User Manual_v1.2_051023 .29. 80c296sa平台的ads7864采集程序.30. 串行外设接口SPI的应用.31. 书名是电器控制与PLC.32. power pc 405 ep核心板及其周边的原理图和pcb图.33. 中文版的keil操作手册.34. 信号被白噪声干扰.35. ControlCAN 开发程序例程1.36. ControlCAN 开发程序例程1.37. 运用Labview进行虚拟示波器设计的源码.38. 运用Labview进行虚拟示波器设计的源码.39. 运用Labview进行虚拟示波器串口设计的源码.40. compact pci footprint for design,using pads2005 open it ,like you need it !.
标签: 光电技术
上传时间: 2013-04-15
上传用户:eeworm
书 名:Programming Windows程式开发设计指南 出版日期:2000/6/2 书 号:957-8239-73-4 I S B N:957-8239-73-4 原 作 者:Charles Petzold 译 者:余孟学
标签: 8239 Programming 957 Windows
上传时间: 2015-04-26
上传用户:xinyuzhiqiwuwu