您的当前位置:首页正文

微机原理课程设计波形发生器

来源:华佗健康网


微机原理课程设计波形发生器18页)

--本页仅作为文档封面,使用时请直接删除即可-- --内页可以根据需求调整合适字体及大小--

(微机原理课程设计

波形发生器

基本要求:

(1) 通过按键选择波形,波形选择(方波、三角波)。8255 A 和0832 (2) 通过按键设定波形的频率,同时波形频率在数码管上显示。8255A (3) 频率设定后,通过8253精确计时来设置波形宽度大小,比如方波的占空

比。

(4) 8259A产生中断,用示波器显示输出波形。

附加要求:

(1) 通过按键可以增大或者降低频率; (2) 显示正弦波。

目 录

一 理论部分

课程设计的目的……………………………………………………………………… 2 课程设计要求与内容………………………………………………………………… 2 总体设计方案………………………………………………………………………… 2

(1)设计思想及方案论证………………………………………………………………2 (2)总体设计方案框图…………………………………………………………………3 系统硬件设计………………………………………………………………………… 4 系统软件设计………………………………………………………………………… 5

二 实践部分

系统硬件原理简介…………………………………………………………………… 6 程序调试……………………………………………………………………………… 9 软件系统的使用说明………………………………………………………………… 9

三 课程设计结果分析

实验结果……………………………………………………………………………… 10 结果分析……………………………………………………………………………… 11

四 课程设计总结……………………………………………………………………… 11 五 附录

源程序及说明………………………………………………………………………… 12

1

波形发生器

一 理论部分

课程设计的目的

(1)综合模拟电子线路、数字电子技术和微机原理等多门专业基础课程的知识,使学生对以计算机为核心的通信、测量或控制系统有个全面了解和实践的过程。

(2)掌握常规芯片的使用方法、掌握简单微型计算机应用系统软硬的设计方法,进一步锻炼同学们在微型计算机应用方面的实际工作能力,强化本学科内容并扩展知识面。

(3)体验分析问题、提出解决方案、通过编程等手段实现解决方案、不断调试最终达到设计要求的全过程。

(4)培养学生的创造力和对专业的适应性。

课程设计的内容和要求

1、通过按键选择波形,波形选择(方波、三角波、正弦波)。8255 A 和0832 2、通过按键设定波形的频率,同时波形频率在数码管上显示。8255A

3、频率设定后,通过8253精确计时来设置波形宽度大小,比如方波的占空比。 4、8259A产生中断,用示波器显示输出波形。 5、通过按键可以增大或者降低频率;

6、画出电路原理图,说明工作原理,编写程序及程序流程图。

总体设计方案

(1)设计思想及方案论证

由于要求达到模拟信号波形发生,因此要由D/A转换芯片0832来来完成此项任务,由8253形成波形的主要做法是:先输出一个下限电平,将其保持t然后输出一个稍高的电平,在保持t,然后重复此过程,因此需要延长0832输入数据的时间间隔来改变频率。如图1信号发生波形图所示。0832输入的数据的延时可以通过软件完成,也可以通过硬件完成。由于实验要求输出的波的频率可以改变,且精确,所以选用硬件延时 +5V

0V

图1 信号发生波形图

硬件延时主要由计时器8253和中断控制器8259来实现。由8253输出的方波的高低电平,来触发8259的IR0端,8259给CPU中断信号,CPU中断来执行相应的中断子程序,中断子程序为向0832输出数据的程序,通过选择此程序可以产生锯齿波,方波,正弦波。由于0832产生的方波的频率可以控制,所以每次中断执行波形发生程序的时间间隔可以精确控制。以此来控制输出的波形频率。最后通过8255驱动LED数码显示管,实现对输入的频率的显示,由键盘直接输入波形频率,通过LED数码显示管显示。

2

(2)总体设计方案框图

总体设计就是先由8255驱动LED显示输入的频率,再通过8253定时中断,中断的子程序来执行输出,输出的信号经过信号发生器形成波形。 CLK Intel CPU DAC0832 Intel8253 8259A 8086

LED

数码显示Intel8255A 示波器

管 图2 硬件简图

3

系统硬件设计

硬件设计电路图 XD7 XD6 XD5 XD4 XD3 XD2 XD1 XD0 XIOW XIOR

IOY0 XA2

INTR XD7 XD6 XD5 XD4 XD3 XD2 XD1 XD0 XIOW XIOR IOY3 XA3 XA2 XD7 XD6 XD5 XD4 XD3 XD2 XD1 XD0 XIO W IOY2

系 统 总 线 系 统 总 线 系 统 总 线 D7 D6 D5 D4 D3 D2 D1 D0 WR RD CS A0 INT D7 D6 D5 D4 D3 D2 D1 D0 WR RD CS A1 A0 PB0 PB1 PB2 PB3 PA0 PBPA1 PA2 PA3 PA4 PA5 D7 D6 D5 D4 D3 D2 D1 D0 A B C D E F G DP X1 X2 X3 X4 X5 X6 D7 D6 XD7 XD6

系 统 总 线 IR0 +5V 8259A OUT0 CLK0 GATE0 8254 D5 D4 D3 D2 D1 D0 WR RD CS A1 A0 XD5 XD4 XD3 XD2 XD1 XD0 XIOW XIOR IOY1 XA3 XA2 LED显示器 8255A DAC0832 WR CS OUT 示波器 图3 硬件设计电路

4

系统软件设计

软件设计流图

开初始化8259、8255、输入频率并将计算所得计数初值 主程序(无限循环程序) N 有中断 Y 响应中断,保护进入中断程序,向0832输结束中断 关电源,退出系图4 软件设计流图

5

二 实践部分

系统硬件原理简介

(一)可编程并行I/O接口芯片8255A

8255A可编程并行I/O接口芯片,为40个引脚的双列直插芯片 8255A具有3个相互独立的输入/输出通道端口,三种工作方式。 方式0——基本输入输出方式; 方式1——选通输入/出方式;

方式2——双向选通输入/输出方式;

图5 8255A引脚图

引脚功能:

RESET:复位信号,高电平有效,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。

RD:读命令信号输入,低电平有效,用来控制数据由8255A读 WR:写命令信号输入,地点平有效,用来控制写到8255A CS:片选信号输入,通过译码器与地址总线相连

D0~D7:三态双向数据总线,8255与CPU数据传送的通道,实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。

(二)可编程定时/计数器Intel8253

Intel8253是一种能够完成定时和计数的芯片,8253内部有3个16位计数器通道,通过对他们编程,每个计数器可以按照6种工作方式工作,并且都可以按2或10进制格式进行计数,最高频率为2HZ。8253还可以用于许多其他场合,比如可作编程方波发生器,分频器等。

6

图6 8253引脚图 引脚功能:

1、数据缓冲总线

数据总线缓冲器是8253与系统总线相连时使用的接口电路,它由8位双相三态缓冲器构成,CPU用输入输出指令对8253进行读写操作的信息都由8位数据总线传输:

(1)CPU在对8253进行初始化编程时,向他写入控制字。 (2)CPU向某一计时器写入计数初值。 (3)从计数器读出计数值。 2、读写控制逻辑

读写控制逻辑接受系统控制总线送来的输入信号,经由组合后形成控制信号,对各部分操作进行控制。可接受的信号有:

(1)CS片选,低电平有效,由数据总线经由IO端口译码电路产生。只有CS低电平时,CPU才能对8253进行读写操作。

(2)RD读信号,低电平有效,当RD位地电平时,表示CPU正在读取所选定的计数器的通道的内容。

(3)WR写信号,低电平有效。当WR为低电平时,表示CPU正在将计数器初值写入所选中的通道口中,或者将控制字写入内部寄存器中。

(4)A1A2 端口选择信号,改变它的值,来选择8253内三个计数器通道。

如果8253和与8位数据总线的微机相连,只要将A1A0分别与地址总线相联。如果系统采用的是8086CPU,则数据总线为16位,传输数据时,总是将低8位数据送往偶地址,将高8位送往奇地址。 3、计数器

8253内部包含三个完全相同俄计数器定时器通道,对3个通道的操作是完全独立的。每个通道都包含1个8位的控制字寄存器,1个16位的减寄存器,和一个锁存器,执行部件是一个16位的减法计数器。每个通道工作时,对输入到CLK引脚上的脉冲按2进制或10 进制

7

格式进行计数。每当输入一个时钟脉冲,计数器减1,当计数器的值减为0时从,从OUT引脚输出一个脉冲信号。GATE引脚上的门控制信号,决定他是否允许计数。

(三)可编程中断控制器8259A

8259A是8086/8088系列的可编程中断控制器,8259A为28个引脚的双列直插芯片。

图7 8259A引脚图 主要功能:

(1)据8级优先级控制,通过联级可以扩展到64级优先控制。 (2)每一级中断可由程序单独屏蔽或允许。 (3)可提供中断类型号传送给CPU。

(4)可以通过编程选择多种不同工作方式。 引脚功能:

D7-D0:双向数据线,三态,与数据总线相连。

IR7-IR0:外设的中断请求信号输入端,输入,中断请求:可以是电平触发,或者边缘触发。

RD:读命令信号,输入,低电平有效,用来控制数据由8259A读 WR:写命令信号,输入,地点平有效,用来控制写到8259 CS:片选信号,输入,通过译码器与地址总线相连

INT:向CPU发出中断请求信号,输出,与CPU的INTR相连 INTA:CPU给8259A的中断响应信号,输入。

(四)D/A转换器DAC0832

NSC公司生产的DAC0832,是一种内部带有数据输入寄存器的8位D/A转化器,采用CMOS工艺制成,芯片内部R-2R梯形电阻网络,用于对参考电压产生的电压进行分流,完成模数转换,转换结果以一组差动电流 IOUT1、IOUT2输出。 引脚的功能:

VREF : 参考电压输入端。根据需要一定大小的电压,由于它是转换的基准,要求数值正确,稳定性好。

8

VCC:工作电压输入端。

AGAN为模拟地,DGAN为数字地。在模拟电路中,所有的模拟地要连在一起然后将模拟地,数字地连接到一个公共接地点。

DI7-DI0:数据输入。可直接连接到数据总线。

IOUT1IOUT2:互补的电流输出端。为了输出模拟电压,需加转换电路。

图8 DAC0832引脚图

程序调试

由于此次课程设计涉及内容较多程序较长,所以不适合采用整体调试的方式。因此,采用先逐次调试独立功能模块,再调试组合模块,最后调试整体程序的方法。具体过程如下所示:

1、调试0832产生三种波形程序 2、调试输入频率计算计数初值程序 3、调试8253输出方波程序 4、调试8259产生中断响应程序

5、调试8255通过LED显示数据程序

6、调试输入频率计算计数初值并通过LED显示数据程序 7、调试8253使8259产生中断的程序 8、调试整体程序

软件系统的使用说明

通过键盘输入要输出的波形的频率,然后选择输出的波形,LED数码显示管上可以显示输入的频率,模拟示波器显示DAC0832 AUTO端口输出的波形。

9

三 课程设计结果分析

实验结果

图9 程序运行截图

图10 矩形波

10

图11 三角波

图12 正弦波

结果分析

运行程序时,分别产生100HZ、500HZ、1000HZ、1500HZ、1600HZ的波形,结果发现100HZ--1500HZ的波形频率与所设定的频率一致或有极小的偏差,但从1600HZ开始误差逐渐变大,远远偏离所设定的频率,且小于所设定频率。究其原因是:执行中断程序的时间与中断周期的比值越来越大,或者说随着频率增大执行中断响应的时间对输出波形频率的影响越大。所以,频率越高误差越大。

改进方式:精简中断服务程序,减小程序执行时间;在0832输出端加上倍频器,减小0832的输出频率,以此降低误差。

四 课程设计总结

在这次实习中,我巩固了微机课中所学的知识,了解了各种芯片的的用法,各个接口的名称和功能。进一步锻炼了在微型计算机应用方面的实际工作能力,强化了对微机原理学科内容的认识并扩展了知识面。通过设计实验,使我掌握了模拟量 输入/输出通道的设计,常用

11

控制程序的设计方法,数据处理及非线性补偿技术,以及数字控制器的设计方法。 本设计从几个基础的部分着手总结综合运用各种资料最后完成一个数字信号发生器系统。

通过这次课程设计使我懂得了理论与实际相结合的重要性,只有把所学的理论知识与实践相结 合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。而且在做课程设计的过程中,不仅是考验自己所学的《微机原理与接口技术》知识,更是要锻炼自己的分析问题的能力和解决实际问题的能力,而在在此次课程设计过程中得到了充分的体现。

在此次设计中体也会到了交流知识的重要性,在千篇一律的设计中,显示自己的特色,在实用 性和执行效率间取得平衡,是设计的关键所在。通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我更加深刻的了解微机原理与接口技术,以及在常用 编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型 人才打下良好的基础。

五 附录

源程序及说明

;****************根据查看端口资源修改下列符号值******************* IOY0 EQU 3000H ;片选IOY0对应的端口始地址

MY8259_ICW1 EQU IOY0+00H ;实验系统中8259的ICW1端口地址 MY8259_ICW2 EQU IOY0+04H ;实验系统中8259的ICW2端口地址 MY8259_ICW3 EQU IOY0+04H ;实验系统中8259的ICW3端口地址 MY8259_ICW4 EQU IOY0+04H ;实验系统中8259的ICW4端口地址 MY8259_OCW1 EQU IOY0+04H ;实验系统中8259的OCW1端口地址 MY8259_OCW2 EQU IOY0+00H ;实验系统中8259的OCW2端口地址 MY8259_OCW3 EQU IOY0+00H ;实验系统中8259的OCW3端口地址 ;*************************************************************** IOY1 EQU 3040H ;片选IOY1对应的端口始地址 MY8254_COUNT0 EQU IOY1+00H*4 ;8254计数器0端口地址 MY8254_COUNT1 EQU IOY1+01H*4 ;8254计数器1端口地址 MY8254_COUNT2 EQU IOY1+02H*4 ;8254计数器2端口地址 MY8254_MODE EQU IOY1+03H*4 ;8254控制寄存器端口地址

;*************************************************************** IOY2 EQU 3080H ;片选IOY2对应的端口始地址 MY8255_A EQU IOY2+00H*4 ;8255的A口地址 MY8255_B EQU IOY2+01H*4 ;8255的B口地址 MY8255_C EQU IOY2+02H*4 ;8255的C口地址

MY8255_MODE EQU IOY2+03H*4 ;8255的控制寄存器地址

;*************************************************************** IOY3 EQU 30C0H ;片选IOY3对应的端口始地址

DA0832 EQU IOY3+00H*4 ;DA0832的端口地址

;***************************************************************

12

STACK1 SEGMENT STACK DW 256 DUP() STACK1 ENDS

DATA1 SEGMENT

SINBUF DB 80H,8CH,98H,0A5H,0B0H,0BCH,0C7H,0D1H ;SINBUF正弦波64点采样值 DB 0DAH,0E2H,0EAH,0F0H,0F6H,0FAH,0FDH,0FFH DB 0FFH,0FDH,0FAH,0F6H,0F0H,0EAH,0E2H,0DAH DB 0D1H,0C7H,0BCH,0B0H,0A5H,98H,8CH,80H DB 7FH,73H,67H,5AH,4FH,43H,38H,2EH DB 25H,1DH,15H,0FH,09H,05H,02H,00H DB 00H,02H,05H,09H,0FH,15H,1DH,25H DB 2EH,38H,43H,4FH,5AH,67H,73H,7FH

SANBUF DB 00H,08H,10H,18H,20H,28H,30H,38H ;SANBUF三角波64点采样值 DB 40H,48H,50H,58H,60H,68H,70H,78H

DB 80H,88H,90H,98H,0A0H,0A8H,0B0H,0B8H

DB 0C0H,0C8H,0D0H,0D8H,0E0H,0E8H,0F0H,0F8H DB 0F8H,0F0H,0E8H,0E0H,0D8H,0D0H,0C8H,0C0H DB 0B8H,0B0H,0A8H,0A0H,98H,90H,88H,80H DB 78H,70H,68H,60H,58H,50H,48H,40H DB 38H,30H,28H,20H,18H,10H,08H,00H

FANBUF DB 32 DUP(0),32 DUP(0FFH) ;FANBUF方波64点采样值

LEDTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;共阴极数码管0-F对应输入码值 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

MES DB 'Press any key to exit!',0AH,0DH,0AH,0DH,'$' ;提示语任意按键退出DOS 系统 MESS1 DB 0DH,0AH,'SQUARE-------------1',0DH,0AH ;功能键提示语 DB 'TRIANGLE-----------2',0DH,0AH DB 'SINE---------------3',0DH,0AH

DB 'CHANGE THE FREQZ--4',0DH,0AH DB 'EXIT---------------5',0DH,0AH,'$'

MESS2 DB 0DH,0AH,'INPUT THE FREQZ:',0Ah,0DH,'$' ;提示输入六位频率 FLAG4 DB 0H ;判断是否初次执行显示频率 FLAG5 DB 0H ;判断是否初次执行输入频率 CHOOSE DB 0H ;保存输入的功能键

JISHU DW 0H ;保存波形已经输出的频率 FREQZ DW ;保存输入的频率

COUNT DW ;保存根据输入频率所计算得的计数初值 COUNT1 DB ;计数初值低八位 COUNT2 DB ;计数初值高八位

SHUJU DB 10 DUP(0) ;保存输入频率每位的真实值 DATA1 ENDS

CODE SEGMENT

13

ASSUME CS:CODE,DS:DATA1

START: MOV AX,DATA1 ;将DATA1放入数据段 MOV DS,AX P1: CALL INPUT

MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,34H ;计数器0,方式2 OUT DX,AL

MOV DX,MY8254_COUNT0 ;装入计数初值 MOV AL,COUNT1 ;装入计数初值低字节 OUT DX,AL

MOV AL,COUNT2 ;装入计数初值高字节 OUT DX,AL

CMP FLAG5,1 ;判断是否初次执行输入频率 JZ AA ;不是则跳转到等待输入功能键

CALL DISPLY ;调用数码管显示输入频率程序 KL: CMP FLAG4,1 ;判断是否初次执行显示频率 JZ AA ;不是则跳转到等待输入功能键 LEA DX,MESS1 ;显示输入频率的提示语 MOV AH,09H INT 21H

QUERY1:MOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1 MOV AL,13H ;边沿触发、单片8259、需要ICW4 OUT DX,AL

MOV DX,MY8259_ICW2 ;初始化实验系统中8259的ICW2 MOV AL,08H OUT DX,AL

MOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4 MOV AL,01H ;非自动结束EOI OUT DX,AL

MOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1 MOV AL,0FCH ;打开IR0和IR1的屏蔽位 QUERY: MOV AH,1 ;判断是否有按键按下 INT 16H

JNZ AA ;有按键则退出

MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令 MOV AL,0CH OUT DX,AL

IN AL,DX ;读出查询字

TEST AL,80H ;判断中断是否已响应 JZ QUERY ;没有响应则继续查询 AND AL,03H CMP AL,00H

JE IR0ISR ;若为IR0请求,跳到IR0处理程序

14

JMP QUERY ;若不是则跳回继续等待

QUIT: MOV AX,4C00H ;结束程序退出 INT 21H

AA: MOV FLAG4,0H ;将标志位清零以便下次判断 MOV FLAG5,0H ;将标志位清零以便下次判断 MOV AH,01H ;输入功能键 INT 21H

MOV CHOOSE,AL ;将功能键保存 JMP QUERY1 ;跳转到等待程序

DISPLY PROC NEAR ;数码管显示程序

MOV DX,MY8255_MODE ;给8255写入控制字 MOV AX,B ;方式0,A口B口输出 OUT DX,AL

AA0: MOV AH,1 ;判断是否有按键按下 INT 16H

JNZ KL ;有按键则返回

MOV SI,OFFSET SHUJU ;将保存频率的内存地址给SI MOV AH,0FEH ;位选初值 MOV CX,0006H ;位选次数 AA1: MOV AL,AH ;AL保存位选 MOV DX , MY8255_A ;端口地址位操作 OUT DX,AL

ROL AL,01H ;下一个位地址 MOV AH,AL ;AH保存位选 MOV AL, [SI] ;[地址]取待显示内容 MOV BX ,OFFSET LEDTAB ;将数字换成显示的七段码 XLAT MOV DX , MY8255_B ;数码管输入的端口地址 OUT DX,AL

CALL DELAY ;执行延时 INC SI ;指向下一个内存单元 LOOP AA1 ;循环点亮下一个LED JMP AA0 DISPLY ENDP

IR0ISR: ;中断服务程序

MOV AL,CHOOSE ;将输入的功能键取出至AL CMP AL,'1' ;若为1输出方波 JZ SQUARE

CMP AL,'2' ;若为2输出三角波 JZ TRIANGLE

CMP AL,'3' ;若为3输出正弦波

15

JZ SINE

CMP AL,'4' ;若为4则跳到X5 JZ X5

CMP AL,5' ;若为5则退出 JZ QUIT

X5: MOV FLAG5,1 ;标志位置1 JMP P1

SQUARE: ;方波产生程序

MOV SI,JISHU ;将计数值放入SI

MOV AL,[FANBUF+SI] ;将输出的数值放入AL MOV DX,DA0832 ;将输出值写入0832 OUT DX,AL

INC SI ;指向下个输出值

CMP SI,64 ;判断是否已经输出64点 JNZ LO ;若不是则跳转L0 MOV SI,0H ;否则SI清零

LO: MOV JISHU,SI ;将计数值保存 JMP EOI ;跳转到中断结束 TRIANGLE:

MOV SI,JISHU ;将计数值放入SI

MOV AL,[SANBUF+SI] ;将输出的数值放入AL MOV DX,DA0832 ;将输出值写入0832 OUT DX,AL

INC SI ;指向下个输出值

CMP SI,64 ;判断是否已经输出64点 JNZ LO ;若不是则跳转L0 MOV SI,0H ;否则SI清零

L1: MOV JISHU,SI ;将计数值保存 JMP EOI ;跳转到中断结束 SINE:

MOV SI,JISHU ;将计数值放入SI

MOV AL,[SINBUF+SI] ;将输出的数值放入AL MOV DX,DA0832 ;将输出值写入0832 OUT DX,AL

INC SI ;指向下个输出值

CMP SI,64 ;判断是否已经输出64点 JNZ LO ;若不是则跳转L0 MOV SI,0H ;否则SI清零

L2: MOV JISHU,SI ;将计数值保存 JMP EOI ;跳转到中断结束

EOI: MOV DX,MY8259_OCW2 ;向实验系统中8259发送中断结束命令

16

MOV AL,20H OUT DX,AL JMP QUERY

INPUT PROC NEAR ;输入存储程序 XOR DX,DX ;DX清零 XOR CX,CX ;CX清零

MOV DX,OFFSET MESS2 ;提示输入频率 MOV AH,09H INT 21H

MOV DL,0DH ; MOV AH,02H INT 21H

MOV DL,0AH MOV AH,02H INT 21H

MOV SI,OFFSET SHUJU ;SI MOV DI,SI ;DILL: MOV AH,01H ; INT 21H

CMP AL,' ' ; JZ LL1

SUB AL,30H ; MOV [SI],AL ; INC SI ; JMP LL

LL1: DEC SI ; MOV AX,0H ;AX MOV CX,0AH ;CX DEC DI ;DI MOV DX,0H ;DXLL2: INC DI ;DI MUL CX ;AX ADD AL,[DI] ; ADC AH,0H ;AH CMP DI,SI ; JNZ LL2 ; MOV FREQZ,AX ; MOV DX,00H ;DX MOV AX,7080H ;AX DIV FREQZ ; MOV COUNT,AX ;换行 指向数据起始地址 指向数据起始地址 输入数据 若为空格则结束输入否则继续 将输入值变为真实值 将数据存入内存 指向下一个内存空间 指向数据最后一个有效地址 清零

存入乘数10 自减一次 清零

指向数据起始地址 内容乘十

加上DI所指向的内容 加上进位

判断是否所有数据都以计算完 否,则继续

将计算结果存入FREQZ中清零

置入除数 计算计数初值

计数初值存入COUNT

17

MOV COUNT1,AL ;低字节存入COUNT1 MOV COUNT2,AH ;高字节存入COUNT1 RET

INPUT ENDP

DELAY PROC NEAR

DLY: PUSH CX ;CX入栈 MOV CX,0FFFH ;CX装入初值 DLY0: LOOP DLY0 ;循环DLYO POP CX ;CX RET

DELAY ENDP CODE ENDS END START

出栈 18

因篇幅问题不能全部显示,请点此查看更多更全内容