堆栈应用题要求:一、 设计一个堆栈类,实现对于软件操作中常用的撤销/重做(Undo/Redo)的支持。
二、 使用控制台或者图形界面,测试这个堆栈类的使用。
2025/3/24 14:40:12 1.92MB 撤销 重做
1
单片机,特别是MCS-51系列,是电子工程领域广泛应用的微控制器。
MCS-51单片机的内部资源包括一个8位的CPU,4KB的掩膜ROM程序存储器,128字节的内部RAM数据存储器,2个16位的定时器/计数器,1个全双工异步串行口,5个中断源以及两级中断优先级控制器。
此外,还有时钟电路,这对于单片机的运行至关重要。
MCS-51的外部时钟可以通过XTAL1和XTAL2引脚接入外部振荡信号源。
指令周期是以机器周期为基本单位,机器周期由12个振荡周期组成,等于6个状态周期。
在MCS-51中,RAM有两个可寻址区域,分别是20H-2FH的16个单元和字节地址为8的倍数的特殊功能寄存器(SFR)。
参数传递在子程序中通常通过寄存器或片内RAM进行。
中断程序的返回通常使用RETI指令,而在返回主程序前需要恢复现场。
串行口工作方式1的一帧数据包含10位,波特率的设定公式取决于具体应用。
中断响应时间通常在3-8个周期之间,最短响应时间是在CPU查询中断标志的最后一个机器周期后立即执行LCALL指令,需要3个机器周期。
单片机的时钟产生有两种方式:内部和外部。
51单片机的存储器包括ROM和RAM。
在扩展外部存储器时,P0口作为数据和地址总线的低8位,而P3.3口的第二功能是INT1。
中断矢量地址如外部中断0为0003H,外部中断1为0013H。
MCS-51的I/O端口有三种操作模式:读端口数据,读端口引脚和输出。
地址译码方法包括部分地址译码、全地址译码和线选法。
直接寻址可以访问SFR、内部数据存储器低128字节以及位地址空间。
P0口可以作为真正的双向数据总线口或通用I/O口,但作为后者时是准双向口。
在定时/计数器的工作方式中,只有T0能工作于方式三,用于生成波特率。
串行通信的一帧数据包括起始位、数据位、奇偶校验位和停止位。
波特率表示每秒传输二进制位的数量。
中断响应时间是从PC指针到转向中断服务程序入口地址所需的机器周期数。
定时器T0和T1在工作方式1下为16位计数器,范围0-65535。
MCS-51的堆栈是向上生长的,SP始终指向栈顶。
入栈操作是先SP加1再压入数据,而出栈则先弹出数据再SP减1。
MCS51单片机的内部资源包括并行I/O口、定时器/计数器、串行接口和中断系统。
它有8种寻址方式,包括寄存器、直接、立即、寄存器间接、相对、页面、变址和位寻址。
变址寻址是基于16位的程序计数器PC或数据指针DPTR作为基址寄存器,结合8位的累加器A作为变址寄存器。
MCS-51单片机具有111条指令,按长度分为单字节、双字节和三字节指令,并按执行所需的机器周期数进一步分类。
这些指令构成了MCS-51强大的处理能力,使其能够在各种嵌入式系统中发挥关键作用。
理解和掌握这些知识点对于单片机的学习和期末考试至关重要。
2025/3/16 17:44:05 323KB
1
STM32F429DISCO是一款基于STM32F4系列高性能微控制器的开发板,广泛用于嵌入式系统开发。
在这个特定的例子中,我们关注的是如何在该平台上实现RNDIS(RemoteNetworkDriverInterfaceSpecification)功能,利用LWIP(LightweightIP)网络库,并且不依赖DHCP(DynamicHostConfigurationProtocol)服务。
RNDIS是一种由Microsoft定义的接口标准,允许设备以网络适配器的形式与主机通信。
在STM32F429DISCO上实现RNDIS,可以将开发板通过USB连接模拟为一个网络设备,使它能够与主机进行数据交换,如发送和接收TCP/IP协议栈的数据包。
LWIP是一个开源、轻量级的TCP/IP协议栈,适合资源有限的嵌入式设备。
在这个例子中,LWIP将作为STM32F429DISCO的网络堆栈,处理TCP/IP协议,包括IP、TCP、UDP、ICMP等,而无需完整的操作系统支持。
DHCP是用于自动分配网络设备IP地址的协议。
不过,在这个例子中提到“nodhcp”,意味着系统不会使用DHCP服务来动态获取IP地址。
这意味着开发者可能需要手动配置STM32F429DISCO的IP地址,以及其他网络参数如子网掩码和默认网关。
在提供的压缩包文件中,我们可以找到以下几个关键目录:1.**Src**:包含了项目的源代码,这通常包括了RNDIS驱动、LWIP的配置和应用层的代码,以及USB驱动的实现,以便STM32F429DISCO能够作为一个RNDIS设备。
2.**Middlewares**:中间件目录,可能包含LWIP的源代码或者配置文件,以及可能的USB堆栈和其他必要的软件组件。
3.**Drivers**:驱动程序目录,通常会包含STM32F429的HAL(HardwareAbstractionLayer)库和LL(Low-Layer)库,这些库提供了对微控制器硬件功能的访问,包括USB控制器和以太网接口。
4.**MDK-ARM**:这是基于ARM的MicrocontrollerDevelopmentKit,包含了项目工程文件,如`.sln`或`.uvprojx`,以及编译所需的设置和配置。
5.**Inc**:头文件目录,包含了所有源代码中引用的头文件,包括STM32的外设驱动接口声明、LWIP的API定义以及其他必要的数据结构和常量。
在实际开发过程中,开发者需要理解RNDIS的工作原理,熟悉LWIP的配置和使用,掌握STM32F4系列的USB和网络接口编程。
同时,还需要对MDK-ARM集成开发环境有一定的了解,以便于编译、调试和优化代码。
此外,手动配置IP地址可能会涉及到网络规划和静态IP的设置。
这个项目对于想要学习如何在嵌入式系统中实现USB通信和网络功能的开发者来说,是一个很好的实践案例。
2025/3/15 14:50:32 2.64MB lwip
1
Grafana堆栈,和微小图像(实现)。
例如grafana-4.6.3〜90M,石墨1.1.1〜125M,statsdly-0.4.1〜33M。
所有图像都是从官方来源构建的,它们的配置(默认)理智(理性)。
Docker网络Grafana需要访问石墨,因此您应该创建一个docker网络,使用链接(不建议使用)或使用docker-compose。
下面的所有示例均假设grafana-stack网络。
dockernetworkcreategrafana-stack石墨Dockerhub:。
启动容器:mkdir-pdata/carbonexportDOC
1
以前那个堆栈初始化有点问题,现在重新修改了个
2025/1/19 22:04:47 413KB ucos-ii mc9s12
1
VBDecompilerProVisualBasic能编译程序为p-code或nativecode形式的EXE,DLL或OCX文件.VBDecompilerPro能反编译VisualBasic5.0/6.0的p-code形式的EXE,DLL或OCX文件。
对nativecode形式的EXE,DLL或OCX文件,VBDecompilerPro也能给出反编译线索。
如果一个程序被编译成nativecode,从机器码恢复源代码是几乎不可能的.但即便是这种情形下VBDecompiler还是可以帮助你分析程序.VBDecompiler包含了一个强大的支持包含MMX和SSE的PentiumPro指令集的反编译器.它还包含一个代码分析器,用于搜索所有API调用,汇编代码中的字符串引用并将结果修改为相应的注释.标准版及专业版VBDecompiler的功能介绍LitePro通用脱壳(支持UPX,NSPack以及一些其他常见的可执行文件压缩壳)反编译窗体(frm和frx)以及用户控制(ctl)对象文件完整的伪代码p-code反编译(解析操作码并转换为标准vb指令,反编译GUID对象)两种伪代码反编译模式(包含堆栈解析或不包含堆栈解析)反汇编nativecode过程(使用强大的PentiumPro反汇编器,支持MMX及FPU指令集)反汇编nativecode过程中的字符串引用以及API调用(使用强大的PentiumPro反汇编器,支持MMX及FPU指令集)部分反编译nativecode(使用代码仿真引擎)在反编译的代码中根据语法显示不同的颜色字符串引用列表以及搜索引擎快速反编译VB5/6程序的混淆工具VB5/6程序的修补工具将反编译的数据保存入单个DB文件反编译.Net程序将所有的过程列表保存入MAP文件,IDC脚本或是HIEW的Names文件价格
2025/1/9 12:36:53 5.36MB VB反编译工具 VB Decompiler 绿色汉化
1
如果您发现该项目很有希望::white_medium_star:请给这个项目加星标:white_medium_star:!!!:)这将有助于宣传,以便我可以开始产生开发人员反馈。
提前致谢!SonicJS是基于现代开源“永久免费”NodeJs的内容管理系统屏幕截图管理内容类型拖放表单生成器使用自动生成的表单编辑内容建立具有20多种字段类型的高级表单从前端编辑内容属性前端所见即所得编辑器菜单管理器实时CSS编辑器内置媒体服务器模块管理前端Json编辑器SwaggerAPI资源管理器访问了解详细信息,视频和文档SonicJsNodeJs内容管理系统(CMS)总览SonicJs是基于RESTAPI的100%基于javascript的CMS/Framework,基于以下技术堆栈构建:节点表达引导程序4SonicJs支持许多常见的数据库,包括:MongoDB,MySQL,SQLServer,Cloudant,DashDB,DB2,Informix,Oracle,PostgreSQL,Redis,SQLite3
2024/12/10 13:25:29 7.52MB nodejs javascript mysql redis
1
示例AnsiblePlaybook提供DigitalOcean小滴这是一个示例剧本,说明了如何使用Ansible创建和设置DigitalOcean小滴。
您可以通过此剧本使用命令行启动并配置小滴。
该剧本具有以下功能:旋转DigitalOcean小滴将小滴的IP地址添加到设置交换文件安装和设置fail2ban设置简单的防火墙设置时区添加具有sudo访问权限的新用户帐户为新用户帐户添加公共ssh密钥对Droplet禁用密码认证拒绝root登录到Droplet安装UnattendedUpgrades软件包以进行自动安全更新(可选)安装LEMP堆栈(可选)安装Docker先决条件Ansible>=2.4.0.0用法克隆此仓库:gitclonehttps://github.com/jasonheecs/ansible-digitalocean-sample-playbooks.gitcdansible-digitalocean-sample-playbooks将group_vars/all/secret.yml.example文
1
我能抽象出整个世界...但是我不能抽象出你...因为你在我心中是那么的具体...所以我的世界并不完整...我可以重载甚至覆盖这个世界里的任何一种方法...但是我却不能重载对你的思念...也许命中注定了你在我的世界里永远的烙上了静态的属性...而我不慎调用了爱你这个方法...当我义无返顾的把自己作为参数传进这个方法时...我才发现爱上你是一个死循环...它不停的返回对你的思念压入我心里的堆栈...在这无尽的黑夜中...我的内存里已经再也装不下别人...我不停的向系统申请空间...但却捕获一个异常---我爱的人不爱我...为了解决这个异常...我愿意虚拟出最后一点内存...把所有我能实现的方法地址压入堆栈...并且在栈尾压入最后一个方法---将字符串"我爱你,你爱我吗?"传递给你...如果返回值为真--我将用尽一生去爱你...否则--我将释放掉所有系资源.
2024/11/21 2:07:45 30KB love
1
实验一OpenGL+GLUT开发平台搭建5小实验1:开发环境设置5小实验2:控制窗口位置和大小6小实验3:默认的可视化范围6小实验4:自定义可视化范围7小实验5:几何对象变形的原因8小实验6:视口坐标系及视口定义8小实验7:动态调整长宽比例,保证几何对象不变形9实验二动画和交互10小实验1:单缓冲动画技术10小实验2:双缓冲动画技术11小实验3:键盘控制13小实验4:鼠标控制【试着单击鼠标左键或者右键,试着按下鼠标左键后再移动】14实验三几何变换、观察变换、三维对象16小实验1:二维几何变换16小实验2:建模观察(MODELVIEW)矩阵堆栈17小实验3:正平行投影119小实验4:正平行投影219小实验5:正平行投影320小实验6:透射投影121小实验6:透射投影222小实验7:三维对象24实验四光照模型和纹理映射26小实验1:光照模型1----OpenGL简单光照效果的关键步骤。
26小实验2:光照模型2----光源位置的问题28小实验3:光照模型3----光源位置的问题31小实验4:光照模型4----光源位置的问题33小实验5:光照模型5----光源位置的问题35小实验6:光照模型6----光源位置的问题38小实验7:光照模型7----光源位置的动态变化40小实验8:光照模型8----光源位置的动态变化43小实验9:光照模型9---光源位置的动态变化45小实验10:光照模型10---聚光灯效果模拟48小实验11:光照模型11---多光源效果模拟50小实验12:光照效果和雾效果的结合53小实验13:纹理映射初步—掌握OpenGL纹理映射的一般步骤56小实验13:纹理映射—纹理坐标的自动生成(基于参数的曲面映射)59小实验14:纹理映射—纹理坐标的自动生成(基于参考面距离)61
2024/11/15 15:21:27 10.68MB 计算机图形学 OpenGL
1
共 183 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡