单片机实验指导书 - 图文

更新时间:2024-04-04 00:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机实验指导书

指导老师:李念强

电子信息与通信工程系

2015-3-6

第一部分 单片机下载软件使用说明

使用AT89S5X系列单片机必须使用该下载软件,使用STC系列单片机则不需要使用该软件。

progisp是超强的AT系列芯片下载软件,它支持所有的AVR芯片的编程,支持AT89S51/AT89S52,支持自定义并口下载编程器,支持自定义串口的下载编程器,支持USBASP编程器,支持并口的并行编程器,支持USBProg编程器,支持自定义编程芯片,支持自定义编程熔丝信息提示信息,支持USBProg的在线升级,支持USBProg-C实现脱机下载,支持自定义汉化信息提示,支持工程管理--可以将所有的配置数据与编程数据打包为单一文件。

1、如何安装?

progisp是一个绿色软件,直接解压缩即可使用,进入软件主目录,运行“progisp.exe” (将该文件设为桌面快捷方式,方便以后操作)即可运行程序。

2、如何使用?

运行“progisp.exe”后,进入以下界面:

按以下步骤进行操作: ① 选择芯片:AT89S52。

② ②点击“调入Flash”,选择要下载的HEX文件。 ③ 点击“自动”即可完成下载。

第二部分 Keil软件使用说明

利用KeilSoftware可以开发所有8051系列单片机的嵌入式应用。KeilSoftware 的8051开发工具提供以下程序,可以用它们来编译C源码,汇编源程序,连接和 重定位目标文件和库文件,创建HEX文件,调试目标程序。

一、uVision2集成开发环境

uVision2IDE是一个基于Window的开发平台,包含一个高效的编辑器,一个项目管理器和一个MAKE工具。

uVision2支持所有的KEIL8051工具,包括C编译器,6过程:

? 全功能的源代码编辑器。

? 器件库用来配置开发工具设置。 ? 项目管理器用来创建和维护项目o

? 集成的MAKE工具可以汇编,编译和连接嵌入式应用。 ? 所有开发工具的设置都是对话框形式的。

? 真正的源代码级的对CPU和外围器件的调试器。

? 高级GDI(AGDl)接口用来在目标硬件上进行软件调试,以及和Monitor-51 进行通信。

? 与开发工具手册和器件数据手册和用户指南有直接的链接。

二、关于开发环境

uVision2界面提供一个菜单,一个工具条以便快速选择命令按钮,另外还有源 代码的显示窗口,对话框和信息显示。 uVision2允许同时打开浏览多个源文件。

1、项目管理

工程(project)是由源文件、开发工具选项以及编程说明三部分组成的。 一个单一的uVision2工程能够产生一个或多个目标程序。产生目标程序的源文件构成“组”。开发工具选项可以对应目标,组或单个文件。

uVision2包含一个器件数据库(device database),可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定微控制器的要求。此数据库包含:片上存储器和外围设备的信息,扩展数据指针(extra data pointer)或者加速器(math accelerator)的特性。

uVision2可以为片外存储器产生必要的连接选项:确定起始地址和规模。

2、集成功能

uVision2的强大功能有助于用户按期完工。

? 集成源极浏览器利用符号数据库使用户可以快速浏览源文件。用详细的符号信息来

优化用户变数存储器。

? 文件寻找功能:在特定文件中执行全局文件搜索。 ? 工具菜单:允许在V2集成开发环境下启动用户功能。 ? 可配置SVCS接口:提供对版本控制系统的入口。 ? PC-LINT接口:对应用程序代码进行深层语法分析。 ? Infineon的EasyCase接口:集成块集代码产生。

? Infineon的DAVE功能:协助用户的CPU和外部程序。DAVE工程可被直接输入

uVision2。

三、 编辑器和调试器

1、源代码编辑器

uVision2编辑器包含了所有用户熟悉的特性。彩色语法显像和文件辩识都对C源代码进行和优化。可以在编辑器内调试程序,它能提供一种自然的调试环境,使你更快速地检查和修改程序。

2、断点

uVision2允许用户在编辑时设置程序断点(甚至在源代码未经编译和汇编之前)。用户启动V2调试器之后,断点即被激活。断点可设置为条件表达式,变量或存储器访问,断点被触发后,调试器命令或调试功能即可执行。 在属性框(attributes column)中可以快速浏览断点设置情况和源程序行的位置。代码覆盖率信息可以让你区分程序中已执行和未执行的部分。

3、调试函数语言

uVision2中,你可以编写或使用类似C的数语言进行调试。

1).内部函数:如printf, memset, rand及其它功能的函数。 2).信号函数:模拟产生CPU的模拟信号和脉冲信号。 3).用户函数:扩展指令范围,合并重复动作。

4、变量和存储器

用户可以在编辑器中选中变呈来观察其取值。双层窗口显示,可进行以下调整: 1).当前函数的局部变量

2).用户在两个不同watch窗口页面上的自定义变量

3).堆栈调用(call stack)页面上的调用记录(树)(call tree) 4).不同格式的四个存储区

四、创建应用

如何创建一个新的工程?按如下步骤可建立一个新的工程 1、 首先打开Keil软件的开发环境,如下图所示。

2、 点击菜单project,选择new project:

3、 输入工程文件的名字,选择你要保存的路径,比如保存到Keil目录里,工程文件的名字

为test,如下图所示,然后点击保存。

4、 这时弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,

keil c51几乎支持所有的51内核的单片机,例如,选择Atmel公司的AT89C51,可以选择ATMEL?AT89C51,然后点击确定。

5、 点击确定后,弹出一个对话框,如下:询问是否复制标准8051启动代码并将其加入已

建工程中。按“是“,进入下一步。

6、 接下来要创建一个源程序文件,建立一个汇编或.C文件,如果你已经有源程序文件,可

以忽略这一步,点击菜单File?New:

7、 输入一个简单的程序,如下:

8、 选择菜单 File?Save

9、 选择你要保存的路径,在文件名里输入文件名,注意一定要输入扩展名,如果是C程序

文件,扩展名为.C,如果是汇编文件,扩展名为.asm(或.a51),如果是ini文件,扩展名为.ini,其他文件类型,比如注解说明文件,可以保存为.txt的扩展名。这里将文件保存为asm结尾的源程序文件,所以扩展名为.asm,保存为test.asm的名字,点击保存。

10、点击Target1前面的+号,展开里面的内容source Group1:

11、用鼠标右键点击Source Group1(注意用鼠标右键),弹出一个菜单,选择Add Files to Group ?Source Group1?。 选择刚才编写的文件test.asm

如果在上述目录下看不到该文件,文件类型选All files(*.*),将显示该目录下的所有文件。 12、点击Add按钮,将文件加入工程。

注意:在类型Type一栏,选Assembly language file。

然后,点击OK按钮,把文件加入工程。点击CLOSE按钮,关闭该对话框。出现如下画面。

13、双击test.asm文件,可以打开文件,程序出现变色显示,说明程序已被系统辨识。

五、参数设置

1、 接着上图,用鼠标右键点击Target 1,选择 Options for Target ?Target1?,出现下图:

Xtal(Mhz):是设置单片机的工作的频率,默认是24.OMHZ,如果单片机的晶振用的是1l.0592Mhz,那么在框里输入ll.0592(单位是Mhz,所以带小数点)。

Use On-chip ROM(0x0—0xfff):这个选项是使用片上的Flash Rom,我们知道At89C51有4k的flash Rom,取决于你的应用系统,你的单片机的EA接高电平的话,请选中这个选项,如果单片机的EA接低电平,表示使用外部Rom,不要选中该项。我们在这里选中它。

Off-chip Code memory:表示你在片外接的Rom的开始地址和大小,如果你没有外接程序存储器,那么不要填任何数据.我们在这里假设使用一个片外的Rom,地址从Ox8000开始(不要填成8000,如果是8000,是10进制的数,一般填16进制的数),Size为外接Rom的大小.假设接了一块0x1000字节的rom。最多可以外接3块Rom,如果还用了别的地址,就添上。

Off-Chip Xdata Memory:那么可以填上你外接的Xdata(外部数据存储器的起始地址和大小,一般的应用是接一个62256,我们在这里特殊的指定Xdata的起始地址为Ox2000,大小为Ox8000;

Code Banking:是使用Code Banking技术.keil可以支持程序代码超过64k的情况,最大可以有2兆的程序代码。如果代码超过64k,那么就要使用Code Banking技术,以支持更多的程序空间.CodeBanking是一个高级的技术,支持自动的Bank的切换,是建立一个大型系统的需要,比如要在单片机里实现汉字字库,实现汉字输入法,都要用到该技术.我们在这里不选中它。

Memory Model:用鼠标点击Memory Model的下拉箭头,会有3个选项。 Small:变量存储在内部ram里.

Compact:变量存储在外部ram里,使用页8位间接寻址 Large:变量存储在外部Ram里,使用16位间接寻址.

一般使用Small来存储变量,就是说单片机优先把变量存储在内部ram里,如果内部ram不够了,才会存到外部去.Compact的方式要自己通过程序来指定页的高位地址,编程比较复杂,如果外部ram很少,只有256个字节,那么对该256个字节的读取就比较快,

用MOVX@Ri,A或MOVX A,@Ri指令。

如果超过256字节,那么要不断地进行切换的话,就比较麻烦。Compact模式适用于比较少的外部ram的情况.Large模式,是指变量会优先分配到外部ram里,用MOVX A,@DPTR或MOVX@DPTR,A来读取.要注意的是,3种存储方式都支持内部256字节和外部64k字节的ram.区别是变量的优先(或默认)存储在哪里的区别.除非你不想把变量存储在内部ram,才使用后面的Compact,Large模式.因为变量存储在内部ram里,运算速度比存储在外部ram要快的多,大部分的应用都是选择Small的模式.使用Small的方式:也不是说变量就不可以存储在外部,一样可以存储在外部,只是你要指定,比如: unsigned char xdata a;那么变量a就存储在外部的ram. unsigned char a;变量存储在内部ram.

假如用Large的模式:

unsigned char xdata a:那么变量a就存储在外部的ram. unsigned char a;变量存储在外部ram.

这就是区别,就是说这几个选项只是影响没有特别指定变量的存储空间的时候,默认存储在哪里,比如上面的变量定义unsigned char a.

那么我们最好选择Small.

Code Rom Size:用鼠标点击下拉箭头,将有3个选项:

Small:program 2K Or less:适用于89c2051这些芯片,2051只有2k的代码空间,所以跳转地址只有2k,编译的时候会使用ACALLAJMP这些短跳转指令,而不会使用LCALL,LJMP指令,如果你的代码跳转超过2k,那么会出错。

Compact:2k functions,64k program:表示每个子函数的程序大小不超过2k,整个工程可以有64k代码.就是说在main()里可以使用LCALL,LJMP指令,但在子程序里只会使用ACALL,AJMP指令.除非你确认你的每个子程序不超过2k,否则不要用Compact方式。

Large:64K program:表示程序或子函数都可以大到64k.使用code bank还可以更大.通常我们都选用该方式.Code Rom Size选择Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small的方式.这里选择Large方式.

Operating:点击下拉箭头有3个选项: None:表示不使用操作系统

RTX—51 Tiny Real—Time 0s:表示使用Tiny操作系统 RTX—51 Full Real—Time 0s:表示使用Full操作系统

Keil c51提供了tiny系统(demo版没有tiny系统,正版软件才有),Tiny是一个多任务操作系统,使用定时器0来做任务切换.一般用11.0592Mhz时,切换任务的速度为30毫秒.如果有10个任务同时运行,那么切换时间为300毫秒.同时不支持中断系统的任务切换.也没有优先级.因为切换的时间太长,实时性大打折扣,多任务情况下(比如5个),轮一次就要150毫秒,150毫秒才处理一个任务,连实现键盘扫描这些事情都不行.更不要说串口接收,外部中断等.同时切换需要大概1000个机器周期,对cpu的浪费很大,对内部ram的占用也很厉害.实际上用到多任务操作系统的情况少之又少.关键是不适用.多任务操作系统一般适合于16位,32位的cpu,不适合8位cpu.

Keil的多任务操作系统的思想值得学习,特别是任务切换的算法,如何切换任务和保存堆栈等,有一定的研究价值.如果熟悉了其切换的方法,可以编写更好的切换(比如将一次切换的时间从30毫秒改为3毫秒,实用性会好一些。 2、 编译输出设置(产生.HEX文件)

在上图中,点击OUTPUT,弹出如下界面:

Select Folder for Objects: 为最后生成的可执行文件,选择文件夹。 Name of Executable: 对生成的可执行文件进行命名。

Create Hex File: 选中小方框,编译输出将产生用于最后烧录的Hex文件,不选中,

则不会产生。

六、程序调试与仿真

[程序调试]

完成以上工作后,就可以对程序进行调试与仿真了。具体步骤如下:

1、进行编译,Project?Build Target(Rebuild All Target Files,工程包含文件不止一个)。

2、有错误出现,在编译窗口,对错误类型和出错原因有详细说明,双击错误标号,就会定位在程序的相应处,修改错误,保存,再进行编译,直到全部通过为止。

编译完全通过后,就可以进行功能仿真了。

[程序仿真]

1、 Debug?Start/Stop Debug Session

图中,从左边方框中可观察程序运行时,R0—R7,A,B,SP,PC,PSW等特殊功能寄存器的值,便于及时了解运行结果的对错。 还可以观察内部RAM的运行值,例如30H, VIEW?memory window,在地址窗口输入要观察地址,内部RAM(I:0X00—0X7F)30H单元,I:0X30H.从下图可以看出,运行结果为3。外部存储器单元(X:0X000000—0X00FFFFH)。

除此之外,仿真环境还可以观察、仿真实际外设的运行情况,比如,定时/计数器,串口,P0,P1,P2,P3口,中断等。

观察外设窗口:点击Peripherals按钮,弹出如下菜单,包含5个功能菜单:

Interrupt: 中断设置与激活。

调试技巧:外部中断INT0对应于P3.2口线,因此,用鼠标单击PORT 3窗口从右向左数第三位(P3.2口线对应的位),每单击两次,触发一次中断,原因是外部中断是下降沿或低电平有效的。

外部中断INT1的试验方法与外部中断INT0基本相似。

I/O-ports: 包含四个端口,即P0、P1、P2、P3。

单击PORT0,将弹出具体窗口,可以观察运行的结果。用鼠标可对其进行设置,更改运行时的数据。

Serial: 可对串口进行设置,具体如下:

Timer:对定时器/计数器进行设置。单击Timer0,出现如下画面。

第三部分 实验指导书

实验1、 熟悉单片机开发环境

目的:熟悉单片机的开发环境,掌握掌握单片机的编程和调试方法。 内容:

(1)由拨码开关输入开关量到单片机。单片机根据不同的开关量输出相应的信号,点亮或熄灭LED发光管。

(2)让小灯进行多种方式显示。向单片机端口发送不同的数据,点亮LED灯。 所需设备:51单片机主控模块。

51单片机 LED小灯 拨码开关 实验原理1:

实验步骤:

连接单片机模块P1口与LED灯的连线,以及P2口与拨码开关模块的连线。将P2定义为输入,接至拨码开关,把P2口的数据送出到P1口,用LED灯显示。 程序代码:

ORG 0000H AJMP MAIN ORG 0040H

MAIN: MOV P2,#0FFH

MOV A,P2 NOP NOP

MOV P1,A NOP NOP NOP NOP NOP NOP

AJMP MAIN END

实验原理2:

实验步骤:

连接单片机模块P2口与LED灯的连线,控制LED灯有多种显示方式,如:流水打灯,逐个熄灭/点亮,交错点亮/熄灭等。 实验结果:8个LED灯依次熄灭 程序代码: 流水打灯:

ORG 0000H

AJMP MAIN ORG 0040H

MAIN: ? ? ACALL DELAY

AJMP

LOOP

R7,#0FFH ;延时程序 R6,#0FFH

DELAY: MOV AGAIN1:MOV AGAIN: NOP NOP DJNZ DJNZ RET END

R6,AGAIN

R7,AGAIN1

实验2、 交通灯试验

目的:提高学生理论联系实际的能力,观察实际的交通灯的工作方式,在实验箱上实现。 内容:通过端口数据的不同,控制交通灯。 所需设备:51单片机主控模块。

交通灯 微动开关 实验原理:

实验步骤:P2.0、P2.1、P2.2分别对应接到交通灯S/N方向的1、2、3控制端;P2.3、P2.4、P2.5分别对应接到交通灯E/W方向的4、5、6控制端。(1—RED,2—YELLOW,3—GREEN,4—RED,5—YELLOW,6—GREEN)。 程序代码:

ORG 0000H AJMP MAIN ORG 0040H

MAIN: ?

? AJMP MAIN

DELAY: MOV R7,#0FFH ;延时程序 AGAIN1:MOV R6,#0FFH AGAIN: NOP NOP DJNZ R6,AGAIN DJNZ R7,AGAIN1 RET END

实验3、 数字时钟实验

利用CPU内部系统资源,实现数字时钟。

内容:用单片机实现准确定时,串行口显示时间。 所需设备:51单片机主控模块。

8位静态数码管

实验原理:

实验步骤:

连接好数码显示模块与单片机模块的RXD、TXD,了解74HC164驱动8段LED数码管(共阳)的编码规则,串并转换IC74HC164管脚低电平时对应的数码管段显示,从而组成不同的数字和代码。

实验板上LED数码管显示模块所对应的“0—9”的编码为: 77H、14H、0B3H、0B6H、0D4H、

0E6H、0E7H、33H、0F7H、0F4H 灭:00H 实验结果:显示走动的时间。

;连线: P3.0--> Data , P3.1--> CLK

程序代码:

ORG 0000H AJMP MAIN

MAIN : MOV SP,#70H

?

ACALL Timer ;定时1秒子程序 ? ACALL BCD ACALL DISP ACALL DELAY ?

DISP: MOV SCON,#00H ;显示子程序

MOV R0,#60H MOV R2,#08H

L00C9: MOV SBUF,@R0 L00CB: JNB TI,$

CLR TI INC R0 DJNZ R2,L00C9

ACALL DELAY RET

BCD: MOV R0,#60H ;转换为BCD码

MOV R2,#08H

MOV

TAB: MOV

MOVC MOV INC DJNZ RET

TABL: DB

DB

DB DB DB DB DB DB DB DB DB ;

DELAY: MOV AGAIN1: MOV AGAIN2: MOV AGAIN: NOP

DJNZ

DJNZ DJNZ RET END

DPTR,#TABL A,@R0

A,@A+DPTR @R0,A R0

R2,TAB 77H ;0 14H ;1 0B3H ;2 0B6H ;3 0D4H ;4 0E6H ;5 0E7H ;6 34H ;7 0F7H ;8 0F4H ;9 00H ;灭 R5,#0FFH R7,#0ffH R6,#01H R6,AGAIN2 R7,AGAIN R5,AGAIN1

实验4、 外部中断实验

目的:掌握外部中断的产生方式和中断的处理过程。 内容:通过单脉冲产生中断, 使LED灯点亮。 所需设备:51单片机主控模块。

实验原理:

+5V 微动开关 AT89S51INT0/P3.2INT1/P3.3K1K2GNDP1.0+5V

实验步骤:

中断脚P3.2(INT0)或者P3.3(INT1)与按键模块的按键连接,P1.0接到LED小灯。 实验结果:

按K1时,LED点亮1秒后熄灭;按K2时,LED点亮2秒后熄灭。 程序代码:

ORG 0000H AJMP MAIN ORG 0003H ;0中断入口地址 AJMP K1_1S ORG 0013H ; 1中断入口地址 AJMP K2_2S ORG 0033H MAIN: MOV SP,#60H MOV P1,#0FFH SETB EA SETB EX1 ;开外中断1 SETB EX0 ; 开外中断0 SJMP $

K1_1S: CLR P1.0 acall delay1s setb P1.0 RETI

K2_2S: CLR P1.0 acall delay1s acall delay1s setb P1.0

RETI

DELAY_1S:

MOV R6,#50

D1: MOV R4,#20 D2: MOV R5,#248

DJNZ R5,$ DJNZ R4,D2 DJNZ R6,D1 RET END

实验5、 定时器/计数器实验

目的:掌握单片机中断的原理,定时器/计数器计数以及使用方法、。

内容:通过定时器1来定时产生中断控制P1.0 线上的脉冲输出,驱动LED灯闪烁。 所需设备:51单片机主控模块。

单片机P1口 LED灯

实验原理:

实验步骤:连接单片机模块P1.0 LED灯的连线。 实验结果:LED灯闪烁。

程序代码:

ORG AJMP ORG AJMP ORG

MAIN: MOV

MOV MOV

MOV

SETB SETB SETB

LL: NOP NOP

NOP NOP

AJMP

INTQR: ? RETI END

0000H

MAIN 001BH INTQR 001DH SP,#60H TMOD,#10H TH1,#00H TL1,#00H EA ET1 TR1

LL

实验6、 频率测量实验

目的:掌握简易频率计的原理及频率测量的方法,深入了解定时计数器的使用。

内容:由分频模块引一脉冲信号到单片机引脚P3.4/T0,由单片机测量并显示出其频率值。 所需设备:51单片机主控模块、红外通信/标准信号源模块。

静态数码管 信号源 单片机P3口

实验原理:

利用定时/计数器T0的计数功能,记录单片机引脚P3.4/T0上在一定时间(1s)内的脉冲数,即该脉冲的频率,然后将其直观的显示在数码管上。

P3.0/RXDP3.1/TXD静态数码管89S51P3.4/T0

程序代码: MAIN:

ORG MOV SETB MOV MOV MOV SETB LCALL CLR MOV MOV ? ?

LCALL LCALL AJMP

0000H SP,#70H P3.4

TMOD,#05H TH0,#00H TL0,#00H TR0 DELAY TR0 30H,TL0 31H,TH0

BCD DISP MAIN

;双字节二进制数转换成三字节bcd码,bcd码存于50H开始的三个单元,其中高位字节在前,二进制数低位字节存于30H,高位存于31H DBINTBCD: MOV R1,#50H MOV R5,#03H

CLR A LOOP1: MOV @R1,A INC R1 DJNZ R5,LOOP1 MOV R7,#10H LOOP4: MOV R0,#30H MOV R6,#02H CLR C LOOP2: MOV A,@R0 RLC A MOV @R0,A INC R0 DJNZ R6,LOOP2 MOV R1,#50H MOV R5,#03H LOOP3: MOV A,@R1 ADDC A,@R1 DA A MOV @R1,A INC R1 DJNZ R5,LOOP3 DJNZ R7,LOOP4 RET

;双字节bcd分解成单字节bcd ,R0指向带分解的bcd数的地址,R1指向转换后的存放单元 BCDD2S: MOV A,@R0 ANL A,#0FH MOV @R1,A INC R1 MOV A,@R0 SWAP A ANL A,#0FH MOV @R1,A RET

BCD: MOV R0,#60H MOV R2,#08H BCD1: MOV DPTR,#TABL1 MOV A,@R0 MOVC A,@A+DPTR MOV @R0,A INC R0 DJNZ R2,BCD1 RET

- 25 -

DISP: DISP1:

TABL1:

MOV MOV MOV MOV JNB CLR INC DJNZ RET

SCON,#00H ;显示 R0,#60H R2,#08H SBUF,@R0 TI,$ TI R0

R2,DISP1

DELAY: MOV R7,#10 ;延时1s DE1: MOV R6,#200 DE2: MOV R5,#248 DJNZ R5,$ DJNZ R6,DE2 DJNZ R7,DE1 RET END

/*单片机的最大计数频率为晶振频率的1/24,对于晶振频率为12MHZ的单片机,它所能测的最大频率为500KHZ*/

DB DB DB DB DB DB DB DB DB DB DB 77H ;0

14H ;1 0B3H ;2 0B6H ;3 0D4H ;4 0E6H ;5 0E7H ;6 33H ;7 0F7H ;8 0F4H ;9 00H ;灭

- 26 -

DISP: DISP1:

TABL1:

MOV MOV MOV MOV JNB CLR INC DJNZ RET

SCON,#00H ;显示 R0,#60H R2,#08H SBUF,@R0 TI,$ TI R0

R2,DISP1

DELAY: MOV R7,#10 ;延时1s DE1: MOV R6,#200 DE2: MOV R5,#248 DJNZ R5,$ DJNZ R6,DE2 DJNZ R7,DE1 RET END

/*单片机的最大计数频率为晶振频率的1/24,对于晶振频率为12MHZ的单片机,它所能测的最大频率为500KHZ*/

DB DB DB DB DB DB DB DB DB DB DB 77H ;0

14H ;1 0B3H ;2 0B6H ;3 0D4H ;4 0E6H ;5 0E7H ;6 33H ;7 0F7H ;8 0F4H ;9 00H ;灭

- 26 -

本文来源:https://www.bwwdw.com/article/skvr.html

Top