80x86微机原理实验指导.doc

上传人:牧羊曲112 文档编号:4196505 上传时间:2023-04-09 格式:DOC 页数:38 大小:823KB
返回 下载 相关 举报
80x86微机原理实验指导.doc_第1页
第1页 / 共38页
80x86微机原理实验指导.doc_第2页
第2页 / 共38页
80x86微机原理实验指导.doc_第3页
第3页 / 共38页
80x86微机原理实验指导.doc_第4页
第4页 / 共38页
80x86微机原理实验指导.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《80x86微机原理实验指导.doc》由会员分享,可在线阅读,更多相关《80x86微机原理实验指导.doc(38页珍藏版)》请在三一办公上搜索。

1、80x86微机原理与接口技术实验指导书长安大学信息学院电子通信实验室第1章 80X86 微机原理及其程序设计实验本章主要介绍汇编语言程序设计,通过实验来学习80X86 的指令系统、寻址方式以及程序的设计方法,同时掌握联机软件的使用。1.1 系统认识实验1.1.1 实验目的掌握TD-PITE 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。1.1.2 实验设备PC机一台,TD-PITE 实验装置一套。编写实验程序,将00H0FH 共16 个数写入内存3000H 开始的连续16 个存储单元中。1.1.3 实验内容1.1.4 实验步骤1. 运行Wmd8

2、6 软件,进入Wmd86 集成开发环境。2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。图1-1-1 语言环境选择界面3. 语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-1-2所示。默认文件名为Wmd861。图1-1-2 新建文件界面4. 编写实验程序,如图1-1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。图1-1-3 程序编辑界面SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDSC

3、ODE SEGMENT ASSUME CS:CODE,SS:SSTACKSTART: PUSH DS XOR AX, AX MOV DS, AX MOV CX, 16 MOV SI, 3000HAA1: MOV SI, AL INC SI INC AL LOOP AA1AA2: JMP AA2CODE ENDS END START5. 点击,编译文件,若程序编译无误,则输出如图1-1-4所示的输出信息,然后再点击进行链接,链接无误输出如图1-1-5所示的输出信息。 图1-1-4 编译输出信息界面 图1-1-5 链接输出信息界面6. 连接PC与实验系统的通讯电缆,打开实验系统电源。7. 编译、链

4、接都正确并且上下位机通讯成功后,就可以下载程序,联机调试了。可以通过端口列表中的“端口测试”来检查通讯是否正常。点击下载程序。为编译、链接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下载。起始运行语句下会有一条绿色的背景。如图1-1-6所示。图1-1-6 加载成功输出显示界面8. 将输出区切换到调试窗口,使用D0000:3000命令查看内存3000H 起始地址的数据,如图1-1-7所示。存储器在初始状态时,默认数据为CC。图1-1-7 内存地址单元数据显示9. 点击按钮运行程序,然后再点击来停止程序运行,接下来观察

5、程序运行结果,仍使用命令D0000:3000 来观察数据变化。如图1-1-8所示。图1-1-8 运行程序后数据变化显示10. 也可以通过在语句AA2: JMP AA2 处设置断点,断点显示如图1-1-9 所示,然后运行程序,当遇到断点时程序会停下来,然后观察数据。可以使用E0000:3000 来改变该地址单元的数据,如图1-1-10 所示,输入11 后,按“空格”键,可以接着输入第二个数,如22,结束输入按“回车”键。 图1-1-9 断点设置显示 图1-1-10 修改内存单元数据显示界面实验例程文件名为Wmd861.asm。1.1.5 操作练习编写程序,将内存3500H 单元开始的8 个数据复

6、制到3600H 单元开始的数据区中。通过调试验证程序功能,使用E命令修改3500H单元开始的数据,运行程序后使用D命令查看3600H单元开始的数据。SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:SSTACKSTART: PUSH DS XOR AX, AX MOV DS, AX MOV SI, 3500H MOV DI, 3600H MOV CX, 8AA1: MOV AL, SI MOV DI, AL INC SI INC DI LOOP AA1AA2: JMP AA2CODE ENDS

7、 END STARTD0000:35000000:3500 12 CC CC CC CC CC CC CC0000:3508 CC CC CC CC CC CC CC CC0000:3510 CC CC CC CC CC CC CC CC0000:3518 CC CC CC CC CC CC CC CC0000:3520 CC CC CC CC CC CC CC CC0000:3528 CC CC CC CC CC CC CC CC0000:3530 CC CC CC CC CC CC CC CC0000:3538 CC CC CC CC CC CC CC CC0000:3540 CC CC

8、CC CC CC CC CC CC0000:3548 CC CC CC CC CC CC CC CCE0000:35000000:3500=12_23B 0000:3501=CC_DDE0000:35000000:3500=23_ 0000:3501=DD_12BE0000:35010000:3501=12_1BE0000:35010000:3501=1B_D0000:36000000:3600 12 CC CC CC CC CC CC CC0000:3608 CC CC CC CC CC CC CC CC0000:3610 CC CC CC CC CC CC CC CC0000:3618 C

9、C CC CC CC CC CC CC CC0000:3620 CC CC CC CC CC CC CC CC0000:3628 CC CC CC CC CC CC CC CC0000:3630 CC CC CC CC CC CC CC CC0000:3638 CC CC CC CC CC CC CC CC0000:3640 CC CC CC CC CC CC CC CC0000:3648 CC CC CC CC CC CC CC CC1.2 数制转换实验1.2.1 实验目的1. 掌握不同进制数及编码相互转换的程序设计方法,加深对数制转换的理解;2. 熟悉程序调试的方法。1.2.2 实验设备P

10、C机一台,TD-PITE 实验装置一套。1.2.3 实验内容及步骤计算机输入设备输入的信息一般是由ASCII 码或BCD 码表示的数据或字符,CPU 一般均用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD 码或七段显示码等。因此,在应用软件中,各类数制的转换是必不可少的。计算机与外设间的数制转换关系如图1-2-1所示,数制对应关系如表1-2-1所示图1-2-1 数制转换关系表1-2-1 数制对应关系表续表1-2-11. 将ASCII码表示的十进制数转换为二进制数十进制表示为: (1)Di代表十进制数0,1,2,9;上式转换为: (2)由式(2)可归纳

11、十进制数转换为二进制数的方法:从十进制数的最高位Dn 开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。程序流程图如图1-2-2 所示。实验参考程序如下。实验程序清单(例程文件名:A2-1.ASM)SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSDATA SEGMENTSADD DB 30H,30H,32H,35H,36H ;十进制数:00256DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV AX, OFFSET SADDMOV SI, AX

12、MOV BX, 000AHMOV CX, 0004HMOV AH, 00HMOV AL, SISUB AL, 30HA1: IMUL BXMOV DX, SI+01AND DX, 00FFHADC AX, DXSUB AL, 30HINC SILOOP A1A2: JMP A2CODE ENDSEND START图1-2-2 转换程序流程图实验步骤(1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系统;(2)待转换数据存放于数据段,根据自己要求输入,默认为30H,30H,32H,35H,36H;(3)运行程序,然后停止程序;(4)查看AX 寄存器,即为转换结果,应为:0100 ;(5)

13、反复试几组数据,验证程序的正确性。2. 将十进制数的ASCII码转换为BCD 码从键盘输入五位十进制数的ASCII码,存放于3500H起始的内存单元中,将其转换为BCD 码后,再按位分别存入350AH 起始的内存单元内。若输入的不是十进制的ASCII码,则对应存放结果的单元内容为“FF”。由表1-2-1可知,一字节ASCII码取其低四位即变为BCD 码。实验程序清单(例程文件名:A2-2.ASM)SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AX,0000HMOV DS,AXMOV

14、 CX, 0005H ;转换位数MOV DI, 3500H ;ASCII码首地址A1: MOV BL, 0FFH ;将错误标志存入BLMOV AL, DICMP AL, 3AHJNB A2 ;不低于3AH则转A2SUB AL, 30HJB A2 ;低于30H则转A2MOV BL, ALA2: MOV AL, BL ;结果或错误标志送入ALMOV DI+0AH,AL ;结果存入目标地址INC DILOOP A1A3: JMP A3CODE ENDSEND START实验步骤(1)自己绘制程序流程图,然后编写程序,编译、链接无误后装入系统;(2)在3500H3504H 单元中存放,即:键入E350

15、0 后,输入31,32,33,34,35;(3)运行程序,然后停止程序运行;(4)键入D350A,显示运行结果,应为:0000:350A 01 02 03 04 05 CC (5)反复测试几组数据,验证程序功能。3. 将十六位二进制数转换为ASCII码表示的十进制数十六位二进制数的值域为065535,最大可转换为五位十进制数。五位十进制数可表示为:N = D4 104 + D3 103 + D2 102 + D1 10 + D0Di:表示十进制数09将十六位二进制数转换为五位ASCII 码表示的十进制数,就是求D1D4,并将它们转换为ASCII 码。自行绘制程序流程图,编写程序可参考例程。例程

16、中源数存放于3500H、3501H中,转换结果存放于3510H3514H 单元中。实验程序清单(例程文件名:A2-3.ASM)SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV SI,3500H ;源数据地址MOV DX,SIMOV SI,3515H ;目标数据地址A1: DEC SIMOV AX,DXMOV DX,0000HMOV CX,000AH ;除数10DIV CX ;得商送AX, 得余数送DXXCHG AX,DXADD AL,30H ;得Di的ASCII码MOV SI,AL ;

17、存入目标地址CMP DX,0000HJNE A1 ;判断转换结束否,未结束则转A1A2: CMP SI,3510H ;与目标地址得首地址比较JZ A3 ;等于首地址则转A3,否则将剩余地址中填30HDEC SIMOV AL,30HMOV SI,ALJMP A2A3: JMP A3CODE ENDSEND START实验步骤(1)编写程序,经编译、链接无误后,装入系统;(2)在3500H、3501H 中存入0C 00;(3)运行程序,然后停止运行;(4)检查运行结果,键入D3510,结果应为:30 30 30 31 32;(5)可反复测试几组数据,验证程序的正确性。4. 十六进制数转换为ASCI

18、I码由表1-2-1 中十六进制数与ASCII 码的对应关系可知:将十六进制数0H09H 加上30H后得到相应的ASCII码,AHFH 加上37H 可得到相应的ASCII码。将四位十六进制数存放于起始地址为3500H 的内存单元中,把它们转换为ASCII 码后存入起始地址为350AH 的内存单元中。自行绘制流程图。实验程序清单(例程文件名为A2-4.ASM)SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV CX,0004HMOV DI,3500H ;十六进制数源地址MOV DX,DIA1

19、: MOV AX,DXAND AX,000FH ;取低4位CMP AL,0AHJB A2 ;小于0AH则转A2ADD AL,07H ;在AFH之间,需多加上7HA2: ADD AL,30H ;转换为相应ASCII码MOV DI+0DH,AL ;结果存入目标地址DEC DIPUSH CXMOV CL,04HSHR DX,CL ;将十六进制数右移4位POP CXLOOP A1A3: JMP A3CODE ENDSEND START实验步骤(1)编写程序,经编译、链接无误后装入系统;(2)在3500H、3501H 中存入四位十六进制数203B,即键入E3500,然后输入3B 20;(3)先运行程序,

20、然后再停止运行;(4)键入D350A,显示结果为:0000:350A 32 30 33 42 CC ;(5)反复输入几组数据,验证程序功能。5. BCD码转换为二进制数将四个二位十进制数的BCD 码存放于3500H 起始的内存单元中,将转换的二进制数存入3510H 起始的内存单元中,自行绘制流程图并编写程序。实验程序清单(例程文件名为:A2-5.ASM)SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: XOR AX, AXMOV CX, 0004HMOV SI, 3500HMOV DI, 35

21、10HA1: MOV AL, SIADD AL, ALMOV BL, ALADD AL, ALADD AL, ALADD AL, BLINC SIADD AL, SIMOV DI, ALINC SIINC DILOOP A1A2: JMP A2CODE ENDSEND START实验步骤(1)编写程序,经编译、链接无误后装入系统;(2)将四个二位十进制数的BCD 码存入3500H3507H 中,即:先键入E3500,然后输入01 02 03 04 05 06 07 08;(3)先运行程序,然后停止运行;(4)键入D3510 显示转换结果,应为:0C 22 38 4E;(5)反复输入几组数据,验

22、证程序功能。1.2.4 思考题1. 实验内容1 中将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少?为什么?2. 将一个十六位二进制数转换为ASCII码十进制数时,如何确定Di的值?3. 在十六进制转换为ASCII码时,存转换结果后,为什么要把DX 向右移四次?4. 自编ASCII 码转换十六进制、十六进制小数转换二进制、二进制转换BCD 码的程序,并调试运行。1.4循环程序设计实验1.4.1 实验目的1. 加深对循环结构的理解;2. 掌握循环结构程序设计的方法以及调试方法。1.4.2 实验设备PC机一台,TD-PITE 实验装置一套。1.4.3 实验内容及

23、步骤1. 计算S1233445N(N1),直到N(N1)项大于200为止。编写实验程序,计算上式的结果,参考流程图如图1-5-1所示。实验程序清单(例程文件名为:A5-1.ASM)SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX,0001HMOV BL,02HA1: MOV AL,BLINC BLMUL BLADD DX,AX ;结果存于DX中CMP AX,00C8H ;判断N(N+1)与200的大小JNA A1A2: JMP A2CODE ENDSEND START图1-4-1

24、 程序流程图实验步骤(1)编写实验程序,编译、链接无误后装入系统; (2)运行程序,然后再停止程序运行;(3)运算结果存储在寄存器DX 中,查看结果是否正确; 045F(4)可以改变N(N1)的条件来验证程序功能是否正确,但要注意,结果若大于FFFFH 将产生数据溢出。0FFFH 657FH FFFFH2. 求某数据区内负数的个数设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1 的数据的个数累加起来,即得到区内所包含负数的个数。实验程序流程图如图1-5-2所示。实

25、验程序清单(例程文件名为: )SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DI, 3000H ;数据区首地址MOV CL, DI ;取数据个数XOR CH, CHMOV BL, CHINC DI ;指向第一个数据A1: MOV AL, DITEST AL, 80H ;检查数据首位是否为1JE A2INC BL ;负数个数加1A2: INC DILOOP A1MOV DI, BL ;保存结果A3: JMP A3CODE ENDSEND START图1-4-2 程序流程图实验步骤(1

26、)按实验流程编写实验程序;(2)编译、链接无误后装入系统;(3)键入E3000,输入数据如下:300006 (数据个数)300112300288300382300490300522300633(4)先运行程序,然后停止程序运行;(5)查看3007 内存单元或寄存器BL 中的内容,结果应为03;D0000:30070000:3007 03 08 09 0A 0B 0C 0D 0E0000:300F 0F CC CC CC CC CC CC CC0000:3017 CC CC CC CC CC CC CC CC0000:301F CC CC CC CC CC CC CC CC0000:3027 C

27、C CC CC CC CC CC CC CC0000:302F CC CC CC CC CC CC CC CC0000:3037 CC CC CC CC CC CC CC CC0000:303F CC CC CC CC CC CC CC CC0000:3047 CC CC CC CC CC CC CC CC0000:304F CC CC CC CC CC CC CC CC(6)可以进行反复测试来验证程序的正确性。1.6 显示程序实验1.6.1 实验目的1. 了解INT 10H 各功能模块的作用及用法;2. 掌握字符方式下PC机显示器显示控制。1.6.2 实验设备PC机一台,TD-PITE 实验

28、装置一套。1.6.3 实验内容编写实验程序,在显示器上的输出窗口显示AZ共26 个大写英文字母。显示I/O 功能调用使用说明如下:INT 10 使用说明入口:AH00H,AL01H功能:清屏入口:AH01H,AL数据功能:写AL中的数据到显示屏上入口:AH06H,DS:BX字串首地址,且字符串尾用00H 填充功能:显示一字串,直到遇到00H 为止实验程序清单(例程文件名为:A9-1.ASM)SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV CX,001AHMOV BL,41H ;A的A

29、SCII码值MOV AH,01HA1: MOV AL,BLINT 10H ;功能调用INC BLPUSH CXMOV CX,0FFFFHA2: LOOP A2POP CXDEC CXJNZ A1A3: JMP A3CODE ENDSEND START1.6.4 实验步骤1. 编写实验程序,经编译、链接无误后装入系统;2. 运行实验程序,观察实验结果;ABXDEFGHIJKLMNOPQRSTUVWXYZ3. 修改实验程序,在显示器上显示GOOD AFTERNOON,要求使用AH06 功能(显示一字符串功能块)完成。SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK EN

30、DSDATA SEGMENTZIFU DB GOOD AFTERNOON00HDATA ENDSCODE SEGMENTASSUME CS:CODE START: MOV AX,DATAMOV DS,AXMOV BX,OFFSET ZIFUMOV CX,0010HMOV AH,06HA1: MOV AL,BLINT 10H ;功能调用PUSH CXMOV CX,0FFFFHA2: LOOP A2POP CXDEC CXJNZ A1A3: JMP A3CODE ENDSEND START第2 章 80X86 微机接口技术实验接口技术是把由处理器、存储器等组成的基本系统与外部设备连接起来,从而实现

31、CPU与外部设备通信的一门技术。微机的应用是随着外部设备的不断更新和接口技术的不断发展而深入到各行各业,任何微机应用开发工作都离不开接口的设计、选用及连接。微机应用系统需要设计的硬件是一些接口电路,所要编写的软件是控制这些接口电路按要求工作的驱动程序。因此,接口技术是微机应用中必不可少的基本技能。2.3 8259 中断控制实验2.3.1 实验目的1. 掌握8259 中断控制器的工作原理;2. 学习8259 的应用编程方法;3. 掌握8259 级联方式的使用方法。2.3.2 实验设备PC机一台,TD-PITE 实验装置一套。2.3.3 实验内容及步骤1. 中断控制器8259 简介在Intel 3

32、86EX 芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。该中断控制单元就功能而言与工业上标准的82C59A 是一致的,操作方法也相同。从片的INT连接到主片的IR2 信号上构成两片8259 的级联。在TD-PITE 实验系统中,将主控制器的IR6、IR7 以及从控制器的IR1 开放出来供实验使用,主片8259 的IR4 供系统串口使用。8259 的内部连接及外部管脚引出如图2-3-1所示。图2-3-1 8259内部连续及外部管脚引出图表2-3-1 列出了中断控制单元的寄存器相关信息。表2-3-1 ICU寄存器列表初始化命令字1 寄存器(IC

33、W1)说明见图2-3-2所示。图2-3-2 初始化命令字1寄存器初始化命令字2 寄存器(ICW2)说明见图2-3-3所示。图2-3-3 初始化命令字2寄存器初始化命令字3 寄存器(ICW3)说明,主片见图2-3-4,从片见图2-3-5。图2-3-4 主片初始化命令字3寄存器图2-3-5 从片初始化命令字3寄存器初始化命令字4 寄存器(ICW4)说明见图2-3-6。图2-3-6 初始化命令字4寄存器操作命令字1 寄存器(OCW1)说明见图2-3-7。图2-3-7 操作命令字1寄存器操作命令字2 寄存器(OCW2)说明如图2-3-8所示。图2-3-8 操作命令字2寄存器操作命令字3 寄存器(OCW

34、3)说明如图2-3-9所示。图2-3-9 操作命令字3寄存器查询状态字(POLL)说明如图2-3-10 所示。图2-3-10 程序状态字寄存器在对8259 进行编程时,首先必须进行初始化。一般先使用CLI 指令将所有的可屏蔽中断禁止,然后写入初始化命令字。8259有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。在初始化主片8259 时,写入初始化命令字的顺序是:ICW1、ICW2、ICW3、然后是ICW4,初始化从片8259 的顺序与初始化主片8259 的顺序是相同的。系统启动时,主片8259 已被初始化,且4 号中断源(IR4)提供给与PC 联机的串口通信使用,其它中断源

35、被屏蔽。中断矢量地址与中断号之间的关系如下表所示:2. 8259 单中断实验实验接线图如图2-3-11所示,单次脉冲输出与主片8259 的IR7 相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。图2-3-11 8259单中断实验接线图实验程序清单SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: PUSH DSMOV AX, 0000HMOV DS, AXMOV AX, OFFSET MIR7 ;取中断入口地址MOV SI, 003CH ;中断矢量地址MOV SI, A

36、X ;填IRQ7的偏移矢量MOV AX, CS ;段地址MOV SI, 003EHMOV SI, AX ;填IRQ7的段地址矢量CLIPOP DS;初始化主片8259MOV AL, 11HOUT 20H, AL ;ICW1MOV AL, 08HOUT 21H, AL ;ICW2MOV AL, 04HOUT 21H, AL ;ICW3MOV AL, 01HOUT 21H, AL ;ICW4MOV AL, 6FH ;OCW1OUT 21H, ALSTIAA1: NOPJMP AA1MIR7: STICALL DELAYMOV AX, 0137HINT 10H ;显示字符7MOV AX, 0120H

37、INT 10HMOV AL, 20HOUT 20H, AL ;中断结束命令IRETDELAY: PUSH CXMOV CX, 0F00HAA0: PUSH AXPOP AXLOOP AA0POP CXRETCODE ENDSEND START实验步骤(1)按图2-3-11 连接实验线路;(2)编写实验程序,经编译、链接无误后装入系统;(3)运行程序,重复按单次脉冲开关KK1,显示屏会显示字符“7”以说明响应了中断。2.5 8254 定时/计数器应用实验2.5.1 实验目的1. 掌握8254 的工作方式及应用编程;2. 掌握8254 典型应用电路的接法。2.5.2 实验设备PC机一台,TD-PI

38、TE 实验装置一套,示波器一台。2.5.3 实验内容1. 计数应用实验。编写程序,应用8254 的计数功能,使用单次脉冲模拟计数,使每当按动KK15 次后,产生一次计数中断,并在屏幕上显示一个字符M。2. 定时应用实验。编写程序,应用8254 的定时功能,产生一个1ms 的方波。2.5.4 实验原理8254 是Intel 公司生产的可编程间隔定时器。是8253 的改进型,比8253 具有更优良的性能。8254 具有以下基本功能:(1)有3 个独立的16 位计数器;(2)每个计数器可按二进制或十进制(BCD)计数;(3)每个计数器可编程工作于6 种不同工作方式;(4)8254 每个计数器允许的最

39、高计数频率为10MHz(8253 为2MHz);(5)8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容;(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为:n=fCLKifOUTi、其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。图2-5-1 是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。8254 的工作方式如下述:(1)方式0:计数到0 结束输出正跃变信号方式。(2)方式1:硬件可重触发单稳方式。(3)方式2:频率发生器方式。(4)方式3:方波发生器。(5)方式

40、4:软件触发选通方式。(6)方式5:硬件触发选通方式。图2-5-1 8254的内部接口和引脚8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表2-5-1所示。表2-5-1 8254的方式控制字格式表2-5-2 8254读出控制字格式表2-5-3 8254状态字格式2.5.5 实验步骤1. 计数应用实验编写程序,将8254 的计数器0 设置为方式3,计数值为十进制数4,用单次脉冲KK1作为CLK0 时钟,OUT0 连接MIR7,每当KK1按动5 次后产生中断请求,在屏幕上显示字符

41、“M”。实验步骤:(1)实验接线如图2-5-2所示;(2)编写实验程序,经编译、链接无误后装入系统;(3)运行程序,按动KK1产生单次脉冲,观察实验现象;(4)改变计数值,验证8254 的计数功能。图2-5-2 8254计数应用实验接线图实验程序清单A8254 EQU 06C0HB8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HSSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE, SS:SSTACKSTART: PUSH DSMOV AX, 0000HMOV DS

42、, AXMOV AX, OFFSET IRQ7 ;取中断入口地址MOV SI, 003CH ;中断矢量地址MOV SI, AX ;填IRQ7的偏移矢量MOV AX, CS ;段地址MOV SI, 003EHMOV SI, AX ;填IRQ7的段地址矢量CLIPOP DS;初始化主片8259MOV AL, 11HOUT 20H, AL ;ICW1MOV AL, 08HOUT 21H, AL ;ICW2MOV AL, 04HOUT 21H, AL ;ICW3MOV AL, 01HOUT 21H, AL ;ICW4MOV AL, 6FH ;OCW1OUT 21H, AL;8254MOV DX, CON8254MOV AL, 10H ;计数器0,方式0OUT DX, ALMOV DX, A8254MOV AL, 04HOUT DX, ALSTIAA1: JMP AA1IRQ7: MOV DX, A8254MOV AL, 04HOUT DX, AL

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号