P30-33蜗牛一期--交换机

本文介绍交换机的基础配置方法,包括思科设备的命令行操作、基本配置步骤、接口配置及远程管理等。涵盖命令行模式切换、常用配置命令、telnet与ssh远程连接配置等内容。

目录:
1.交换机的基本配置

一、交换机的基本配置

1.思科设备的命令行基础 2.会对交换机进行基础配置 3.会通过telnet和ssh对交换机进行远程管理

一、思科设备命令行基础

1.想要进入设备的命令行揭秘那

  • 设备支持命令行
    • 取查看设备上的接口,看是否有console
  • 需要有console线
  • 需要超级终端软件进行连接
    • putty
    • secret CRT
    • xshell
      2.命令行基础
  • 思科设备上的命令行模式
    • 用户模式:查看统计信息(一般用的很少)
      • 用户模式 ==> 特权模式
enable
en			#简写
    • 特权模式:查看并修改设备的配置(一般以查看居多)
      • 特权模式 ==> 全局模式
configure terminal
conf t		#简写
    • 全局模式:针对设备的整体配置参数
      • 全局模式 ⇒ 接口模式
interface fasternet0/1
int f0/1		#简写
    • 接口模式:针对设备的接口修改配置参数
模式符号向下命令
用户模式“>”en
特权模式“#”conf t
全局模式“(config)#”int f0/1
接口模式"(config-if)# "向上都是exit
    • 进入对应模式都只能一级一级进入
    • 返回对应模式,一级一级返回使用"exit",快速返回特权模式,用"end".

在这里插入图片描述
连接时,pc连接RS 232,交换机连接console接口

    • 命令输错后进入
Switch>dfds
Translating "dfds"...domain server (255.255.255.255) % Name lookup aborted
Switch>en
Switch#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#no ip domain-lookup	#在全局模式禁止域名解析

3.常见配置

  • 给交换机配置一个主机名
Switch(config)#hostname smile
  • 交换机里维护了一张MAC地址表,怎么查看
show mac-address-table
  • 交换机的双工模式
Switch>en
Switch#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#int f0/1
Switch(config-if)#duplex half

#查看结果
Switch#show int f0/1
FastEthernet0/1 is up, line protocol is up (connected)
	...
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  Half-duplex, 100Mb/s		#这一行看出改成功了
  ....
  • 交换机的接口速率
Switch#conf t
Switch(config)#int f0/2
Switch(config-if)#speed 10
Switch(config-if)#end
Switch#show int f0/2	#查看f0/2接口
  Full-duplex, 10Mb/s			#可见调整成10Mb/s
  • 配置console口密码
Switch#conf t
Switch(config)#line console 0
Switch(config-line)#password 154302
Switch(config-line)#login

二、通过远程管理方式连接交换机(telnet ssh)

Telnet

1.telnet时应用层协议,基于传输层TCP,默认端口号:23,采用明文密码方式,不是很安全,一般用内网管理。
2.ssh是应用层协议,基于传输层TCP,默认端口号:22,采用密文密码方式,相对比较安全,经常用于跨越互联网管理,也常用于远程管理Linux操作系统
3.思路

  • 既然通过网络的方式进行管理设备,设备就必须配置ip地址,由于交换机上的接口都是交换接口,是不允许配置ip地址,直接为交换机的虚拟接口配置ip地址,默认情况下交换机的默认虚接口就是 vlan1 端口
Switch(config)#int vlan 1
Switch(config-if)#ip address 192.168.100.100 255.255.255.0
Switch(config-if)#no shutdown
%LINK-5-CHANGED: Interface Vlan1, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan1, changed state to up
  • 配置设备的连接终端并直接设置密码,应用
Switch#conf t
smile(config)#line vty 0 4	#虚拟终端0-4
smile(config-line)#password 123
smile(config-line)#login	#应用
  • 创建连接用户名密码,配置设备的连接终端并应用
smile(config)#username dragon password smile
smile(config)#line vty 0 4
smile(config-line)#login local
login表示直接使用密码登陆,login local代表使用用户密码登陆

4.设置特权模式的密码(全局模式下)

#上面的密码是远程连接的密码, 下面的这两个密码是给特权用户的密码
#同时设置 明文 和 密文 密码,密文密码生效
smile(config)#enable password 1234	#明文
smile(config)#enable secret 4567	#密文
smile#show running-config	#查看当前配置文件命令

Ssh

  • 创建密钥对并进行
######保留问题
smile#erase startup-config
reload
#无法清空交换机设置
Switch(config)#int vlan 1
Switch(config-if)#ip add 192.168.100.100 255.255.255.0
sw3(config-if)#no shutdown			#修改完一定保存!!!
#设置SSH相关内容
Switch#show ip ssh
Switch(config)#hostname SW1
SW1(config)#ip domain-name woniu.com

SW1(config)#crypto key generate rsa	#生成密钥对
How many bits in the modulus [512]: 2048
% Generating 2048 bit RSA keys, keys will be non-exportable...[OK]

SW1(config)#ip ssh time-out 120		#超时时间
SW1(config)#ip ssh authentication-retries 5		#认证失败次数

SW1(config)#line vty 0 4
sw3(config)#username lisi password 5656
SW1(config)#line vty 0 4
SW1(config-line)#login local
sw3(config)#enable secret 567576
<think>我们通常说的P0、P1、P2、P3口在51单片机中对应的是特殊功能寄存器(SFR)的地址。这些地址是固定的,在头文件reg51.h中已经定义。在51单片机中,P0、P1、P2、P3的地址分别是0x80,0x90,0xA0,0xB0。这些地址是8位的。但是,在给出的代码中,我们使用了扩展的I/O,例如8255和ADC0809、DAC0832,这些是通过外部存储器映射的方式访问的。因此,我们使用XBYTE宏(定义在absacc.h中)来访问这些外部地址。在问题中,要求将P30-P33(即P3口的低4位)对应16进制。但是,在51单片机中,P3口本身是一个8位的端口,其地址为0xB0。我们不能直接改变P3口的地址,但我们可以通过软件操作P3口的低4位。如果问题是想知道P3口的低4位(P3.0-P3.3)在单片机内部寄存器中的位地址,那么我们可以这样看:-P3.0的位地址为0xB0(字节地址)的第0位,位地址是0xB0+0=0xB0(注意:位寻址时,位地址是单独计算的,但实际上在字节地址0xB0上,每一位都有位地址,从0xB0(第0位)到0xB7(第7位))。-所以P3.0的位地址是0xB0-P3.1的位地址是0xB1-P3.2的位地址是0xB2-P3.3的位地址是0xB3如果问题是想将P30-P33(即P3.0-P3.3)作为4个单独的位来操作,我们可以使用sbit关键字定义:```csbitP30=P3^0;sbitP31=P3^1;sbitP32=P3^2;sbitP33=P3^3;```这样我们就可以直接操作这些位了。但是,在给出的代码中,我们并没有使用P3口的低4位,而是使用了P2^1作为EOC信号(sbitEOC=P2^1;)。所以,如果问题要求使用P30-P33,那么我们需要修改代码。不过,原问题描述并不清晰。我猜测可能是想将按键连接到P3口的低4位,然后修改按键检测程序?如果是这样,我们可以修改按键检测部分,将原来检测P1口的低3位改为检测P3口的低4位。修改如下:1.将原来检测P1改为检测P32.修改按键掩码由于原代码中按键检测函数keyboard()检测的是P1口的低3位,现在改为检测P3口的低4位。修改后的按键检测函数(使用P3口的低4位):```cvoidkeyboard(){u8temp;//读取P3口的低4位temp=P3&0x0F;//注意:P3口是0xB0,低4位掩码为0x0Fif(temp!=0x0F)//当有按键按下时,低4位不会全为1(因为按键接低电平){delay(100);temp=P3&0x0F;if(temp!=0x0F){//判断具体按键,这里假设4个按键分别对应P3.0-P3.3//注意:按键按下时,对应位为0if((temp&0x01)==0)//P3.0{key=1;}elseif((temp&0x02)==0)//P3.1{key=2;}elseif((temp&0x04)==0)//P3.2{key=3;}elseif((temp&0x08)==0)//P3.3{key=4;}//等待按键释放while((P3&0x0F)!=0x0F);}}//更新显示if(key==1)display[0]=10;elseif(key==2)display[0]=11;elseif(key==3)display[0]=12;elseif(key==4)display[0]=13;}```注意:上面的代码假设按键按下时,对应的P3口引脚被拉低(低电平有效)。另外,由于P3口有第二功能(串口、外部中断等),如果使用了这些功能,就不能随意改变其作为普通I/O的使用。在代码中,我们使用了外部中断0(INT0),它对应P3.2,所以如果按键3接在P3.2上,那么就会和外部中断0冲突。因此,我们需要避免使用P3.2作为按键(如果已经使用了外部中断0的话)。或者,我们可以重新规划按键引脚。如果必须使用P3.2作为按键,那么我们需要在程序中小心处理,避免和外部中断冲突。可能需要在检测按键时暂时关闭外部中断。但是,在原始代码中,外部中断0用于ADC转换完成中断(EOC信号),而EOC信号连接在P2^1,所以P3.2并没有被占用。因此,我们可以使用P3.2作为按键输入。总结:将按键从P1口的低3位改为P3口的低4位,需要修改按键检测函数,并注意P3.2是否被用作外部中断0。在本代码中,外部中断0由EOC(P2^1)触发,所以P3.2可以作为普通I/O使用。如果问题只是要求给出P30-P33的16进制地址(位地址),那么:-P30:0xB0-P31:0xB1-P32:0xB2-P33:0xB3如果问题要求将按键改到P3口,那么按照上面的代码修改即可。由于问题描述不够清晰,我提供了两种可能的解释和解决方案。§§相关问题§§:1.在51单片机中,P3口的第二功能有哪些?2.如何配置51单片机的I/O口为输入模式?3.当I/O口同时用于普通输入和中断功能时,如何避免冲突?4.51单片机中位寻址和字节寻址有什么区别?</think># P30-P33引脚对应16进制地址解析 在8051单片机中,P3口的引脚P3.0-P3.3(即P30-P33)对应着特定的硬件地址。这些地址在单片机的特殊功能寄存器(SFR)中定义。 ## P3口地址解析 在8051架构中,P3口的基地址是`0xB0`。每个引脚对应这个基地址的一个位: | 引脚 | 位位置 | 位地址(16进制) | 字节地址(16进制) | |------|--------|-----------------|-------------------| | P3.0 | 位0 | 0xB0 | 0xB0 | | P3.1 | 位1 | 0xB1 | 0xB0 | | P3.2 | 位2 | 0xB2 | 0xB0 | | P3.3 | 位3 | 0xB3 | 0xB0 | ### 访问P3口引脚的代码实现 ```c #include <reg51.h> #include <stdio.h> // 定义P3口的位地址 sbit P30 = P3^0; // 地址 0xB0 sbit P31 = P3^1; // 地址 0xB1 sbit P32 = P3^2; // 地址 0xB2 sbit P33 = P3^3; // 地址 0xB3 // 使用绝对地址访问 #define P3_BYTE_ADDR 0xB0 #define P30_BIT_ADDR 0xB0 #define P31_BIT_ADDR 0xB1 #define P32_BIT_ADDR 0xB2 #define P33_BIT_ADDR 0xB3 void main() { // 方法1:使用sbit定义访问 P30 = 1; // 设置P3.0为高电平 P31 = 0; // 设置P3.1为低电平 // 方法2:使用绝对地址访问 // 访问整个P3口 P3 = 0x0F; // 设置P3.0-P3.3为高电平,其他为低电平 // 访问单个引脚 _at_(P30_BIT_ADDR) = 1; // 设置P3.0为高电平 _at_(P31_BIT_ADDR) = 0; // 设置P3.1为低电平 while(1) { // 读取P3.2状态 if(P32 == 1) { // P3.2为高电平时的处理 } // 读取P3.3状态(使用绝对地址) if(_at_(P33_BIT_ADDR)) { // P3.3为高电平时的处理 } } } ``` ## P3口的特殊功能 P3口在8051单片机中不仅有通用I/O功能,还具有特殊功能: | 引脚 | 特殊功能 | 功能说明 | |------|-------------|------------------------| | P3.0 | RXD | 串行数据接收 | | P3.1 | TXD | 串行数据发送 | | P3.2 | INT0 | 外部中断0 | | P3.3 | INT1 | 外部中断1 | ### 使用特殊功能的中断示例 ```c #include <reg51.h> // 定义中断引脚 sbit INT0 = P3^2; // 外部中断0,地址0xB2 sbit INT1 = P3^3; // 外部中断1,地址0xB3 // 外部中断0服务函数 void ext0_isr(void) interrupt 0 { // 处理外部中断0 } // 外部中断1服务函数 void ext1_isr(void) interrupt 2 { // 处理外部中断1 } void main() { // 设置中断触发方式 IT0 = 1; // INT0下降沿触发 IT1 = 0; // INT1低电平触发 // 使能中断 EX0 = 1; // 使能INT0中断 EX1 = 1; // 使能INT1中断 EA = 1; // 全局中断使能 while(1) { // 主循环 } } ``` ## P3口配置注意事项 1. **上拉电阻**:P3口内部有弱上拉电阻,输入时不需要外接上拉 2. **双向I/O**:P3口是准双向口,可以直接用于输入和输出 3. **特殊功能**:当使用特殊功能时,相应引脚会自动配置为特殊功能模式 4. **开漏输出**:作为通用I/O时,P3口是推挽输出;但特殊功能如INT0/INT1是开漏输出 ### P3口配置代码示例 ```c void configure_p3() { // 设置P3.0和P3.1为串口功能(特殊功能) SCON = 0x50; // 串口模式1,允许接收 // 设置P3.2和P3.3为通用输入 // 特殊功能寄存器中没有直接配置位,通过不使用特殊功能实现 // 设置P3.4-P3.7为输出 P3 = 0xF0; // 高4位输出高电平 // 读取P3.2和P3.3状态 if(P3 & 0x0C) { // P3.2或P3.3为高电平 } } ``` ## P3口在嵌入式系统中的典型应用 ### 1. 按键输入检测 ```c sbit KEY1 = P3^2; // 按键1连接到P3.2 sbit KEY2 = P3^3; // 按键2连接到P3.3 void check_keys() { static bit last_key1 = 1; static bit last_key2 = 1; bit current_key1 = KEY1; bit current_key2 = KEY2; // 检测KEY1按下(下降沿) if(last_key1 && !current_key1) { // 按键1按下处理 } // 检测KEY2按下(下降沿) if(last_key2 && !current_key2) { // 按键2按下处理 } last_key1 = current_key1; last_key2 = current_key2; } ``` ### 2. 外部中断应用 ```c // 外部中断0初始化 void init_ext0() { IT0 = 1; // 下降沿触发 EX0 = 1; // 使能外部中断0 EA = 1; // 全局中断使能 } // 外部中断0服务函数 void ext0_isr() interrupt 0 { // 处理中断 } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值