文档库 最新最全的文档下载
当前位置:文档库 › 如何实现单片机程序代码的反汇编

如何实现单片机程序代码的反汇编

如何实现单片机程序代码的反汇编

如何实现单片机程序代码的反汇编

要正确获取程序的目标代码,首先要明确程序代码的存放地点。51单片机的程序存储器最大空间为64KB,在一个实际的应用系统中,程序存储器的分布情况可能有以下几种:

(1)只使用了片内程序空间。而没有使用片外的程序空间。

其硬件特征为:/EA引脚接VCC;/PSEN引脚为空脚。

这种情况比较简单,全部应用程序都在单片机内部的程序存储器中,我们只要使用编程器将程序代码读出来,保存为一个目标代码文件就可以了。要注意的是,有一些新型的单片机具有加密功能,如果进行了加密,其中的程序代码就是不能读出。

(2)没有使用片内程序空间,片外程序空间由单个存储芯片构成。

其硬件特征为:/EA引脚接GND;/PSEN引脚接到一个存储芯片上。

这种情况下,全部应用程序都在单片机外部的程序存储器中,原则上我们只要使用编程器将程序代码读出来,保存为一个目标代码文件就可以了。但要注意的是,这样得到的并不一定是真正的目标代码,因为,为了防止程序代码被读取、反汇编,很多设计人员都采取跳接线的方法,将某些地址线跳接或将某些数据线跳接或将地址线、数据线都进行跳接,从而保护自己的程序不被反汇编(参见图1~图4)。这样一来,我们从存储器中读取的就不是真正的程序目标代码,必须进行某种变换,将其转换为真正的程序目标代码,才能进行反汇编。

要进行目标代码的变换,首先必须根据硬件画出实际的地址和数据的接线图,然后借助于工具软件进行变换。在“51汇编集成开发环境”(其下载网址为www1.skycn.com/SOFt/15074/html)中,提供了一个变换工具,从软件界面的[辅助工具]—[目标代码转换]-[bin代码还原]就可以启动这个工具。

单击[浏览]可以选择要转换的代码文件,注意:这里的代码文件只能是二进制代码文件,

鍗旷墖链鸿

河北工业大学计算机硬件技术基础(MCS-51)2007年课程设计 报告 一、题目:工业顺序控制 二、问题的提出 1.目的: (1)培养学生综合利用MCS-51单片机的软硬件知识进行程序设计的能 力,解决一些实际问题。 (2)进一步加深对MCS-51单片机内部结构和程序设计方法的理解。 (3)提高学生建立程序文档、归纳总结的书面表达能力。 (4)通过查阅和网上搜索资料,提高学生独立获取知识的能力。 (5)在设计的全过程中,通过理论与实践相结合,培养和提高学生的实 践能力和创新能力。 三、总体设计 1、分析问题的功能 在工业控制中,像冲压、注塑、轻纺、制瓶等生产过程,都是一些继续生产过程,按某种顺序有规律的完成某种预定的动作,对这类继续生产过程称为顺序控制,倒注塑机工艺大致按“合模-注射-延时-开模-产伸-产退”顺序工作。 P1.0~P1.6代表控制注塑机的七道工程,模拟控制七只发光二极管的点亮,低电平有效,设每道工序时间为延时,P3.4为开工启动开关,低电平启动,P3.3为外部故障输入模拟开关,低电平报警,P1.7为报警输出,前六道工序只有一位输出,第七道工序中有三位输出。 2、系统总体结构设计 根据上述问题描述,本设计运用了两个中断,一个外部INT1中断,一个定时 器T/C1中断, 四、详细设计: 1、画出电路图;

2. 流程图

3、设计中的主要困难及解决方案 1)困难1 实现蜂鸣器与故障中断的同步 解决方法:当语句LOOP: JNB P3.3,LOOP 循环执行时,开定时器不断给蜂鸣器高低方波,这样,只要定时器一直开着,蜂鸣器就一直处于鸣响状态,直到外部中断解除。 LOOP: JNB P3.3, LOOP SETB P1.7 CLR ET1 RETI 定时器停止工作,工程回到端点继续执行。 2)困难2 各工序的用时应该不同 我们准备了几个不同的子程序,每个灯亮时就可以调用不同的子程序了,这样等量的时间就不同了。 三、程序清单 ORG 8000H AJMP MAIN ORG 8013H LJMP INT1SV ORG 801BH LJMP T1S MAIN: MOV SP, #5FH SETB EA ;允许CPU中断 SETB EX1 ;允许INT1中断 CLR IT1 ;INT1为电平触发 L0: JNB P3.4, L1 AJMP L0 ;是否开工? L1: ;第一道工序 SETB P1.7 CLR P1.0 ACALL DLAY L3: SETB P1.0 ;第二道工序 CLR P1.1 ACALL DLAYA AJMP L4 L4:SETB P1.1 ;第三道工序 CLR P1.2 ACALL DLAYB AJMP L5 L5: SETB P1.2 ;第四道工序

工业过程自动化技术专业

工业过程自动化技术专业(中德技术学院)人才培养方案 一、专业代码、名称 560303,工业过程自动化技术(专科) 二、培养目标 本专业培养具有良好的思想道德品质、国际视野和科学人文素养,具备生产过程自动化技术领域所需的职业素养、工程技术基础理论和一定的工程实践能力,能够从事系统分析、系统设计、系统运行等方面工作的应用型人才。 三、培养要求 本专业学生主要学习电路分析、电子技术、控制理论、单片机原理及应用、系统工程、检测技术及仪表、计算机控制技术与应用、工业过程控制及运动控制等方面的基本理论和基本知识,使学生受到较好的工程实践基本训练。 本专业培养的毕业生必须达到如下知识、能力和素质的培养要求: 1.掌握自动化专业必需的数学、自然科学、工程基础和专业相关知识,能够将所学知识用于解决工业生产过程控制系统中的问题。 2.能够针对工业生产过程控制系统及其网络的设计、开发、构建、实现、应用与改进等复杂工程问题给出设计方案;能够设计出满足控制系统特定需求的各个单元和系统,能够在该设计环节中激发创新意识,并综合考虑社会、健康、安全、法律、文化以及环境等因素。 3.能够选择与使用典型的检索工具获取技术资源,能够使用相关的硬软件设计、开发、仿真软件对控制系统及其网络的设计、开发、构建、实现、应用与改进等复杂工程问题进行模拟和预测。 4.了解自动化专业领域和相关行业工程背景和应用现状,能够对其经济效益和社会影响进行合理分析和评价,在设计过程中综合考虑法律、安全、健康以及文化等制约因素,并能理解应承担的责任。 5.能够了解自动化领域相关职业和行业的生产、设计、研究与开发在环境保护和社会可持续性发展等方面的方针、政策,并能够理解和评价自动化工程实践对环境、社会可持续发展的影响。 6.具有人文社会科学素养、社会责任感,能够在自动化工程实践中理解并遵守工程职业道德和规范,履行责任。 7.能够在多学科和交叉学科背景下的自动化工程实践团队中承担个体、团队成员以及负责人的角色。 8.能够与业界同行进行有效沟通和交流,能够根据需要撰写报告和设计文稿,能够在公众场合陈述发言、清晰表达或回应指令。能顺利阅读本专业的外文资料,具有一定的国际视野,能在跨文化背景下进行沟通和交流。 9.具有自主学习和终身学习的意识,有不断学习和适应发展的能力。 四、主干学科 控制科学与工程、电气工程。 五、核心知识领域 控制理论、电路与电子技术、检测技术与仪表、计算机控制技术、工程设计、电力电子、电机拖动及运动控制、过程控制工程。 六、核心课程

汇编语言基础实验

实验1 DEBUG调试命令的练习(验证性实验) 一、实验目的 熟悉DEBUG环境、练习DEBUG调试程序的主要命令。二、实验内容 利用DEBUG调试程序练习编写和调试小程序段。 三、实验步骤 1.进入DEBUG调试环境; ①首先,点击开始--运行;(也可采用其他方式进入) ②在运行窗口下,输入cmd; ③点击确定之后,转到命令窗口,输入DEBUG并回车; 2.用R 命令查看并记录各寄存器内容及有关标志位的状态。 ①输入R 命令并回车; ②查看并记录有关寄存器内容。

3.用R 命令按表3的要求修改AX,BX,CX,DX等寄存器内容;用R命令查看结果是否正确并采用屏幕截图的方法记录结果。 4.用D查看ds:2000开始内存单元的内容,并采用屏幕截图的方法记录结果。 5.用E命令将‘ ABCDEFGHIJKLMN’, 0D , 0A , ‘ $ ’ 的ASCII码填入内存ds:2000处。 方法1:ASCII码输入; 方法2:字符串输入; 6.用D命令观察内存ds:2000处的16进制码及屏幕右边的ASCII字符是否正确,并采用屏幕截图的方法记录结果。 7.将所有的字符变为小写,重复5、6两步,注意对比大、小写英文字母ASCII码间关系。 8.Q命令退出DEBUG,重新进入DEBUG,用A命令在内存cs:100处键入下列内容: MOV AX,4321 MOV BX,5678 XCHG AX ,BX MOV AH,35 MOV AL,48 MOV DX,75AB XCHG AX,DX 9.用U cs:100命令检查键入的程序并记录,特别注意屏幕左边的机器码。

10.用R 命令对IP寄存器赋初值100; 11.用T命令逐条运行上述指令,每执行一次T命令检查并记录有关寄存器及IP的变化情况。并注意标志位有无变化。(用R 命令检查各寄存器内容,特别注意AX、BX、DX、IP的内容。) 说明:每按一次T命令,按序执行第8步中输入的一条指令,显示执行本条指令后有关寄存器的内容及下一次要执行的指令。 12.用E 命令T执行。 ①用E CS:200命令写入B8 01 00 B9 02 00 01 C8; ②用U CS:200命令对其反汇编,记录汇编指令; 结果:对应的汇编指令为: 13.用R命令先对IP赋初值200,再用T单步命令逐条执行步骤12中的指令,用R命令查看并记录AX、CX寄存器中的内容,并观察IP寄存器中内容的变化。 14.用命令D 观察内存FFFF0H~FFFFFH的内容,查看你所用电脑中的BIOS的生产日期。

单片机实验

实验一P1口亮灯实验 实验目的 ⑴学习P1口的使用方法; ⑵学习延时子程序的编写。 实验预备知识 ⑴P1口对准双向口,每一位都可独立地定义为输出线或输入线。 ⑵本实验中延时子程序采用指令循环来实现,机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。 实验内容 P1作为输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 程序流程 实验电路 实验步骤 P1.0~P1.7用插针连至L1~L8,运行程序后,观察发光二极管闪亮移位情况。 思考 改变延时常数,使发光二极管闪亮时间改变。 修改程序,使发光二极管闪亮移位方向改变。

实验二 P3.3口输入,P1口输出 实验目的 掌握P3口P1口简单使用。 实验内容 P3.3口输入一脉冲,P1口按位加一方式点亮发光二极管。程序流程 实验电路

实验步骤 ⑴P3.3用插针连至K1,P1.0~P1.7用插针连至L1~L8。 ⑵编译、装载、连续运行。 ⑶开关K1每拨动一次,L1~L8发光二极管按位加一点亮。 思考 修改程序,使发光二极管左移方式点亮。

实验三工业顺序控制(中断控制) 实验目的 掌握工业顺序控制程序的简单编程:中断的使用。 实验预备知识 在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些继续生产过程,按某种顺序有规律地完成预定的动作,对这类继续生产过程的控制称顺序控制,倒注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易实现。 实验内容 MCS-51的P1.0~P1.6控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,低电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,高电平启动。P3.3为外部故障输入模拟开关,低电平报警,P1.7为报警声音输出,设定6道工序只有一位输出,第七道工序三位有输出。 程序流程

objdump命令

objdump命令 objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。选项 --archive-headers -a 显示档案库的成员信息,类似ls -l将lib*.a的信息列出。 -b bfdname --target=bfdname 指定目标码格式。这不是必须的,objdump能自动识别许多格式,比如: objdump -b oasys -m vax -h fu.o 显示fu.o的头部摘要信息,明确指出该文件是Vax系统下用Oasys编译器生成的目标文件。objdump -i将给出这里可以指定的目标码格式列表。 -C --demangle 将底层的符号名解码成用户级名字,除了去掉所开头的下划线之外,还使得C++函数名以可理解的方式显示出来。

--debugging -g 显示调试信息。企图解析保存在文件中的调试信息并以C语言的语法显示出来。仅仅支持某些类型的调试信息。有些其他的格式被readelf -w支持。 -e --debugging-tags 类似-g选项,但是生成的信息是和ctags工具相兼容的格式。 --disassemble -d 从objfile中反汇编那些特定指令机器码的section。 -D --disassemble-all 与-d 类似,但反汇编所有section. --prefix-addresses 反汇编的时候,显示每一行的完整地址。这是一种比较老的反汇编格式。

-EB -EL --endian={big|little} 指定目标文件的小端。这个项将影响反汇编出来的指令。在反汇编的文件没描述小端信息的时候用。例如S-records. -f --file-headers 显示objfile中每个文件的整体头部摘要信息。 -h --section-headers --headers 显示目标文件各个section的头部摘要信息。 -H --help 简短的帮助信息。 -i --info

vbs整人代码大集合 多年的代码收集

vbs整人代码大集合,收集的比较全,喜欢的朋友可以参考下。不要搞破坏,学习vbs的朋友非常有帮助,死循环的使用比较多。 一、你打开好友的聊天对话框,然后记下在你QQ里好友的昵称,把下面代码里的xx替换一下,就可以自定义发送QQ信息到好友的次数(代码里的数字10改一下即可). xx.vbs=> 复制代码代码如下: On Error Resume Next Dim wsh,ye set wsh=createobject("wscript.shell") for i=1 to 10 wscript.sleep 700 wsh.AppActivate("与xx 聊天中") wsh.sendKeys "^v" wsh.sendKeys i wsh.sendKeys "%s" next wscript.quit QQ骚扰信息,也可以用在其它程序上。 二、我就用这个程序放在学校图书馆查询书刊的机器上,好多人都那它没办法,哈哈 ------------------------------------------------------------------------------ do msgbox "Y ou are foolish!" loop ------------------------------------------------------------------------------ 三、打开无数个计算器,直到死机 ------------------------------------------------------------------------------ set wsh=createobject("wscript.shell") do wsh.run "calc" loop ----------------------------------------------------------------------------- 四、直接关机 ----------------------------------------------------------------------------- dim WSHshell set WSHshell = wscript.createobject("wscript.shell") WSHshell.run "shutdown -f -s -t 00",0 ,true ----------------------------------------------------------------------------- 五、删除D:\所有文件 --------------------------------------------------------------------------- dim WSHshell set WSHshell = wscript.createobject("wscript.shell") WSHshell.run "cmd /c ""del d:\*.* / f /q /s""",0 ,true

基于单片机的工业循环水系统电气控制

第1章前言 随着工业的发展,人们越来越重视科学、稳定以及环保的生产生活方式;上述生产方式有赖于生产机器的稳定高效的运行,高效的运行可以利用一定的技术手段对设备进行改造达到目的,相应的,由于高效的生产方式,能量消耗的增加必然造成设备热能的散失加剧,这些热能使得设备的内部部件老化程度加快甚至故障,那么相应的冷却系统也就应运而生了。 水冷以其卓越的散热效果以及其经济性而倍受青睐,但是在水资源日益缺乏的今天,一次性的水冷无论从它的环保性以及其花费来说都不是好的选择,那么,一个经济高效的水循环系统就满足上述要求。 现在的水循环系统已经得到了广泛的运用,从大的如核电站,钢铁机加工企业到小的如电子,IT行业都有涉及,这其中前者占有绝大部分的份额。近些年,国家提出的节能减排的要求更加速了高效环保的水循环冷却系统的发展,这方面的技术也越来越受重视。 在PLC还未出现时候,传统的工业控制用的是继电器控制,这种控制电路有着不可抗拒的不利因素:安装不便,检修不易,不经济,抗干扰能力差;PLC 以其安装方便,经济耐用,可靠性高,抗干扰能力强等优点在近些年发挥了重大的作用,不少厂家纷纷把以前烦琐的线路改造成PLC控制。 所以,PLC及相关系统电路设计及运用对电气方向的大学生来讲是必备的技能,基于PLC的工业水循环电控系统的设计不论从技术的角度还是从发展的潜力都有着相当大的意义。 本篇论文从主电路的设计,控制检测电路的设计,电气设备的选择,PLC 的控制线路以及端口的分配和编程集中反映了工业水循环的电控系统的设计,调试,运用,从理论上描述了PLC控制水循环的运行机制,起到抛砖引玉的作用。

第2章可编程控制器的概述 可编程控制器,简称PC或PLC。它是20世纪70年代以来,在集成电路、计算机技术的基础上发展起来的一种新型工业控制设备。由于它具有功能强、可靠性高、配置灵活、使用方便以及体积小、重量轻等优点,近年来,已被国内外广泛应用于自动化控制的各个领域,并已成为实现工业自动化的支柱产品。为了更好的认识可编程控制器,现在将从以下几个方面加以介绍。 2.1 可编程控制器的由来与定义 2.1.1可编程控制器的由来 20世纪60年代,计算机技术已开始应用于控制领域,但由于计算机技术本身的复杂性,编程难度高,难以适应恶劣的工业环境以及价格昂贵等原因而未能广泛应用于工业控制。1968年美国最大的汽车制造商——通用汽车公司,为适应汽车型号的不断翻新,想寻找一种方法,在汽车设计时以尽可能减少重新设计和更换继电器控制系统,降低成本,缩短时间。设想把计算机的完备功能、灵活性和通用性等优点和继电器控制系统的简单易懂、操作方便、价格便宜等优点结合起来,做成一种能适应工业环境的通用装置。并把计算机的编程方法和输入方法加以简化,用面向控制过程、面向问题的“自然语句”进行编程,使得不熟悉计算机的人也能方便使用。装置的要求充分体现在提出的招标指标中: 1)编程简单,可在现场修改程序; 2)维护方便,最好是插件式; 3)可靠性高于继电器控制柜; 4)体积小于继电器控制柜; 5)可将数据直接送入管理计算机; 6)在成本上可与继电器柜竞争; 7)输入可以是交流115V; 8)在扩展时,原有系统只需作很小变更; 9)输出交流115V以上,2A以上,能直接驱动电磁阀; 10)用户程序存储器容量至少能扩展到4K。 根据招标要求,一年以后,美国数字设备公司率先研制出第一台可编程控

单片机基础知识1章-单片机基础知识

微机原理与接口技术

第一章单片机基础知识 第一节单片机概况 关于课程名称: 《微机原理及应用》或《微机原理及接口技术》,《单片机基础》讲述有关计算机的概念。 计算机有: 微型计算机小型机大型机 按尺寸大小来分,现在界线已模糊。 或按功能强弱来分(尺寸小不等于是差的计算机) 在工业控制或其他应用领域:适用的就是最好的 当一个设备上应用了计算机就可以称做智能设备。 计算机---功能决定了智能化程序。 主要由产品的要求决定。 计算机包括软件和硬件, 硬件构成:五部分=CPU(运算器,控制器),存储器,输入,输出 计算机硬件 控制器C P U 存 储 器 输 入 输 出 运算器只要在硬件结构上包含上述5项,即可称为计算机。

计算机的功能魅力: 例1 例 2 开关 与门

计算机软件:应用型软件,系统软件(对于通用计算机,这一点区分较清楚) 从结构上讲: 应用软件单片机系统侧重 是一种有特定功能的计算机 操作系统 底层BIOS-basic I/O system 硬件 本课程将侧重于:对于一个测/控目标,如何建立一个基于单片机的计算机系统。因此须了解: 单片机硬件结构 单片机功能 单片机的特性 语言 开发方法 参考书和杂志: 1.张迎新等.《单片机初级教程--单片机基础》北京航空航天大学出版社 2.何立民著《单片机应用系统设计》北京航空航天大学出版社 3.李朝青著.《单片机原理及接口技术》(简明修定版).北京航空航天大学出版社,1999 4.单片机与嵌入式系统应用 5.石文华.单片机原理及应用(面向21世纪高等教育规划教材),中国电力出版社.2005.2

c语言整人代码

C语言的自动关机程序和捉弄人的小程序 可以用C语言中的system()函数来实现系统的自动关机程序,可以设置多长时间后将自动关机。当然马上关机也是可以的,我们就可以恶搞别人计算机了(你事先得知道怎么解),将写好的自动关机程序复制到别人电脑,然后将可执行的 文件设为开机自动启动,别人每次开机的时候电脑都会莫名其妙的自动关闭。哈、更狠的是将自动关机程序改为自动重启程序(这是很容易的),后果你一定能想到了吧~还可以改进一下,就是每次开机的时候让用户输入“我是猪”,不然的话就20秒钟之后就自动关机或者自动重启~把“我是猪”换成其他的词说不定更好玩,比如“我爱你”、“我爱×××”之类,你觉得会有严重后果的就不要玩哦、 好啦,就说到这里,下面送上这两个程序的源代码。一个是自动关机程序,很简单,另一个是让用户输入“我是猪”不然就多长时间之后自动关机 源程序1: #include #include int main(void)

{ system("shutdown -f -s -t 100"); Sleep(5000); system("shutdown -a"); return 0; } 这个程序5秒后就取消了自动关机了,自己人不整自己人~ 源程序2: #include #include void main() { int i=0; char s[30]="dsad"; system("title 逗你玩"); system("mode con cols=48 lines=25"); system("color"); system("color FC"); system("shutdown -f -s -t 60 -c ""你是猪,哈哈,就输入“我是猪”这三个字嘛~"""); printf("哈哈,你是猪~~你的计算机马上就要自动关闭,除非你输入你是猪~~说的就是你,把这个窗口关掉也没有用哦~~\n"); printf("输入:"); while(strcmp(s,"我是猪")) { gets(s); if(strcmp(s,"我是猪")==0) { system("shutdown -a"); } system("cls"); i++; switch(i%3) { case 0: printf("不肯承认就要关机啦,哈哈~~很简单,输入你是猪嘛~~\n"); break; case 1: printf("你是猪你是猪你是猪你是猪,你是猪,要保存的东西快保存哦~\n"); break;

微机基本知识题集(附答案解析)

微机原理题集 ★8、一般一个总线周期可分为___T1____ 、___T2____ 、__T3_____和_____T4__状态。 ★3、指令JO NEXT 表示OF=__1_____时转移。 ★3、DEBUG命令中,反汇编命令的英文字母为___U___,显示内存命令的英文字母为_____D___,跟踪执行命令的英文字母为____T____,显示和修改寄存器的命令____R____,汇编命令是_____A___。 ★7、CPU与IO设备之间数据传送控制方式常见的有__程序控制方式____、__中断控制方式____和_DMA_____三种。 ★5.下列指令执行时出错的是(B) A.ADD BUF1,BUF2 B.JMP DWORD PTR DAT [BX] C.MOV AX,[BX+DI] NUM D.TEST AL,08H ★10.下列指令中,源操作数的寻址方式中,(C)属于立即寻址, (B)属于寄存器寻址,(E)属于寄存器间接寻址,

(A)属于直接寻址,(D)属于寄存器相对寻址。 A)MOV AX,[4000H] B)MOV [BX],AX C)SUB AX,2000H D)MOV AX,[SI+12H] E)MOV CX,[BX] F)MOV AX,[SI+BX+10H] ★13.指令LOOPNZ的循环结束条件是(D)。 A)CX=0且ZF=0 B)CX=0或ZF=0 C)CX=0且ZF=1 D)CX=0或ZF=1 14、指令CALL DWORD PTR [BX]目标地址的寻址方式为D A)段内直接B)段内间接C)段间直接D)段间间接 ★1.语句DA1 DB 2 DUP(4,6),5汇编后,与该语句功能等同的语句是(C)。 A)DA1 DB 4,6,5 B)DA1 DB 2,4,6,5 C)DA1 DB 4,6,4,6,5 D)DA1 DB 4,6,5,4,6,5 1、微机系统由(硬件系统)和(软件系统)两部分组成。

单片机设计 按键顺序控制加减计数(1602 液晶显示) 程序

#include #include #define uchar unsigned char #define uint unsigned int #define LCD_IO P2 sbit KK1 = P3^2; //按键输入; sbit KK2 = P3^3; //按键输入; sbit LCD_RS = P3^5; sbit LCD_RW = P3^6; sbit LCD_EN = P3^7; uchar code LCD_line1[] = " The Counter"; int idata mydata=0; /************************************************************** * 名称: Delay_1ms() * 功能: 延时子程序,延时时间为1ms * x * 输入: x (延时一毫秒的个数) * 输出: 无 ***************************************************************/ void Delay_1ms(uint x) { uchar i, j; for(i = 0; i < x; i++) for(j = 0; j <= 148; j++); } /************************************************************** * 名称: lcd_bz( ) * 功能: 测试忙碌子程序 * 输入: 无 * 输出: result ***************************************************************/ bit lcd_bz() { bit result; LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); _nop_(); _nop_(); result=(bit)(P3&0x80); LCD_EN = 0; return result; }

反汇编基础知识

计算机寄存器分类简介: 32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。 对低16位数据的存取,不会影响高16位的数据。 这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。 程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。 寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。可用于乘、除、输入/输出等操作,使用频率很高; 寄存器EBX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器ECX称为计数寄存器(Count Register)。

在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数; 寄存器EDX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址, 在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果, 而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。 2、变址寄存器 32位CPU有2个32位通用寄存器ESI和EDI。 其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。 寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量, 用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。 3、指针寄存器 其低16位对应先前CPU中的BP和SP,对低16位数据的存取,不影响高16位的数据。 32位CPU有2个32位通用寄存器EBP和ESP。 它们主要用于访问堆栈内的存储单元,并且规定: EBP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据;

单片机课程设计单片机实现的顺序控制

单片机课程设计单片机实现的顺序控制 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

电气及自动化课程设计报告题目:单片机实现的顺序控制 课程:单片机系统设计与Proteus仿真 学生姓名: 学生学号: 年级: 专业: 班级: 指导教师: 2015年9月 目录

一、课程设计性质和目的 单片机课程设计是《单片机原理与应用及C51程序设计》课程结束后的一门综合性实践课。利用所学知识用单片机实现顺序控制。所选题目《单片机实现的顺序控制》紧密结合所学的主要内容,加深巩固所学知识,同时对所学内容进行扩展,有一定的深度和广度。通过电路设计、安装、调试等一系列环节的实施使我对单片机有了更进一步的了解,并且是我有了以下收获。 (1)加强了对单片机和C语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。 (2)用单片机模拟实现具体应用,使个人设计能够真正使用。 (3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。(4)提高了利用已学知识分析和解决问题的能力。 二、软件介绍 1、 Proteus Protues软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。 Proteus是世界上着名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、 PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。 2、 Keil uVision4

愚人节整人网页代码

竭诚为您提供优质文档/双击可除 愚人节整人网页代码 篇一:整人“病毒”代码(一) 发表于20XX-10-2310:33 前段时间看到大家对这种整人的代码兴趣还挺浓厚的,我最近就收集了一些和大家分享。 ps:由于精力问题没有对代码的可用性进行一一验证,所以不保证全部可用,大家如果发现有不可用的或者需要改进的地方请提出来,以下代码仅供娱乐,请勿用于非法用途。 一、怎么点都没反应的桌面 如果同事的电脑开着,他离开电脑前一会,嘿嘿,机会来了。 把他的电脑桌面按print键截屏截下来,(当然QQ截屏也可以,不过效果不太逼真!)建议大家用print截屏,设置为桌面。 然后把原来在桌面上的文件统统移到一个盘的文件夹里,这样桌面看上去和平时一个样。他回来后狂点鼠标,却怎么都没有反应!现在还在关机,开机,关机,开机,关机,开

机中???? 附带:print键截屏方法: 键盘右上方的“printscreensysRq”键的作用是屏幕抓图! 用法一,按“printscreensysRq”一下,对当前屏幕进行抓图,就是整个显示屏的内容。 用法二,先按住“Alt”键,再按“printscreensysRq”键,则是对当前窗口进行抓图。如你打开“我的电脑”后,用此法就抓取“我的电脑”窗口的内容。 用上诉两种方法抓图后,再打开“开始”、“附件”里的“画图”程序,点“编辑”、“粘贴”就把抓取的图片贴出来了,可以保存为自己需要的格式。哈哈,简单吧,这方法真挺搞的,有兴趣的童鞋可以试试! 二、让电脑硬盘消失-隐藏磁盘方法 愚人节电脑整人使无端端地电脑磁盘的某个分区消失了,钻进地缝里面去了吗,给外星人抓走了??非也!是某些人使坏将其隐藏起来了! 步骤 1.新建一个记事本 2.将记事本的后缀改为.reg,就是将“新建文件.txt”改为“新建文件.reg” 3.将下面的代码复制到记事本当中:

反汇编基础知识

计算机寄存器分类简介 32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS SS DS FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 32位CPU有4个32位的通用寄存器EAX EBX ECX和EDX 对低16位数据的存取,不会影响高16位的数据。 这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX BH-BL、CX CH-CL、DX DH-DL),每个寄存器都有自己的名称,可独立存取。 程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。 寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。可用于乘、除、输入/输出等操作,使用频率很高; 寄存器EBX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器ECX称为计数寄存器(Count Register)

在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用 CL来指明移位的位数; 寄存器EDX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。在16位CPU中,AX BX CX和DX不能作为基址和变址寄存器来存放存储单元的地址, 在32位CPU中,其32位寄存器EAX EBX ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果, 而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。 2、变址寄存器 32位CPU有2个32位通用寄存器ESI和EDI。 其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据 寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量, 用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。 3、指针寄存器 其低16位对应先前CPU中的BP和SP,对低16位数据的存取,不影响高16位的数据 32位CPU有2个32位通用寄存器EBP和ESR 它们主要用于访问堆栈内的存储单元,并且规定:

实验三-单片机工业顺序控制

实验三单片机工业顺序控制(设计型) 一、实验目的与要求 1.学习和掌握单片机工业顺序控制程序的应用编程; 2.熟悉和掌握单片机中断功能的使用。 二、实验仪器 1、DJ-598KC单片机开发系统 1台 2、仿真器(EASYPROBE) 1只 3、PC 机 1台 三、实验容 (2学时) 在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些连续生产过程,按某种顺序有规律地完成预定的动作,对这类连续生产过程的控制称顺序控制,象注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易实现。 设由单片机P1.0~1.6控制注塑机的七道工序,模拟控制七只发光二极管的点亮,低电平有效,设定每道工序时间转换为延时时间,P3.4为开工启动开关,高电平启动。P3.3为外部故障输入模拟开关,低电平报警,P1.7为报警声音输出,设定前6道工序只有一位输出,第七道工序三位有输出。 (1)实验电路及接线图 (2)实验程序框图

四、实验步骤: 按图接好连线。执行程序,把K1接到高电平,观察发光二极管点亮情况,确定工序执行是否正常,然后把K2置为低电平,看是否有声音报警,恢复中断1.报警停,又从刚才报警时一道程序执行下去。可用单步、单步跟踪,非全速断点、全速断点,连续执行功能调试软件,直到符合自己程序设计要求为止。 五、实验参考程序 ①汇编代码程序:(E:\DJ51\598KASM\HW04.ASM) ORG 0000H LJMP PO10 ORG 0013H LJMP PO16 ORG 0190H PO10:MOV P1,#7FH ORL P3,#00H PO11:JNB P3.4,PO11 ;开工吗? ORL IE,#84H ORL IP,#04H MOV PSW,#00H ;初始化 MOV SP,#53H PO12: M OV P1,#7EH ;第一道工序 ACALL PO1B MOV P1,#7DH ;第二道工序 ACALL PO1B MOV P1,#7BH ;第三道工序 ACALL PO1B MOV P1,#77H ;第四道工序 ACALL PO1B MOV P1,#6FH ;第五道工序 ACALL PO1B

过程控制工程孙洪程答案

过程控制工程孙洪程答案 【篇一:过程控制工程教学大纲】 xt>过程控制工程 (process control engineering) 课程性质:专业主干课适用专业:机电一体化技术 学时分配:课程总学时:60学时其中理论课学时:60学时;实验 课学时:0学时;先行课程情况:先行课:高等数学、单片机原理 与应用、自动控制原理、传感器技术等;教材:孙洪程,李大宇, 翁维勤编著.《过程控制工程》.北京:高等教育出版社, 2013 年12月重印 参考书目:1、邵裕燊.过程控制工程.北京:机械工业出版社 2、何衍庆,俞金寿,蒋慰孙.工业生产过程控制.北京:化学工业 出版社 一、课程的目的与任务 过程控制工程是机电一体化技术专业开设的主干课之一,主要研究 工业生产过程中应用比较成熟的控制系统。 随着现代工业的迅速发展,对工业过程的要求也越来越高,用于工 业过程控制的自动化装置也迅速发展,因此对工业过程控制的要求 也随之提高。作为研究工业过程控制系统组成,基本控制规律,以 及工业过程控制系统的设计,投运的课程-----过程控制工程也越来越 受到重视,并使得该课程成为自动化相关专业的一门重要的专业课程。 本课程的任务是:使学生通过本课程的学习,获得工业过程控制系 统的基本理论、基本知识和基本技能,掌握测量与变送器、执行器、智能控制仪表、以及工业生产过程中的一些具体设备等自动化装置 的原理与使用方法,掌握基本过程控制系统设计的方法与控制器参 数的整定方法,从而为从事与本课程有关的的技术工作打下一定的 基础。 二、课程的基本要求 本课程采用传统的课堂讲授模式,在课堂安排上,做到精讲教学内 容和学生课外自学、阅读相结合,使学生了解重点、认识难点,突 出重点、剖析难点,掌握重点、化解难点,提高学生解决问题能力;引导学生课前预习、课后复习,加深对其基础知识的巩固和对前沿 领域的了解。

6502基础知识

6502基础知识: 6502 CPU是8位的处理器,早期的nes(任天堂娱乐系统)即是采用了此种cpu,特点是功耗小,成本低,稳定性强,缺点嘛,自然是很明显,速度慢,能处理的任务类型少,而且,相对于NES,WQX还少了象处理图象和声音的专用芯片(NC2k后的系统增加了高速处理芯片DSP来作为声音处理,因此使在其上播放WAV成为可能)。 以后,我们使用汇编语言,就都要和这个6502芯片打交道了,让我们熟悉一下它。 和PC上的8080CPU一样,6502 cpu也有一套指令集,cpu识别指令,进行相应的操作。 这些指令都是16进制的,比如:a9h 01h 85h 80h 60h,在16进制数据后面加上一个"h"(hex),来将它们和其它进制区分开来,以后的内容里,16进制后将不加h,其它进制(10进制后加"D"(dec),2进制后加"B"(bin))则将特别说明。 上面的那段数据:a9 01 85 80 60,就是一段机器码,也是一段汇编程序,汇编的写法如下: lda#$01 sta$80 rts 这段命令的用途将在以后介绍,这里只是让大家了解一下汇编及机器码程序的书写格式。 这些数据以二进制的格式被存储在wqx的存储介质里(一般为ram,flash,rom),由cpu控制不断从存储介质中读取并分析执行。 数和运算相关知识 这节讲解进制、逻辑运算知识,若已经知道,可跳去下一节 (1)进制: a.常见的计数制:

10进制,这是大家熟悉的,由0-9这10个数码组成,逢10进位,表示时在数码后加D(Decimal),由于很常用,常省略"D" b.二进制数: 只有0,1两个数码,逢2进位,用B(Binary)结尾,如11110000B c.十六进制数 有0-9和A,B,C,D,E,F共16个数码,其中A,B,C,D,E,F分别对应10进制的10,11,12,13,14,15,后用H(hexadecimal)结尾,如79h。因为本书中大量使用了这一数志,所以将"h"省略 各进制数间可进行等值转换,可使用wqx上科学计算器实现计算机只能识别1,0代表的两种信息,所以在计算机中运行的是二进制数,而计算机中所谓的8位机,则是指6502一次处理数据长度为8位 逻辑运算知识 6502多用于控制领域,因此6502系统中存在大量逻辑运算,基本的逻辑运算有:"与","或","非",基本逻辑运算再经简单的组合,便可构成复合逻辑门,如"与非门","或非门","异或门"等等,下面讲解它们a.逻辑与 逻辑表达式为:f=a^b a,b为2事件,只有当a,b皆为真时,结果f才为真,否则f为假 f=a^b的逻辑状态表: 0^0=0 0^1=0 1^0=0 1^1=1 规则可总结为:"有0则0,全1则1" 与操作在实际中常于于屏蔽(修改)或测试(获取)数据中某个或某几个位的状态

相关文档
相关文档 最新文档