微机原理完整实验报告+程序

说明: gdut

实验题目                  8253定时/计数器实验                

一、实验目的与要求:

    1. 学会8253芯片和微机接口原理和方法。

2. 掌握8253定时器/计数器的工作方式和编程原理。

二、实验内容:

 1、实验原理

    本实验原理图如图1所示,8253A的A0、A1接系统地址总线A0、A1,故8253A 有四个端口地址,如端口地址表1所示。8253A的片选地址为48H~ 4FH。 因此, 本实验仪中的8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字。采用8253A通道0,工作在方式3(方波发生器方式),输入时钟CLK0 为1MHZ, 输出OUTO 要求为1KHZ的方波,并要求用接在GATE0引脚上的导线是接地("0"电平)或甩空("1"电平)来观察GATE对计数器的控制作用,用示波器观察输出波形。

说明: 未命名2、 实验线路连接

    (1) 8253A芯片的CLK0引出插孔连分频输出插孔1MHZ。

    (2) 8253A的GATE0接+5V。

3、 实验步骤

    (1) 按图1连好实验线路

    (2) 运行实验程序

        1.按“调试”按钮

        2。选“窗口”“进入示波器窗口”,然后最小化 

        3.按“运行按钮”

        4.将模拟示波器窗口打开,选择“串行口2”,再按

          ctrl+F2 按钮即可看到波形                                 图1

       显示“8253-1”用示波器测量8253A的OUT2输出插孔,应有频率为1KHZ的           方波输出,幅值0~4V

三 、实验代码:

CODE SEGMENT

ASSUME CS:CODE

TCONTRO  EQU 004BH

TCON2   EQU 004AH

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA1   EQU 0500H

START:   JMP TCONT

TCONT:  CALL FORMAT                                                                                             

       CALL LEDDISP

       MOV DX,TCONTRO

       MOV AL,0B6H          ;要使用方式2,0B6H要改为0B4H

       OUT DX,AL

       MOV DX,TCON2

       MOV AL,00             ;输入频率(即时间常数)

    OUT DX,AL            ;要修改频率,只需更改送给AL的值(注意先送低8位,          

 MOV AL,10H            ;后送高8位)

       OUT DX,AL            

       HLT

LEDDISP:MOV AL,90H          ;显示数据方式命令字送8279控制字

       MOV DX,CONTPORT        ;8279命令状态口

       OUT DX,AL

       MOV BYTE PTR DS:[0600H],00       ;置显示位数初值为0

LED1:    CMP BYTE PTR DS:[0600H],07H  ;判断显示位数满8为否?

       JA  LED2                                              ;满8位转子程序返回

       MOV BL,DS:[0600H]                               ;未满8位从数据区取数

       MOV BH,0H

       MOV AL,CS:[BX+DATA1]

       MOV DX,DATAPORT                               ;8279数据口

       OUT DX,AL

       ADD BYTE PTR DS:[0600H],01H             ;显示位数加1

       JNZ LED1

LED2:    RET                                                  ;子程序返回

FORMAT: MOV BX,0                   ;显示8253---1

       MOV WORD PTR DS:[BX+0500H],4006H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],4040H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],6D4FH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],7F5BH

       RET

CODE ENDS

END  START

四、思考题

   若改用方式2,并改变时间常数,如何编写程序。

答:

,若使用方式2,根据8253控制字原理,控制字必须设置为B4H,相应的修改在代码中在上述代码中,修改时间常数的方法也在程序中注明。

说明: gdut

实验题目                  8255并行接口实验                 

一、实验目的与要求

1. 掌握8255A和微机接口方法。

2. 掌握8255A的工作方式和编程原理

二、实验内容

1、实验原理

说明: 未命名

如实验原理图1所示,PC口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。拨动K1~ K8,PB口上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。

2、实验线路连接

(1)8255A芯片PC0~ PC7插孔依次接K1~ K8。

(2)8255A芯片PB0~PB7插孔依次接L1 ~ L8。

(3)8255A的CS插孔接译码输出070H-07FH插孔。

3.实验主要仪器设备和材料

  PC机、DVCC-8086JH实验系统及连接导线

4、实验步骤

 (1) 按图1连好线路。

 (2) 运行实验程序。1。按“调试”按钮

                  2.按“运行”按钮                           

在DVCC-8086JH数码管上显示“8255-1”,同时拨动K1~K8,L1~L8会跟着亮灭

三、实验程序

CODE SEGMENT

ASSUME CS:CODE

IOCONPT EQU 0073H

IOCPT    EQU 0072H

IOBPT    EQU 0071H

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA1   EQU 0500H

START:   JMP IOLED

IOLED:  CALL FORMAT

              CALL LEDDISP

              MOV AL,89H                

              MOV DX,IOCONPT

              OUT DX,AL

              NOP                    

              NOP

              NOP

IOLED1: MOV DX,IOCPT         

              IN AL,DX

              MOV DX,IOBPT          

              OUT DX,AL

              MOV CX,0FFFFH

DELAY:  LOOP DELAY

              JMP IOLED1

LEDDISP:MOV AL,90H                  

              MOV DX,CONTPORT

              OUT DX,AL

              MOV BYTE PTR DS:[0600H],00

LED1:    CMP BYTE PTR DS:[0600H],07H

              JA  LED2

              MOV BL,DS:[0600H]

              MOV BH,0H

              MOV AL,CS:[BX+DATA1]

              MOV DX,DATAPORT

              OUT DX,AL

              ADD BYTE PTR DS:[0600H],01H

              JNZ LED1

LED2:    RET

FORMAT: MOV BX,0                         

              MOV WORD PTR DS:[BX+0500H],4006H

              ADD BX,2

              MOV WORD PTR DS:[BX+0500H],4040H

              ADD BX,2

              MOV WORD PTR DS:[BX+0500H],6D6DH

              ADD BX,2

              MOV WORD PTR DS:[BX+0500H],7F5BH

              RET

CODE ENDS

END  START

四、思考题

 试将B口与C口的功能对调(连线对调),如何编写程序

答:

  把IOLED段的89H改为82H,把IOLED1段中的IOCPT和IOBPT对换。82H(1000 0010)表示用B口输入,C口输出,均使用方式0.IOCPT和IOBPT分别对应B、C口的地址。

程序代码如下:

CODE SEGMENT

ASSUME CS:CODE

TCONTRO  EQU 004BH

TCON2   EQU 004AH

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA1   EQU 0500H

START:   JMP TCONT

TCONT:  CALL FORMAT

 CALL LEDDISP

 MOV DX,TCONTRO       ;将控制口地址给DX

 MOV AL,10110101B ;选通道二,先写低字节,后高字节,方式2,数字控制用BCD码

 OUT DX,AL          ;写控制字

 MOV DX,TCON2        ;计数器二的地址给DX

 MOV AX,10D         ;计数初值为10(十进制)

 OUT DX,AL          ;写低字节

 MOV AL,AH

 OUT DX,AL          ;写高字节

 HLT              ;停机

LEDDISP:MOV AL,90H

       MOV DX,CONTPORT

       OUT DX,AL

       MOV BYTE PTR DS:[0600H],00

LED1:    CMP BYTE PTR DS:[0600H],07H

       JA  LED2

       MOV BL,DS:[0600H]

       MOV BH,0H

       MOV AL,CS:[BX+DATA1]

       MOV DX,DATAPORT

       OUT DX,AL

       ADD BYTE PTR DS:[0600H],01H

       JNZ LED1

LED2:    RET

FORMAT: MOV BX,0

       MOV WORD PTR DS:[BX+0500H],4006H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],4040H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],6D4FH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],7F5BH

       RET

CODE ENDS

END  START

按实验要求,修改后的实验程序如上。在思考题实验中,用了方式二控制计数端口二,计数初值设为10,即当用CLK(1MHz)进行计数时,每次当计完十个时钟周期,OUT输入端就由高电平变为低电平,就是先有十个周期的高电平,接着低电平出现的只有一个时钟周期,比较短;实现将1MHz的CLK转化为1KHz的信号;

说明: gdut

实验题目                数字式时钟(电子钟)                

一、实验目的与要求

1.学习8253编程定时/计数器的工作方式

2.掌握终端控制器8259A与微处理机接口的原理和方法

3.掌握中断控制器8259A的综合应用编程

二、实验内容和要求

1.实验原理

用8253和8259实现数码管显示时钟。利用8253的定时器功能。8253有三个端口地址为48H,49H,4AH,本实验采用8253的通道2,工作在方式3(方波发生器方式)输入CLK2为1MHZ。先给8253的初始值0C350H,循环计数。即一次记数完后,自动装入初始值。输出OUT2作为8259的输入脉冲。8259有两个口地址,本实验为20H和21H,其中2H用来写ICW1,21H用来写ICW2、ICW4,本实验中8259为单片,边沿触发,采用3号中断源,即IR3和8253输出口OUT2相连,每过1/20秒接收到一个中断,向8259发出中断请求信号,如果电平信号不符合要求,则自动转到7号中断,显示"ERR",CPU响应后,在中断处理程序中,对终端次数进行记数,记满20次,把时间缓冲区中的时间加1,并将其输入到显示缓冲区,以便显示器显示更新后的时间。记数初值的计算:1/1000000*X=1/20X=50000D=0C350H(用1MHZ信号产生1/20秒方波).

2.实验线路连接

(1)8253A芯片的CLK2引出插孔连分频输出插孔IMHZ

(2)8253A的GATE2接+5V

(3)8259A的IR3插孔和8253A的OUT2插孔相连

     说明: 未命名

   图1

3.实验主要仪器设备和材料

PC机、DVCC-8086JH实验系统及连接导线

4.实验步骤

1、按图1连好线路

2、打开DVCC86H目录下的CLOCK子目录中的Eclock.asm

3、运行实验程序:?按“调试”按钮

                 ?按“运行”按钮

在DVCC-8086JH数码管上显示器“00-00-00”,然后开始计时

三、实验程序

CODE SEGMENT

ASSUME CS:CODE

INTPORT1 EQU 0020H

INTPORT2 EQU 0021H

INTQ3    EQU INTREEUP3

INTQ7    EQU INTREEUP7

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA0    EQU 0580H

DATA1    EQU 0500H

DATA2    EQU 0508H

DATA3    EQU 0518H

DATA4    EQU 0520H

        ORG 1800H

START:   JMP Tint1

Tint1:      CALL FORMAT

       CLD

       MOV DI,DATA0

       MOV CX,08H

       XOR AX,AX

       REP STOSW

       MOV SI,DATA3

       CALL LEDDISP                 

       MOV AX,0H

       MOV DS,AX

       CALL WRINTVER             

       MOV AL,13H                             ;写初始化命令字ICW1为13H

       MOV DX,INTPORT1

       OUT DX,AL

       MOV AL,08H                             ;写初始化命令字ICW2为08H

       MOV DX,INTPORT2

       OUT DX,AL

       MOV AL,09H                             ;写初始化命令字ICW4为09H

       OUT DX,AL

       MOV AL,0F7H         ;写操作控制字OCW1为F7H,即IR3开放,其他IR屏蔽

       OUT DX,AL

       MOV BYTE PTR DS:[0601H],01H    

       STI

WATING: JMP WATING

WRINTVER:MOV AX,0H

        MOV ES,AX

        MOV DI,002CH                    ;使用3号中断源 中断矢量地址为2CH~2FH

        LEA AX,INTQ3

        STOSW

        MOV AX,CS

        STOSW

        MOV DI,003CH                       

        LEA AX,INTQ7

        STOSW

        MOV AX,CS

        STOSW

        RET

INTREEUP3:CLI

         MOV AL,DS:[0601H]

         CALL CONVERS

         MOV SI,DATA0

         CALL LEDDISPD

         MOV AL,20H                         ;写操作命令字OCW2为20H,选择中断结束方式

         MOV DX,INTPORT1

         OUT DX,AL

         ADD BYTE PTR DS:[0601H],01H

         CMP BYTE PTR DS:[0601H],06H

         JNA INTRE1

         MOV SI,DATA4

         CALL LEDDISP

INTRE3:   JMP INTRE3

CONVERS:MOV BH,0H

       AND AL,0FH

       MOV BL,AL

       MOV AL,CS:[BX+DATA2]

       MOV BX,DATA0

       MOV DS:[BX],AL

       RET

INTRE1:   MOV AL,20H

         MOV DX,INTPORT1

         OUT DX,AL

         STI

         IRET

INTREEUP7: CLI

          MOV SI,DATA1

          CALL LEDDISP

          MOV AL,20H

          MOV DX,INTPORT1

          OUT DX,AL

          IRET

LEDDISP:MOV AL,90H

       MOV DX,CONTPORT

       OUT DX,AL

       MOV BYTE PTR DS:[0600H],00

LED1:     CMP BYTE PTR DS:[0600H],07H

       JA  LED2

       MOV BL,DS:[0600H]

       MOV BH,0H

       MOV AL,CS:[BX+SI]

       MOV DX,DATAPORT

       OUT DX,AL

       ADD BYTE PTR DS:[0600H],01H

       JNZ LED1

LED2:     RET

LEDDISPD:MOV AL,90H

       MOV DX,CONTPORT

       OUT DX,AL

       MOV BYTE PTR DS:[0600H],00

LEDD1:  CMP BYTE PTR DS:[0600H],07H

       JA  LEDD2

       MOV BL,DS:[0600H]

       MOV BH,0H

       MOV AL,DS:[BX+SI]

       MOV DX,DATAPORT

       OUT DX,AL

       ADD BYTE PTR DS:[0600H],01H

       JNZ LEDD1

LEDD2:  RET

FORMAT: MOV BX,0

       MOV WORD PTR DS:[BX+0500H],5050H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],0079H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],0000H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],0000H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],063FH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],4F5BH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],6D66H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],077DH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],6F7FH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],7C77H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],5E39H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],7179H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],4006H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],4040H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],6D6FH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],7F5BH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],3F5EH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],5C3FH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],6D6FH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],7F5BH

       RET

CODE ENDS

END  START

四、思考题

  查看程序中的SI寄存器是如何传递要显示的数据的。

答:将原程序中WRINTVER子程序中的

        MOV DI,002CH                    ;使用3号中断源 中断矢量地址为2CH~2FH

改为 MOV DI,0028H              ;使用2号中断源 中断矢量地址为28H~2BH

并将Tint1:子程序中的

MOV AL,0F7H         ;写操作控制字OCW1为F7H,即IR3开放,其他IR屏蔽

改为   MOV AL,0FBH  ;写操作控制字OCW1为FBH,即IR2开放,其他IR屏蔽。

此外,在MOV SI,DATA4中将时间显示缓冲区的起始地址发给SI,然后调用显示子程序,从而显示出时间。再将时间变化,再显示。

五、实验体会

通过这次实验,使我进一步对中断的使用有了更深一层的了解,对芯片的端口选择、控制字的确定和写入有了进一步的了解,对SI寄存器传递显示的数据和数码管的使用有了初步的映象,我更加了解8253、8259芯片原理的应用。经过编写程序成功运行后实现了数字时钟,实验之初,出现的问题还比较多。主要是因为预习的时候对实验原理还不是理解的很透彻,但通过后来自己的多次实践还有老师的帮助下,最终还是完成了任务。这些遇到的问题也让我意识到预习实验时,要认真思考。此次实验,同时让我进一步理解了计算机和各种外设通讯的很多原理和技术。自己的动手能力也明显增强了,通过实验,更进一步理解了课本的知识。

说明: gdut

实验题目                 D/A(数/模)转换实验               

一、实验目的与要求

熟悉DAC0832数模转换器的特性和接口方法,掌握D/A 输出程序的设计和调试方法。

二、实验内容

1、实验原理

实验原理如图 1所示,由于DAC0832有数据锁存器、选片、读、写控制信号线,故可与 8088CPU 总线直接接口。图中是只有一路模拟量输出, 且为单极型电压输出。DAC0832工作于单缓冲方式,它的ILE接+5V,/CS和/XFER相接后作为0832芯片的片选0832CS。这样, 对DAC0832执行一次写操作就把一个数据直接写入DAC寄存器、模拟量输出随之而变化。      

             说明: 未命名

2、 实验线路的连接                 

    将0832片选信号0832CS插孔和译码输出070H~07FH插孔相连。

3、 实验软件编程提示

    ? 显示方波

本实验要求在AOUT端输出方波信号,方波信号的周期由延时时间常数确定。 根据Vout =-〔VREF×(输入数字量的十进制数)〕/256,当数字量的十进制数为256(FFH)时,由于VREF =-5V,Vout = +5V。当数字量的十进制数为0(00H) 时, 由于VREF = - 5V,Vout = 0V。因此,只要将上述数字量写入DAC0832端口地址时,模拟电压就从AOUT 端输出 。

?显示锯齿波

本实验在AOUT端输出锯齿波。根据VouT=-(VERFEX(输入数字量的十进制))/256即可知道,只要将数字量0-256(00H-FFH)从0开始逐渐加1递增直至256为止,不断循环,在AOUT端会输出连续不断的锯齿波。

4、 实验主要一起设备和材料

  PC机,DVCC-8086JH实验系统及连接导线

5、实验步骤

    (1) 根据原理图正确连接好实验线路

    (2) 正确理解实验原理

(3) 运行实验程序:1.按“调试”按钮

                 2.选“窗口”下拉菜单里的“进入示波器窗口”然后将其最小化

                 3.按“运行”按钮

                 4.将模拟示波器窗口打开,选择“串行口2”,再按“Ctrl+F2”即                                                 可看到波形

在DVCC-8086JH数码管上显示“0832-1(0832-2)”,用真示波器测量DAC0832下AOUT插孔,应有方波(锯齿波)输出

三、实验代码

(方波代码)

CODE SEGMENT

ASSUME CS:CODE

DAPORT EQU 0070H

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA     EQU 0500H

START:   JMP DACONTORL

DACONTORL:CALL FORMAT

       CALL LEDDISP

       MOV DX,DAPORT

       MOV AL,00H

DACON1: OUT DX,AL

       MOV CX,0400H

DACON2: LOOP DACON2

       NOT AL

       JMP DACON1

LEDDISP:MOV AL,90H

       MOV DX,CONTPORT

       OUT DX,AL

       MOV BYTE PTR DS:[0600H],00

LED1:     CMP BYTE PTR DS:[0600H],07H

       JA  LED2

       MOV BL,DS:[0600H]

       MOV BH,0H

       MOV AL,CS:[BX+DATA]

       MOV DX,DATAPORT

       OUT DX,AL

       ADD BYTE PTR DS:[0600H],01H

       JNZ LED1

LED2:     RET

FORMAT: MOV BX,0

       MOV WORD PTR DS:[BX+0500H],4006H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],4040H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],4F5BH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],3F7FH

       ADD BX,2

       RET

CODE ENDS

END  START

(锯齿波代码)

CODE SEGMENT

ASSUME CS:CODE

DAPORT EQU 0070H

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA     EQU 0500H

START:   JMP DACONTORL

DACONTORL:CALL FORMAT

       CALL LEDDISP

       MOV DX,DAPORT

       MOV AL,00H

DACON1: OUT DX,AL

       INC AL

       MOV CX,08H

DACON2: LOOP DACON2

       JMP DACON1

LEDDISP:MOV AL,90H

       MOV DX,CONTPORT

       OUT DX,AL

       MOV BYTE PTR DS:[0600H],00

LED1:     CMP BYTE PTR DS:[0600H],07H

       JA  LED2

       MOV BL,DS:[0600H]

       MOV BH,0H

       MOV AL,CS:[BX+DATA]

       MOV DX,DATAPORT

       OUT DX,AL

       ADD BYTE PTR DS:[0600H],01H

       JNZ LED1

LED2:     RET

FORMAT: MOV BX,0

       MOV WORD PTR DS:[BX+0500H],405BH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],4040H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],4F5BH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],3F7FH

       RET

CODE ENDS

END START

四.思考题

编写一个三角波的程序,并对程序写注释。其中三角波的最高点为0FFH,最低点为00H,步长为1(即每次加1)

:CODE SEGMENT

ASSUME CS:CODE

DAPORT EQU 0070H

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA     EQU 0500H

START:   JMP DACONTORL

DACONTORL:CALL FORMAT

       CALL LEDDISP

       MOV DX,DAPORT         ;将DAC0832的地址给DX

       MOV AL,00H              ;设置转换的数字量为最小,转换后的电平为0V

DACON1: OUT DX,AL          ;启动数模转换

       INC AL                   ;将输入的数字量加一,输出的电平增加256分之一

       MOV CX,08H              ;设置循环重复次数

DACON2: LOOP DACON2       ;循环延时

CMP AL,FFH               ;比较AL和FFH

JL DACON3                ;当AL的值为FFH(最大)时,转移指令

       JMP DACON1              ;循环加一转换输出,当增加到FFH时加一自动归零

DACON3:OUT DX,AL           ;启动转换

       DEC AL                   ;AL值减一,输出的电平减少256分之一

       JMP DACON3              ;循环减一转换输入对应模拟量

CMP AL 00H               ;比较AL和00H

       JL DACON1               ;当AL减少到00H时,表示已经输出一个三角波,循环

LEDDISP:MOV AL,90H

       MOV DX,CONTPORT

       OUT DX,AL

       MOV BYTE PTR DS:[0600H],00

LED1:     CMP BYTE PTR DS:[0600H],07H

       JA  LED2

       MOV BL,DS:[0600H]

       MOV BH,0H

       MOV AL,CS:[BX+DATA]

       MOV DX,DATAPORT

       OUT DX,AL

       ADD BYTE PTR DS:[0600H],01H

       JNZ LED1

LED2:     RET

FORMAT: MOV BX,0

       MOV WORD PTR DS:[BX+0500H],405BH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],4040H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],4F5BH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],3F7FH

       RET

CODE ENDS

END START

改变延时即MOV CX,08H改变MOV后面的数字量。改变步长即将INC AL和DEC AL的步骤重复多几次即可;当改变了延时或是步长,很表示的三角波形状也就是底长会相应变化,高度不变。

说明: gdut

____ 

实验题目                  A/D(模/数)转换实验                  

一、实验目的与要求

加深理解逐次逼近法模数转换器的特征和工作原理,掌握ADC0809的接口方法以及A/D输入程序的设计和调试方法。

二、实验内容

1 、实验原理

说明: 未命名 

 本实验采用 ADC0809 做 A/D 转换实验。ADC0809 是一种8路模拟输入、8位数字输出的逐次逼近法A/D器件,转换时间约100us,转换精度为±1/512,适用于多路数据采集系统。ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。

图中ADC0809的CLK信号接CLK=2.385MHZ,基准电压Vref(+)接Vcc。一般在实际应用系统中应该接精确+5V,以提高转换精度,ADC0809片选信号0809CS和/IOW、/IOR经逻辑组合后,去控制ADC0809的ALE、START、ENABLE信号。ADC0809的转换结束信号EOC未接, 如果以中断方式实现数据采集,需将EOC信号线接至中断控制器8259A的中断源输入通道。本实验以延时方式等待A/D转换结束,ADC0809的通道号选择线ADD-A、ADD-B、ADD-C 接系统数据线的低3位,因此ADC0809的8个通道值地址分别为00H、01H、02H、03H、04H、05H 、 06H、07H。

  启动本A/D转换只需如下三条命令:

          MOV DX,ADPORT   ;ADPORT为ADC0809端口地址。

          MOV AL,DATA     ;DATA为通道值。

          MOV DX, AL          ; 通道值送端口。

  读取A/D转换结果用下面二条指令:

          MOV DX,ADPORT

          IN  AL,DX

2、实验线路的连接

   在原理图中,粗黑线是学生需要连接的线, 粗黑线两端是需连接的信号名称。

         (1)IN0插孔连W1的输出V1插孔。

         (2)0809CS连译码输出060H~06FH插孔。

4、实验方法、步骤及结果测试

   1.正确连接好实验线路

   2.理解实验原理

   3.打开原程序,仔细阅读,弄懂实验程序

   4.运行实验程序:1)按“调试”按钮 2)按“运行”按钮

在DVCC-8086JH实验箱上应显示“0809-XX”

  5.调节电位器W1,以改变模拟电压值,显示器上会不断显示新的A/D转换结果。用ADC0809做A/D转换,其模拟量与数字量对应关系的典型值为+5V-FFH,2.5V-80H,0V-00H。

三、实验程序

CODE SEGMENT

ASSUME CS:CODE

ADPORT EQU 0060H

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

START:   JMP ADCONTORL

DATA1    EQU 0580H

DATA2    EQU 0500H

ADCONTORL:CALL FORMAT

       MOV AX,0H

       MOV DS,AX

       MOV BX,DATA1

       MOV DS:[BX],AL

       ADD BX,01H

       MOV DS:[BX],AL

       ADD BX,01H

       MOV AL,40H

       MOV DS:[BX],AL

       ADD BX,01H

       MOV AL,40H

       MOV DS:[BX],AL

       ADD BX,01H

       MOV AL,6fH

       MOV DS:[BX],AL

       ADD BX,01H

       MOV AL,3fH

       MOV DS:[BX],AL

       ADD BX,01H

       MOV AL,7fH

       MOV DS:[BX],AL

       MOV AL,3fH

       ADD BX,01H

       MOV DS:[BX],AL

ADCON: MOV AX,00

       MOV DX,ADPORT

       OUT DX,AL

       MOV CX,0500H

DELAY:  LOOP DELAY

       MOV DX,ADPORT

       IN AL,DX

       MOV CL,AL

       CALL CONVERS

       CALL LEDDISP

       JMP ADCON

CONVERS:MOV BH,0H

       AND AL,0FH

       MOV BL,AL

       MOV AL,CS:[BX+DATA2]

       MOV BX,DATA1

       MOV DS:[BX],AL

       INC BX

       PUSH BX

       MOV AL,CL

       MOV CL,04H

       SHR AL,CL

       MOV BL,AL

       MOV BH,0H

       MOV AL,CS:[BX+DATA2]

       POP BX

       MOV DS:[BX],AL

       RET

LEDDISP:MOV AL,90H

       MOV DX,CONTPORT

       OUT DX,AL

       MOV BYTE PTR DS:[0600H],00

LED1:     CMP BYTE PTR DS:[0600H],07H

       JA  LED2

       MOV BL,DS:[0600H]

       MOV BH,0H

       MOV AL,DS:[BX+DATA1]

       MOV DX,DATAPORT

       OUT DX,AL

       ADD BYTE PTR DS:[0600H],01H

       JNZ LED1

LED2:     RET

FORMAT: MOV BX,0

       MOV WORD PTR DS:[BX+0500H],063FH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],4F5BH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],6D66H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],077DH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],6F7FH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],7C77H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],5E39H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],7179H

       RET

CODE ENDS

END  START

四、思考题

若以中断方式实现数据采集,需将EOC信号线接至中断控制器8259A的中断源输入通道。并在中断服务程序里读取A/D转换值。应如何编写程序?

:以中断方式完成实验,修改后的实验程序如下:

CODE SEGMENT

ASSUME CS:CODE

ADPORT EQU 0060H

CONTPORT EQU 00DFH

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA0      EQU 0580H

DATA1      EQU 0500H

INTPORT1 EQU 0020H

INTPORT2 EQU 0021H

INTQ        EQU INTREEUP

ORG 1800H

START:   JMP ADCONTORL

ADCONTORL:CALL  FORMAT                    

             MOV   AX,0H                             ;显示0809--XX

             MOV   DS,AX

             MOV   BX,DATA0

               MOV    DS:[BX],AL

                ADD    BX,01H

               MOV    DS:[BX],AL

                ADD    BX,01H

                MOV    AL,40H

               MOV    DS:[BX],AL

                ADD    BX,01H

           MOV    AL,40H

                MOV    DS:[BX],AL

                ADD    BX,01H

                MOV    AL,6fH

                MOV    DS:[BX],AL

                ADD    BX,01H

                MOV    AL,3fH

                MOV    DS:[BX],AL

                ADD    BX,01H             

                MOV    AL,7fH

                MOV    DS:[BX],AL           

                MOV    AL,3fH              

                ADD    BX,01H

                MOV    DS:[BX],AL

ADCON:   MOV    AX,00                  ;启动AD转换

                MOV    DX,ADPORT

                OUT    DX,AL

INITIALIZATION: MOV     AX,0H               ;8259初始化

         MOV     DS,AX

         CALL    WRINTVER

         MOV     AL,13H                         ;写ICW1控制字

         MOV     DX,INTPORT1         

         OUT     DX,AL

         MOV     AL,08H                          ;写ICW2 ICW4控制字

         MOV     DX,INTPORT2              

         OUT     DX,AL

         MOV     AL,0BH

         OUT     DX,AL                              ;选择IR3作为中断源输出

         MOV     AL,0F7H             

         OUT     DX,AL

WAITING: STI                             ;开中断

         JMP     WAITING

WRINTVER:MOV     AX,0H

         MOV     ES,AX

         MOV     DI,002CH

         LEA     AX,INTQ

         STOSW

         MOV     AX,CS

         STOSW

         RET

INTREEUP:CLI                         ;关中断  中断服务子程序

                MOV DX,ADPORT                ;读取AD转换

                IN AL,DX

                MOV CL,AL

                CALL CONVERS                 ;结果显示代码

                CALL LEDDISP

                MOV DX,ADPORT                ;启动AD转换

         MOV AL,00h

         OUT DX,AL

         STI                          ;开中断

         IRET                         ;中断返回

CONVERS:MOV BH,0H

               AND AL,0FH

               MOV BL,AL

               MOV AL,CS:[BX+DATA1]

               MOV BX,DATA0

               MOV DS:[BX],AL

               INC BX

               PUSH BX

               MOV AL,CL

               MOV CL,04H

               SHR AL,CL

               MOV BL,AL

               MOV BH,0H

               MOV AL,CS:[BX+DATA1]

               POP BX

               MOV DS:[BX],AL

               RET

LEDDISP:MOV AL,90H

               MOV DX,CONTPORT

               OUT DX,AL

               MOV BYTE PTR DS:[0600H],00

LED1:     CMP BYTE PTR DS:[0600H],07H

           JA  LED2

              MOV BL,DS:[0600H]

              MOV BH,0H

       MOV AL,DS:[BX+DATA0]

              MOV DX,DATAPORT

       OUT DX,AL

       ADD BYTE PTR DS:[0600H],01H

       JNZ LED1

LED2:     RET

FORMAT: MOV BX,0                             

              MOV WORD PTR DS:[BX+0500H],063FH

              ADD BX,2

              MOV WORD PTR DS:[BX+0500H],4F5BH

              ADD BX,2

              MOV WORD PTR DS:[BX+0500H],6D66H

              ADD BX,2

              MOV WORD PTR DS:[BX+0500H],077DH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],6F7FH

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],7C77H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],5E39H

       ADD BX,2

       MOV WORD PTR DS:[BX+0500H],7179H

       RET

CODE ENDS

END  START

程序框图如下:

                 说明: 未命名                 

相关推荐