rar文件

SE壳工具加密 评分:

163disk.com_SE壳作者的独享版本
2013-10-17 上传 大小:201KB
立即下载
exe文件
双重SE加壳工具

是一个非常好用的加壳软件,利于防破解,加密数据段!6666666666666666666666666666666666666666666666666666666666

立即下载
rar文件
超强加壳软件SE中文版

SE加壳软件是业界最牛的三大加壳软件之一。还可以设置权限,设置使用时间,设置使用次数用做商业出售等等。。是一款非常不错的加壳加密防破解软件.

立即下载
rar文件
SE加壳工具包

SE加壳工具包

立即下载
rar文件
强大的SE压缩加密壳,分享下载。

强大SE加壳工具,简单便捷容易使用,加壳的软件可进行授权限制和使用时间限制,

立即下载
rar文件
狮王 写狗工具 系统加密 软件保护

产品特性 采用16位智能卡芯片 高速无驱(HID)设备 全球唯一64位硬件序列号 提供64K超大用户存储区 支持一机多锁 提供软件保护(加密狗)和身份认证两种功能 提供外壳加密工具 硬件级通讯加密 ET199硬件实现512、1024、2048位的RSA运算功能 提供MD5,SHA1散列算法 提供单精度和双精度浮点运算 提供远程升级功能 提供多种开发语言示例 支持WINDOWS 98SE/Me/2000/XP/Server 2003/Vista(包括32位和64位) 及各补丁版本 软件保护(加密狗)功能 硬件上的安全性 很多软件被盗版都是由于硬件被复制,不能抵御破解攻击造成的。一个高强度的加密锁首先应有牢固的硬件基础。ET199采用了安全强度最高的智能卡芯片,硬件不能被复制,多重安全级别,并且集成了16位CPU,8KRAM,64K存储空间等模块。ET199在具有如此强大和安全功能的同时,改进了生产工艺,极大降低了生产成本,从而使广大的软件厂商不必再花费高额的加密锁成本就能够使用上智能卡型加密锁,从根本上提高了软件的加密强度。 硬件上的兼容性 ET199采用无驱设计,使用高速HID协议,在WIN98二版以上的操作系统中不需要安装驱动程序,彻底解决了由于驱动安装而给软件开发商带来的各种各样的问题。无驱的同时,ET199使用高速协议,对应用软件没有任何速度上的影响。正因为ET199在硬件上卓越的兼容性,使用ET199几乎不需要任何维护,大大节省了维护成本。 先进的软件保护 ET199就像一台小型计算机,能够完成众多以前只能在PC上完成的功能,如复杂的浮点运算。软件开发商可以将自己的程序代码移植到ET199中运行,计算机中没有任何程序的痕迹,同时ET199内部的代码任何人也获取不到。软件开发商发行的是一个不完整的软件,只有与ET199结合,软件才能够正确执行。由于硬件上的安全性,可以认为ET199是不可破解的。 身份认证功能 在身份认证方面,ET199可以做为数字证书的安全载体,敏感数据都被安全地保存在ET199的安全存储区域中,未授权用户是无法接触到这些信息的。数据的签名和加密操作全部在ET199内部完成,私钥从生成的时刻起就一直保存其中,可有效的杜绝黑客程序的攻击。ET199的安全性还在于其使用的加密算法都是被广泛公开,业界公认的,经受了多年考验的标准算法。同时,一流的芯片封装工艺也保证了芯片内数据的安全性。 ET199能够硬件产生512,1024和2048位的RSA密钥对,硬件实现RSA的各种运算。其采用16位的CPU,结合EnterSafe中间件,使用高速无驱加密的通讯技术,能够十分迅速的完成各种PKI应用的操作。 ET199提供符合业界广泛认可的PKCS#11和Microsoft CryptoAPI两种标准的接口。任何兼容这两种接口的应用程序,都可以立即集成ET199进行使用。同时,ET199也针对多个第三方的软件产品进行了兼容性优化。此外,ET199内置大容量的安全存储器,可以同时存储多个数字证书和用户私钥及其他数据。也就是说,多个PKI应用程序可以共用同一个ET199。

立即下载
pdf文件
SUSE Linux Enterprise Server 11 管理员手册

This is official Guide for SUSE Linux Enterprise Server 11.

立即下载
rar文件
ROCKEY4ND加密锁硬复制程序Nig提供

ROCKEY4ND加密锁是一款具有大数据空间、多模块和算法空间的无驱型加密锁。在Windows 98SE/Me/2000/XP/2003、Linux、Mac OS、WinCE等平台下无需额外安装驱动程序。提供丰富灵活的API接口,高强度外壳加密工具,快速操作的编辑工具,两级密码管理体制,存储空间多达1000字节,64个模块管理,用户自定义算法,并提供内部种子码算法,硬件随机数发生器等算法。

立即下载
docx文件
二进制脱壳

主要写的是脱壳有关关的方法哦,我是二进制安全方面的学生,大家都可以看一看.

立即下载
rar文件
易语言vmp保护壳模块

易语言vmp保护壳模块 易语言vmp保护壳模块 易语言vmp保护壳模块

立即下载
zip文件
The MOTET Cipher & SE Scrambler:用C语言编写的微型快速加密工具-开源

MOTET是一个用C语言编写的微型快速超级加密应用程序,具有新的CSPRNG /流密码MOTE和BEDBUG的三个变体,以及ISAAC密码中的“黄金标准”。 MOTET带来了多种级别的加密,包括密文哈希,Vigenere混合功能,在主密钥流上选择的Caesar MOD或Caesar MIX加密,以及作为最终超级加密阶段的深层加密“外壳”。 唯一的随机数IV保证即使在相同的消息和相同的密钥上,每个密文也将彼此根本不同。

立即下载
exe文件
WinRAR_4.0.exe

用户手册 RAR 4.00 控制台版本 欢迎使用 RAR 压缩文件管理器! 简介 RAR 是一个强力压缩工具,允许你管理和操作压缩文件。控制台 RAR 只支持 RAR 格式,带有的 ".rar" 扩展名的文件。ZIP 和其他格式不被支持。Windows 用户可以 安装图形界面 RAR 版本 - WinRAR,它可以处理更多的压缩文件类型。 RAR 的功能包括: * 高度成熟的原创压缩算法 * 对于文本、声音、图像和 32 位和 64 位 Intel 可执行程序压缩的特殊优化算法 * 获得比类似工具更好的压缩率,使用'固实'压缩 * 身份校验(只有注册版本可用) * 自解压压缩文件和分卷压缩(SFX) * 对物理损伤的压缩文件的恢复能力 * 锁定,密码,文件顺序列表,文件安全和更多 配置文件 Unix 版本的 RAR 从用户的 home 或 /etc 目录中的 .rarrc 文件读取配置文件信息 (存储在 HOME 环境变量中) Windows 的版本 RAR 从 rar.ini 文件读取配置文件信息,它放在 rar.exe 文件相 同的目录中。 这个文件包含下列字符串: switches=任何 RAR 开关,用空格分开 例如: switches=-m5 -s 环境变量 可以通过建立"RAR"环境变量来添加默认参数到命令行中. 例如,在 UNIX 中,下列命令行可以被添加到你的配置中: RAR='-s -md1024' export RAR RAR 将使用这个字符串作为命令行的默认参数,并将使用 1024KB 字典大小来创建 “固实”压缩文件。 RAR 控制选项使用下列优先级: 命名行开关 最高优先级 在 RAR 变量中的开关 低优先级 保存在配置文件中的开关 最低优先级 日志文件 如果在命令行或配置文件中指定开关 -ilog ,RAR 将会把处理压缩文件中遇到的错误 等写到日志文件中。读取开关 -ilog 描述获得更多信息。 固实压缩的文件列表 - rarfiles.lst rarfiles.lst 包含一个用户定义的文件列表,告诉 RAR 添加文件到固实压缩文件时的顺 序。它可以包含文件名通配符和指定项目 -$default。默认项目定义了这个文件中与 其他项目不相符时的顺序清单位置。 注释字符是 ';'. 在 Windows 中,这个文件应该放在 RAR 所在的或 %APPDATA%\WinRAR 目录中, 在 Unix 中- 放在用户的 home 目录或在 /etc 中。 提高压缩率和操作速度的提示: - 在压缩文件中,小文件应该被组织在一起; - 频繁被处理的文件应该放在开始的位置。 普通的掩码越靠近顶端优先权就越高,但是这个规则存在例外。如果 rarfiles.lst 包含两个掩码,并且所有文件既匹配第一个掩码,也匹配第二个掩码, 较小的子集 或者更精确的匹配拥有更高的优先权。例如,如果你用 *.cpp 和 f*.cpp 掩码, f*.cpp 拥有更高的优先权。 RAR 命令行语法 ~~~~~~~~~~~~~~ 语法 RAR <命令> [ -<开关> ] <压缩文件> [ <@列表文件...> ] [ <文件...> ] [ <解压路径\> ] 描述 命令行选项 (命令和开关) 提供了使用 RAR 创建和管理压缩文件的控制方法。命 令是一个字符串(或单个的字母),命令 RAR 去执行一个相应的操作。开关被用来 改变 RAR 执行操作的方法。其它参数是压缩文件名和被压缩的文件或要从压缩文件 中被解压文件。 列表文件是一个包括处理的文件名的纯文本文件。第一列应该以文件名开始。可以 在//字符后添加注释。例如,你可以创建包含下列字符串的 backup.lst: c:\work\doc\*.txt //备份文本文档 c:\work\image\*.bmp //备份图片 c:\work\misc 接着运行: rar a backup @backup.lst 如果你希望从标准输入设备读取文件名,指定空的文件列表名(只有@)。 在列表文件中 Win32 控制台 RAR 使用 OEM (DOS) 编码。 你可以在同一命令行指定普通文件名和列表文件。如果文件和列表 文件都未被指定,那么 RAR 将默认是 *.*,来处理所有文件 在一个 UNIX 环境变量中,你需要将通配符置于引号中,避免被外壳扩展。例如, 这个命令将从当前路径中的 RAR 压缩文件解压所有的 *.asm 文件: rar e '*.rar' '*.asm' 命令可以是下列中的任何一个: a 添加文件到压缩文件中。 例子: 1) 从当前目录添加所有的 *.hlp 文件到 help.rar 压缩文件: rar a help *.hlp 2) 把当前目录和子目录的所有文件压缩为 362000 字节大小、固实的、 自解压分卷压缩文件并对没个卷添加恢复记录: rar a -r -v362 -s -sfx -rr save 因为尾指定文件名,假设为所有文件 (*)。 3) 作为一个特别的例外,如果目录名被作为参数指定并且目录名不包 含文件掩码和以反斜线结尾,即使指定了 -r 开关,目录和子目录的所 有内容都会被添加到压缩文件中。 下面的命令会把 Bitmaps 目录和它的子目录中的所有文件添加到 RAR 压缩文件 Pictures.rar 中: rar a Pictures.rar Bitmaps 4) 如果目录包含文件掩码或以反斜线结尾,将会应用普通的规则,你 需要指定 -r 开关来处理它的子目录。 下列命令会把 Bitmaps 目录中除了子目录外的所有文件添加,因为未 指定开关 -r: rar a Pictures.rar Bitmaps\* c 添加压缩文件注释。当压缩文件被处理时注释被显示。文件的注释长度限 制到 32767 字节 例子: rar c distrib.rar 注释也可以使用 -z[名称] 开关从文件添加: 下列命令从 info.txt 文件添加一个注释: rar c -zinfo.txt dummy cf 添加文件注释。当使用'v'命令时显示文件注释。文件的注释长度限制到 32767 字节。 例子: rar cf bigarch *.txt ch 改变压缩文件参数。 此命令能和大多数压缩文件变量开关一起使用修改压缩文件参数。对于象 -av, -cl, -cu, -tl 等没有专门命令的开关特别方便。 它不能重新压缩、解密或加密压缩文件数据,它不能整合或创建卷。如果 不和其它开关一起使用,'ch' 命令仅复制压缩文件数据而不修改它。 例如: 设置压缩文件时间为最新的文件: rar ch -tl files.rar cw 写压缩文件注释到指定文件。 输出文件格式依赖于 -sc 开关。 如果输出文件名没有指定,注释数据会被发送到标准输出设备。 例子: 1) rar cw oldarch comment.txt 2) rar cw -scuc arc unicode.txt 3) rar cw arc d 从压缩文件中删除文件。请注意,如果这个命令导致压缩文件中所有文件 全部删除,这个空的压缩文件将被删除。 e 解压文件到当前目录。 f 更新压缩文件中的文件。 更新打包到压缩文件后被改变的文件。这个命令不 向压缩文件中添加新文件。 i[i|c|h|t]=<字符串> 在压缩文件中查找字符串。 支持下列可选参数: i - 不区分大小写(默认); c - 区分大小写搜索; h - 十六进制搜索; t - 使用 ANSI, Unicode 和 OEM 字符表 (只有 Win32 可用); 如果没有指定任何参数,它可以使用简化的命令行语法 i<字符串> 来代 替 i=<字符串> 它允许指定带有另外一个参数的 't' 变量,例如,ict=字符串 在上面提 及的所有表中执行区分大小写的搜索。 例子: 1) rar "ic=first level" -r c:\*.rar *.txt 在 c:\*.rar 压缩文件中的 *.txt 文件执行区分大小写的 "first level" 字符串的搜索 2) rar ih=f0e0aeaeab2d83e3a9 -r e:\text 在 e:\text 目录下的 rar 压缩文件中搜索十六进制字符串 f0 e0 ae ae ab 2d 83 e3 a9。 k 锁定压缩文件。任何试图改变压缩文件的命令都会被忽略。 例子: rar k final.rar l[t,b] 压缩文件的内容列表[技术信息]。和 'v' 命令一样列出文件,但不包括 文件路径。也就是只显示文件名。当使用't'变量时可选技术信息(主操作 系统,固实标志和老版本标记)被显示。变量 'b' 强制 RAR 只输出单纯 的文件名,而没有其他任何的附加信息。 m[f] 移动到压缩文件中[只用于文件]。移动文件和目录会使压缩操作完成后它 们被删除。如果使用变量'f'和/或应用开关'-ed',则不删除目录。 p 打印文件到标准输出设备。 你可以把这个命令和 -inul 开关一起使用来禁止所有的 RAR 信息,并只 打印文件数据。当你需要发送一个文件到标准输出设备时,这也许很重要。 r 修复压缩文件。压缩文件修复是在两阶段中完成的。首先,在损坏的压缩 文件中查找恢复记录(参照'rr'命令)。如果压缩文件包含恢复记录,并且 损坏数据部分是连续的,而且少于N*512字节(N 处是放入压缩文件恢复块 的数字),则成功恢复压缩文件的机会非常高。当这个阶段完成,一个新的 压缩文件将被创建,名为_RECOVER.RAR。 如果损坏的压缩文件不包含恢复记录或如果压缩文件没有完全恢复导致大 的损伤,将执行第二阶段。这一阶段期间只重建压缩文件的结构,而不可 能恢复 CRC 校验失败的文件。它仍然可能恢复未受损的文件,因文件结 构破坏。这对于非固实压缩文件通常有用。 当第二阶段完成,重建结构的压缩文件将被保存为 rebuilt.arcname.rar, 'arcname' 的位置是原始压缩文件名。 RAR/DOS32 版本使用 _recover.rar 和 _reconst.rar 而不是上面提及的 名字。 在恢复记录进行中,当发现可疑文件时,RAR 可以提示用户。 可疑项目 名字: <可能的文件名> 大小: <大小> 压缩后: <压缩后大小> 添加它: 是/否/全部 回答 'y' 把这个项目添加到文件 rebuilt.arcname.rar 中。 例子: rar r buggy.rar rc 使用恢复卷(.rev 文件)重建丢失的卷。你需要指定任何已存在的卷作为 压缩文件名,例如,'rar rc backup.part03.rar' 读取 'rv' 命令描述得到关于恢复卷的信息。 rn 重命名压缩文件。 命令语法是: rar rn <压缩文件名> <源文件名1> <目标文件名1> ... <源文件名N> <目 标文件名N> 例如,下列命令: rar rn data.rar readme.txt readme.bak info.txt info.bak 在压缩文件 data.rar 中将把 readme.txt 重命名为 readme.bak 并把 info.txt 重命名为 info.bak。 在源文件和目标文件名中可以使用通配符来进行简单像改变文件扩展名的名 称转换。例如: rar rn data.rar *.txt *.bak 将把所有的 *.txt 文件重命名为 *.bak。 RAR 不检查目标文件名是否已经在压缩文件中存在,所以你需要小心,防止 重名。尤其是使用通配符时特别重要。这个命令有潜在的危险,因为一个错 误的通配符可以损坏所有的压缩文件名。 rr[N] 添加数据恢复记录。可选,多余信息(恢复记录)可以被添加到压缩文件 中。这将导致压缩文件大小稍微增加,但能在软盘错误或其它数据丢失 情况下帮助恢复压缩文件。一个恢复记录最大包含 524288 个恢复块。 块的数目可以在'rr'(N = 1,2 .. 524288)命令中直接指定或不用用户 指定,而是根据压缩文件的大小自动设定:一个恢复信息大小大约是总 压缩文件大小的1%,通常允许恢复达到压缩文件总大小的0.6%的连续数 据。 也可以以压缩文件大小的百分比来指定恢复记录的大小。只要把%添加到 命令参数后。 例如: rar rr3% arcname 注意,如果你从.bat 或 .cmd文件运行这个命令时,你需要使用rr3%%代 替rr3%,因为批处理命令把符号'%'作为批处理文件开始的参数。你可以 使用 'p' 代替'%',所以'rr3p'也可运行。 如果受损的数据是连续性的,则每个恢复记录块帮助恢复损坏信息的512 字节。如果多处损坏这个值将降低。 恢复记录的大小可以使用公式<压缩文件大小>/256 + <恢复记录数>*512 字节估计。 rv[N] 创建恢复卷(.rev文件),以后它可以用于重建卷组中丢失的文件。这个命 令只对多卷压缩文件敏感,你需要在组中指定第一个分卷文件的文件名。 例如: rar rv3 data.part01.rar 这个功能可以被用来备份,例如,发送一个多卷压缩文件到一个新组,并 且部分接收者没有收其中的一些文件。重新发送恢复卷代替普通卷,可以 减少传送文件的总数。 每个恢复卷可以重建一个丢失的 RAR 卷。例如,如果你有30个卷,3个恢 复卷,你可以创建任何3个丢失的卷。如果.rev文件的数目少于丢失卷的 数目,重建将不可能。普通和恢复卷的总数不能超过255。 原来的 RAR 卷在卷被创建后不能被修改。修复算法使用存储在 REV 文件 和 RAR 卷中的数据来重建丢失的 RAR 卷。所有如果你修改了 RAR 卷, 例如,在创建 REV 文件后锁定它们,修复操作将失败。 选项 参数指定创建恢复卷的数目,必须少于RAR卷的总数。你也可以 附加一个百分号到这个参数上,这样创建的.rev文件的数目将等于从 RAR 卷总数获得的这个百分比。 例如: rar rv15% data.part01.rar RAR 不管是使用‘rc’命令或自动时,如果在解压时无法定位下一卷,并 且发现可用数目的 .rev 文件,对丢失的卷和损坏的卷都试图重建。 损坏卷的原始副本在被重建前重命名为 *.bad。例如,volname.part03.rar 将被重命名为volname.part03.rar.bad。 s[名称] 转换压缩文件成自解压格式。压缩文件和自解压模块合并(使用 default.sfx模块或在开关中指定)。在 Windows 版本中 default.sfx 应 该放在RAR.exe 所在目录下,在 Unix 中在用户的 home 目录中,在 /usr/lib 或 /usr/local/lib 下。 s- 从已存在的自解压压缩文件中删除自解压模块。RAR 创建一个不带自解压 模块的新的压缩文件,原来的自解压文件不会被删除。 t 测试压缩文件。为了验证指定的文件,这个命令执行虚拟的文件解压操作, 不写出任何输出数据流。 例子: 在当前目录测试压缩文件: 或对于 Unix: rar t '*' 当前目录开始,测试所有子目录下的压缩包: rar t -r * 或对于 Unix: rar t -r '*' u 更新压缩文件中的文件。添加不在压缩文件中的文件和更新打包后改变了的 文件。 v[t,b] 详细列出压缩文件内容[技术信息]。文件列出所使用的格式:绝对路径名,文 件注释,原始和压缩后的大小,压缩率,最近更新日期和时间,属性,CRC, 压缩方式和解压所需的最小RAR版本。当使用't'变量时可选技术信息(主操作 系统,固实标志和老的文件版本标记)显示。变量 'b' 强制 RAR 只输出单纯 的文件名,而没有其他任何的附加信息。 列出所有压缩卷的内容,使用星号('*')代替压缩文件扩展名或使用'-v' 开关。 例子: 1) 列出 system.rar 压缩文件的内容 (技术信息)并使用重定向符输出 到文件 techlist.lst 中 rar vt system >techlist.lst 2) 列出 tutorial.rar 压缩文件的内容 (单纯文件名模式) rar vb tutorial x 带绝对路径解压 例子: rar x -av- -c- dime 10cents.txt 解压指定的文件到当前路径。AV 检查和注释显示被禁用。 开关 (与命令结合使用): -? 显示命令和开关的帮助。和没有参数或输入非法命令行选项时相同。 -- 停止开关扫描 这个开关告诉 RAR 命令行中没有更多的开关了。如果压缩文件或文件名 以 - 符号开头,可以使用它。没有'--'开关,这样的名字将被作为开关 对待。 例子: 从当前目录添加所有文件到固实压缩文件'-StrangeName' RAR a -s -- -StrangeName -ac 压缩或解压后清除存档属性(只有Windows版本可用). -ad 附加压缩文件名到目标路径中。 这个选项可以在解压一组压缩文件时使用。默认条件下 RAR 把从压缩文 件中解压的文件放在同一目录下,但是这个开关使从每个压缩文件中解压 的文件都创建一个单独的目录。 例子: rar x -ad *.rar data\ RAR 将每一个解压的文件在'data'下创建子目录。 -ag[格式] 使用当前的日期和时间生成压缩文件名。 当创建压缩文件时附加当前日期字符串到压缩文件名上。用于每日备份。 附加的字符串格式有几种可选的格式参数定义或使用"YYYYMMDDHHMMSS"。 字符串的格式可以包含下列字符: Y - 年 M - 月 MMM - 使用文本字符串作为月名(Jan,Feb,等.) W - 年的第几周 (每星期从星期一开始) A - 星期几 (星期一 -1,星期日 - 7) D - 月的第几天 E - 年的第几天 H - 小时 M - 分 (如果在小时后,被作为分钟对待) S - 秒 N - 压缩文件数。RAR 搜索要生成的名字的文件是否存在,如果发现 它已经存在,将递增一个压缩文件数字,直到生成一个唯一的名字。 'N' 格式化字符在创建卷时不被支持。 上面列出的每个字符串仅表示添加到压缩文件名中的一个字符。例如, 使用 WW 表示 2 数字的星期或 YYYY 定义 4 数字的年。 如果在格式化字符串的第一个字符是'+',日期字符串和基本压缩文件名 位置交换,所以日期将在压缩文件名之前。 格式化字符串可以包含在 '{' 和 '}' 包含的可选字符。此文本插入到压 缩文件名中。 所有其它字符被不变地添加到文件名上。 如果你需要更新已经存在的压缩文件,小心使用 -ag 开关。依赖于以前 使用的 -ag 传送的格式化字符串和时间,生成的和现有的压缩文件名可 能不匹配。在这种情况下 RAR 会创建一个新的压缩文件,而不是更新现 有文件。 例子: 1) 使用默认 YYYYMMDDHHMMSS 格式 rar a -ag backup 2) 使用 DD-MMM-YY 格式 rar a -agDD-MMM-YY backup 3) 使用 YYYYMMDDHHMM 格式,替换'backup'之前的日期 rar a -ag+YYYYMMDDHHMM backup 4) 使用 YYYY-WW-A 格式,包含区段描述 rar a -agYYYY{year}-WW{week}-A{wday} backup 5) 使用 YYYYMMDD 和压缩文件数。它允许你在同一天使用 -agyymmdd-nn 数次,每一个新的压缩文件名都将包含一个新的递增数字。 rar a -agYYYYMMDD-NN backup -ao 添加带有存档属性的文件 (只有 Windows 版本可用). 例子: 添加C:上所有带有存档属性的文件到'f:backup',并清除文件存档属性 rar a -r -ac -ao f:backup c:\*.* -ai 忽略文件属性。 当解压时实用此开关,RAR 不对解压的文件设置存储在压缩文件中的常 规文件属性。此开关保留由操作系统赋予新创建文件的属性。 在 Windows 中它影响存档、系统、隐藏和只读属性。在 Unix 中,用 户、组和其它文件属性。 -ap 压缩文件内部设置路径。当添加文件到压缩文件中时,路径被整合到文 件名中,解压时从文件名删除。 例如,如果你希望添加文件'readme.txt'到目录压缩文件'release' 的'DOCS\ENG'中,你可以运行: rar a -apDOCS\ENG release readme.txt 或者解压'ENG'到当前目录中: rar x -apDOCS release DOCS\ENG\*.* -as 同步压缩文件内容 如果压缩时使用这个开关,这些在当前被添加文件列表中不存在的被压缩 文件将从压缩文件中删除。它对于使用这个开关和 -u(更新)组合同步一 个压缩文件和正在压缩目录的内容很便利。 例如,执行这个命令后: rar a -u -as backup sources\*.cpp 压缩文件'backup.rar'将只包含目录'sources'中的*.cpp文件,所有其它 文件将被从压缩文件中删除。它和创建新的压缩文件很相像,但是有一个 重要的不同:如果最近备份之后没有文件被修改,这个操作比创建新的压 缩文件执行得快。 -av 添加身份校验(只有注册版本可用)。RAR将在每次新建或更新压缩文件时 添加关于创建者的信息、最后更新时间和压缩文件名。 如果一个包含身份校验的压缩文件被修改,而没有指定这个开关,则身份 校验信息将被删除。 使用'-av'开关的压缩文件当解压、测试、列表或更新时,RAR 将进行完 整性确认并显示信息: 校验身份信息... 在成功校验身份的情况下,显示消息'确定',创建者的名字和最近更新 信息会被显示。在身份校验失败的情况下,将显示'失败'。 RAR 身份验证可以被伪造,不能提供基于公钥的现代数字签名方案同等的 安全级别。我们推荐实用此 RAR 功能仅作为信息,像一个特殊的压缩文 件注释。当关于压缩文件的创建者创建信息特别重要时,不要使用它。 为了启用身份校验功能,程序必须注册。请联系你当地的发布点或网站发 布中心。 -av- 禁止检查或添加身份校验。 -cfg- 忽略配置文件和 RAR 环境变量。 -cl 转换文件名成小写字母。 -cu 转换文件名成大写字母。 -c- 禁止显示注释。 -df 压缩后删除文件 移动文件到压缩文件中。这个开关与命令'A'组合执行和命令'M'是同一动 作。 -dh 打开共享文件 允许处理有其它应用程序打开写的文件。 如果应用程序允许对文件的读取访问,这个开关有效。但是如果文件的访 问类型是私有,文件打开操作仍然会失败。 这个选项很危险,因为它允许压缩一个文件,而同时正被其它应用程序修 改,所以小心使用。 -dr 删除文件到回收站 压缩后删除文件并把它们放到回收站中。仅可用于 Windows 版本。 -ds 添加到一个固实压缩文件时不排序。 -dw 档案操作后清除文件 压缩后清除文件。在删除文件数据前使用 0 字节文件覆盖它们, 防止恢 复删除的文件。 -ed 不添加空目录 这个开关指出空目录不被存储到被创建的压缩文件中。当解压这样一个压 缩文件时, RAR 会基于他们内部的文件路径创建非空的目录。关于空目录 的信息丢失。非空目录除了名字外(访问权限, 流, 等。)其他所有属性全 部丢失, 所以只有在你不需要保留这样的信息时使用此开关。 如果 -ed 和 'm' 命令或 -df 开关一起被使用,RAR 将不能移除空的目录。 -ee 不处理扩展属性 禁止保存和修复扩展文件属性。只用于OS/2版本。 -en 不添加"压缩文件结束"块 默认情况下,RAR 在新建或更新压缩文件时在结束时添加 "压缩文件结 束"块。它允许跳过像数字安全签名等扩展数据,但是在一些特定条件下 禁用这些功能可能有用。例如,如果在一个压缩文件通过不可靠的连接在 两个系统之间传递,并且同时发送者在它里面添加新文件时,它可能对确 认在传输过程中已经接收的部分不会被另一端所修改很重要。 这个开关不能用在分卷上,因为压缩文件结束块包含正确处理卷的重要信 息。 -ep 从名称中排除路径。包含此开关时,文件在加入压缩文件时不会包含路 径信息。这可能会有在压缩文件中存在数个相同名称的结果。 -ep1 从文件名中删除底层目录。不存储在命令行中输入的路径。 例子: tmp 目录中的所有文件和目录都将被添加到压缩文件'test'中,但是被压 缩文件名路径不包含'tmp\' rar a -ep1 -r test tmp\* 这等价于下列命令: cd tmp rar a -r ..\test cd .. -ep2 扩展路径成完全路径。压缩时存储文件的完全路径(除了盘符和根目录路 径). -ep3 扩展路径为包含盘符的完全路径。 仅用于 Win32 版本。 压缩时如果使用此开关则保存和恢复包括盘符的完全的文件路径。磁盘分 隔符(冒号)被下划线字符替换。 如果你解压时使用 -ep3,它把下划线改回为冒号并且把文件解压到它们 原始的目录和磁盘中。如果用户也指定了目标路径,它会被忽略。 此开关对于把数个磁盘备份到同一个压缩文件有帮助。例如,你可以运行: rar a -ep3 -r backup.rar c:\ d:\ e:\ 来创建备份并且: rar x -ep3 backup.rar 来恢复它。 小心使用 -ep3 开关,只有你确认压缩文件不包含任何恶意文件。换句话 说,如果是你自己创建的压缩文件或你完全相信它的作者才使用它。此开 关允许覆盖在你的计算机上任何地方的任何文件,包括重要的系统文件和 通常仅用于备份和恢复的目的。 -e[+]<属性> 指定排除或包含掩码属性文件。 <属性> 是十进位,八进位(以 '0' 开头)或十六进位 (以 '0x' 开头) 的数字格式。 默认, 在 <属性>没有‘+’标记, 此开关定义排除掩码。如果对 <属性> 和文件属性按位进行 AND 逻辑运算的结果不为 0,则文件将不会被处理。 如果‘+’符号存在,它指定包含掩码。只有具有在掩码中指定的属性中 的至少一种的文件会被处理。 在 Windows 版本中也可以使用D、S、H、A代替数字掩码符号表示目录和 文件的系统,隐藏,存档和只读属性。给出的属性的顺序并不重要。 Unix 版本支持 D 和 V 符号来定义目录和设备属性。 允许在命令行中把 -e 和 -e+ 都指定。 示例: 1) 仅有文件夹名字而不包含它们的内容 rar a -r -e+d dirs 2) 不压缩系统和隐藏属性的文件: rar a -esh files -f 更新文件。可以在解压或创建压缩文件时使用。命令字符串"a -f"等价于 命令'f',你也可以和命令'm'或'mf'一起使用'-f' 。如果开关'-f'和命 令'x'或'e'一起使用,则只有旧文件能被从压缩文件中解压的新版本替换。 3) 不解压只读文件: rar x -er files -hp[p] 加密文件数据和头。 这个开关和 -p[p] 类似,但是开关 -p 只加密文件数据,而使文件名等 其它信息可见。这个开关加密所有包括文件数据、文件名、大小、属性、 注释和其它块等所有可感知压缩文件区域,所以它提供了更高的安全等 级。在压缩文件中使用-hp 加密,没有密码甚至不可能查看文件列表。 例子: rar a -hpfGzq5yKw secret report.txt 将添加文件 report.txt 到加密的压缩文件secret.rar中,使用密码 'fGzq5yKw' -id[c,d,p,q] 禁用消息。 开关 -idc 禁用版权字符串。 开关 -idd 在操作结束禁止显示“完成”字符串。 开关 -idp 禁止百分比指示。 开关 -idq 打开安静模式, 仅错误消息和问题能被显示。 允许一次使用数个修饰, 如果开关 -idcdp 是正确的。 -ieml[.][地址] 使用 E-mail发送压缩文件。只有 Win32 版本可用。 附加一个使用添加命令创建或被更新的压缩文件到 E-mail 信息中。你需 要有 MAPI 兼容的E-mail客户端来使用这个开关(大部分现代的 E-mail 程序支持MAPI接口)。 你可以在开关中直接输入详细E-mail地址或留为空白。在以后可以由你的 E-mail 程序询问。可以指定用分号或逗号隔开的数个地址。 如果你添加一个'.'字母到 -ieml,成功附加到E-mail中后压缩文件会被 删除。如果创建多卷压缩文件使用这个开关,每一卷都附加单独的 E-mail 信息。 -ierr 发送所有消息到标准错误设备。 -ilog[文件名] 记录错误到文件中 (只有注册版本可用). 把错误信息写到 RAR 目录中的 rar.log 文件中。也可以在开关中指定其 它的日志文件名代替默认的 rar.log,例如,-ilogc:\log\backup.log。 如果指定的文件名不包含路径,日志文件将会使用下列默认创建: 把错误信息写到 RAR 目录中的 rar.log 文件中。如果选项 "名称" 参数 没有指定, 日志文件将会使用下列默认创建: Unix: .rarlog 放在用户的 home 目录中; Windows: rar.log 放在 %APPDATA%\WinRAR 目录中; Dos: rar.log 放在 rar32.exe 文件相同的目录中。 如果 "名称" 参数包含无路径的文件名, RAR 会在默认目录中使用上面指 定的名称创建日志文件.如果你想改变日志文件的位置, 需要在 "名称"参 数中包含路径和文件名。 例如: rar a -ilogc:\log\backup.log backup d:\docs 发生错误时会创建 c:\log\backup.log 日志文件。 -inul 禁止所有消息。 -ioff 在完成操作后关闭计算机。硬件必须支持断电功能。只有 Win32 版本可用。 -isnd 允许声音。 -k 锁定压缩文件. 任何试图改变压缩文件的命令都会被忽略。 -kb 保留损坏的解压文件。 RAR 默认解压后删除 CRC 错误的文件。开关 -kb 指定 CRC 错误的文件 不会被删除。 -m 设置压缩模式: -m0 存储 添加到压缩文件时不压缩文件。 -m1 最快 使用最快方式(低压缩) -m2 较快 使用快速压缩方式 -m3 标准 使用标准(默认)压缩方式 -m4 较好 使用较好压缩方式(较好压缩,但是慢) -m5 最好 使用最大压缩方式(最好的压缩,但是最慢) 如果没有指定这个开关,RAR使用-m3方式(标准压缩)。 默认情况下,RAR 在 -m1 和 -m2 模式中只使用常规压缩算法,高级算法 像声音和真彩处理只有在 -m3..-m5 模式下才启用,提升的文本压缩只有 在 -m4..-m5 中才被激活。默认值可以使用 -mc 开关替代。 -mc<参数> 设置高级压缩参数。 这个开关主要是用于进行测试和试验,在真实环境中通常最好允许 RAR 自动选择最佳参数。请注意,不适当的使用这些开关可能导致非常严重执 行和压缩损失,所以只有在你清楚理解你所要做的时候使用它。 它有下列语法: -mc[参数1][:参数2][模块][+ 或 -] <模块>的位置是指示压缩算法的一个字符,它必须被设置。 它有下列值: A - 声音压缩; C - 真彩色(RGB)数据压缩; D - 增值压缩; E - 32-位 x86 Intel 可执行文件压缩; I - 64-位 Intel Itanium 可执行文件压缩; T - 文本压缩。 在开关结尾的'+'标记应用选择的算法模块处理所有的数据,'-'完全禁用 该模块。如果没有指定标记,RAR 将基于数据和当前的压缩模式自动选择 模块。 开关 -mc- 禁止所有可选模块,只允许常规的压缩算法。 <参数1> 和 <参数2> 根据模块而决定的参数,其描述如下。 音频压缩,增值压缩: <参数1> 是通道的字节数 (可以是1 - 31)。RAR 拆分多位声道成单位声 道,例如,两个16位音频声道可以被 RAR 看作每个宽一字节的四个声道。 <参数2> 被忽略。 32位 x86 Intel 可执行文件压缩, 64位 Intel Itanium 可执行文件压缩, 真彩(RGB)数据压缩: <参数1> 和 <参数2> 被忽略。 文本压缩: <参数1> 是 PPM 算法的次序+(可以是 2 - 63)。通常高的值会略微提高 多余数据的压缩率,但是必须有足够的内存来用于 PPM。在缺乏内存的条 件下结果可能相反。更高的规则值会减慢压缩和解压的速度。 <参数2>对于 PPM 可用的以兆字节位单位的内存 (1-128)。更高的值可以 提高压缩率,但是注意PPM压缩和解压使用的内存大小相等,所以创建一 个压缩文件时如果分配太多的内存,其他人在安装了比较少内存的机器上 解压它时可能出现问题。解压缩也可以使用虚拟内存,但是可能变得非常 慢。 例子: 1) 开关 -mc1a+ 强制使用对所有数据使用8位单声道声音压缩算法。 2) 开关 -mc10:40t+ 强制使用对所有数据使用文本压缩优化算法,设置压 缩次序到 10 并分配40 MB内存。 3) 开关 -mc12t 设置压缩次序到 12,设置文本压缩顺序为12,当使用文 本压缩时,让RAR决定何时使用它。 4) 开关 -mct- -mcd- 禁止文本和增值压缩。 -mdKB大小选择字典大小。必须是64,128,256,512,1024,2048或4096或 单个字母 'a','b','c','d','e','f','g'。 这个可变大小的字典是被压缩算法使用的专用的内存区域。如果被压缩文 件的大小(或在一个固实压缩文件中的总文件大小)比压缩文件大许多,则 通常增加字典大小会增加压缩率,减慢压缩速度和增加内存需要。 如果字典比原数据大,RAR可以减少字典大小.它可以减少内存的需要而不 会减小压缩比。 默认可变字典大小是 4096 KB. 例子: RAR a -s -mdd sources *.asm 或者 RAR a -s -md512 sources *.asm 将使用512 KB字典创建固实压缩文件。 -ms[列表] 指定存储文件类型。 指定不压缩而直接存贮的文件类型。这个开关被用来存储已经压缩的文件, 这将帮助增加压缩速度,而不会显著的减小压缩率。 可选参数 <列表> 参数定义使用分号隔开的文件扩展名列表。例如, -msrar;zip;jpg 将强制RAR不压缩直接存储所有的RAR和ZIP压缩文件和 JPG 图像。它也允许在列表中指定通配符文件掩码,所以 -ms*.rar; *.zip;*.jpg 也可以工作。 如果 <列表> 没有被指定,-ms 开关将使用默认的包含下列文件类型的扩 展设置: 7z, ace, arj, bz2, cab, gz, jpeg, jpg, lha, lzh, mp3, rar, taz, tgz, z, zip -mt<线程> 设置线程数。仅可用于 Window 版本。 <线程> 参数可以是从 0 到 16 的值。它定义对于压缩算法活动线程的 推荐数。如果它大于 0,RAR 会使用多线程版本的压缩算法,在多处理 器系统上提供更高的速度。真实的活动线程数可能和指定的不同。 如果 <线程> 是 0,RAR 会使用单线程压缩算法。 改变 <线程> 参数轻微影响压缩率,所以如果所有其它压缩参数相等而 使用不同的 -mt 开关创建的压缩文件不会解压得一样连贯。 如果没有指定 -mt 开关,RAR 会尝试检测可用的处理器的数量并自动 选择优化的线程数。 -n<文件> 仅包含指定的文件 <文件>。通配符在文件掩码的名称和文件部分都可用。 你可以数次指定开关‘-n’。 此关不能替换通常的文件掩码,仍然需要在命令行中输入。它是一个附加 的过滤器限制处理的文件那些仅匹配在 –n 开关中指定掩码的文件。某些 时候它可以帮助减少命令行的长度。 例如,如果你需要压缩在 Project 和 Info 文件夹内的所有的 *.txt 和 *.lst 文件,你可以输入: rar a -r text Project\*.txt Project\*.lst Info\*.txt Info\*.lst 或使用开关 -n: rar a -r -n*.txt -n*.lst text Project Info -n@<列表文件> 包含在指定的列表文件中列出的文件。 和 -n<文件> 开关类似,但是从列表文件读取掩码。 示例: rar a -r -n@inclist.txt text Project Info -oc 设置 NTFS 压缩属性。只可用于 Win32 版本。 此开关允许解压文件时恢复 NTFS 压缩属性。RAR 在创建一个压缩文件时 保存“压缩”文件属性,但是如果不指定 -oc 开关就不会恢复它们。 -ol 把符号链接作为链接而不是文件。 只有 Unix 版本可用。 -or 如果相同名字的文件已经存在则自动重命名解压的文件。重命名文件将得 到象 'filename(N).txt' 的名字,'filename.txt' 的位置是原始的文件 名,如果文件存在 'N' 是从 1 增加数字。 -os 保存 NTFS 流。 只有 Win32 版本可用。 这个开关意味着只能在 NTFS 文件系统下使用,并允许储存与文件相关的 交替数据流。在 Windows 2000、XP 和更新的 Windows 版本底下尤其重要, 可以用来保存某些文件依赖信息,如文件描述。如果您使用 RAR 来备份您 的 NTFS 磁盘时,建议您指定这个开关。 -ow 当压缩时保存文件安全信息和解压时恢复它们时,使用这个开关。 Unix 版本的 RAR 当使用这个开关时保存文件所有者和组。 Win32 版本存储所有者、组、文件许可和校验信息,但是你必须有读取 它们的必需的权限。 注意只有 NTFS 文件系统支持在Windows下的文件基 本安全数据。 -o[+|-] 设置覆盖模式。可以在解压或更新文件时使用。下列模式可用: -o 覆盖前询问 (默认用于解压文件); -o+ 覆盖所有 (默认用于更新的压缩文件); -o- 跳过已存在的文件。 -o+ 覆盖已存在的文件。 -o- 不覆盖已存在的文件。 -p[p] 压缩时,使用字符串

作为密码加密文件。密码大小写敏感。如果你在 命令行忽略密码,你会看到一个输入密码的提示。 例子: rar a -pmyhoney secret1 *.txt 添加 *.txt文件并用密码"myhoney"加密. -p- 不询问密码 -r 包含子文件夹,可以使用命令: a,u,f,m,x,e,t,p,v,l,c,cf 和 s. 当使用命令 'a','u','f','m' 将处理在所有子目录中以及当前工作目 录的中的文件。 当使用命令 x,e,t,p,v,l,c,cf 或 s 将处理在子目录以及当前工 作目录中所有压缩文件。 -r- 禁用递归。 在某些情况下,即使没有指定 -r 开关 RAR 也会自动启用递归。开关 -r- 禁止它。 压缩时如果你指定了目录名,目录名不包含通配符,即使 -r 开关没有指定, 默认 RAR 添加目录的内容。如果磁盘根目录没有把通配符作为文件掩码指定, RAR 也会自动启用递归。开关 -r- 禁用此行为。 例子: rar a -r- arc dirname 命令仅会添加空目录 'dirname' 目录并忽略它的内容。下列命令: rar a -r- arc c:\ 会仅压缩 c: 根目录的内容并不会包含子目录。 -r0 和 -r 相似,但是当使用命令 'a','u','f','m' ,将返回包含包括通 配符 '*' 和 '?'的子目录 -ri

[:] 设置优先级和休眠时间。只有在 Windows 版本的 RAR 中可用。 这个开关让 RAR 在多任务环境下时,用来控制系统载入负荷。可用任务 优先级值从 0 到 15。当

等于 0 时,使用默认任务优先级。1 对应 最低的任务优先权,15 - 最高。 休眠时间 是从 0 到 1000 (千分之一秒)的值。这是 RAR 压缩或解 压缩操作期间每次读或写时将会归还到系统的时段。休眠时间设定在几个 相同优先级任务在系统中同时运行时有用。 例子: 使用默认优先级执行 RAR,并且每次读取或写入后有10 ms的休眠 rar a -r -sfx -ri0:10 backup *.* -rr[N] 添加数据恢复记录。这个开关在创建或修改压缩文件被用来添加压缩文件 数据的恢复记录。 -rv[N] 创建恢复卷。这个开关在创建多卷压缩文件时用来创建恢复卷。查看 'rv[N]'命令的详细描述。 -s 创建固实压缩文件。固实格式是一种特别的压缩文件类型。请参考附录中的 “术语表”获得更多信息。 例子: 使用512KB的字典创建固实压缩文件 sources.rar ,包含全部子目录,从 当前目录开始,只添加.asm文件: rar a -s -md512 sources.rar *.asm -r -s 根据文件计数创建固实组 和 -s 相似,但是在压缩文件后重置压缩文件的状态。通常减少压缩率, 但是也能减少损坏的固实压缩文件中的文件丢失。 -sc<字符集>[对象] 指定列表文件和压缩包注释文件的字符集。 “字符集”参数是强制的, 可以使用下列值: U - Unicode; A - ANSI (Windows) 编码。仅用于 Windows 版本; O - OEM (DOS) 编码。仅用于 Windows 版本; Unicode 格式的文件必须以 FFFE 或 FEFF Unicode 字符开头, 否则 RAR 会 忽略此开关并作为 ASCII 文本处理。 “对象”参数是可选的, 可以使用下列值: L - 列表文件; C - 命令文件。 它允许指定不只一个对象, 例如, -scolc。如果 '对象' 参数丢失, '字符 集' 会应用到所有对象。 此开关允许指定在 -z[文件] 开关中的文件的字符集, 列表文件和注释文 件在 "cw" 命令中写入。l 例子: 1) rar a -scol data @list 使用 OEM 编码读取 'list' 中包含的名称。 2) rar c -scuc -zcomment.txt data 读取 comment.txt 为 Unicode 文件。 3) rar cw -scuc data comment.txt 写入 comment.txt 为 Unicode 文件。 -se 根据扩展名创建固实组 和 -s 相似,但是如果文件扩展名改变,重置压缩文件的状态。通常减少压 缩率,但是也能减少损坏的固实压缩文件中的文件丢失。 -sfx[名称] 创建自解压压缩文件。如果建立新压缩文件时使用此开关,自解压文件(使 用 default.sfx 模块或在开关中指定)将被创建。在 Windows 版本中, default.sfx 应该在 rar.exe 所在的目录中,在 Unix 中 - 在用户的 home 目录中。在/usr/lib 或 /usr/local/lib 中。 例子: rar a -sfxwincon.sfx myinst 使用 wincon.sfx 自解压模块创建自解压(SFX)压缩文件。 -si[名称] 当创建一个压缩文件时,从 stdin(标准输入)读取数据。选项“名称”参 数允许指定要创建的压缩文件内的标准输入数据的文件名。如果这个参数 丢失,名字会被设为“stdin”。此开关不能和 -v 一起使用。 例子: type Tree.Far | rar a -siTree.Far tree.rar 将把 'type Tree.Far' 作为 'Tree.Far' 文件压缩输出. -sv 创建互不依赖的固实压缩文件 当开始一个新的卷时,RAR 默认尽可能的尝试重置固实格式状态,但是只有 在上一次复位后,又压缩了足够多的数据。(至少几兆字节)。 这个开关会强制 RAR 忽略打包的数据大小,并试图对任何大小的分卷重置 状态。这会降低压缩率,但在固实卷组中的数个卷之一丢失或损坏时可以 增加解压部分数据的机会。 注意有时候 RAR 即使使用这个开关也无法重置状态。例如,当压缩一个 大文件成许多分割卷时就不能完成。RAR 只能在分离文件之间重置状态, 而不能用在单独文件上。 在创建不带卷的压缩文件时忽略。 -sl<大小> 仅处理大小小于在此开关的 <大小> 参数中指定的大小的文件。 参数 <大小> 必须以字节为单位指定。 -sm<大小> 仅处理大小超过在此开关的 <大小> 参数中指定的大小的文件。 参数 <大小> 必须以字节为单位指定。 -sv- 创建互相依赖的固实压缩文件 禁止卷之间重设固实状态。 这将稍微提高压缩率,但是意味着如果数个固实卷之一丢失或损坏时减 少解压部分数据的机会。 在创建不带卷的压缩文件时忽略。 -s- 禁止固实压缩 -t 压缩后测试文件。这个开关在和移动命令组合使用时非常有用,所以只有 压缩文件已经被成功测试后,文件才会被删除。 -ta<日期> 只处理指定日期之后修改的文件。 日期字符串的格式是 YYYYMMDDHHMMSS。它允许在日期字符串中插入'-' 或 ':'的分隔符,并忽略后部区域。例如,下列开关是正确的: -ta2001-11-20在内部它被转换成 -ta20011120000000 并作为"从2001 年11月20日0时0分0秒后修改的区域"对待。 -tb<日期> 只处理指定日期之前修改的文件。开关的格式和 -ta<日期> 相同。 -tk 保存原始压缩文件日期。防止当正在改变一个压缩文件时RAR修改文件。 -tl 设置压缩文件的日期为最新文件的日期。强制RAR设置改变的压缩文件的日 期为压缩文件中最新文件的日期。 -tn<时间> 处理指定时间以后的新文件。时间字符串格式时: [d][h][m][s] 例如,使用开关 -tn15d 来处理更新了15天的文件,-tn2h30m 来处理更 新了2小时30分的文件。 -to<时间> 处理指定时间以前的旧文件。开关的格式和 -tn<时间> 相同。 -ts[N] 保存或恢复文件时间(修改,创建,访问)。 开关 -tsm 指示 RAR 保存文件的修改时间,-tsc - 创建时间,tsa - 最 近访问时间。开关后的可选参数是 0 和 4 之间的数字来控制文件时间精 度。值‘1’启用 1 秒的精确度,2 - 0.0065536 秒, 3 - 0.0000256,4 或‘+’启用最大的 NTFS 时间精度,等于 0.0000001 秒。值‘0’或‘-’ 意味着创建和访问时间不保存,并且修改时间使用低的(两秒)时间精度。 更高的精度模式添加更多的数据到压缩文件中,使用 -tsm4 -tsa4 -tsc4 组合,让每个文件增加 19 个额外的字节。如果没有指定精度,RAR 使用 ‘4’(高)值。 默认的 RAR 模式是 -tsm4 -tsc0 -tsa0,所以高精度的修改时间被存储, 其它时间被忽略。 当解压文件(精度不相关,但是不能为 0)时指定 -tsc 和 -tsa 开关来设置 创建和访问时间是必需的。默认 RAR 只设置修改时间,即使压缩文件包含 创建和最近修改时间。设置修改时间来解压文件也可以使用 -tsm- 禁用。 如果你需要把这个开关应用到所有的三个时间,也可能忽略这三个类型字母。 例如,-tsm4 -tsa4 -tsc4 能被 -ts4, -ts+ 或 -ts 代替。使用 -ts- 来 只保存低精度的修改时间,或者忽略所有三个文件时间解压。 当创建一个压缩文件时,如果高的模式不被文件系统支持,RAR 会自动减少 精度。在 FAT 中不会超过两秒,在 Unix 中不会超过 1 秒。NTFS 时间精 度是 0.0000001 秒。 操作系统的时间限制解压时能被设置。Windows 允许设置三个时间,Unix - 修改时间和最近访问时间,没有创建时间,DOS 只支持修改时间。 例子: 1) rar a -ts backup 使用最高精确度存储所有文件时间。 2) rar x -tsa backup 存储修改和最近访问时间。开关 -tsm 不是必需的,因为 RAR 把它作为默 认值。 3) rar a -tsm1 -tsc1 backup 存储低精确度的修改和创建时间。没有 -tsm1 RAR 将会保存高精确的修改 时间。 -u 更新文件。 这可在解压或创建压缩文件时使用。命令字符串 'a -u' 和 命令 'u'等效。您也可以使用开关'-u'和命令'm'和'mf'一起使用。如果开 关'-u'使用与命令'x'或'e'一起使用,则在磁盘上不存在的文件和比在磁 盘上的拷贝新的文件将从压缩文件中解压。 -v 创建自动检测大小的卷或列出所有的卷 当正在创建或正在列表卷时这个开关可以使用。 在第一种情况下,它启用卷的自动大小检测,所以新的卷将使用目标媒体 上的所有可用空间。当在可移动磁盘上创建卷时非常便利。你可以在 -v <大小> 的描述中读到更多关于卷的信息。 在第二种情况下,在命令行中当这个开关和'V' 或 'L'命令一起使用,它 强制 RAR 列出从指定卷开始的所有卷的内容。没有这个开关,RAR 只显 示单独的被指定卷的内容。 -v<大小>[k|b|f|m|M|g|G] 建立卷,大小=<大小>*1000 [*1024 | *1]。 默认此开关使用 <大小> 作为一千(1000)字节(非1024 字节)。您也可以 输入符号 "k" 来表示千字节(1024)的大小,或者符号 "b" 表示字节,兆 字节(1024 x 1024)为 -"m",而一百万个字节是 - "M",G字节 - 'g', 十亿个字节 - 'G' 或者使用符号 "f" 从几个预先定义的数值中选择一个。 预先定义的数值有 360、720、1200、1440 或 2880 并会使用当前软盘大 小取代。 如果大小被忽略,将使用自动检测。 你可以指定几个 -v 开关来为不同的卷设置不同的大小。例如: rar a -v100k -v200k -v300k arcname 第一卷设为 100 KB 大小, 第二卷设为 200 KB, 剩下的为 300 KB。 如果在可移动磁盘上创建卷,第一卷被创建后,用户将被提示: 创建下一卷: 是/否/全部 此时,您可以改变磁盘。回答'A'将使所有的卷不暂停地被创建。 默认 RAR 卷以'volname.partNNN.rar'格式命名,NNN的地方是卷号。使 用-vn开关可能转换成其它的扩展基本命名规则,卷组中第一卷文件由.rar 的扩展名,以后卷从 .r00 到 .r99 命名。 当解压或测试多卷压缩文件时,你必须只使用第一卷的文件名。如果在驱 动器中没有下一卷并且磁盘可移动,用户会被提示: 插入磁盘带有 <下一卷名> 插入带有正确卷的磁盘并按任意键。 如果在解压过程中,下一卷没有找到或卷放在不可移动磁盘上,RAR 将显 示下列信息后中断: 没有找到 <卷名> 压缩卷不可以被修改。命令'd','f','u','s' 不能在多卷组中使用。 命令'a'只可以用在创建新的多卷序列时。 也许,虽然不太可能,多卷组中文件大小可能比未压缩时大,原因是'存 储'特征(如果大小增加时不压缩)在多卷组中不能启用。 压缩卷可以是自解压格式,这样的压缩文件可使用 '-v' 或 '-sfx'开关 创建。 例子: 创建固定大小的固实分卷压缩文件: rar a -s -v1440 floparch.rar *.* 将创建固实的1440000字节大小的卷。 -vd 创建卷之前清除磁盘内容 当使用 '-vd' 时,目标盘上的所有文件和目录都将被删除。这个开关只 能用在可移动磁盘上,使用这个开关不能删除硬盘内容。 -ver[n] 文件版本控制 当在已经存在的压缩文件中更新文件时,强制 RAR 保留前一文件版本。 旧版本被命名为'filename;n','n'处是版本号。 当不使用开关 -ver 解压一个压缩文件,rar 默认只解压最近添加的文件 版本,它的名字不能包含数字后缀。但是如果你正确指定了文件名,包括 版本,它也可以解压。例如,'rar x arcname'将只解压最新版本,当使 用 'rar x arcname file.txt;5' 将解压 'file.txt;5',如果它在压缩 文件中存在的话。 解压时如果你不带参数指定-ver开关, RAR 将解压所有和文件掩码匹配的所有文件中的所有版本。这样版本号没 有从未压缩文件名中删除。你也可以使用数字作为-ver的参数来解压一个 具体的文件版本。它将告诉RAR只解压这个版本并从文件名中删除版本号。 例如,'rar x -ver5 arcname' 将只解压第五版本文件。 如果压缩时你指定了‘n’参数,它会限制在压缩文件中文件版本的最大 数字。超过此限制的旧的文件版本会被移除。 -vn 使用旧风格的卷命名法则 默认 RAR 卷以'volname.partNNN.rar'格式命名,NNN的地方是卷号。使 用-vn开关可能转换成其它的扩展基本命名规则,卷组中第一卷文件由 .rar 的扩展名,以后卷从 .r00 到 .r99 命名。它可能有用,如果你要 在 MS DOS下解压一个压缩文件时,不允许在文件名中超过一个点'.'。 -vp 每一卷后暂停 默认 RAR 仅在使用可移动驱动器创建或解压下一卷前,进行更换磁盘的 询问。这个开关将强制 RAR 总是进行这样的询问。如果磁盘空间有限而 且你希望创建后立即复制每一卷到其它磁盘中时,可以使用它。 -w

作为工作目录。这个开关可以用来分配临时文件工作目录。 -x 排除指定的文件 ,通配符可以用在名称和文件掩码的文件部分。你 可以数次指定开关'-x'。 如果掩码包含通配符,它应用到当前目录和它的子目录。没有通配符它不 递归,所以如果你要在所有文件夹中排除某些“文件名”,你需要指定两 个掩码:用于当前目录的“文件名”和用于子目录的“*\filename”。如果 你知道一个文件的确切路径,你可以是使用“路径\文件名”语法来仅排除 “文件名”的此副本。如果你在解压一个压缩文件时使用 -x路径\文件名 语法,“路径”必须是一个压缩文件内的路径,而不是在解压后的磁盘上 的文件路径。 例子: 1) rar a -r -x*.bak -x*.rar rawfiles *.bak 和 *.rar 不会添加到 rawfiles 中 2) rar a -r -x*\temp -x*\temp\* savec c:\* 压缩 C: 上除了 Temp 文件夹中的临时目录和文件外的所有文件 3) rar x -x*.txt docs 从 docs.rar 解压除了 *.txt 外的所有文件 -x@ 排除指定文件列表中列出的文件。如果你使用 -x@ 而没有列表文件名参数, 它会从标准输入设备读取文件名。 例子: rar a -x@exlist.txt arch *.exe -y 对于所有询问全部回答是。 -z[f] 从文件中读取压缩文件注释。如果你需要指定注释文本文件的字符 集使用 -sc 开关。如果 没有指定, 注释从标准输入设备读取。 限制 ~~~~ 路径名长度小于 259 个字符。 最大的压缩文件注释的长度是 62000 字节。 命令限制: 命令 'd','u','f','c','cf' 不能用于分卷压缩文件。 命令 'a' 不能用来更新分卷压缩文件,只能用来创建一个新的。 返回值 ~~~~~~ RAR 成功操作后返回 0 。非 0 返回码意味着操作由于某种错误被取消: 255 用户中断 用户中断操作 9 创建错误 创建文件错误 8 内存错误 没有足够的内存进行操作 7 用户错误 命令行选项错误 6 打开错误 打开文件错误 5 写错误 写入磁盘错误 4 被锁定压缩文件 试图修改先前使用 'k' 命令锁定的压缩文件 3 CRC 错误 解压缩时发生一个 CRC 错误 2 致命错误 发生一个致命错误 1 警告 没有发生致命错误 0 成功 操作成功 术语表 ~~~~~~ 压缩文件 包含一个或一个以上文件的压缩和/或加密的特定文件。 压缩 减少数据大小的编码方法。 CRC 循环冗余检查。为了验证数据正确性检查特定信息的数学计算方法。 SFX 压缩文件模块执行时用于解压文件(自解压文件模块),通常是一个 .EXE格式文件。 固实 对压缩文件使用专用的压缩方式(把所有文件看成一个连续的数据 流)打包。当压缩大量小文件特别有利。 卷 压缩文件的拆分部分。把一个压缩文件拆分成存储在磁盘上。固实 格式卷解压时必须从序列中的第一个开始。 版权所有 (c) 1993-2009 Alexander Roshal

立即下载
rar文件
两款常见的软件脱壳工具

在当今时代,没有对软件商品进行壳的加密保护,简直是难以想象的,除非软件作者缺乏基本的加密常识.因此要对一个软件进行破解,就必须用到软件脱壳工具。这里就向大家推荐几种最常见的加壳工具。

立即下载
7z文件
补丁模块(带源码)InlinePatch,Hook,内存DLL注入等等

下面这个模块是我使用易语言时写补丁最常用的一个模块(当然很多也是抄的),一开始我觉得bug肯定会很多,放出去肯定又会坑很多人,后来我发现坑坑更健康,当你明白一个东西的优缺点之后,你才会更好的选择你所需要的。所以呢,现在模块开源了,希望对某些朋友有参考意义或者说使用价值吧。 声明:大家使用过程中发现任何问题都不要来问我,请自己想办法解决。我现在已经完全放弃易语言了,改用VC++了。 以下是全部接口: 模块名称:sunflover.ec 作者:by sunflover 版本:2015.2 自己收集的一些常用函数,方便写补丁。 @备注: 自己收集的一些常用函数 ------------------------------ .版本 2 .子程序 Ansi2Unicode, 字节集, 公开, 将Ansi码转换为Unicode码 (返回转换后的字节集) .参数 Ansi, 文本型, , 欲转换的Ansi文本 .子程序 AntiDebug, 逻辑型, 公开, 这个没啥用,效果差;可放在程序运行的第一个函数 被调试返回真 .子程序 AntiODMenu, 逻辑型, 公开, 这个效果较好,推荐用这个;找到OD相关句柄返回真, 此函数枚举窗口通过菜单名来 判定是否OD窗口。 .子程序 AntiStrongOD, 逻辑型, 公开, 这个效果还行,检测带有驱动的 OD调试器 此函数专门对付 StrongOD 插件 .参数 判断OD运行状态, 逻辑型, 可空, 此参数作用: 发现OD驱动时 —是否检测OD运行状态作为返回值基础 ,默认判断运行状态 .子程序 Bin2Dec, 整数型, 公开, 字节集到整数 .参数 Bin, 字节集 .子程序 Bin2Hex, 文本型, 公开, 字节集到十六进制文本 .参数 字节集, 字节集 .子程序 Bin2Hex1, 文本型, 公开, 文本型->文本型 .参数 Bin, 文本型 .子程序 BinXor, 字节集, 公开, 字节集异或 .参数 需异或的字节集, 字节集, , 返回的字节集 .参数 参与异或的字节集, 字节集 .子程序 Dec2Hex, 文本型, 公开, 十到十六 .参数 十进制转换数据, 长整数型 .子程序 GetAPIAddress, 整数型, 公开, 失败返回0 .参数 模块名, 文本型, , 如"user32.dll","kernel32.dll" .参数 API, 文本型, , 如“CreateWindowExA” .子程序 Hex2Bin, 字节集, 公开, 十六进制文本到字节集 .参数 原文, 文本型 .子程序 Hex2Bin1, 文本型, 公开, 文本型->文本型 .参数 Hex, 文本型 .子程序 Hex2Dec, 整数型, 公开, 十六到十 .参数 十六进制转换数据, 文本型 .子程序 InjectDll, 逻辑型, 公开, 向目标进程中注入一个指定 Dll 模块文件;注入成功返回 true, 注入失败则返回 false,CreateRemoteThread法 .参数 进程ID, 整数型, , 进程PID .参数 DLL文件名, 文本型, , 欲注入的DLL名称 .子程序 InjectDLL1, 逻辑型, 公开, SuspendThread,shellcode,SetEip .参数 PID, 整数型 .参数 DLL路径, 文本型 .子程序 InjectDLL2, 逻辑型, 公开, code cave,与InjectDLL1同 .参数 进程ID, 整数型 .参数 DLL文件名, 文本型 .子程序 inline_patch, 逻辑型, 公开, 失败返回假,成功返回真;适合patch尚未运行的加壳或不加壳的可执行文件 .参数 文件名, 文本型, , 文件全路径 .参数 模块名, 文本型, , 如"user32.dll" .参数 API, 文本型, , 如“CreateWindowExA” .参数 地址, 整数型, , 如Hex2Dec (“00401000”) .参数 数据, 字节集, , 如 Hex2Bin (“90909090”) .子程序 inline_patch_Pro, 逻辑型, 公开, 失败返回假,成功返回真;适合patch尚未运行的加壳不加壳的可执行文件,需要补丁的数据较多时建议使用这个,在子程序中打补丁 .参数 文件名, 文本型, , 文件全路径 .参数 模块名, 文本型, , 如"user32.dll" .参数 API, 文本型, , 如“CreateWindowExA” .参数 子程序指针, 子程序指针, , 如&子程序1 .子程序 inline_patch_Pro1, 逻辑型, 公开, 失败返回假,成功返回真;适合patch尚未运行的加壳或不加壳的可执行文件,解码时机判断是选用VirtualProtect;如果壳检测到了,自行换用inline_patch或inline_patch_Pro .参数 文件名, 文本型, , 文件全路径 .参数 子程序指针, 子程序指针, , 如&子程序1 .参数 地址, 整数型, 可空, 如Hex2Dec (“00401000”),用来判断是否解码完成;如果没壳,就空着 .子程序 inline_patch1, 逻辑型, 公开, patch尚未运行的,没加壳的程序,并运行它 .参数 文件名, 文本型, , 文件全路径 .参数 地址, 整数型, , 如Hex2Dec (“00401000”) .参数 数据, 字节集, , 如 Hex2Bin (“90909090”) .子程序 InlinePatch, 逻辑型, 公开, 失败返回假,成功返回真;适合patch尚未运行的加壳不加壳的可执行文件,需要补丁的数据较多时建议使用这个,在子程序中打补丁 .参数 文件名, 文本型, , 文件全路径,如"D:\test.exe" .参数 运行参数, 文本型, 可空, 可空,没有参数则留空,大多数情况没有参数;有参数时填写,如"-s" .参数 模块名, 文本型, , 如"user32.dll" .参数 API, 文本型, , 如“CreateWindowExA” .参数 API中断次数, 整数型, 可空, 可空,有些时候需要计次,根据需要填写;一般留空即可,留空表示中断第一次,就开始补丁 .参数 补丁子程序, 子程序指针, , 如&子程序1 .参数 寄存器结构体, context_, 参考 可空, 可空,CONTEXT,返回寄存器结构体,方便写补丁函数;这个属于高级功能,看不懂的话就留空吧 .参数 进程信息结构体, PROCESS_INFORMATION, 参考 可空, 可空,PROCESS_INFORMATION,返回进程信息结构体,方便写补丁函数;这个属于高级功能,看不懂的话就留空吧 .子程序 OpenProcessPro, 整数型, 公开, 返回句柄权限是完全访问 .参数 PID, 整数型 .子程序 OpenThreadPro, 整数型, 公开, 返回句柄权限是完全访问 .参数 进程ID, 整数型 .子程序 Unicode2Ansi, 文本型, 公开, 将Unicode码转换为Ansi码 (返回转换后的文本) .参数 Unicode, 字节集, , 欲转换的Unicode字节集 .子程序 UnInjectDLL1, 逻辑型, 公开, SuspendThread,shellcode,SetEip .参数 PID, 整数型 .参数 DLL路径, 文本型 .子程序 UnInjectDLL2, 逻辑型, 公开, 远程时钟卸载dll .参数 参数_窗口句柄, 整数型, , FindWindow(字符 (0),“计算器”) .参数 参数_DLL路径, 文本型, , '可以是DLL全路径也可以只是DLL名称 .子程序 超级延时, , 公开, 高精度延时,cpu占用低,窗口不卡死,一次最大可延时几年 (无返回值) .参数 延时间隔, 整数型, , 1000微秒 = 1毫秒 ; 1000毫秒 = 1秒 .参数 延时单位, 整数型, 可空, 可空:毫秒 0 毫秒 1 微秒 2 秒 3 分 4 小时 5 天 .子程序 打开保存文件对话框, 文本型, 公开, 未提示 是否有重复的文件存在 自己注意一下 .参数 窗口句柄, 整数型, 可空, 调用处窗口句柄 .参数 窗口标题, 文本型, 可空, 对话框窗口标题 .参数 过滤器, 文本型, 可空, 格式:“MP3文件(*.mp3)|*.mp3|媒体文件(*.mpg)|*.mpg” .参数 初始路径, 文本型, 可空, 可以被省略。如果本参数被省略,默认从“我的文档”开始。否则,请给出盘符,如“d:” .子程序 打开多文件对话框, 文本型, 公开, 如果多选文件,返回文件路径以“;”(半角分号)分隔。失败或取消返回空文本。 .参数 窗口句柄, 整数型, 可空, 调用处窗口句柄 .参数 窗口标题, 文本型, 可空, 对话框窗口标题 .参数 过滤器, 文本型, 可空, 格式:“MP3文件(*.mp3)|*.mp3|媒体文件(*.mpg)|*.mpg” .参数 初始路径, 文本型, 可空, 可以被省略。如果本参数被省略,默认从“我的文档”开始。否则,请给出盘符,如“d:” .参数 窗口风格, 整数型, 可空, 可以被省略。如果本参数被省略,默认为 0 。位置值从 0 开始。从0-11之间,可以设置多种窗口风格。0.工具栏、只读选择框-未选中;1.工具栏、只读选择框-选中;2.工具栏;3.工具栏、只读选择框-未选中,帮助按钮;4.工具栏、只读选择框-选中,帮助按钮;5.工具栏,帮助按钮;6.普通风格、只读选择框-未选中;7.普通风格、只读选择框-选中;8.普通风格;9.普通风格、只读选择框-未选中,帮助按钮;10.普通风格、只读选择框-选中,帮助按钮;11.普通风格、帮助按钮。 .子程序 读内存字节集, 字节集, 公开, 从内存中读取字节集数据(返回字节集,失败返回0字节长度的空字节集) .参数 进程ID, 整数型, , 进程ID .参数 地址, 整数型, , 内存地址 .参数 长度, 整数型, , 欲读取内存数据的长度 .子程序 复制文件夹, 逻辑型, 公开, 可复制文件,也可复制目录。成功返回真,失败返回假。 .参数 被复制的文件或目录, 文本型 .参数 复制到的位置, 文本型 .子程序 恢复进程, 逻辑型, 公开 .参数 PID, 整数型 .子程序 结束进程, 逻辑型, 公开 .参数 进程ID, 整数型 .子程序 进程取ID, 整数型, 公开, 取指定进程的进程ID(返回第一个进程ID,失败返回空信息) .参数 进程名, 文本型, , 程序进程名(不区分大小写!) .子程序 进程是否存在1, 逻辑型, 公开 .参数 进程ID, 整数型 .子程序 进程是否存在2, 逻辑型, 公开 .参数 进程名, 文本型 .子程序 蓝屏, , 公开, 惩罚破解者函数 。 在确定当前程序被调试后 可使用此函数让系统蓝屏。 慎重使用! .子程序 内存补丁, 逻辑型, 公开, 根据进程名补丁内存,patch已经运行的可执行文件 .参数 进程名, 文本型, , '完整的文件名,注意大小写 .参数 地址, 文本型, , 需patch地址,如“00401000” .参数 代码, 文本型, , 被替换的代码,如“90909090” .子程序 内存补丁1, 逻辑型, 公开, 根据进程ID补丁内存,patch已经运行的可执行文件 .参数 进程ID, 整数型, , 要补丁的进程ID .参数 地址, 文本型, , 需patch地址,如“00401000” .参数 代码, 文本型, , 被替换的代码,如“90909090” .子程序 内存搜索, 整数型, 公开, 某些情况,需提升权限(返回结果数目,失败返回0),返回搜索到的数目 .参数 进程ID, 整数型, , 进程ID .参数 搜索内容, 字节集, , 欲搜索的内容 其他类型-需自行转换为字节集类型 .参数 结果数组, 整数型, 参考 数组, 用来保存搜索的结果 .子程序 取汇编指令长度, 整数型, 公开, 返回指定进程指定地址处的首条汇编指令的长度。注:计算方法使用的是LDX32 .参数 进程ID, 整数型, , 进程ID .参数 地址, 整数型, , 指令地址,如Hex2Dec("00401000") .子程序 取寄存器值, 文本型, 公开, 适用于明码读码,运行到地址处读真码;如 取寄存器值(文件名,"user32.dll",“CreateWindowExA”,Hex2Dec (“00401000”),“Eax”) .参数 文件名, 文本型, , 文件全路径 .参数 模块名, 文本型, , 如"user32.dll" .参数 API, 文本型, , 如“CreateWindowExA”,这里主要为了解码时机 .参数 地址, 整数型, , 如Hex2Dec (“00401000”) .参数 寄存器, 文本型, , 可选Dr0-Dr7,Eax,Ecx,Ebx,Edx,Ebp,Esp,Eip,Edi,Esi,SegGs,SegFs,SegEs,SegDs,SegCs,EFlags,Esp,SegSs .子程序 取进程主线程, 整数型, 公开, 失败返回0 .参数 进程ID, 整数型 .子程序 取路径目录, 文本型, 公开, 返回一个文件所在目录,如"C:\Program Files\WinRAR\WinRAR.exe",返回"C:\Program Files\WinRAR" .参数 路径, 文本型, , 如"C:\Program Files\WinRAR\WinRAR.exe" .子程序 取路径文件名, 文本型, 公开, 根据文件路径获取文件名 .参数 路径, 文本型, , 文件完整路径 .子程序 取线程起始地址, 整数型, 公开, 失败返回0 .参数 参数_dwThreadId, 整数型 .子程序 去除空格, 文本型, 公开 .参数 文本, 文本型 .子程序 设置颜色对话框, 逻辑型, 公开, 例如:如果真 (设置颜色对话框 (取窗口句柄 (), j));编辑框1.文本颜色 = 到整数 (j)。 .参数 窗口句柄, 整数型 .参数 返回_颜色, 文本型, , 返回的颜色~~需要传回整数 .子程序 申请内存Pro, 整数型, 公开, 成功返回申请的首地址,失败返回0;申请的内存可读可写可执行 .参数 进程ID, 整数型, , .参数 申请内存大小, 整数型 .子程序 释放内存Pro, 逻辑型, 公开 .参数 进程ID, 整数型, , .参数 内存地址, 整数型 .子程序 特征码模糊搜索, 整数型, 公开, 最多支持三段通配符如“68 00 00 00 40 ?? ?? ?? ?? ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 12 34 ?? ?? ?? ?? 85 69” .参数 进程ID, 整数型, , 进程ID .参数 特征码, 文本型, , 十六进制文本,如“68 00 00 00 40 ?? ?? ?? ?? ?? ?? ?? ?? 50 E8” .参数 结果数组, 整数型, 参考 数组, 用来保存搜索的结果 .参数 偏移, 整数型, 可空, 默认为0 .参数 起始地址, 文本型, 可空, 默认为“00400000” .参数 结束地址, 文本型, 可空, 默认为“00800000” .子程序 提升进程权限, 逻辑型, 公开 .参数 目标进程, 整数型, 可空 .参数 权限类别, 文本型, 可空, 默认为“SeDebugPrivilege”;可选“SeDebugPrivilege”,“SeShutdownPrivilege”,“SeRestorePrivilege”,“SeBackupPrivilege” .子程序 写内存字节集, 逻辑型, 公开, 往内存中写入字节集数据(成功返回真,失败返回假);注:内部有VirtualProtectEx处理 .参数 进程ID, 整数型, , 进程ID .参数 地址, 整数型, , 内存地址 .参数 数据, 字节集, , 写入数据 如果为其它数据类型,可以用 到字节集() 将数据转换为字节集 .参数 写入长度, 整数型, 可空, 默认为全部数据,(参考: 1字节型 2短整数型 4长整数型,小数型,指针 8长整数型,双精度小数型,日期时间型) .子程序 移动文件夹, 逻辑型, 公开, 可移动文件,也可移动目录。成功返回真,失败返回假。 .参数 被移动的文件或目录, 文本型 .参数 移动到的位置, 文本型 .子程序 隐藏进程, 逻辑型, 公开, hide.dll,会被误报,大家看着处理 .参数 进程ID, 整数型 .子程序 暂停进程, 逻辑型, 公开 .参数 PID, 整数型 .子程序 终止进程Pro, , 公开, 终止进程,终止所有指定进程 .参数 进程名, 文本型, , 程序进程名(不区分大小写!) .子程序 终止线程, 逻辑型, 公开, 成功返回真 失败返回假 .参数 参数_线程ID, 整数型 .数据类型 context_, 公开, 公开 .成员 ContextFlags, 整数型 .成员 Dr0, 整数型 .成员 Dr1, 整数型 .成员 Dr2, 整数型 .成员 Dr3, 整数型 .成员 Dr4, 整数型 .成员 Dr5, 整数型 .成员 Dr6, 整数型 .成员 Dr7, 整数型 .成员 ControlWord, 整数型 .成员 StatusWord, 整数型 .成员 TagWord, 整数型 .成员 ErrorOffset, 整数型 .成员 ErrorSelector, 整数型 .成员 DataOffset, 整数型 .成员 DataSelector, 整数型 .成员 RegisterArea, 字节型, , "72" .成员 Cr0NpxState, 整数型 .成员 SegGs, 整数型 .成员 SegFs, 整数型 .成员 SegEs, 整数型 .成员 SegDs, 整数型 .成员 Edi, 整数型 .成员 Esi, 整数型 .成员 Ebx, 整数型 .成员 Edx, 整数型 .成员 Ecx, 整数型 .成员 Eax, 整数型 .成员 Ebp, 整数型 .成员 Eip, 整数型 .成员 SegCs, 整数型 .成员 EFlags, 整数型 .成员 Esp, 整数型 .成员 SegSs, 整数型 .成员 reserve, 字节型, , "512" .数据类型 FLOATING_SAVE_AREA, 公开 .成员 ControlWord, 整数型 .成员 StatusWord, 整数型 .成员 TagWord, 整数型 .成员 ErrorOffset, 整数型 .成员 ErrorSelector, 整数型 .成员 DataOffset, 整数型, , , ; .成员 DataSelector, 整数型 .成员 RegisterArea, 字节型, , "80" .成员 Cr0NpxState, 整数型 .数据类型 LuID, 公开 .成员 lowpart, 整数型 .成员 highpart, 整数型 .数据类型 MEMORY_BASIC_INFORMATION, 公开 .成员 BaseAddress, 整数型 .成员 AllocationBase, 整数型 .成员 AllocattionProtect, 整数型 .成员 RegionSize, 整数型 .成员 State, 整数型 .成员 Protect, 整数型 .成员 Type, 整数型 .数据类型 MODULEENTRY32, 公开, MODULEENTRY32 .成员 dwSize, 整数型, , , dwSize .成员 th32ModuleID, 整数型, , , th32ModuleID .成员 th32ProcessID, 整数型, , , th32ProcessID .成员 GlblcntUsage, 整数型, , , GlblcntUsage .成员 ProccntUsage, 整数型, , , ProccntUsage .成员 modBaseAddr, 整数型, , , modBaseAddr .成员 modBaseSize, 整数型, , , modBaseSize .成员 hModule, 整数型, , , hModule .成员 szModule, 字节型, , "256", 模块名称 .成员 szExePath, 字节型, , "260", 文件路径 .数据类型 PROCESS_BASIC_INFORMATION, 公开 .成员 ExitStatus, 整数型 .成员 PebBaseAddress, 整数型 .成员 AffinityMask, 整数型 .成员 BasePriority, 整数型 .成员 UniqueProcessId, 整数型 .成员 InheritedFromUniqueProcessId, 整数型 .数据类型 PROCESS_INFORMATION, 公开 .成员 hProcess, 整数型 .成员 hThread, 整数型 .成员 dwProcessId, 整数型 .成员 dwThreadId, 整数型 .数据类型 SECURITY_ATTRIBUTES, 公开, , SECURITY_ATTRIBUTES .成员 nLength, 整数型 .成员 lpSecurityDescriptor, 整数型 .成员 bInheritHandle, 整数型 .数据类型 SHFILEOPSTRUCT, 公开 .成员 句柄, 整数型 .成员 wFunc, 整数型 .成员 pFrom, 字节集 .成员 pTo, 字节集 .成员 fFlags, 短整数型 .成员 fAnyOperationsAborted, 整数型 .成员 hNameMappings, 整数型 .成员 lpszProgressTitle, 文本型 .数据类型 STARTUPINFO, 公开 .成员 cb, 整数型 .成员 lpReserved, 文本型 .成员 lpDesktop, 文本型 .成员 lpTitle, 文本型 .成员 dwX, 整数型 .成员 dwY, 整数型 .成员 dwXSize, 整数型 .成员 dwYSize, 整数型 .成员 dwXCountChars, 整数型 .成员 dwYCountChars, 整数型 .成员 dwFillAttribute, 整数型 .成员 dwFlags, 整数型 .成员 wShowWindow, 短整数型 .成员 cbReserved2, 短整数型 .成员 lpReserved2, 整数型 .成员 hStdInput, 整数型 .成员 hStdOutput, 整数型 .成员 hStdError, 整数型 .数据类型 STARTUPINFO1, 公开 .成员 cb, 整数型 .成员 lpReserved, 整数型 .成员 lpDesktop, 整数型 .成员 lpTitle, 整数型 .成员 dwX, 整数型 .成员 dwY, 整数型 .成员 dwXSize, 整数型 .成员 dwYSize, 整数型 .成员 dwXCountChars, 整数型 .成员 dwYCountChars, 整数型 .成员 dwFillAttribute, 整数型 .成员 dwFlags, 整数型 .成员 wShowWindow, 短整数型 .成员 cbReserved2, 短整数型 .成员 lpReserved2, 字节型 .成员 hStdInput, 整数型 .成员 hStdOutput, 整数型 .成员 hStdError, 整数型 .数据类型 THREADENTRY32, 公开 .成员 dwsize, 整数型 .成员 cntUsage, 整数型 .成员 th32ThreadID, 整数型 .成员 th32OwnerProcessID, 整数型 .成员 tpBasePri, 长整数型 .成员 tpDeltaPri, 长整数型 .成员 dwFlags, 整数型 .数据类型 窗口句柄类, 公开 .成员 句柄, 整数型 .成员 标题, 文本型 .成员 类名, 文本型 .数据类型 打开文件名, 公开, OPENFILENAME .成员 结构大小, 整数型, , , lStructSize .成员 窗口句柄, 整数型, , , hwndOwner .成员 实例句柄, 整数型, , , hInstance .成员 过滤器, 字节集, , , lpstrFilter .成员 自定义过滤器, 文本型, , , lpstrCustomFilter .成员 自定义过滤器最大长度, 整数型, , , nMaxCustFilter .成员 过滤器索引, 整数型, , , nFilterIndex .成员 文件名, 字节集, , , lpstrFile .成员 文件名最大长度, 整数型, , , nMaxFile .成员 文件标题, 文本型, , , lpstrFileTitle .成员 文件标题最大长度, 整数型, , , nMaxFileTitle .成员 初始目录, 文本型, , , lpstrInitialDir .成员 标题, 文本型, , , lpstrTitle .成员 标志, 整数型, , , flags .成员 文件偏移量, 整数型, , , nFileOffset .成员 文件扩展名, 整数型, , , nFileExtension .成员 默认扩展名, 文本型, , , lpstrDefExt .成员 自定义数据, 整数型, , , lCustData .成员 回调函数地址, 整数型, , , lpfnHook .成员 模板名, 文本型, , , lpTemplateName .数据类型 函数信息, 公开 .成员 模块索引, 整数型 .成员 ThunkRav, 文本型 .成员 Thunk偏移, 文本型 .成员 Thunk值, 文本型 .成员 序数, 文本型 .成员 名称, 文本型 .数据类型 寄存器, 公开 .成员 标记, 整数型 .成员 dr0, 整数型 .成员 dr1, 整数型 .成员 dr2, 整数型 .成员 dr3, 整数型 .成员 dr6, 整数型 .成员 dr7, 整数型 .成员 FloatSave, FLOATING_SAVE_AREA .成员 seggs, 整数型 .成员 segfs, 整数型 .成员 seges, 整数型 .成员 segds, 整数型 .成员 edi, 整数型 .成员 esi, 整数型 .成员 ebx, 整数型 .成员 edx, 整数型 .成员 ecx, 整数型 .成员 eax, 整数型 .成员 ebp, 整数型 .成员 eip, 整数型 .成员 SegCs, 整数型 .成员 eflags, 整数型 .成员 esp, 整数型 .成员 SegSs, 整数型 .数据类型 进程信息, 公开, 进程信息 .成员 dwSize, 整数型 .成员 cntUsage, 整数型 .成员 进程ID, 整数型 .成员 th32DefaultHeapID, 整数型 .成员 th32ModuleID, 整数型 .成员 cntThreads, 整数型 .成员 th32ParentProcessID, 整数型 .成员 pcPriClassBase, 整数型 .成员 dwFlags, 整数型 .成员 进程名称, 字节型, , "256" .数据类型 逻辑字体, 公开, $(a)LOGFONT .成员 高度, 整数型, , , lfHeight .成员 宽度, 整数型, , , lfWidth .成员 控制摆, 整数型, , , lfEscapement .成员 定方位, 整数型, , , lfOrientation .成员 加粗, 整数型, , , lfWeight .成员 斜体, 字节型, , , lfItalic .成员 下划线, 字节型, , , lfUnderline .成员 删除线, 字节型, , , lfStrikeOut .成员 零碎工作组合, 字节型, , , lfCharSet .成员 出自精确, 字节型, , , lfOutPrecision .成员 修剪精确, 字节型, , , lfClipPrecision .成员 性质, 字节型, , , lfQuality .成员 间距, 字节型, , , lfPitchAndFamily .成员 字体名称, 字节型, , "32", 用LF_FACESIZE,lfFaceName? .数据类型 色盒, 公开 .成员 lStructsize, 整数型 .成员 hwndOwner, 整数型 .成员 hInstance, 整数型 .成员 rgbResult, 整数型 .成员 lpCustColors, 文本型, , , 可以指定16个数组,也可以不用指定,但无论用否,必须传址 .成员 flags, 整数型 .成员 lCustData, 整数型 .成员 lpfnHook, 子程序指针 .成员 lpTemplateName, 文本型 .数据类型 设定执行文件信息, 公开, SHELLEXECUTEINFO .成员 结构大小, 整数型, , , cbSize .成员 标志, 整数型, , , fMask .成员 窗口句柄, 整数型, , , hwnd .成员 操作命令, 文本型, , , lpVerb .成员 文件名, 文本型, , , lpFile .成员 应用程序参数, 文本型, , , lpParameters .成员 目录, 文本型, , , lpDirectory .成员 显示标志, 整数型, , , nShow .成员 实例句柄, 整数型, , , hInstApp .成员 项目标识符列表结构指针, 整数型, , , lpIDList .成员 文件类别, 文本型, , , lpClass .成员 热键句柄, 整数型, , , hkeyClass .成员 热键, 整数型, , , dwHotKey .成员 图标句柄, 整数型, , , hIcon .成员 进程句柄, 整数型, , , hProcess .数据类型 文件夹信息, 公开, BROWSEINFO .成员 窗口句柄, 整数型, , , hOwner .成员 根目录, 整数型, , , pidlRoot .成员 显示名称, 文本型, , , pszDisplayName .成员 标题, 文本型, , , lpszTitle .成员 标志, 整数型, , , ulFlags .成员 回调函数地址, 整数型, , , lpfn .成员 回调函数参数, 整数型, , , lParam .成员 图像索引, 整数型, , , iImage .数据类型 项目标识符列表, 公开, ITEMIDLIST .成员 结构大小, 整数型, , , cb .成员 标识符长度, 字节型, , "255", abID .数据类型 选择字体, 公开, CHOOSEFONT .成员 结构大小, 整数型, , , lStructSize .成员 窗口句柄, 整数型, , , hwndOwner,caller's window handle .成员 设备场景句柄, 整数型, , , hDC,printer DC/IC or NULL .成员 字体结构指针, 整数型, , , lpLogFont‘ptr. to a LOGFONT struct .成员 点大小, 整数型, , , iPointSize,10 * size in points of selected font .成员 标志, 整数型, , , flags,enum. type flags .成员 颜色值, 整数型, , , rgbColors,returned text color .成员 自定义数据, 整数型, , , lCustData,data passed to hook fn. .成员 回调函数地址, 整数型, , , lpfnHook,ptr. to hook function .成员 模板名称, 文本型, , , lpTemplateName,custom template name .成员 实例句柄, 整数型, , , hInstance,instance handle of.EXE that contains cust. dlg. template .成员 字体风格, 文本型, , , lpszStyle,return the style field here must be LF_FACESIZE(32) or bigger .成员 字体类型, 短整数型, , , nFontType,same value reported to the EnumFonts,call back with the extra FONTTYPE_ bits added .成员 空白队列, 短整数型 .成员 最小尺寸, 整数型 .成员 最大尺寸, 整数型 .数据类型 字体信息, 公开 .成员 名称, 文本型 .成员 大小, 整数型 .成员 颜色, 整数型 .成员 类型, 整数型 .成员 斜体, 整数型 .成员 下划线, 整数型 .程序集 IATHOOK类, , 公开 .子程序 APIAddr, 整数型, 公开, '此方法放在IATHOOK后调用方可成功,失败返回0 .子程序 IATHook, 逻辑型, 公开, 完事后注意调用IATUnHook .参数 进程ID, 整数型, 可空, '为空表示自身进程 .参数 模块名, 文本型, , 需加后缀,如“user32.dll” .参数 函数名, 文本型, , 注意大小写,如“MessageBoxA” .参数 新地址, 整数型, , 到整数 (&HookCallBack) .子程序 IATUnHook, 逻辑型, 公开, 与IATHOOK参数完全相同 .参数 进程ID, 整数型, 可空, 为空表示本进程 .参数 模块名, 文本型, , 需加后缀,如“user32.dll” .参数 函数名, 文本型, , 注意大小写,如“MessageBoxA” .参数 地址, 整数型, , 与IATHOOK最后一个参数相同 .程序集 PE类, , 公开, 获取可执行程序入口点,附加数据; .子程序 GetEntryPoint, 整数型, 公开, 获取的是OEP,即EP+imagebase .参数 全文件路径, 文本型, , 要处理的文件全路径 .子程序 overlay, 字节集, 公开, 获取PE文件的附加数据 .参数 全文件路径, 文本型, , 要处理的文件全路径 .程序集 超级解压类, , 公开, 调用7z解压文件,支持7z,zip,rar等压缩文件的带密码解压 .子程序 超级解压, 逻辑型, 公开, 解压压缩文件,支持rar,zip,7z等等压缩文件的解压,支持带密码解压 .参数 待解压文件, 文本型, , 欲解压的文件的全路径 .参数 解压到的目录, 文本型, , 欲解压到的路径 .参数 解压密码, 文本型, 可空, 解压所用密码,没有密码就不填 .程序集 汇编类, , 公开, 用于辅助生成shellcode,返回值都是字节集 .子程序 add_eax_char, 字节集, 公开, 占用3个字节,char值在0-127之间,返回汇编指令对应的字节集 .参数 char, 字节型, , add eax,1,参数为1,注意进制;16进制,请用Hex2Dec(Hex)转换 .子程序 add_eax_Num, 字节集, 公开, 占用5个字节,返回汇编指令对应的字节集 .参数 Num, 整数型, , add eax,8,参数为8,注意进制;16进制,请用Hex2Dec(Hex)转换 .子程序 add_esp_char, 字节集, 公开, 占用3个字节,char值在0-127之间,返回汇编指令对应的字节集 .参数 char, 字节型, , add esp,8,参数为8,注意进制;16进制,请用Hex2Dec(Hex)转换 .子程序 call, 字节集, 公开, 占用5个字节,call转换,返回汇编指令对应的字节集,此处为十进制,想用16进制,请自行转换;示例:call (Hex2Dec (“402000”), Hex2Dec (“401000”)) .参数 call到的地址, 整数型, , 00401000 call 00402000,参数为00402000 .参数 call所在的地址, 整数型, , 00401000 call 00402000,参数为00401000 .子程序 call_API, 字节集, 公开, 占用5个字节,如00401000 call MessageBoxA .参数 call所在地址, 整数型, , 自行转换,Hex2Dec("00401000") .参数 lpProcName, 文本型, , 如MessageBoxA .参数 hModule, 文本型, , 如user32.dll .子程序 call_API_FF15, 字节集, 公开, 占用6个字节,如00401000 call MessageBoxA .参数 lpProcName, 文本型, , 如MessageBoxA .参数 hModule, 文本型, , 如user32.dll .子程序 call_eax, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .子程序 call_FF15, 字节集, 公开, 占用6个字节,call转换,返回汇编指令对应的字节集,此处为十进制,想用16进制,请自行转换;示例:call (Hex2Dec (“402000”)) .参数 call到的地址, 整数型, , 00401000 call 00402000,参数为00402000 .子程序 jmp, 字节集, 公开, 占用5个字节,jmp转换,返回汇编指令对应的字节集,此处为十进制,想用16进制,请自行转换;jmp (Hex2Dec (“402000”), Hex2Dec (“401000”)) .参数 jmp_to, 整数型, , 00401000 jmp 00402000,参数为00402000 .参数 jmp_from, 整数型, , 00401000 jmp 00402000,参数为00401000 .子程序 jmp_FF25, 字节集, 公开, 占用6个字节,jmp转换,返回汇编指令对应的字节集,此处为十进制,想用16进制,请自行转换;jmp (Hex2Dec (“402000”)) .参数 jmp_to, 整数型, , 00401000 jmp 00402000,参数为00402000 .子程序 mov_eax_Num, 字节集, 公开, 占用5个字节,返回汇编指令对应的字节集 .参数 Num, 整数型, , 自己注意进制,mov eax,401000,参数为Hex2Dec(“401000”) .子程序 nop, 字节集, 公开, 占用个字节,返回汇编指令对应的字节集 .子程序 popad, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 popfd, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_char, 字节集, 公开, 占用2个字节,char值在0-127之间,返回汇编指令对应的字节集 .参数 char, 字节型, , push 8,参数为8,注意进制;16进制,请用Hex2Dec(Hex)转换 .子程序 push_eax, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_ebp, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_ebx, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_ecx, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_edi, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_edx, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_esi, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_esp, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 push_Num, 字节集, 公开, 占用5个字节,返回汇编指令对应的字节集 .参数 Num, 整数型, , push 401000,参数为Hex2Dec(401000),注意进制;16进制,请用Hex2Dec(Hex)转换 .子程序 pushad, 字节集, 公开, 占用1个字节,将通用寄存器的内容压入堆栈;返回汇编指令对应的字节集 .子程序 pushfd, 字节集, 公开, 占用1个字节,本指令可以把标志寄存器的内容保存到堆栈中去;返回汇编指令对应的字节集 .子程序 retn, 字节集, 公开, 占用1个字节,返回汇编指令对应的字节集 .子程序 retn_n, 字节集, 公开, 占用3个字节,返回汇编指令对应的字节集 .参数 n, 短整数型, , retn 3,参数填3,注意进制;16进制,请用Hex2Dec(Hex)转换 .子程序 xor_eax_eax, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .子程序 xor_ebx_ebx, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .子程序 xor_ecx_ecx, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .子程序 xor_edi_edi, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .子程序 xor_edx_edx, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .子程序 xor_esi_esi, 字节集, 公开, 占用2个字节,返回汇编指令对应的字节集 .程序集 内存DLL注入类, , 公开, 可能还有点问题 .子程序 取DLL函数地址, 整数型, 公开, 返回已经注入到指定进程内的DLL的函数地址。失败返回0。 .参数 DLL函数名, 文本型, , 区分大小写。 .子程序 是否已注入, 逻辑型, 公开, 已注入返回真,未注入返回假。 .子程序 卸载DLL, 逻辑型, 公开, 卸载已经注入的内存中的DLL,成功返回真,失败返回假.(最好不要卸载,卸载的话被注入的进程很容易崩溃) .子程序 执行DLL函数, 整数型, 公开, 执行已经注入到指定进程内的DLL的函数,成功返回所执行的函数的地址,失败返回0。 .参数 DLL函数名, 文本型, , 区分大小写。 .参数 等待函数执行完毕, 逻辑型, 可空, 默认为假,为真则函数执行完毕后本函数才返回。 .参数 返回值, 整数型, 参考 可空, 如果上一个参数为真,则可提供一个变量保存被执行的DLL函数的返回值。 .参数 线程句柄, 整数型, 参考 可空, 可提供变量保存函数执行线程的句柄,不需要请留空.接收了句柄记得不用时要关闭. .参数 参数1, 整数型, 可空, 可提供给被执行函数最多10个参数(理论上支持无限个,自己看着改吧)不需要的请留空。 .参数 参数2, 整数型, 可空, 非整数型参数需传递变量的内存数据指针,该指针必须是在目标进程内的。 .参数 参数3, 整数型, 可空, 提供的参数请与所执行的函数的参数个数一致,否则被注入的进程绝对会崩溃! .参数 参数4, 整数型, 可空 .参数 参数5, 整数型, 可空 .参数 参数6, 整数型, 可空 .参数 参数7, 整数型, 可空 .参数 参数8, 整数型, 可空 .参数 参数9, 整数型, 可空 .参数 参数10, 整数型, 可空 .子程序 注入DLL, 整数型, 公开, 成功返回DLL的模块句柄,失败或已注入返回0。 .参数 进程句柄, 整数型, , 句柄必须拥有对被注入进程的完全操作权限。注入后如果没有其他用处可以关闭该句柄。 .参数 DLL数据, 字节集 .程序集 取机器码类, , 公开, 获取硬件信息,硬盘等等 .子程序 取3段机器码, 文本型, 公开, 获取3段32位机器码,如1111111111-2222222222-3333333333 .参数 bios, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .参数 HardDisk, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .参数 MAC, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .子程序 取4段机器码, 文本型, 公开, 获取4段23位机器码,如11111-22222-33333-44444 .参数 bios, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .参数 HardDisk, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .参数 Video, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .参数 MAC, 逻辑型, 可空, 填 假 表示此段全为0,可空,默认为真 .DLL命令 _窗口是否可见, 整数型, "user32", "IsWindowVisible", 公开, 判断窗口是否可见 如窗口可见则返回TRUE(非零) .参数 窗口句柄, 整数型, , 要测试的那个窗口的句柄 .DLL命令 AdjustTokenPrivileges, 逻辑型, "advapi32.dll", "AdjustTokenPrivileges", 公开 .参数 TokenHandle, 整数型 .参数 DisableAllPrivileges, 整数型 .参数 NewState, , 传址 .参数 BufferLength, 整数型 .参数 PreviousState, , 传址 .参数 ReturnLength, 整数型, 传址 .DLL命令 API_IsDebuggerPresent, 整数型, "kernel32.dll", "IsDebuggerPresent", 公开 .DLL命令 CallNextHookEx, 整数型, "user32.dll", "CallNextHookEx", 公开 .参数 hhk, 整数型, , 钩子句柄 .参数 nCode, 整数型, , 钩子类型 .参数 wParam, 整数型 .参数 LPARAM, 整数型 .DLL命令 CloseHandle, 整数型, "kernel32.dll", "CloseHandle", 公开, 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的 非零表示成功,零表示失败。会设置GetLastError .参数 对象句柄, 整数型, , 欲关闭的一个对象的句柄; .DLL命令 CreateFileA, 整数型, "kernel32.dll", "CreateFileA", 公开, , 成功返回文件句柄,失败返回0 .参数 打开文件名, 文本型, , lpFileName,要打开的文件的名字 .参数 访问权限, 整数型, , dwDesiredAccess,访问权限 .参数 共享方式, 整数型, , dwShareMode,共享方式 .参数 安全特性, SECURITY_ATTRIBUTES, 传址, lpSecurityAttributes,安全特性信息 .参数 创建方式, 整数型, , dwCreationDisposition,创建方式 .参数 文件属性, 整数型, , dwFlagsAndAttributes,参见相关帮助 .参数 从文件复制文件属性, 整数型, , hTemplateFile,参见相关帮助 .DLL命令 CreateProcess, 整数型, "kernel32.dll", "CreateProcessA", 公开, CreateProcess(编辑框1.内容, “”, 0, 0, 0, 4, 0, 取运行目录(), si, pi) .参数 lpApplicationName, 文本型 .参数 lpCommandLine, 文本型 .参数 lpProcessAttributes, 整数型 .参数 lpThreadAttributes, 整数型 .参数 bInheritHandles, 整数型 .参数 dwCreationFlags, 整数型, , 0正常,4挂起,3调试,6调试挂起 .参数 lpEnvironment, 整数型 .参数 lpCurrentDriectory, 文本型 .参数 lpStartupInfo, STARTUPINFO, 传址 .参数 lpProcessInformation, PROCESS_INFORMATION, 传址 .DLL命令 CreateRemoteThread, 整数型, "kernel32", "CreateRemoteThread", 公开, 在另一进程中建立线索 .参数 hProcess, 整数型 .参数 lpThreadAttributes, 整数型 .参数 dwStackSize, 整数型 .参数 lpStartAddress, 整数型 .参数 lpParameter, 整数型 .参数 dwCreationFlags, 整数型 .参数 lpThreadId, 整数型, 传址 .DLL命令 CreateToolhelp32Snapshot, 整数型, "kernel32.dll", "CreateToolhelp32Snapshot", 公开, 返回快照后的句柄 .参数 快照标志, 整数型, , 进程=15,线程=4,DLL=8,堆= .参数 进程标识符, 整数型, , lProcessID 欲照快照的进程标识符 .DLL命令 DuplicateHandle, 整数型, "kernel32", "DuplicateHandle", 公开, 复制对象句柄 .参数 hSourceProcessHandle, 整数型 .参数 hSourceHandle, 整数型 .参数 hTargetProcessHandle, 整数型 .参数 lpTargetHandle, 整数型, 传址 .参数 dwDesiredAccess, 整数型 .参数 bInheritHandle, 整数型 .参数 dwOptions, 整数型 .DLL命令 ExitProcess, 整数型, "kernel32.dll", "ExitProcess", 公开, , .参数 进程句柄, 整数型, , 填0即可 .DLL命令 FindWindow, 整数型, "user32.dll", "FindWindowA", 公开, FindWindow,寻找窗口列表中第一个符合指定条件的顶级窗口 .参数 窗口类名, 文本型, , lpClassName,参见相关帮助,字符 (0) .参数 窗口文本, 文本型, , lpWindowName,参见相关帮助 .DLL命令 GetClassName, 整数型, "user32.dll", "GetClassNameA", 公开, 为指定的窗口取得类名 以字节数表示的类名长度;排除最后的空中止字符。零表示出错。会设置GetLastError .参数 句柄, 整数型, , 欲获得类名的那个窗口的句柄 .参数 文本, 文本型, , 随同类名载入的缓冲区。预先至少必须分配nMaxCount+1个字符 .参数 文本长度, 整数型, , 由lpClassName提供的缓冲区长度; .DLL命令 GetCurrentProcess, 整数型, "kernel32.dll", "GetCurrentProcess", 公开 .DLL命令 GetCurrentProcessId, 整数型, "kernel32.dll", "GetCurrentProcessId", 公开 .DLL命令 GetExitCodeThread, 整数型, , "GetExitCodeThread", 公开, 取线程返回值 .参数 hThread, 整数型 .参数 lpExitCode, 整数型, 传址 .DLL命令 GetModuleHandleA, 整数型, "kernel32.dll", "GetModuleHandleA", 公开, , 获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError .参数 lpModuleName, 文本型, , lpModuleName,指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD .DLL命令 GetProcAddress, 整数型, "kernel32.dll", "GetProcAddress", 公开, , .参数 hModule, 整数型, , hModule .参数 lpProcName, 文本型, , lpProcName .DLL命令 GetThreadContext, 逻辑型, "kernel32", "GetThreadContext", 公开 .参数 hThreadId, 整数型 .参数 线程环境, context_ .DLL命令 GetThreadContext1, 逻辑型, "kernel32", "GetThreadContext", 公开 .参数 线程句柄, 整数型 .参数 寄存器, 寄存器 .DLL命令 GetWindow, 整数型, "user32", "GetWindow", 公开, 获得一个窗口的句柄,该窗口与某源窗口有特定的关系 由wCmd决定的一个窗口的句柄。如没有找到相符窗口,或者遇到错误,则返回零值。会设置GetLastError .参数 源窗口, 整数型, , 源窗口 .参数 关系, 整数型, , 指定结果窗口与源窗口的关系,它们建立在下述常数基础上:;GW_CHILD:寻找源窗口的第一个子窗口;GW_HWNDFIRST:为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口;GW_HWNDLAST:为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口;GW_HWNDNEXT:为源窗口寻找下一个兄弟窗口;GW_HWNDPREV:为源窗口寻找前一个兄弟窗口;GW_OWNER:寻找窗口的所有者; .DLL命令 GetWindowText, 整数型, "user32.dll", "GetWindowTextA", 公开, 取得一个窗体的标题(caption)文字,或者一个控件的内容(在vb里使用:使用vb窗体或控件的caption或text属性) 复制到lpString的字串长度;不包括空中止字符。会设置GetLastError .参数 句柄, 整数型, , 欲获取文字的那个窗口的句柄 .参数 文本, 文本型, , 预定义的一个缓冲区,至少有cch+1个字符大小;随同窗口文字载入 .参数 文本长度, 整数型, , lp缓冲区的长度; .DLL命令 GetWindowTextLength, 整数型, "user32", "GetWindowTextLengthA", 公开, 调查窗口标题文字或控件内容的长短(在vb里使用:直接使用vb窗体或控件的caption或text属性) 字串长度,不包括空中止字符 .参数 hwnd, 整数型, , 想调查文字长度的窗口的句柄; .DLL命令 GetWindowThreadProcessId, 整数型, "user32.dll", "GetWindowThreadProcessId", 公开, GetWindowThreadProcessId,获取与指定窗口关联在一起的一个线程和进程标识符 .参数 窗口句柄, 整数型, , hwnd,指定窗口句柄 .参数 进程标识符, 整数型, 传址, lpdwProcessId,指定一个变量,用于装载拥有那个窗口的一个进程的标识符 .DLL命令 KillTimer, 整数型, "user32.dll", "KillTimer", 公开 .参数 窗口句柄, 整数型, , hwnd .参数 事件标识符, 整数型, , nIDEvent .DLL命令 LoadLibraryA, 整数型, "kernel32.dll", "LoadLibraryA", 公开, , 载入指定的动态链接库,并将它映射到当前进程使用的地址空间 .参数 动态链接库名称, 文本型, , lpLibFileName,指定要载入的动态链接库的名称 .DLL命令 LookupPrivilegeValueA, 逻辑型, "advapi32.dll", "LookupPrivilegeValueA", 公开 .参数 lpSystemName, 文本型 .参数 lpName, 文本型 .参数 lpLuid, LuID, 传址 .DLL命令 Module32First, 整数型, "kernel32.dll", "Module32First", 公开 .参数 hSnapshot, 整数型, , hSnapshot .参数 模块进程结构, MODULEENTRY32, 传址 .DLL命令 Module32Next, 整数型, "kernel32.dll", "Module32Next", 公开 .参数 hSnapshot, 整数型, , hSnapshot .参数 模块进程结构, MODULEENTRY32, 传址 .DLL命令 OpenProcess, 整数型, "kernel32.dll", "OpenProcess", 公开, kernel32.dll .参数 访问级别, 整数型, , 2035711完全访问 .参数 子进程继承, 逻辑型, , 0为子进程继承 .参数 进程ID, 整数型, , 要打开的进程标识 .DLL命令 OpenProcessToken, 整数型, "advapi32.dll", "OpenProcessToken", 公开 .参数 ProcessHandle, 整数型 .参数 DesiredAccess, 整数型 .参数 TokenHandle, 整数型, 传址 .DLL命令 OpenThread, 整数型, "kernel32.dll", "OpenThread", 公开 .参数 dwDesiredAccess, 整数型 .参数 bInheritHandle, 逻辑型 .参数 dwThreadId, 整数型 .DLL命令 Process32First, 整数型, "kernel32.dll", "Process32First", 公开, 取进程快照第一个进程信息返回内存指针 .参数 快照句柄, 整数型 .参数 进程信息, 进程信息 .DLL命令 Process32Next, 整数型, "kernel32.dll", "Process32Next", 公开 .参数 快照句柄, 整数型 .参数 进程信息, 进程信息 .DLL命令 ReadProcessMemory, 整数型, "kernel32.dll", "ReadProcessMemory", 公开, 在进程中读内存数据 地址1048576 .参数 进程句柄, 整数型, , 欲读取的进程句柄(可用OpenProcess函数得到) .参数 地址, 整数型, , 读取的起始地址 .参数 返回内容, 字节集, 传址, 返回的数据,其类型可设为整数、文本和字节集 .参数 长度, 整数型, , 一次读取的字节长度(读取的字节数4) .参数 实际长度, 整数型, 传址, 实际读取的字节长度 .DLL命令 RegOpenKeyExA, 整数型, , "RegOpenKeyExA", 公开, 打开注册表项 .参数 hKey, 整数型 .参数 lpSubKey, 文本型 .参数 ulOptions, 整数型 .参数 samDesired, 整数型 .参数 phkResult, 整数型, 传址 .DLL命令 ResumeThread, 整数型, "kernel32.dll", "ResumeThread", 公开, 开始暂停的线程 .参数 线程句柄, 整数型 .DLL命令 RtlMoveMemory, 整数型, , "RtlMoveMemory", 公开 .参数 lpvDest, 整数型, 传址 .参数 lpvSource, 整数型 .参数 cbCopy, 整数型 .DLL命令 SetThreadContext, 逻辑型, "kernel32", "SetThreadContext", 公开 .参数 hThreadId, 整数型 .参数 线程环境, context_ .DLL命令 SetThreadContext1, 逻辑型, "kernel32", "SetThreadContext", 公开 .参数 线程句柄, 整数型 .参数 寄存器, 寄存器 .DLL命令 SetTimer, 整数型, "user32.dll", "SetTimer", 公开 .参数 窗口句柄, 整数型, , hwnd .参数 事件标识符, 整数型, , nIDEvent .参数 时钟周期, 整数型, , uElapse .参数 回调函数地址, 整数型, , lpTimerFunc .DLL命令 SetWindowsHookEx, 整数型, "user32.dll", "SetWindowsHookExA", 公开 .参数 钩子类型, 整数型 .参数 处理函数入口, 整数型 .参数 函数所在模块, 整数型 .参数 目标线程ID, 整数型 .DLL命令 SHFileOperation, 整数型, "Shell32.dll", "SHFileOperationA", 公开 .参数 文件参数, SHFILEOPSTRUCT .DLL命令 SuspendThread, 整数型, , "SuspendThread", 公开 .参数 线程句柄, 整数型 .DLL命令 TerminateProcess, 整数型, "kernel32.dll", "TerminateProcess", 公开, 成功返回非零 .参数 进程句柄, 整数型 .参数 退出代码, 整数型, , 传入0 .DLL命令 TerminateThread, 逻辑型, "kernel32", "TerminateThread", 公开 .参数 hThread, 整数型 .参数 dwExitCode, 整数型 .DLL命令 Thread32First, 逻辑型, "kernel32.dll", "Thread32First", 公开 .参数 hSnapshot, 整数型 .参数 lpte, THREADENTRY32, 传址 .DLL命令 Thread32Next, 逻辑型, "kernel32.dll", "Thread32Next", 公开 .参数 hSnapshot, 整数型 .参数 lpte, THREADENTRY32, 传址 .DLL命令 VirtualAllocEx, 整数型, "kernel32.dll", "VirtualAllocEx", 公开, 成功返回分配内存的首地址,失败返回0 .参数 hProcess, 整数型, , 申请内存所在的进程句柄 .参数 lpAddress, 整数型, , 填0 .参数 dwSize, 整数型, , 欲分配的内存大小 .参数 flAllocationType, 整数型, , 填4096,MEM_COMMI .参数 flProtect, 整数型, , 填64,可读可写,可执行 .DLL命令 VirtualFreeEx, 整数型, "kernel32.dll", "VirtualFreeEx", 公开 .参数 hProcess, 整数型 .参数 lpAddress, 整数型 .参数 dwSize, 整数型, , 填0 .参数 dwFreeType, 整数型, , 填32768 .DLL命令 VirtualProtect, 整数型, "kernel32.dll", "VirtualProtect", 公开, 成功返回非0,失败返回0 .参数 起始地址, 整数型, , lpAddress .参数 长度, 整数型, , dwSize .参数 新保护权限, 整数型, , 可读写权限(PAGE_READWRITE)=4;PAGE_EXECUTE_READWRITE=64 .参数 旧保护权限, 整数型, 传址, 保存旧属性的结构变量地址 .DLL命令 VirtualProtectEx, 整数型, "kernel32.dll", "VirtualProtectEx", 公开, 成功返回非0,失败返回0 .参数 hprocess, 整数型, , 要修改内存的进程句柄 .参数 起始地址, 整数型, , lpAddress .参数 长度, 整数型, , dwSize .参数 新保护权限, 整数型, , 可读写权限(PAGE_READWRITE)=4 .参数 旧保护权限, 整数型, 传址, 保存旧属性的结构变量地址 .DLL命令 VirtualQueryEx, 整数型, "kernel32.dll", "VirtualQueryEx", 公开 .参数 hProcess, 整数型 .参数 lpAddress, 整数型 .参数 info, MEMORY_BASIC_INFORMATION, 传址 .参数 dwLength, 整数型 .DLL命令 VMProtectBegin, , "VMProtectSDK32.lib", "_VMProtectBegin@4", 公开, 功能:设置开始标记 .参数 MarkerName, 文本型, 传址, 标记名 .DLL命令 VMProtectBeginMutation, , "VMProtectSDK32.lib", "_VMProtectBeginMutation@4", 公开, 功能:设置[变异]标记 .参数 MarkerName, 文本型, 传址, 标记名 .DLL命令 VMProtectBeginUltra, , "VMProtectSDK32.lib", "_VMProtectBeginUltra@4", 公开, 功能:设置[虚拟+变异]标记 .参数 MarkerName, 文本型, 传址 .DLL命令 VMProtectBeginUltraLockByKey, , "VMProtectSDK32.lib", "_VMProtectBeginUltraLockByKey@4", 公开 .参数 MarkerName, 文本型, 传址, 标记名 .DLL命令 VMProtectBeginVirtualization, , "VMProtectSDK32.lib", "_VMProtectBeginVirtualization@4", 公开, 功能:设置[虚拟]标记 .参数 MarkerName, 文本型, 传址, 标记名 .DLL命令 VMProtectBeginVirtualizationLockByKey, , "VMProtectSDK32.lib", "_VMProtectBeginVirtualizationLockByKey@4", 公开 .参数 MarkerName, 文本型, 传址 .DLL命令 VMProtectDecryptStringA, 整数型, "VMProtectSDK32.lib", "_VMProtectDecryptStringA@4", 公开, 功能:加密Ansi字符串常量,返回加密后的字符串指针 .参数 char, 文本型, 传址, 提供Ansi字符串常量 .DLL命令 VMProtectDecryptStringW, 整数型, "VMProtectSDK32.lib", "_VMProtectDecryptStringW@4", 公开, 功能:加Unicode字符串,返回加密后的字符串指针 .参数 wchar_t, 文本型, 传址, 提供Unicode字符串常量 .DLL命令 VMProtectEnd, , "VMProtectSDK32.lib", "_VMProtectEnd@0", 公开, 功能:设置与虚拟/变异等功能配对的结束标记 .DLL命令 VMProtectIsDebuggerPresent, 逻辑型, "VMProtectSDK32.lib", "_VMProtectIsDebuggerPresent@4", 公开, 功能:检测调试器是否存在 .参数 CheckKernelMode, 逻辑型, , 是否检测KernelMode调试器.为假,则检测user-mode调试器,例如OllyDBG, WinDBG等..为真,则同时检测user-mode和KernelMode(包括SoftICE, Syser等...)调试器, .DLL命令 VMProtectIsValidImageCRC, 逻辑型, "VMProtectSDK32.lib", "_VMProtectIsValidImageCRC@0", 公开, 功能:检测程序内存没有没有被改变 .DLL命令 VMProtectIsVirtualMachinePresent, 逻辑型, "VMProtectSDK32.lib", "_VMProtectIsVirtualMachinePresent@0", 公开, 功能:检测程序是否运行在虚拟机,比如VMware, Virtual PC, VirtualBox, Sandboxie等... .DLL命令 WaitForSingleObject, 整数型, "kernel32.dll", "WaitForSingleObject", 公开 .参数 hHandle, 整数型 .参数 dwMilliseconds, 整数型, , 填-1 .DLL命令 WriteProcessMemory, 逻辑型, "kernel32.dll", "WriteProcessMemory", 公开 .参数 进程句柄, 整数型 .参数 开始写入进址, 整数型, , 内存地址 .参数 写入数值数据, 字节集, 传址, 数据指针 .参数 写入长度, 整数型, , 长度 .参数 实际写入长度, 整数型, , 实际写出长度0 .DLL命令 取文本指针, 整数型, "kernel32", "lstrcpyn", 公开, 感谢海洋老师的例程 .参数 变量, , 传址, 一定要传址 .参数 变量, , 传址, 一定要传址.重复一次,骗骗Windows:) .参数 保留, 整数型, , 0 .图片 SE_PROTECT_END, 公开, 置入代码 (#SE_PROTECT_END)'结束标记 .图片 SE_PROTECT_START, 公开, 置入代码 (#SE_PROTECT_START)'默认保护 .图片 SE_PROTECT_START_MUTATION, 公开, 置入代码 (#SE_PROTECT_START_MUTATION)'乱序变形 .图片 SE_PROTECT_START_ULTRA, 公开, 置入代码 (#SE_PROTECT_START_ULTRA)'乱序+虚拟 .图片 SE_PROTECT_START_VIRTUALIZATION, 公开, 置入代码 (#SE_PROTECT_START_VIRTUALIZATION)'虚拟 .图片 SE_UNPROTECT_END, 公开, 置入代码 (#SE_UNPROTECT_END)'屏蔽特定代码的乱序和混淆 .图片 SE_UNPROTECT_START, 公开, 置入代码 (#SE_UNPROTECT_START)'屏蔽特定代码的乱序和混淆 .图片 VMProtect_Begin, 公开, 置入代码 (#VMProtect_Begin) 'VMP保护开始标志 .图片 VMProtect_End, 公开, 置入代码 (#VMProtect_End) 'VMP保护结束标志

立即下载
pdf文件
基于AT89S52 单片的频率计

第1 页共27 页 1 概述 频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测 量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称 闸门时间为1 秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频 率值就越准确,但闸门时间越长则没测一次频率的间隔就越长。闸门时间越 短,测的频率值刷新就越快,但测得的频率精度就受影响本文。数字频率计是 用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性 变化的信号。因此,数字频率计是一种应用很广泛的仪器 电子系统非常广泛的应用领域内,到处可见到处理离散信息的数字电路。 数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更多的功 能,从而提高系统可靠性和速度。 集成电路的类型很多,从大的方面可以分为模拟电路和数字集成电路2 大 类。数字集成电路广泛用于计算机、控制与测量系统,以及其它电子设备中。 一般说来,数字系统中运行的电信号,其大小往往并不改变,但在实践分布上 却有着严格的要求,这是数字电路的一个特点。 2 系统的总体设计: 2.1 原理设计 本频率计的设计以AT89S52 单片机为核心,利用它内部的定时/计数器完成 待测信号周期/频率的测量。单片机AT89S52 内部具有2 个16 位定时/计数器, 定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出中断要求的功 能。在构成为定时器时,每个机器周期加1 (使用12MHz 时钟时,每1us 加1),这 样以机器周期为基准可以用来测量时间间隔。在构成为计数器时,在相应的外部 引脚发生从1 到0 的跳变时计数器加1,这样在计数闸门的控制下可以用来测 量待测信号的频率。外部输入每个机器周期被采样一次,这样检测一次从1 到0 的跳变至少需要2 个机器周期(24 个振荡周期) ,所以最大计数速率为时钟频率 的1/24 (使用12MHz 时钟时,最大计数速率为500 KHz) 。定时/计数器的工作由 相应的运行控制位TR 控制,当TR 置1 ,定时/计数器开始计数;当TR 清0 ,停止计 数。设计综合考虑了频率测量精度和测量反应时间的要求。例如当要求频率测 量结果为4 位有效数字,这时如果待测信号的频率为1Hz ,则计数闸门宽度必须 大于1000s。为了兼顾频率测量精度和测量反应时间的要求,把测量工作分为两 种方法。当待测信号的频率大于等于2Hz 时,定时/ 计数器构成为计数器,以机 器周期为基准,由软件产生计数闸门,这时要满足频率测量结果为4 位有效数字, 则计数闸门宽度大于1s 即可。当待测信号的频率小于2Hz 时,定时/ 计数器构 成为定时器,由频率计的予处理电路把待测信号变成方波,方波宽度等于待测信号 的周期。用方波作计数闸门,完全满足测量精度的要求。 频率计的量程自动切换在使用计数方法实现频率测量时,这时外部的待测信 号为定时/ 计数器的计数源,利用定时器实现计数闸门。频率计的工作过程为: 首先定时/计数器T0 的计数寄存器设置一定的值,运行控制位TR0 置1,启动定 时/ 计数器0;利用定时器0 来控制1S 的定时,同时定时/计数器T1 对外部的待 第2 页共27 页 测信号进行计数,定时结束时TR1 清0 ,停止计数;最后从计数寄存器读出测量数 据,在完成数据处理后,由显示电路显示测量结果。在使用定时方法实现频率测 量时,这时外部的待测信号通过频率计的予处理电路变成宽度等于待测信号周期 的方波,该方波同样加至定时/ 计数器1 的输入脚。这时频率计的工作过程为: 首先定时/ 计数器1 的计数寄存器清0 ,然后检测到方波的第二个下降沿是否加 至定时/ 计数器的输入脚;当判定下降沿加至定时/计数器的输入脚,运行控制位 TR0 置1 ,启动定时/计数器T0 对单片机的机器周期的计数,同时检测方波的第 三个下降沿;当判定检测到第三个下降沿时TR0 清0 ,停止计数,然后从计数 寄存器T0 读出测量数据,在完成数据处理后,由显示电路显示测量结果。测量 结果的显示格式采用科学计数法,即有效数字乘以10 为底的幂。这里设计的频 率计用4 位数码管显示测量结果。 定时方法实现频率测量。定时方法测量的是待测信号的周期,这种方法只设 一种量程,测量结果通过浮点数运算模块将信号周期转换成对应的频率值,再将 结果送去显示。这样无论采用何种方式,只要完成一次测量即可,频率计自动开 始下一个测量循环,因此该频率计具有连续测量的功能,同时实现量程的自动转 换。 数字频率计的硬件框图如图2.1 所示。 由此可以看出该频率计主要由八部分组成,分别是: (1)待测信号的放大整形电路 因为数字频率计的测量范围为峰值电压在一定电压范围内的频率发生频率 发生周期性变化的信号,因待测信号的不规则,不能直接送入FPGA 芯片中处 理,所以应该首先对待测信号进行放大、降压、与整形等一系列处理。 (2)分频电路 将处理过的信号4 分频,这样可以将频率计的测量范围扩大4 倍。 (3)逻辑控制 控制是利用计数还是即时检测待测信号的频率。 (4)脉冲计数/定时 根据逻辑控制对待测信号计数或定时。将计数或定时得到的数据直接输入 数据处理部分。 第3 页共27 页 (5)数据处理 根据脉冲计数部分送过来的数据产生一个控制信号,送入脉冲定时部分, 如果用计数就可以得到比较精确的频率,就将这个频率值直接送入显示译码部 分。 (6)显示译码 将测量值转换成七段译码数据,送入显示电路。 (7)显示电路 通过4 个LED 数码管将测得的频率值显示给用户。 (8)系统软件 包括测量初始化模块、显示模块、信号频率测量模块、量程自动转换模 块、信号周期测量模块、定时器中断服务模块、浮点数格式化模块、浮点数算 术运算模块、浮点数到BCD 码转换模块。 由于数据处理、脉冲计数/定时、逻辑控制和显示译码都是在单片机里完成 的,所以我们可以把系统分为以下几个模块:数据处理电路、显示电路、待测信 号产生电路、待测信号整形放大电路,电源电路。 2.2 主要开发工具和平台 2.2.1 原理图和印刷电路板图设计开发工具:PROTEL DXP Protel DXP 是第一套完整的板卡级设计系统,真正实现在单个应用程序中的 集成。设计从一开始的目的就是为了支持整个设计过程,Protel DXP 让你可以 选择最适当的设计途径来按你想要的方式工作。Protel DXP PCB 线路图设计系 图2.1 数字频率计的硬件框图 显示译码 待测信号的放大整形电路 数据处理逻辑控制 脉冲计数/定时 显示电路 待测波输入 分频电路 第4 页共27 页 统完全利用了Windows XP 和Windows 2000 平台的优势,具有改进的稳定性、 增强的图形功能和超强的用户界面。 Protel DXP 是一个单个的应用程序,能够提供从概念到完成板卡设计项目的 所有功能要求,其集成程度在PCB 设计行业中前所未见。Protel DXP 采用一种 新的方法来进行板卡设计,使你能够享受极大的自由,从而能够使你在设计的 不同阶段随意转换,按你正常的设计流量进行工作。 Protel DXP 拥有:分级线路图设计、Spice 3f5 混合电路模拟、完全支持线路 图基础上的FPGA 设计、设计前和设计后的信号线传输效应分析、规则驱动的 板卡设计和编辑、自动布线和完整CAM 输出能力等。 在嵌入式设计部分,增强了JTAG 器件的实时显示功能,增强型基于FPGA 的逻辑分析仪,可以支持32 位或64 位的信号输入。除了现有的多种处理器内核 外,还增强了对更多的32 位微处理器的支持,可以使嵌入式软件设计在软处理 器, FPGA 内部嵌入的硬处理器, 分立处理器之间无缝的迁移。使用了 Wishbone 开放总线连接器允许在FPGA 上实现的逻辑模块可以透明的连接到各 种处理器上。引入了以FPGA 为目标的虚拟仪器,当其与LiveDesign-enabled 硬 件平台NanoBoard 结合时,用户可以快速、交互地实现和调试基于FPGA 的设 计,可以更换各种FPGA 子板,支持更多的FPGA 器件。 2.2.2 单片机程序设计开发工具:KEIL C51 keil c51 是美国Keil Software 公司出品的51 系列兼容单片机C 语言软件开发 系统,和汇编相比,C 在功能上、结构性、可读性、可维护性上有明显的优 势,因而易学易用。 Keil c51 软件提供丰富的库函数和功能强大的集成开发调试工具,全 Windows 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体 会到keil c51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑, 容易理解。在开发大型软件时更能体现高级语言的优势。 Keil C51 可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人 员可用IDE 本身或其它编辑器编辑C 或汇编源文件,然后分别有C51 及A51 编 辑器编译连接生成单片机可执行的二进制文件(.HEX),然后通过单片机的烧 写软件将HEX 文件烧入单片机内。3 2.2.3 单片机仿真软件:PROTEUS Proteus 是目前最好的模拟单片机外围器件的工具。可以仿真51 系列、 AVR,PIC 等常用的MCU 及其外围电路(如LCD,RAM,ROM,键盘,马 达,LED,AD/DA,部分SPI 器件,部分IIC 器件,...) 其实proteus 与 multisim 比较类似,只不过它可以仿真MCU!唯一的缺点,软件仿真精度有 限,而且不可能所有的器件都找得到相应的仿真模型。 使用keil c51 v7.50 + proteus 6.7 可以像使用仿真器一样调试程序,可以完全 仿真单步调试,进入中断等各种调试方案。 Proteus 与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU 的工 作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。 因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储 器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。 对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛 第5 页共27 页 盾和现象。 3 系统详细设计: 3.1 硬件设计 3.1.1 数据处理电路 ( 1 ) 中央处理模块的功能: 直接采集待测信号,将分两种情况计算待测信号的频率: 如果频率比较高,在一秒内对待测信号就行计数。 如果频率比较低,在待测信号的一个周期内对单片机的工作频率进行计数。 将得到的频率值通过显示译码后直接送入显示电路,显示给用户 ( 2 ) 电路需要解决的问题 单片机最小系统板电路的组建,单片机程序下载接口和外围电路的接口。 单片机最小系统板的组建: ①单片机的起振电路作用与选择: 单片机的起振电路是有晶振和两个小电容组成的。 晶振的作用:它结合单片机内部的电路,产生单片机所必须的时钟频率,单 片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越 高,那单片机的运行速度也就越快。MCS-51 一般晶振的选择范围为1~ 24MHz,但是单片机对时间的要求比较高,能够精确的定时一秒,所以也是为了 方便计算我们选择12MHz 的晶振。 晶振两边的电容:晶振的标称值在测试时有一个“负载电容”的条件,在工 作时满足这个条件,振荡频率才与标称值一致。一般来讲,有低负载电容(串 联谐振晶体),高负载电容(并联谐振晶体)之分。在电路上的特征为:晶振 串一只电容跨接在IC 两只脚上的,则为串联谐振型;一只脚接IC,一只脚接地 的,则为并联型。如确实没有原型号,需要代用的可采取串联谐振型电路上的 电容再并一个电容,并联谐振电路上串一只电容的措施。单片机晶振旁的2 个 电容是晶体的匹配电容,只有在外部所接电容为匹配电容的情况下,振荡频率 才能保证在标称频率附近的误差范围内。 最好按照所提供的数据来,如果没有,一般是30pF 左右。太小了不容易起 振。这里我们选择30pF 的瓷片电容。我们选择并联型电路如图3.1 所示。 ②单片机的复位电路: 2 1 Y1 12Mz C2 30pF C1 30pF XTAL1 XTAL2 图3.1 第6 页共27 页 影响单片机系统运行稳定性的因素可大体分为外因和内因两部分: 外因:即射频干扰,它是以空间电磁场的形式传递在机器内部的导体(引线 或零件引脚)感生出相应的干扰,可通过电磁屏蔽和合理的布线/器件布局衰减 该类干扰;电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦 合或直接传导,可通过电源滤波、隔离等措施来衰减该类干扰。 内因:振荡源的稳定性,主要由起振时间频率稳定度和占空比稳定度决定 起振时间可由电路参数整定稳定度受振荡器类型温度和电压等参数影响复位电 路的可靠性。 复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定 后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信 号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。 为了方便我们选择RC 复位电路可以实现上述基本功能如图3.2 所示。 但是该电路解决不了电源毛刺(A 点)和电源缓慢下降(电池电压不足)等 问题而且调整RC 常数改变延时会令驱动能力变差。增加Ch 可避免高频谐波 对电路的干扰。 复位电路增加了二极管,在电源电压瞬间下降时使电容迅速放电,一定宽 度的电源毛刺也可令系统可靠复位。 在选择元器件大小时,正脉冲有效宽度 2 个机器周期就可以有效的复位, 一般选择C3 为0.1uF 的独石电容,R1 为1K 的电阻,正脉冲有效宽度为: ln10*R1*C3=230>2,即可以该电路可以产生有效复位。 ( 3 ) 程序下载线接口: AT89S52 自带有isp 功能,ISP 的全名为In System Programming,即在线编 程通俗的讲就是编MCU 从系统目标系统中移出在结合系统中一系列内部的硬 件资源可实的远程编程。 ISP 功能的优点: ①在系统中编程不需要移出微控制器。 ②不需并行编程器仅需用P15,P16 和P17,这三个IO 仅仅是下载程序的时 候使用,并不影响程序的使用。 ③结合上位机软件免费就可实现PC 对其编程硬件电路连接简单如图3.3 所 示。 104 C3 1K R1 S1 VCC D1 1N4007 RESET Ch 0.1uF 图3.2 复位电路 第7 页共27 页 系统复位时,单片机检查状态字节中的内容。如果状态字为0,则转去0000H 地址开始执行程序这是用户程序的正常起始地址。如果状态字不0, 则将引导 向量的值作为程序计数器的高8 位,低8 位固定为00H,若引导向量为FCH, 则程序计数器内容为FC00H 即程序转到FC00H 地址开始执行而ISP 服务程序 就是从,FC00H 处开始的那么也就是进入了ISP 状态了,接下来就可以用PC 机 的ISP 软件对单片机进行编程了。 ( 4 ) 去耦电容 好的高频去耦电容可以去除高到1GHZ 的高频成份。陶瓷片电容或多层陶瓷 电容的高频特性较好。 设计印刷线路板时,每个集成电路的电源,地之间都要加一个去耦电容。 去耦电容有两个作用:一方面是本集成电路的蓄能电容,提供和吸收该集成电 路开门关门瞬间的充放电能;另一方面旁路掉该器件的高频噪声。数字电路中 典型的去耦电容为0.1uf 的去耦电容有5nH 分布电感,它的并行共振频率大约在 7MHz 左右,也就是说对于10MHz 以下的噪声有较好的去耦作用,对40MHz 以 上的噪声几乎不起作用。 1uf,10uf 电容,并行共振频率在20MHz 以上,去除高频率噪声的效果要好 一些。在电源进入印刷板的地方和一个1uf 或10uf 的去高频电容往往是有利 的,即使是用电池供电的系统也需要这种电容。 每10 片左右的集成电路要加一片充放电电容,或称为蓄放电容,电容大小 可选10uf。最好不用电解电容,电解电容是两层溥膜卷起来的,这种卷起来的 结构在高频时表现为电感,最好使用胆电容或聚碳酸酝电容。 去耦电容值的选取并不严格,可按C=1/f 计算;即10MHz 取0.1uf,对微控 制器构成的系统,取0.1~0.01uf 之间都可以。 从电路来说,总是存在驱动的源和被驱动的负载。如果负载电容比较大, 驱动电路要把电容充电、放电,才能完成信号的跳变,在上升沿比较陡峭的时 候,电流比较大,这样驱动的电流就会吸收很大的电源电流,由于电路中的电 感,电阻(特别是芯片管脚上的电感,会产生反弹),这种电流相对于正常情 况来说实际上就是一种噪声,会影响前级的正常工作。这就是耦合。 去藕电容就是起到一个电池的作用,满足驱动电路电流的变化,避免相互 间的耦合干扰。 旁路电容实际也是去藕合的,只是旁路电容一般是指高频旁路,也就是给 高频的开关噪声提高一条低阻抗泄防途径。高频旁路电容一般比较小,根据谐 振频率一般是0.1u,0.01u 等,而去耦合电容一般比较大,是10u 或者更大,依 据电路中分布参数,以及驱动电流的变化大小来确定。 去耦和旁路都可以看作滤波。正如ppxp 所说,去耦电容相当于电池,避免 1 2 3 4 5 6 7 8 9 10 P6 P17 P16 RESET P15 GND GND VCC 图3.3 程序下载线接口 第8 页共27 页 由于电流的突变而使电压下降,相当于滤纹波。具体容值可以根据电流的大 小、期望的纹波大小、作用时间的大小来计算。去耦电容一般都很大,对更高 频率的噪声,基本无效。旁路电容就是针对高频来的,也就是利用了电容的频 率阻抗特性。电容一般都可以看成一个RLC 串联模型。在某个频率,会发生谐 振,此时电容的阻抗就等于其ESR。如果看电容的频率阻抗曲线图,就会发现 一般都是一个V 形的曲线。具体曲线与电容的介质有关,所以选择旁路电容还 要考虑电容的介质,一个比较保险的方法就是多并几个电容。去耦电容在集成 电路电源和地之间的有两个作用:一方面是本集成电路的蓄能电容,另一方面 旁路掉该器件的高频噪声。数字电路中典型的去耦电容值是0.1μF。这个电容的 分布电感的典型值是5μH。0.1μF 的去耦电容有5μH 的分布电感,它的并行共振 频率大约在7MHz 左右,也就是说,对于10MHz 以下的噪声有较好的去耦效 果,对40MHz 以上的噪声几乎不起作用。1μF、10μF 的电容,并行共振频率在 20MHz 以上,去除高频噪声的效果要好一些。每10 片左右集成电路要加一片充 放电电容,或1 个蓄能电容,可选10μF 左右。最好不用电解电容,电解电容是 两层薄膜卷起来的,这种卷起来的结构在高频时表现为电感。要使用钽电容或 聚碳酸酯电容。去耦电容的选用并不严格,可按C=1/F,即10MHz 取0.1μF, 100MHz 取0.01μF,电路图如图3.4 所示。 ⑸单片机与外界的接口 显示电路的段选使用P0 口,P0 口是属于TTL 电路,不能靠输出控制P0 口 的高低电平,需要上拉电阻才能实现。 由于单片机不能直接驱动4 个数码管的显示,需要数码管的驱动电路,驱动 电路采用NPN 型的三极管组成,即上拉电阻又有第二个作用,驱动晶体管,晶 体管又分为PNP 和NPN 管两种情况:对于NPN,毫无疑问NPN 管是高电平有 效的,因此上拉电阻的阻值用2K——20K 之间的,具体的大小还要看晶体管的 集电极接的是什么负载,对于数码管负载,由于发管电流很小,因此上拉电阻 的阻值可以用20k 的,但是对于管子的集电极为继电器负载时,由于集电极电 流大,因此上拉电阻的阻值最好不要大于4.7K,有时候甚至用2K 的。对于PNP 管,毫无疑问PNP 管是低电平有效的,因此上拉电阻的阻值用100K 以上的就行 了,且管子的基极必须串接一个1~10K 的电阻,阻值的大小要看管子集电极的 负载是什么,对于数码管负载,由于发光电流很小,因此基极串接的电阻的阻 值可以用20k 的,但是对于管子的集电极为继电器负载时,由于集电极电流 大,因此基极电阻的阻值最好不要大于4.7K。与外界的信号交换接口,电路图 如图3.5。 104 CK11 104 CK12 104 CK13 104 CK14 VCC 图3.4 去耦电容 第9 页共27 页 数码管的段选通过P00~P07 口来控制的。 数码管的位选通过P20~P23 口来控制的。 计算待测信号的频率通过计数器1 来完成的所有待测信号解答计数器的T1 口上,即P3.5。 ⑹单片机的选型: AT89SC52 和AT89SS52 最主要的区别在于下载电压,AT89SC52 单片机下载 电压时最小为12V,而AT89S52 仅在5V 电压下就可以下载程序了,而且AT89S52 支持ISP,即在线编程。为了使用方便,在本系统中我们使用AT89S52 单片机。 ①AT89S52 主要性能 与MCS-51 单片机产品兼容。 8K 字节在系统可编程Flash 存储器。 l 1000 次擦写周期。 全静态操作:0Hz~33Hz。 VCC 1 2 YK1 30pF CK1 30pF CK2 VCC P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P15 P16 P17 123456789 PK1 P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P00 P01 P02 P03 P04 P05 P06 P07 P1.0/T2 1 P1.1/T2EX 2 P1.2/ECI 3 P1.3/CEX0 4 P1.4/CEX1 5 P1.5/CEX2 6 P1.6/CEX3 7 P1.7/CEX4 8 9 RST 10 P3.0/RxD 11 P3.1/TxD 12 P3.2/INT0 13 P3.3/INT1 14 P3.4/T0 15 P3.5/T1 16 P3.6/WR 17 P3.7/RD 18 XTAL2 19 XTAL1 20 VSS P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 P2.7/A15 28 29 PSEN 30 ALE/PROG 31 EA/VPP P0.7/AD7 32 P0.6/AD6 33 P0.5/AD5 34 P0.4/AD4 35 P0.3/AD3 36 P0.2/AD2 37 P0.1/AD1 38 P0.0/AD0 39 VCC 40 UK1 AT89S52 图3.5 单片机与外界接口 第10 页共27 页 三级加密程序存储器。 32 个可编程I/O 口线。 三个16 位定时器/计数器。 八个中断源。 全双工UART 串行通道。 低功耗空闲和掉电模式。 掉电后中断可唤醒。 看门狗定时器。 双数据指针。 掉电标识符。 ②功能特性描述: AT89S52 是一种低功耗、高性能CMOS8 位微控制器,具有8K 在系统可编 程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上Flash 允许程序存储器在系统可编程,亦 适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash, 使得AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52 具有以下标准功能: 8k 字节Flash,256 字节RAM, 32 位I/O 口 线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6 向量2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持2 种软件可选择节电模式。空闲模式下,CPU 停止工 作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下, RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬 件复位为止R8 位微控制器8K 字节在系统可编程Flash P0 口:P0 口是一个8 位漏极开路的双向I/O 口。作为输出口,每位能驱动8 个 TTL 逻辑电平。对P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和 数据存储器时,P0 口也被作为低8 位地址/数据复用。在这种模式下,P0 具有内 部上拉电阻。在flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出 指令字节。程序校验时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器 能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此 时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的 原因,将输出电流(IIL)。此外,P1.0 和P1.2 分别作定时器/计数器2 的外部计 数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所 示。在flash 编程和校验时,P1 口接收低8 位地址字节。引脚号第二功能P1.0 T2 (定时器/计数器T2 的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器 T2 的捕捉/ 重载触发信号和方向控制) P1.5 MOSI ( 在系统编程用) P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器 能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此 时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的 原因,将输出电流(IIL)。在访问外部程序存储器或用16 位地址读取外部数据 存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用 第11 页共27 页 中,P2 口使用很强的内部上拉发送1。在使用8 位地址(如MOVX @RI)访问 外部数据存储器时,P2 口输出P2 锁存器的内容。在flash 编程和校验时,P2 口 也接收高8 位地址字节和一些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱 动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可 以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原 因,将输出电流(IIL)。P3 口亦作为AT89S52 特殊功能(第二功能)使用,如 下表所示。在flash 编程和校验时,P3 口也接收一些控制信号。 引脚号第二功能P3.0 RXD(串行输入)P3.1 TXD(串行输出)P3.2 INT0(外 部中断0)P3.3 INT0(外部中断0)P3.4 T0(定时器0 外部输入)P3.5 T1(定时器1 外部输入)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器写选通)。 RST: 复位输入。晶振工作时,RST 脚持续2 个机器周期高电平将使单片机复 位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器 AUXR(地址8EH)上的DISRTO 位可以使此功能无效。DISRTO 默认状态下,复 位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储 器时,锁存低8 位地址的输出脉冲。在flash 编程时,此引脚(PROG)也用作 编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可 用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储 器时,LE 脉冲将会跳过。如果需要,通过将地址为8EH的SFR 的第0 位置“1”, ALE 操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC 指令时有 效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH 的SFR 的 第0 位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选 通信号(PSEN)是外部程序存储器选通信号。当AT89S52 从外部程序存储器执 行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器 时,PSEN 将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从 0000H 到FFFFH 的外部程序存储器读取指令,EA 必须接GND。为了执行内部 程序指令,EA 应该接VCC。在flash 编程期间,EA 也接收12 伏VPP 电压。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相 放大器的输出端。 ③特殊功能寄存器 特殊功能寄存器(SFR)的地址空间映象如表1 所示。 并不是所有的地址都被定义了。片上没有定义的地址是不能用的。读这些 地址,一般将 得到一个随机数据;写入的数据将会无效。用户不应该给这些未定义的地 址写入数据“1”。由于这些寄存器在将来可能被赋予新的功能,复位后,这些位 都为“0”。 定时器2 寄存器:寄存器T2CON 和T2MOD 包含定时器2 的控制位和状态位 (如表2 和表3 所示),寄存器对RCAP2H 和RCAP2L 是定时器2 的捕捉/自动 重载寄存器。 中断寄存器:各中断允许位在IE 寄存器中,六个中断源的两个优先级也可在IE 中设置。 3.1.2 显示电路 LCD 与LED 的区别。 第12 页共27 页 LED 仅仅是由8 个led 灯组成的数码显示器件,电路简单,操作容易。 LCD 是有点阵组成的显示器件,该器件电路和软件复杂,但是交互性好。 该系统展示给用于的数据为频率值,用LED 数码管显示即可。 LED 数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码 管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1 位、2 位、4 位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共 阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极 (COM)的数码管。共阳数码管在应用时应将公共极COM 接到+5V,当某一字段 发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平 时,相应字段就不亮。。共阴数码管是指将所有发光二极管的阴极接到一起形 成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM 接到地线 GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一 字段的阳极为低电平时,相应字段就不亮。 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示 出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态 式两类。 ① 静态显示驱动 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个 单片机的I/O 端口进行驱动,或者使用如BCD 码二-十进制译码器译码进行驱 动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O 端口多,如驱动 5 个数码管静态显示则需要5×8=40 根I/O 端口来驱动,要知道一个89S51 单片 机可用的I/O 端口才32 个呢:),实际应用时必须增加译码驱动器进行驱动, 增加了硬件电路的复杂性。 ② 动态显示驱动 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态 驱动是将所有数码管的8 个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为 每个数码管的公共极COM 增加位选通控制电路,位选通由各自独立的I/O 线控 制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那 个数码管会显示出字形,取决于单片机对位选通COM 端电路的控制,所以我们 只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数 码管就不会亮。通过分时轮流控制各个数码管的的COM 端,就使各个数码管轮 流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为 1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数 码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显 示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量 的I/O 端口,而且功耗更低。由于我们使用的FPGA 芯片的型号为EPF10K10, 有足够的IO 口分别去控制数码管的段选。这里我们采用动态显示方式。 由于FPGA 的IO 口没有足够的驱动能力去驱动数码管,所以需要数码管的 驱动电路,该驱动电路我们选择由三极管组成的电路,该电路简单,软件容易 实现。其中一个数码管的驱动电路图如图3.6 所示。 数码管为共阴极,当CS1=1 时,即三极管Q9 被饱和导通,则数码管的公共 极被间接接地,数码管被选中,数据将在该管上显示,当CS=0 时,三极管Q9 被截至,则数码管的公共极被没有接地,即使CSA,CSB,CSC,CSD,CSE, 第13 页共27 页 CSF,CSG,CSDP 被送入数据也不会有显示。 CSA,CSB,CSC,CSD,CSE,CSF,CSG,CSDP 分别为数码管的位选, 哪一位为“1”,即相应的三极管饱和导通,则相应的数码管段被点亮。“0”为截 止。相应的数码管段灭,这样数码管就有数字显示出来。 我们在该系统使用了4 个数码管,使用动态显示,即通过片选,是每个数码 管都亮一段时间,不断循环扫描,由于人的眼睛有一段时间的视觉暂留,所以 给人的感觉是每个数码管同时亮的,这样4 个数码管就把4 位十进制数据就显示 出来了。 数码管驱动电路:由于单片机芯片没有足够的能力驱动4 个数码管,因此需 要增加数码管驱动电路。 驱动电路我们可以选择由三极管组成的电路,该电路简单,程序容易实现. 3.1.3 待测信号产生电路 可变基准发生器模块的功能为:主要用于仿真外界的周期性变化的信号,用 于电路的测试,对频率的精度没有要求,只要能产生周期性变化的信号即可。 该部分不为频率计的组成部分,再加上为了节省成本我们使用LM555 芯片 组建的多谐振振荡器电路电路如图3.7 所示,电容C,电阻RA 和RB 为外接元 件,其工作原理为接通电源后,5V 电源经RA 和RB 给电容C 充电,由于电容 上电压不能突变,电源刚接通时,555 内部比较器A1 输出高电平,A2 输出低电 平,即RD=1,SD=0,基于RS 触发器置“1”,输出端Q 为高电平,此时,Q=0,使 A 1 2 f 3 g 4 e5 d A 6 8 c 7 DP 9 b10 a DS1 Q1 NPN Q2 NPN Q3 NPN Q4 NPN Q5 NPN Q6 NPN Q7 NPN Q8 NPN Q9 NPN VCC VCC VCC VCC VCC VCC VCC VCC A B C C D D E EF F G G DP DP AB 100 R1 100 R2 100 R3 100 R4 100 R5 100 R6 100 R7 100 R8 100 R9 1 2 3 4 5 6 7 8 9 P1 CS1 CSA CSA CSB CSB CSC CSC CSD CSD CSE CSE CSF CSF CSG CSG CSDP CSDP 图3.6 显示电路 第14 页共27 页 内部放电管截止。 当电容两端电压Vc 上升到大于5V 的电压的三分之一时,RD=1,SD=1,基本 RS 触发器状态不变,即输出端Q 仍为高电平,当电容两端电压Vc 上升到略大 于2*5V/3 是,RN=0,SD=1,基本RS 触发器置0,输出端Q 为低电平,这时Q=1, 使内部放电管饱和导通。于是电容C 经RB 和内部的放电管放电,电容两端电压 按指数规律减小。当电容两端电压下降到略小于5V 电压的三分之一时,内部比 较器A1 输出高电平,A2 输出低电平,基本RS 触发器置1,输出高电平,这 时,Q=0,内部放电管截止,于是电容结束放电,如此循环不止,输出端就得 到了一系列矩形脉冲。如图3.8 所示。 电路参数的计算: 为了使Q 端输出频率可变,RB 用电位器来取代。 电容选择如果选择105的独石电容,即C=1uF= uF ,RA选1K的电10106 2 TRIG OUT 3 4 RST CVOL5T 6 THR 7 DISC 8 VCC GND1 U1 LM555CJ RA C VCC RB 5V VCC 图3.7 待测信号产生电路 图3.8 LM555 工作时电流变化 第15 页共27 页 阻,RB 选择5K的电位器,由公示f =1.443/RA+RBC计算可得:当RB=0 时,f=1.443KHz, 当RB=5K 时, f=240Hz, 由此可得, 该电路的输出频率范围为: 240~1443(Hz)。 元器件的简介 LM555/LM555C 系列是美国国家半导体公司的时基电路。我国和世界各大 集成电路生产商均有同类产品可供选用,是使用极为广泛的一种通用集成电 路。LM555/LM555C 系列功能强大、使用灵活、适用范围宽,可用来产生时间 延迟和多种脉冲信号,被广泛用于各种电子产品中。 555 时基电路有双极型和CMOS 型两种。LM555/LM555C 系列属于双极 型。优点是输出功率大,驱动电流达200mA。而另一种CMOS 型的优点是功 耗低、电源电压低、输入阻抗高,但输出功率要小得多,输出驱动电流只有几 毫安。 另外还有一种双时基电路LM556,14 脚封装,内部有两个相同的时基电路 单元。 特性简介: 直接替换SE555/NE555。 定时时间从微秒级到小时级。 可工作于无稳态和单稳态两种方式。 可调整占空比。 输出端可接收和提供200mA 电流。 输出电压与TTL 电平兼容。 温度稳定性好于0.005%/℃。 应用范围 精确定时。 脉冲发生 连续定时 频率变换 脉冲宽度调制 脉冲相位调制 电路特点: LM555 时基电路内部由分压器、比较器、触发器、输出管和放电管等组 成,是模拟电路和数字电路的混合体。其中6 脚为阀值端(TH),是上比较 器的输入。2 脚为触发端( TR ) , 是下比较器的输入。3 脚为输出端 (OUT),有0 和1 两种状态,它的状态由输入端所加的电平决定。7 脚为 放电端(DIS),是内部放电管的输出,它有悬空和接地两种状态,也是由输 入端的状态决定。4 脚为复位端(R),叫上低电平(< 0.3V)时可使输出端为 低电平。5 脚为控制电压端(CV ),可以用它来改变上下触发电平值。8 脚为电 源(VCC),1 脚为地(GND)。 一般可以把LM555 电路等效成一个大放电开关的R-S 触发器。这个特殊 的触发器有两个输入端:阀值端(TH)可看成是置零端R,要求高电平;触发 端(TR)可看成是置位端S,低电平有效。它只有一个输出端OUT,OUT 可 第16 页共27 页 等效成触发器的Q 端。放电端(DIS)可看成由内部放电开关控制的一个接 点,放电开关由触发器的反Q 端控制:反Q=1 时DIS 端接地;反Q=0 时 DIS 端悬空。此外这个触发器还有复位端R,控制电压端CV,电源端VCC 和接地端GND。 这个特殊的R-S 触发器有两个特点:(1)两个输入端的触发电平要求一高一 低:置零端R 即阀值端TH 要求高电平,而置位端S 即触发端TR 则要求 低电平。(2)两个输入端的触发电平,也就是使它们翻转的阀值电压值也不 同,当CV 端不接控制电压是,对TH(R) 端来讲,> 2/3VCC 是高电平 1,< 2/3VCC 是低电平0;而对TR(S)端来讲,> 1/3VCC 是高电平1,< 1/3VCC 是低电平0。如果在控制端CV 加上控制电压VC,这时上触发电平 就变成VC 值,而下触发电平则变成1/2VC。可见改变控制端的控制电压值可 以改变上下触发电平值。 3.1.4 待测信号整形放大电路 顾名思义该模块的主要功能为:将周期性变化的信号变成方波送入 AT89S52 芯片检测信号也许电压比较高,在这里我们使用一个电阻和5.1V 的稳 压管组成的一个降压电路。如果输入的信号功率比较低或输入电阻比较低需要电 压跟随器提高功率或输入电阻。然后经过一个电压比较器将不规则的周期性变化 的信号变成方波送入FPGA 处理,电路如图3.9 所示。 电压跟随器,顾名思义,就是输出电压与输入电压是相同的,就是说,电 压跟随器的电压放大倍数恒小于且接近1。电压跟随器的显著特点就是,输入 阻抗高,而输出阻抗低,一般来说,输入阻抗要达到几兆欧姆是很容易做到 的。输出阻抗低,通常可以到几欧姆,甚至更低。在电路中,电压跟随器一般 做缓冲级及隔离级。因为,电压放大器的输出阻抗一般比较高,通常在几千欧 到几十千欧,如果后级的输入阻抗比较小,那么信号就会有相当的部分损耗在 前级的输出电阻中。在这个时候,就需要电压跟随器来从中进行缓冲。起到承 上启下的作用。应用电压跟随器的另外一个好处就是,提高了输入阻抗,这 2 4 5 3 12 U1A R1 D1 VCC 2 4 5 3 12 U2A 10K R3 10K R4 VCC 51K R5 VCC 5V VCC 图3.9 待测信号整形放大电路 第17 页共27 页 样,输入电容的容量可以大幅度减小,为应用高品质的电容提供了前提保证。 电压跟随器的另外一个作用就是隔离,在HI-FI 电路中,关于负反馈的争议已经 很久了,其实,如果真的没有负反馈的作用,相信绝大多数的放大电路是不能 很好的工作的。但是由于引入了大环路负反馈电路,扬声器的反电动势就会通 过反馈电路,与输入信号叠加。造成音质模糊,清晰度下降,所以,有一部分 功放的末级采用了无大环路负反馈的电路,试图通过断开负反馈回路来消除大 环路负反馈的带来的弊端。但是,由于放大器的末级的工作电流变化很大,其 失真度很难保证。 电压比较器是集成运放非线性应用电路,他常用于各种电子设备中,它将 一个模拟量电压信号和一个参考固定电压相比较,在二者幅度相等的附近,输 出电压将产生跃变,相应输出高电平或低电平。比较器可以组成非正弦波形变 换电路及应用于模拟与数字信号转换等领域。 图3.10 所示为一最简单的电压比较器原理图,UR 为参考电压,加在运放的 同相的输入端,输入电压ui 加在反相的输入端。 电路图传输特性当ui<UR 时,运放输出高电平,稳压管Dz 反向稳压工作。 输出端电位被其箝位在稳压管的稳定电压UZ,即uO=UZ。当ui>UR 时,运放 输出低电平,DZ 正向导通,输出电压等于稳压管的正向压降UD,即uo=- UD 因此,以UR 为界,当输入电压ui 变化时,输出端反映出两种状态,高电位 和低电位。 表示输出电压与输入电压之间关系的特性曲线,称为传输特性。图3-1(b) 为(a)图比较器的传输特性。 常用的电压比较器有过零电压比较器、具有滞回特性的过零比较器、滞回电压 比较器,窗口(双限)电压比较器。这里我们使用LM339 构成各种电压比较 器。 3.1.5 分频电路 ⑴频率的功能 为了提高系统的可测信号的频率,添加分频器可以扩大频率的测量范围。 ⑵电路的选择与比较 分频电路可以使用CPLD 和74LS74 完成。 CPLD 和74LS74 也可以实现高速频率的分频工作,但是一般情况CPLD 用 于多分频的,如10 分频以上。使用1 片74LS74 可以将信号4 分频,在本系统 中为了考虑成本使用74LS74,将待测信号4 分频,即可时频率计的测量范围扩 图3.10 电压比较器原理 第18 页共27 页 大四倍,电路图如图3.11 所示。 74LS74 是两个D 触发器组成的,仿真如图3.12 所示。 3.1.6 5V 电源产生电路 该模块的主要功能是:为电路中的所有的元器件提供电源。 在选择5V 稳压芯片时,可以选择5.1V 稳压管或LM7805 集成芯片。由于的 不考虑负载的情况下,两种选择能得到同样的效果,但是,加上许多负载时, 5.1V 稳压管的输出电压会随着后面负载的输入电阻的变化而变化,如果电源的 输出电阻比较大,而负载的输入电阻比较小的时候,负载的变化将会引起电源 输出电压的很大的变化,由于LM7805 的输出电阻非常的大,接近于无穷大, 所以在制作电源时使用LM7805 在性能上将会比5.1V 稳压管好。即使负载的功 率很高,我们也可以通过加入扩流电路使电源提高输出功率。 电路的选择与特点: 二极管的选择:选择1N400 系列中的1N4007,1N4007 的反向截止电压为 1000V,对于我们电路输入整流桥之前就已经通过变压器使220V 市电变为9V 的交流电,1N4007 有足够的能力使9V 电压反向截至。通过4 个二极管组成的 整流桥后虽然把有正有负的交流电变成了全是正的角流电,这样的交流电即使 有效电压为正5V 的,也不能把这样的电压给FPGA 和单片机等芯片供电,需要 把这样的电压继续整流变成比较平稳的直流电。所以要经过电容初步滤波和整 4 3 CLK D 2 1 Q 5 Q 6 CLR PR UFP1A 10 11 CLK D 12 13 Q 9 Q 8 CLR PR UFP1B VCC VCC VCC VCC 图3.11 分频电路 图3.12 分频电路仿真 第19 页共27 页 流。为了电容两端的电压不支持突变,当外界电压高于电容两端电压时,外界 就向电容充电,当外界电压低于电容电压时,电容就要向外界放电,通过电容 使电压保持在一个恒定的值。我们在电路中使用的两个不同的电容为:C4、 C5,C5 使用的是电解质电容,因为一般情况下电解质电容容量比较大,存储电 量比较多,在滤波电路中多用于高频滤波,这里我们使用的是容量100uF,最 高电压为25V 的电解质电容。C4 使用的是独石电容,容量比电解质的小,一般 在uF 以下,多用于低频滤波。这里我们使用比较常用的104,即0.1uF。 由Q1,Q2,Q3 组成的是过流保护的扩大输出电流的电路。Q2 的输出电流I0 增加为I0=I01+I02。正常时,Q1,Q3 截至,电阻R1 上产生压降使T2 导通, 若I0 过流,I01 增加,限流电阻R3 上压降增大使T3 导通,导致T1 趋于饱和, T2 管基-射间电压|VBE1|降低,限制了功率管T2 的电流IC1,保护功率管不致 因过流而损坏。 将电容输出的电压送入LM7805 芯片继续稳压整流,使电压变成FGPA、单 片机可以接收的5V 电源。 9V 的交流电输入到4 个二极管组成的整流桥,通过整流桥后,有效电压为 输入电压的0.9 倍,即:0.99  8.1V ,当通过接着的两个电容时,这时的电 压为输入电压的1.2 倍,即: 。由于LM7805 要求输入电压高于91.2 10.8V  标准输出电压2V,由于使用的是7805,输出电压为标准的正5V,即输入电压 要高于5  2  7(V ),通过整流桥和电容之后的电压为10.8V>7V,由此可以看出 LM7805 将正常工作,输出电压为5V。电路如图3.10 所示。 元器件的选型与电路参数的计算: LM7805 芯片简介: 外形图及引脚排列H 7805 系列为3 端正稳压电路,TO-220 封装,能提供 多种固定的输出电压,应用范围广。内含过流、过热和过载保护电路。带散 热片时,输出电流可达1A。虽然是固定稳压电路,但使用外接元件,可获得 不同的电压和电流。 主要特点: 1 IN 3 OUT 2 GND U1 LM7805 Q1 PNP Q2 PNP Q3 NPN R1 R2 R3 0.33uF C1 0.1uF C2 D1 D2 1N4007 D3 D4 0.1uF C4 10UF C5 1 2 5V 图3.10 第20 页共27 页 输出电流可达2A。 输出电压有:5V。 过热保护。 短路保护。 输出晶体管SOA 保护。 7805 的功能框图如图3.11: 注意: 输入电压,即为纹波电压中的低值点,都必须高于所需输出电压2V 以 上。 当稳压器远离电源滤波器时,要求用C1。 CO 可改善稳定性和瞬态响应。 该模块的不足和对进一步完善提出建议: 该模块的不足: 转换的效率低:线性稳压器的效率直接与其调整管所消耗的功率有 关。调整管的功耗等于电流×(输入电压-输出电压),由此可见,有些情况下调整 管会产生较大损耗。例如,负载为1A 时,将10V 的电压降至5V 输出,线性稳 压器的功耗为5W。效率将低于50%。该电路将会很耗电。 散热问题:由上可知线性稳压器的功耗将在高于总电路的50%,例如,我 们的电路功率为10W,那么线性稳压器的功率将会高于5W,这5W 的99%将通 过热量散失到外界,如果散热管理不适当将会使整个系统在高温下工作,影响 整个系统的性能之外,也严重的影响着整个系统的寿命。 提出建议: 线性稳压器的低效率迫使寻求新的改进方案,开关电源引起人们的关注。 根据开关电源的工作原理,在不同负载和电压下,一个设计良好的开关电源的 效率可达90%甚至更高。这相比线性稳压器,效率提高了40%。通过直观的比 较,开关电源降压的优势便体现出来了,其他开关电源的拓扑结构同样具有相 近或是更高的效率。开关电源设计不仅仅具有高效率这一主要优势,由于功耗 的降低还带来许多直接的好处。例如,与低效率的竞争产品相比,开关电源的 散热片面积大大减小。降低了对热管理的要求;而且更重要的是,由于器件不 会工作在低效的高温环境中,大大提高了器件的可靠性,进而延长工作寿命。 图3.11 第21 页共27 页 3.2 软件设计 3.2.1 编程语言的选择: 汇编和C 语言 汇编语言(Assembly Language)是面向机器的程序设计语言 在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号 (Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成 了汇编语言。于是汇编语言亦称为符号语言。 使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言 翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中 语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。 汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执 行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇 编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。 C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大 的功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语 言编写的。用C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了, 象PC- DOS 、WORDSTAR 等就是用这种方法编写的。归纳起来C 语言具有 下列特点: ①C 是中级语言 它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可 以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工 作单元。 ② C 是结构式语言 结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必 要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维 护以及调试。C 语言是以函数形式提供给用户的, 这些函数可方便的调用, 并具有多种循环、条件语句控制程序流向, 从而使程序完全结构化。 ③C 语言功能齐全 C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更 高。另外C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算 功能、逻辑判断功能也比较强大, 可以实现决策目的。 ④C 语言适用范围大 C 语言比汇编更容易编写和移植,虽然该程序对时间要求比较严格但是如果 我们使用定时器的话对,这样就既可以解决用延时带来的不精确的问题,也提 高了编写程序的效率。 3.2.2 程序流程图: ⑴主程序 该计数器时通过计数或定时来完成计算待测信号的频率的,所以频率的计算 都是在中断里完成的。主函数的流程图如图3.12 为: 第22 页共27 页 检测一个信号首先在1 秒钟中内对待测频率计数,通过定时器0 来定时1 秒。 通过计数器1 对待测频率计数,通过这种方法检测出待测信号的频率,如果频率 小于2 的话,通过这种方法检测出来的频率精度会很低,所以如果频率低于2Hz, 用计数器1 来检测两个下降沿,在两个下降沿内,运行定时器0,通过这种方法 计算频率比较低的信号。 两种方案的选择由变量flag 控制,对一个未知频率信号,我们先假设该频率 高于2Hz,当用第一种方法检测出来的值小于2Hz,我通过对变量的控制执行第 二种方案。 定时器/计数器0 和定时器/计数器1 的主要作用: 首先当待测信号送入到频率计时,频率计将该信号作为频率大于2Hz 出来, 定时器/计数器0 设为定时模式,定时器/计数器1 设为计数模式。定时器0 的作 用为定时1 秒,在这一秒里,计数器1 对待测信号计数。由此可以测出待测的频 图3.12 主程序流程图 第23 页共27 页 率值,当检测到的频率值小于2Hz 时,频率计自动转换到对低频信号处理模式, 定时器1 的作用将变为自动检测待测频率的下降沿,定时器0 的作用是在相邻的 两个下降沿里计时。由此可以测出频率小于2 的信号。 定时器0 的程序流程图如图3.13。计数器1 的程序流程图如图3.14 所示。 如图3.13 定时器0 中断流程序 图3.14 定时器1 中断流程图 Y N 第24 页共27 页 打开Keil C,单击“工程”菜单中的“目标Target1 属性”,跳出一个设置“目标 Target1 属性”的对话框。打开“输入”页,在产生执行文件的框里,把“E 生成HEX 文件”前的钩打上,重新编译,即工程所在的文件夹里会产生一个HEX 格式的文 件。 用keil C 即可产生的HEX 的二进制文件,既可以在PROTES 中仿真使用, 也可以下载到单片机中运行。 3.3 电路板的制作 3.3.1 元器件的封装 在设计装配方式之前,要求将系统的电路基本定型,同时还要根据整机的 体积以及机壳的尺寸来安排元器件在印刷电路板上的装配方式。 具体做这一步工作时,可以先确定好印刷电路板的尺寸,然后将元器件配 齐,根据元器件种类和体积以及技术要求将其布局在印刷电路板上的适当位 置。可以先从体积较大的器件开始,如电源变压器、磁棒、全桥、集成电路、 三极管、二极管、电容器、电阻器、各种开关、接插件、电感线圈等。待体积 较大的元器件布局好之后,小型及微型的电子元器件就可以根据间隙面积灵活 布配。二极管、电感器、阻容元件的装配方式一般有直立式、俯卧式和混合式 三种。 ①直立式。电阻、电容、二极管等都是竖直安装在印刷电路板上的。这种 方式的特点是:在一定的单位面积内可以容纳较多的电子元件,同时元件的排 列也比较紧凑。缺点是:元件的引线过长,所占高度大,且由于元件的体积尺 寸不一致,其高度不在一个平面上,欠美观,元器件引脚弯曲,且密度较大, 元器件之间容易引脚碰触,可靠性欠佳,且不太适合频率较高的电路采用。 ②俯卧式。二极管、电容、电阻等元件均是俯卧式安装在印刷电路板上 的。这样可以明显地降低元件的排列高度,可实现薄形化,同时元器件的引线 也最短,适合于较高工作频率的电路采用,也是目前采用得最广泛的一种安装 方式。 ③混合式。为了适应各种不同条件的要求或某些位置受面积所限,在一块 印刷电路板上,有的元器件采用直立式安装,也有的元器件则采用俯卧式安 装。这受到电路结构各式以及机壳内空间尺寸的制约,同时也与所用元器件本 身的尺寸和结构形式有关,可以灵活处理。 1、单片机: 单片机使用双列直插式DIP 封装,40 个引脚,每个引脚的距离为100mil。 封装模型如图3.18 所示: 图3.18 单片机PCB 模型 第25 页共27 页 2、数码管的封装: 数码管的封装采用LEDDIP-10,但是因为每个厂家生产出来的段选并不是都 是相同的,但是没必要重新设计数码管的封装,仅仅检查引脚分配即可,在本设 计使用的数码管引脚分配如图3.19 所示。 其他元器件封装: 电阻AXIAL 无极性电容RAD 电解电容RB 电位器VR 二极管DIODE 三极管、场效应管TO 电源稳压块78 系列TO-220 单排多针插座SIP 双列直插元件DIP 晶振XTAL1 3.5 软硬件结合测试 当给电板通电时,LM555 的3 号输出引脚的电压为2.5V 左右。说明输出脉 冲的占空比为50%。通过通过示波器查看波形,和理论的波形一致,通过调节 电位器可以改变输出波形的频率。 图3.19 元器件引脚映射 第26 页共27 页 数码管显示当调节电位器时,数码管的显示也是在理论范围只内的。 第27 页共27 页 致谢 在本论文结束之际,回想本科阶段的学习和生活,感慨甚多,毕业课题和 论文是在导师郑老师的指导下完成的,同时也要感谢自动化教研室的老师,感 谢他们的耐心指导。感谢所有帮助和支持过我的人。 郑老师对论文的进展付出了大量的汗水和心血,并给予了许多具体的实验 指导方案,在论文的最后成稿中提出了许多宝贵的意见,从而使论文的质量得 以提高,从郑老师身上,我学到的不仅是做学问、搞科研的态度、方法和毅 力,而且更多的是做人的准则。借此论文完成之际,向郑老师表示深深的谢 意! 最后,再一次向关心和帮助我的各位表示我衷心的感谢和深深的敬意!

立即下载
rar文件
一机一码加壳软件SafengineShielden2.4.rar

1.Safengine Protector 提供强大的代码虚拟机保护您的程序免受逆向工程和非法修改。同时提供了运行时保护,并与您的程序链接在一起,使得您的程序无法离开保护代码正常运行。 查看技术介绍 Safengine支持多种类型的文件格式: 所有Win32/64 PE文件,包括: 可执行文件 (*.exe) 屏幕保护程序 (*.scr) 动态链接库 (*.dll) ActiveX 控件 (*.ocx) 驱动程序 (*.sys) 2.里面有简单的教程。 3.生成一机一码。 4.暂时不支持NET的程序

立即下载
zip文件
btc-price::money_bag:在您的终端中显示BTC价格-源码

BTC价格 还有另一个小型图书馆,以不同的货币获取最新的BTC价格。 安装 npm install btc-price -g 用法 在您的外壳中: btc-price 数据源 来价格。 向他们大喊大叫! 选项 default将以美元显示价格 -g以英镑显示的价格 -e以欧元显示的价格 -r俄罗斯卢布的显示价格 -j显示日元的价格 -y以人民币显示的价格 -i印度卢比的显示价格 -c以加拿大元显示的价格 -s瑞典克朗的显示价格 -V显示当前版本 网站 您可以签出我的免费货币转换器工具,该工具可让您将任何常规法定货币转换为加密货币。 我们有来自BTC,DOGE,ETH,LTC等的配对,可以通过USD,EUR,GBP等进行转换。 测验 要运行mocha测试套件,请使用npm test 目前测试是一个占位符:) 贡献 请随时发疯; 打开公关,发行或分叉! 版本历史 0.3.1轻微优化,添加SE

立即下载
zip文件
最新SE壳工具加密 百分百破解不了

最新SE壳工具加密 百分百破解不了

立即下载
rar文件
java gui 实现 telnet 登录交换机

java gui 实现telnet登录交换机

立即下载
热门资源标签
Global site tag (gtag.js) - Google Analytics