实验六8259A硬件中断实验一.实验要求编写中断程序,在请求8259A中断1时,能够响应8259A的硬件中断,并在数码管上显示“Irq0…”字样,中断结束时,显示“E..IRQ”。
二.实验目的1. 了解8259A中断控制器的工作原理。
2. 了解PC机中断的原理和过程。
3. 学会中断处理程序的编写。
三.实验电路及连线20模块中的+PLUSE接第8模块中的INT_0,第8模块中的INT接模块中的88INTR,第8模块中的INTA接实验机内核模块中的88/INTA 。
CS8259接200H,CS8279已固定接至238H。
四.实验说明1、运行该实验程序的方法是:先通过加载选项将8259A的初始化程序与中断处理程序送到RAM中。
2、本实验指导书只提供硬件中断0实验,中断方式为边沿触发、单片、全嵌套中断方式,且中断号从中断8开始。
使用者可以根据自己的需要设定为其他中断方式,且中断号可以设定从任一中断号开始。
3、实验方法:以硬中断0为例,先加载8259A主中断程序(注意加载地址为8100:0),然后再加载中断程序IRQ0程序(加载地址为8200:0)。
然后进入TALK WITH 88ET选项下,键入SW 0:0020↙0000,8200↙,再执行G8100:0↙Y即可。
这样设计的目的是为了让学生们更能理解中断的执行原理与过程。
五.实验程序框图六.实验程序如下:(2)8259A主程序:;ORG 8100:0INT00 EQU 200hINT01 EQU 201hZ8279 EQU 239HD8279 EQU 238HLEDMODE EQU 00HSCANFRQ EQU 38Hdata segmentdata endsstack segmentsta dw 50 dup(?)top equ length stastack endsCODE SEGMENTASSUME CS:CODE,DS:data,SS:stackSTART:CLI ;关中断MOV AL,13H ;ICW1:边沿触发,单片,要ICW4MOV DX,INT00OUT DX,ALNOPNOPMOV AL,8 ;中断号从8开始MOV DX,INT01OUT DX,ALNOPNOPMOV AL,3 ;全嵌套方式,86/88系统9MOV DX,INT01OUT DX,ALNOPNOPMOV DX,INT01MOV AL,00H ;八个中断全部开放OUT DX,ALNOPNOPMOV DX,INT00MOV AL,20H ;非特殊EOI结束中断OUT DX,ALNOPNOPMOV DX,Z8279 ;8279左边输入,八位显示,外部译码MOV AL,LEDMODEOUT DX,ALMOV AL,SCANFRQ ;设置扫描频率OUT DX,ALMOV AL,0D0HOUT DX,ALMOV CX,0FFHL2: LOOP L2MOV AL,90H ;写显示缓冲区RAM命令字OUT DX,ALMOV DX,D8279MOV AL,67H ;显示中断前字样"IRQ"OUT DX,ALMOV AL,50HOUT DX,ALMOV AL,0FHOUT DX,ALSTI ;开中断x2: hlt ;等待硬件中断mov cx,5x1: push cxmov cx,0loop $pop cxloop x1mov dx,z8279mov ax,0d0hout dx,almov cx,0ffhl5: loop l5mov al,90hout dx,almov dx,d8279mov al,67h ;中断返回,显示"E...IRQ0"字样out dx,almov al,50hout dx,almov al,0fhout dx,almov al,80hout dx,alout dx,almov al,79hout dx,aljmp short x2code endsend start(2)IRQ0.ASM 中断子程序;ORG 8200:0Z8279 EQU 239HD8279 EQU 238Hdata segmentdata endsstack segmentstack endsCODE SEGMENTASSUME CS:CODE,DS:data,SS:stack START:STIMOV DX,Z8279MOV AL,0D0HOUT DX,ALMOV CX,0FFHl1: loop l1MOV AL,90HOUT DX,ALMOV DX,D8279mov al,80hout dx,alout dx,alout dx,alMOV AL,3FHOUT DX,ALMOV AL,67HOUT DX,ALMOV AL,50HOUT DX,ALMOV AL,0FHOUT DX,ALIRETCODE ENDSEND START实验七直流电机驱动实验一.实验要求利用0832D/A转换输出直流量,控制直流电机的转速。
二.实验目的了解直流电机控制的基本方法。
三.实验电路及连线CS0832接8088译码地址200H,CS8279已固定接至238H。
第15模块的COUT接C+。
四.实验说明1.直流电机转速调节某些场合往往要求直流电机的转速在一定范围内可调节,例如,电车、机床等,调节范围根据负载的要求而定。
调速可以有三种方法:(1)改变电机两端电压;(2)改变磁通;(3)在电枢回路中,串联调节电阻。
本实验采用第一种方法:通过改变施加于电机两端的电压大小达到调节直流电机转速的目的。
本实验用DAC0832D/A转换输出控制直流电机两端电压。
2.直流电机运转方向控制要改变直流电动机的转向,必须改变电磁转矩的方向。
根据左手定则,改变电磁转矩的方法有两种方法:(1)改变电枢电流的方向;(2)改变磁通的方向。
本实验采用第一种方法。
本实验用实验机键盘输入来控制直流电机的速度。
在运行过程中,可按动小键盘的“0─9”数码键,控制电机转速,按“F”键退出程序。
五.实验程序框图六.实验程序:D0832 EQU 200HC8279 EQU 239HD8279 EQU 238H CODE SEGMENTASSUME CS:CODE,DS:CODE START:PUSH CSPOP DSINI:MOV DX,D0832MOV AL,00HOUT DX,ALMOV DX,C8279MOV AL,00HOUT DX,ALMOV AL,90HOUT DX,ALMOV AL,34HOUT DX,ALMOV AL,0D2HOUT DX,ALJMP SHORT $+2 WAIT1:IN AL,DXMOV AH,ALAND AL,80HCMP AL,80HJE W AIT1MOV AL,AHAND AL,0FHCMP AL,00HJE W AIT1RUN:CALL CHKKEYCALL DISPLAYMOV DX,D0832OUT DX,ALJMP RUN CHKKEY PROC NEAR RDKEY:MOV DX,C8279IN AL,DXMOV AH,ALAND AL,80HCMP AL,80HJE RDKEYMOV AL,AHAND AL,0FHCMP AL,00HJE RDKEYMOV AL,40HOUT DX,ALMOV DX,D8279IN AL,DXCHK:CMP AL,0FHJE QUITCMP AL,0AHJNC RDKEYMOV SPDNUM,ALLEA BX,SPDXLATMOV AH,ALRTN:MOV DX,C8279MOV AL,0C2HOUT DX,ALMOV AL,AHRETCHKKEY ENDPDISPLAY PROC NEARMOV AH,ALMOV DX,D8279LEA BX,LEDMOV AL,SPDNUMXLATOUT DX,ALLEA SI,DSPMOV CX,0007H LOOP1:MOV AL,[SI]OUT DX,ALINC SILOOP LOOP1MOV AL,AHRETDISPLAY ENDPQUIT:MOV DX,D0832MOV AL,00HOUT DX,ALMOV DX,C8279MOV AL,0D2HOUT DX,ALHLTLED DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHSPD DB 60H,70H,80H,90H,0A0HDB 0B0H,0C0H,0D0H,0E0H,0FFHDSP DB 00H,5EH,79H,79H,73H,6DH,0DEHSPDNUM DB 0CODE ENDSEND START实验八步进电机驱动实验一.实验要求利用8255的PC口PC0-PC3轮流输出脉冲序列,实验机上键盘控制步进电机的转速和转动方向。
二.实验目的1.了解控制步进电机的基本原理。
2.掌握控制步进电机转动的编程方法。
三.实验电路及连线CS8255接200H,CS8279已固定接至238H。
PC0-PC3接至SMA-SMD。
四.实验说明1. 本实验提供的程序是供四相步进电机使用。
本实验使用的步进电机用直流+12V电压,电机线圈由A、B、C、D四相组成。
2. 驱动方式为四相单四拍方式,各线圈通电顺序如下表。
表中首先向A相线圈输入驱动电流,接着向B,C,D线圈通电,最后又返回到A相线圈驱动,按这种顺序轮流切换,电机轴按顺时针方向旋转。
若通电顺序相反,则电机轴按逆时针方向旋转。
3. 在运行过程中,可按动小键盘的“0─9”数码键,控制步进电机的转速,按“B或C”键控制步进电机的方向,按“F”键退出。
五.实验程序框图六.实验程序:C8279 EQU 20AHD8279 EQU 208HC8255 EQU 203HP8255C EQU 202H CODE SEGMENTASSUME CS:CODE,DS:CODE START:PUSH CSPOP DSINI:MOV DX,C8255MOV AL,80HOUT DX,ALMOV DX,C8279MOV AL,00HOUT DX,ALMOV AL,2AHOUT DX,ALMOV AL,90HOUT DX,ALMOV AL,0D1HOUT DX,ALJMP SHORT $+2WAIT1:IN AL,DXMOV AH,ALAND AL,80HJNZ WAIT1MOV AL,AHAND AL,0FHCMP AL,00HJE W AIT1LEA BX,STEPRUN:CALL CHKKEYCALL DISPLAYMOV CX,08HLOOP3:MOV DX,P8255CMOV AL,[SI]OUT DX,ALINC SICALL DELAYLOOP LOOP3JMP RUNCHKKEY PROC NEAR RDKEY:MOV DX,C8279IN AL,DXMOV AH,ALAND AL,80HCMP AL,80HJE RDKEYMOV AL,AHAND AL,0FHCMP AL,00HJE RTNMOV AL,40HOUT DX,ALMOV DX,D8279IN AL,DXCHK:CMP AL,15HJE QUITCMP AL,0AHJNC DIREMOV DELAYTIME,ALJMP RTNDIRE:CMP AL,12HJNE NEXTMOV DIRDSP,40HLEA BX,STEPJMP RTNNEXT:CMP AL,13HJNE RTNMOV DIRDSP,46HLEA BX,STEPADD BX,07HRTN:MOV SI,BXRETCHKKEY ENDPDELAY PROC NEARPUSH CXMOV CX,0AHSUB CL,DELAYTIME LOOP1:PUSH CXMOV CX,03FFH LOOP2:NOPLOOP LOOP2POP CXLOOP LOOP1POP CXRETDELAY ENDPDISPLAY PROC NEARPUSH BXMOV DX,D8279MOV AL,DELAYTIMELEA BX,LEDXLATOUT DX,ALMOV AL,DIRDSPOUT DX,ALMOV CX,0006HLEA BX,DSPLOOP4:MOV AL,[BX]OUT DX,ALINC BXLOOP LOOP4MOV DX,C8279MOV AL,0C2HOUT DX,ALPOP BXRETDISPLAY ENDPQUIT:MOV DX,C8279MOV AL,0D2HOUT DX,ALjmp $LED DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FH DSP DB 5EH,79H,79H,73H,6DH,0EDH DELAYTIME DB 01HSTEP DB 04H,05H,01H,09H,08HDB 0AH,02H,06H,02H,0AHDB 08H,09H,01H,05H,04H DIRDSP DB 40HCODE ENDSEND START实验十串并转换实验一.实验要求利用8255并行口和并行输出串行移位寄存器74LS164,扩展一位数码显示在数码显示器上循环显示0-9这10个数字。