微机原理与接口实验报告.doc

上传人:w****2 文档编号:6549964 上传时间:2020-02-28 格式:DOC 页数:22 大小:323.50KB
返回 下载 相关 举报
微机原理与接口实验报告.doc_第1页
第1页 / 共22页
微机原理与接口实验报告.doc_第2页
第2页 / 共22页
微机原理与接口实验报告.doc_第3页
第3页 / 共22页
点击查看更多>>
资源描述
微机原理与接口实 验 报 告专业班级: 学 号: 姓 名: 指导老师: 陆勤 实验一 8255A应用数码管动态显示一、实验目的 1、掌握8255A的工作方式、编程原理和微机接口方法。2、了解LED数码管动态显示的工作原理及编程方法。二、实验内容 编制程序,使数码管显示“DICE88”字样。三、实验程序框图 图6-1 实验程序流程图四、实验步骤 联机模式: (1)在PC机和实验系统联机状态下,运行实验系统dj8086k.exe(双击桌面OTA图标或通过开始-程序-dj8086k-DJ8086k微机原理与接口技术),新建文件并在编辑窗口输入汇编源程序,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。 (2)数码管显示“DICE88”字样。脱机模式: (1)在P.态下,通过单板机小键盘,从2DF0地址开始输入机器码(参见附录三),完成后返回监控,输入起始地址2DF0,再按EX键执行。(2)数码管显示“DICE88”字样。五、实验程序清单CODE SEGMENT ; display DICE88ASSUME CS:CODEORG 2DF0HSTART:JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUFDB ?,?,?,?,?,?data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H,89h,0c1h,87h ;修改89h、0c1h、87h各自对应:H、U、tSTART0:CALL BUF1CON1:CALL DISPJMP CON1DISP:MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,BX MOV AH,00HPUSH BXMOV BX,OFFSET DATA1 ADD BX,AX MOV AL,BXPOP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2:MOV CX,00A0H LOOP $ POP CXCMP CL,0FEH ;01HJZ LX1 MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,0DH;实验修改 mov BUF,0Ah MOV BUF+1,01H ;实验修改 mov BUF+1,16h MOV BUF+2,0CH ;实验修改 mov BUF+2,17h MOV BUF+3,0EH ;实验修改 mov BUF+3,18h MOV BUF+4,08H;实验修改mov BUF+4,00h MOV BUF+5,08H;实验修改mov BUF+5,09h RETCODE ENDSEND START六、思考题:修改程序使之可以显示其他字符,如“AHUt09”。见上面程序修改部分七、实验遇到的难点: 刚开始对发光二极管的控制不到位,总是与想要显示的不相符,后来理解了编码方式后,能够对二极管有一个很好的控制,之后我还自己编写并显示了“I LOVE U”,觉得挺有趣的实验二 8259单级中断控制器实验一、实验目的 1.掌握8259中断控制器的接口方法。 2.掌握8259中断控制器的应用编程。二、实验内容 利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。三、实验接线图 图62 实验二接线图四、编程指南 8259芯片介绍中断控制器8259A是专为控制优先级中断而设计的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。即中断结构可以由用户编程来设定。同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。本实验中使用3号中断源IR3, “ ”插孔和IR3相连,中断方式为边沿触发方式,每拨1次AN开关产生一次中断,满5次中断,显示“good”。如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。五、实验程序框图 图6-3 主程序流程 图6-4 IR3中断服务程序流程IR3中断服务程序:IR7中断服务程序:图6-5 IR7中断服务流程六、实验步骤 1、按图62连好实验线路图。8259的INT连8088的INTR;8259的INTA连8088的INTA;“ ”插孔和8259的3号中断IR3插孔相连,“ ”端初始为低电平;8259的CS端接FF80H孔。2、输入并运行实验程序,系统显示82591。 3、按动AN开关按钮, 按满5次显示good。 七、实验程序清单 CODE SEGMENT ;ASSUME CS:CODEINTPORT1 EQU 0FF80HINTPORT2 EQU 0FF81HINTQ3 EQU INTREEUP3INTQ7 EQU INTREEUP7PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口ORG 12D0HSTART: JMP START0BUF DB ?,?,?,?,?,?intcnt db ?data1: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0:CLDCALL BUF1CALL WRINTVER ;WRITE INTRRUPTMOV AL,13HMOV DX,INTPORT1OUT DX,ALMOV AL,08HMOV DX,INTPORT2OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0F7HOUT DX,ALMOV intcnt,01H;TIME=1STIWATING: CALL DISP ;DISP 8259-1JMP WATINGWRINTVER:MOV AX,0H MOV ES,AX MOV DI,002CH LEA AX,INTQ3 STOSW MOV AX,0000h STOSW MOV DI,003CH LEA AX,INTQ7STOSW MOV AX,0000h STOSW RETINTREEUP3:CLI push ax push bx push cx push dx MOV AL,INTCNT CALL CONVERS MOV BX,OFFSET BUF ;077BH MOV AL,10H MOV CX,05HINTRE0: MOV BX,AL INC BX LOOP INTRE0 MOV AL,20H MOV DX,INTPORT1 OUT DX,AL ADD INTCNT,01H CMP INTCNT,06H JNA INTRE2 CALL BUF2 ;DISP:goodINTRE1: CALL DISP JMP INTRE1CONVERS: AND AL,0FH MOV BX,offset buf ;077AH MOV BX+5,AL RETINTRE2: MOV AL,20H MOV DX,INTPORT1 OUT DX,AL pop dx pop cx pop bx pop ax STI IRETINTREEUP7:CLI MOV AL,20H MOV DX,INTPORT1 OUT DX,AL call buf3 ;disp:errINTRE3: CALL DISP JMP INTRE3DISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;20H ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,BX MOV AH,00H PUSH BX MOV BX,OFFSET DATA1 ADD BX,AX MOV AL,BXPOP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2:MOV CX,00A0H LOOP $ POP CXCMP CL,0FEH ;01HJZ LX1INC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,08H MOV BUF+1,02H MOV BUF+2,05H MOV BUF+3,09H MOV BUF+4,17H MOV BUF+5,01H RETBUF2: MOV BUF,09H MOV BUF+1,00H MOV BUF+2,00H MOV BUF+3,0dH MOV BUF+4,10H MOV BUF+5,10H RETBUF3: MOV BUF,0eH MOV BUF+1,18H MOV BUF+2,18H MOV BUF+3,10H MOV BUF+4,10H MOV BUF+5,10H RETCODE ENDSEND START八、思考题:若用IR5产生中断,要求修改硬件和软件并调试,修改位置 硬件修改:将连接到8259的IR3线连接到IR5 软件修改:在IR5所对应的中断向量的字段中写入中断程序的入口地址,并修改8259A的OCW1 命令字指定IR5开放中断。(1)START0中修改为:MOV DX,INTPORT2OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0DFHOUT DX,ALMOV intcnt,01 .(2)WRINTVER中修改为: WRINTVER:. MOV DI,0034H LEA AX,INTQ3 .实验八8250 串口实验一、实验目的(1)系统扩展以8250 为核心的可编程串行异步通讯接口芯片。(2)对扩展的串行通讯接口实现自发自收。二、实验内容将寄存器AH 的内容从10H 开始通过8250 发送、接收,每次收发后AH 的内容自动增1 直到FFH 为止,同时将每次接收到的数据,依次写到内存4000H40EFH 单元中,实现自发自收。三、编程指南1、通讯协议1 个起始位,8 位数据位,1 个停止位,波特率:4800。2、8250 的内部寄存器的端口地址* 通讯线控制寄存器第7 位(DLAB)=0 ,* DLAB=13、8250 的内部寄存器格式(见课本)4、波特率除数锁存器的值与波特率的对应关系(16 进制数)5、8250 的初始化编程(1)设置波特率(2)设置通讯数据格式(3)设置操作方式(4)设置中断允许寄存器四、实验接线图五、实验步骤1.连FF80H 孔到CS7,连TXD 到RXD(8250 实验区)。2.编辑、调试、运行程序。3.当系统显示“8250good”表示自发自收结束,按RST 键,系统返回P 态,用内存读写命令检查4000H40EFH 内容是否为10HFFH,验证其正确性。六、参考程序CODE SEGMENT ;H8250.ASMASSUME CS: CODE ;H8250.ASMDATA EQU 0ff80H ;BTS-LSBMSB EQU 0ff81HLINE EQU 0ff83HLSTAT EQU 0ff85HPA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口ORG 29A0H;源地址START: JMP START0;跳转到START0BUF DB ?,?,?,?,?,?;定义6字节缓冲区data1:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h;定义七段码db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0: MOV AL,80H ;DLAB=1MOV DX,LINEOUT DX,ALMOV AL,18H ;BTS=4800;置波特率因子低8位MOV DX,DATA ;ff80HOUT DX,ALMOV DX,MSB;置波特率因子高8位MOV AL,00OUT DX,ALMOV AL,03H ;8- BIT ,1-STOPMOV DX,LINEOUT DX,ALMOV AL,00 ;NO-INTMOV DX,MSB ;8001HOUT DX,ALMOV AH,10H;AH中的内容MOV BX,4000HMAIN: CALL TXD;调用TXDCALL RCV;调用RCVMOV BX,ALINC BX;BX自加INC AH;AH自加CMP AH,00H;AH 与00H作比较JNZ MAIN;不相等,跳转到MAINCALL BUF1;调用BUFMOV CX,00FFH;将00FFH初始给CX,循环次数S3: PUSH CX;CX入栈CALL DISP;显示POP CX;CX出栈LOOP S3;循环CALL BUF3S1: CALL DISP;显示JMP S1;跳转到S1TXD: MOV DX,LSTAT; WAIT1: IN AL,DX;读取LSTAT中的值(读取线路状态寄存器)TEST AL,20H;检验D5位是否为1,即检查发送保持器是否为空,不为空则等待JZ WAIT1;不为空等待MOV AL,AH;从AH中取出发送数据MOV DX,DATAOUT DX,ALRET;中断返回RCV: MOV DX,LSTATWAIT2: IN AL,DX;读线路状态寄存器TEST AL,01H;查接收缓冲器是否为满,不满则继续等待 JZ WAIT2TEST AL,0EHJNZ ERR;不相等,显示errMOV DX,DATAIN AL,DX;读取DATA端口值RET;中断返回ERR: CALL BUF2;调用BUF2程序S2: CALL DISP;调用显示程序JMP S2;循环显示DISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;20H ;显示子程序,5msMOV BX,OFFSET BUF;将BUF的偏移值送BXDIS1: MOV AL,BX;将AL中的内容读到Al中MOV AH,00HPUSH BX;BX入栈MOV BX,OFFSET DATA1;将DATA的偏移地址给BXADD BX,AXMOV AL,BX;读取对应的七段码POP BXMOV DX,PB;输出到PB端口OUT DX,AlMOV AL,CL;显示MOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0H;循环,延时DELAY: LOOP DELAYPOP CXCMP CL,0FEH ;01HJZ LX1;相等跳转到LXINC BX;BX自加,地址后移一位ROR CL,1 ;SHR CL,1JMP DIS1;跳转到DIS,循环显示LX1: MOV AL,0FFH;PB端口清零MOV DX,PBOUT DX,ALRET;中断返回BUF1: MOV BUF,08H;显示8250MOV BUF+1,02HMOV BUF+2,05HMOV BUF+3,00HMOV BUF+4,17HMOV BUF+5,17HRETBUF2: MOV BUF,08H;显示errMOV BUF+1,02HMOV BUF+2,05HMOV BUF+3,00HMOV BUF+4,0EHMOV BUF+5,18HRETBUF3: MOV BUF,09H;显示good-MOV BUF+1,00HMOV BUF+2,00HMOV BUF+3,0DHMOV BUF+4,10HMOV BUF+5,10HRETCODE ENDSEND START思考题如果使用通讯协议:1 个起始位,7 位数据位,2 个停止位,波特率:9600。系统将如何实现。解决方案:将以下部分MOV AL,18HMOV DX,DATAOUT DX,ALMOV DX,MSBMOV AL,00OUT DX,ALMOV AL,03HMOV DX,LINEOUT DX,AL改为:MOV AL,0CHMOV DX,DATA ;ff80HOUT DX,ALMOV DX,MSBMOV AL,00OUT DX,ALMOV AL,06HMOV DX,LINEOUT DX,AL实验五 A/D转换实验一、实验目的 了解模/数转换基本原理,掌握ADC0809的使用方法; 掌握定时数据采集程序的编制方法。二、实验内容 1、A/D转换实验利用实验系统上电位器提供的可调电压作为0809模拟信号的输入,编制程序,将模拟量转换为数字量,通过数码管显示出来。(1) 实验接线图 ADC0809接线见图6-9图6-9 ADC0809接线图(2)编程指南 ADC0809的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号,实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,其输入控制信号为CS和WR,故启动A/D转换只须如下两条指令:MOV DX,ADPORT ;ADC0809端口地址OUT DX,AL ; 发CS和WR信号并送通道地址用延时方式等待A/D转换结果,使用下述指令读取A/D转换结果。 MOV DX,ADPORT ;ADC0809端口地址 INAL,DX循环不断采样A/D转换的结果,边采样边显示A/D转换后的数字量。(3)实验程序框图 A/D转换流程见图6-10图6-10 A/D转换流程(4)实验步骤 将0809 CS4插孔连到译码输出FF80H插孔。 将通道0模拟量输入端IN0连电位器W1的中心插头AOUT1(05V)插孔,8MHZT。 运行实验程序,系统上显示“0809 XX”。“XX”表示输入模拟量转换后的数字量。 调节电位器Wl, 显示器上会不断显示新的转换结果。模拟量和数字量对应关系的典型值为:0V00H+2.5V80H+5VFFH 按RST键退出。(5)实验程序清单CODE SEGMENT ;ASSUME CS:CODEADPORT EQU 0FF80h ;8259A偶地址入口PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口 ORG 1000H ;源地址START: JMP START0 ;跳转到START0BUF DB ?,?,?,?,?,? ;定义6字节缓冲区data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h ;定义七段码 db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0: CALL BUF1 ;调用BUF1子程序ADCON: MOV AX,00 MOV DX,ADPORT ;ADC0809端口地址 OUT DX,AL ; 发CS和WR信号并送通道地址MOV CX,0500H ;置循环数;DELAY: LOOP DELAY ;空循环,延时 MOV DX,ADPORT ;ADC0809端口地址 IN AL,DX CALL CONVERS;调用子程序CONVERS CALL DISP ;调用显示子程序DISP JMP ADCON ;跳转到ADCONCONVERS: MOV AH,AL;将 ax中的低字节赋给高字节 AND AL,0FH ;保留al中的低四位 MOV BX,OFFSET BUF;buf的偏移地址 MOV BX+5,AL;将al中的值给Bx+5 MOV AL,AH ;取al中的高四位 AND AL,0F0H MOV CL,04H ;值移位数 SHR AL,CL;右移四位 MOV BX+4,Al ;将Al中的值给BX+4 RET;返回DISP: MOV AL,0FFH ;PA端口全置1,使其灯无显示 MOV DX,PAOUT DX,ALMOV CL,0DFH ;将0DFH给CL MOV BX,OFFSET BUF;取BUF的偏移地址 给BXDIS1: MOV AL,BX;将BX中的内容取出给Al MOV AH,00HPUSH BX;BX入栈MOV BX,OFFSET DATA1;取DATA1的偏移地址给BX ADD BX,AX;BX与Ax相加 MOV AL,BPBX;将BX的内容取到AL中POP BX;BX出栈MOV DX,PB;Al中得内容在PB端口输出OUT DX,ALMOV AL,CL;显示MOV DX,PAOUT DX,ALPUSH CX;CX入栈DIS2: MOV CX,00A0H;循环00A0H次,延时 LOOP $ POP CX;CX出栈CMP CL,0FEH;Cl 与0FEH比较 JZ LX1 ;Cl与00A0H相等,则程序跳转到LXINC BX;BX自加ROR CL,1;Cl循环左移1位 JMP DIS1;循环显示LX1: MOV AL,0FFH;PB端口清零MOV DX,PBOUT DX,ALRET;中断返回BUF1: MOV BUF,00H MOV BUF+1,08H MOV BUF+2,00H MOV BUF+3,09H MOV BUF+4,00H MOV BUF+5,00H RETCODE ENDSEND START2、数据采集实验 要求:用8253定时器1通道定时,每隔半秒使从ADC0809的0通道IN0采集一个数据,若模拟电压在0-2V范围内(0-102),则使LED显示器L7-L4亮;若模拟电压大于2V,小于3V,则使L5-L2亮;若模拟电压大于等于3V,则使LED显示器L3-L0亮。(主程序重复所采集的数据)(1)实验接线图数据采集实验系统接线图见图6-11图6-11 数据采集系统接线图(2)程序流程图主程序流程见图6-12图6-12 主程序流程图中断服务程序流程见图6-13图6-13 中断服务程序流程(3)实验程序清单CODE SEGMENT ;ASSUME CS:CODEINTPORT1 EQU0FF80H ;8259A偶地址入口INTPORT2 EQU0FF81H ;8259A奇地址入口INTQ3 EQUINTREEUP3 ;中断源IR3地址TCONTR0 EQU 0043H;8253端口地址TCON1 EQU0041H;8253端口地址IOCONPT EQU0FF2BHIOBPT EQU0FF29HIOAPT EQU 0FF28HPA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口ADPORT EQU 0FE00H ;ADC0809端口地址ORG 12D0H;源地址 START: JMP START0;跳转到START0BUF DB ?,?,?,?,?,?;定义6字节的缓冲区intcnt db ?RES DB ?data1 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h db 0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH;定义七段码START0: CLD;置方向位 CALL BUF1;调用BUF1CALL WRINTVER ;调用 WRINTVER MOV AL,13H;初始化ICW1,单片,边沿触发,设置ICW4MOV DX,INTPORT1OUT DX,ALMOV AL,08H;写ICW2,允许IR3中断MOV DX,INTPORT2OUT DX,ALMOV AL,09H;写ICW4,8259A在缓冲方式下工作,8086/8088系统OUT DX,ALMOV AL,0F7H;写OCW1,允许中断源IR3,其余均被屏蔽OUT DX,ALMOV intcnt,25 MOV DX,TCONTR0MOV AL,74H;8253工作通道1,先读(写)低字节,再读(写)高字节,方式4,二进制计数OUT DX,ALMOV DX,TCON1 MOV AX,40000;8253初始值40000OUT DX,AL MOV AL,AH;写初值的高字节 OUT DX,ALMOV DX,0FF2BH;8255初始化,PA口方式0,输出MOV AL,82HOUT DX,AL STI;开中断WATING: CALL DISP;调用显示程序 JMP WATING;循环,延时WRINTVER:MOV AX,0H MOV ES,AX;ES指向AX MOV DI,002CH;置DI初值为CH LEA AX,INTQ3;取INTQ3的初值 STOSW MOV AX,0000h STOSW RET;中断返回INTREEUP3: DEC INTCNT;INTCNT自减1 JNZ INTRE2;不相等跳转到INTRE2 MOV INTCNT, 25ADCON: MOV AX,00;设定输入电压值 MOV DX,ADPORT OUT DX,AL MOV CX,0500H;循环值,延时DELAY: LOOP DELAY MOV DX,ADPORT;读电压值 IN AL,DX MOV RES,AL;将Al中值存入到RES中 CALL CONVERS;调用CONVERSMOV AL,RES CMP AL, 66H;Al与66H比较 JA NEXT1;若大于,跳转到NEXT1 MOV AL, 0F0H MOV DX, IOAPT;输出 OUT DX,AL JMP INTRE2;跳转到INTRE2NEXT1: CMP AL, 99H;AL与99H比较 JA NEXT2;跳转到NEXT2(灯L7-L10亮) MOV AL, 0C3H MOV DX, IOAPT OUT DX,AL JMP INTRE2;跳转到INTRE2NEXT2: MOV AL, 0FH MOV DX, IOAPT OUT DX,ALINTRE2: MOV AL,20H;中断 MOV DX,INTPORT1 OUT DX,AL IRET;中断返回CONVERS: MOV AH, AL;取Al中得低四位 AND AL, 0FH MOV BX, OFFSET BUF;取BUF的偏移地址给BX MOV BX+5, AL;将Al中得值给BX+5 MOV AL,AH;取Al中的高四位 AND AL, 0F0H MOV CL, 04H SHR AL, CL;Al中的内容右移4位 MOV BX+4, AL;将Al中的内容给BX+4 RET;中断返回DISP: MOV AL, 0FFH ;PA端口清零 MOV DX, PAOUT DX, ALMOV CL, 0DFH ;显示 MOV BX, OFFSET BUF;取BUF的偏移地址DIS1: MOV DX, PC;将Al中的 内容输出到PC端口 OUT DX, AL MOV AL, BX MOV AH, 00HPUSH BX;BX入栈MOV BX, OFFSET DATA1;取DATA得偏移地址 ADD BX, AX MOV AL, BX;将对应的七段码给AlPOP BX;BX出栈MOV DX, PB;输出到PB口OUT DX, ALMOV AL, CL显示MOV DX, PAOUT DX, ALPUSH CX;CX出栈DIS2: MOV CX, 00A0H;空循环,延时 LOOP $ POP CXCMPCL,0FEH JZ LX1INC BXROR CL, 1 JMP DIS1LX1: MOV AL, 0FFH;PB口清零MOV DX, PBOUT DX, ALRET;中断返回BUF1: MOV BUF, 00H MOV BUF+1, 08H MOV BUF+2, 00H MOV BUF+3 ,09H MOV BUF+4, 00H MOV BUF+5, 00H RETCODE ENDS END START思考题:如果改用DAC0832的输出(比如:产生近似正弦输出)作为ADC0809的输入,并将采集值在数码管上显示出来。硬件和软件应如何修改?解决方案:1.硬件修改:将DAC0832采用单缓冲方式工作,Vout接ADC0809的IN0。2.程序修改:给DAC0832设定地址,根据连线可以设定为。设为DAC1,DAC2,在程序头部声明.设置正弦数据区:BUFSIN db 128,88,53,24,6,06,24,53,88,128,168,203,232, db 250,255,232,203,168最后再在主程序后添加如下程序: GENERATESINWAVE: Mov si,offset buf MOV DX,DAC1 Mov cx,20 OUTPUT: MOV AL,SI OUT DX,AL INC SI LOOP OUTPUT JMP GENERATESINWAVE实验三 8253、8255、8259综合实验18253计数器实验要求:计数器1方式0计数,计满3个数产生中断,中断5次后结束。实验线路见图6-6:图6-6 8253计数器实验电路图实验程序:INTPORT1 EQU 0FF80H ;8259A的偶地址入口INTPORT2 EQU 0FF81H ;8259A的偶地址入口INTQ3 EQU INTREEUP3;INTREEUP3地址TCONTR0 EQU 0043H ;8253端口地址TCON1 EQU 0041H ;8253端口地址PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口code segment assume cs:code ORG 12D0H ;源地址START: JMP START0 ; 跳转到START0BUF DB ?,?,?,?,?,? ;六字节缓冲区intcnt db ? ;一字节的缓冲区data1 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h db 0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH;七段码定义START0:CLD;置方向位 CALL BUF1 ;调用子程序BUF1CALL WRINTVER ;WRITE INTRRUPTMOV AL,13H ;写ICW1,边沿触发,单片,需要ICW4MOV DX,INTPORT1OUT DX,ALMOV AL,08H;ICW2,中断类型号高5位MOV DX,INTPORT2OUT DX,ALMOV AL,09H;写ICW4,BUF位在缓冲方式下工作,8086/8088系统OUT DX,AL MOV AL,0F7HOUT DX,ALMOV intcnt,01H;TIME=1MOV DX,TCONTR0;指向控制口MOV AL,51H ;8253控制字,通道1,方式0,只读/写低字节,BCD码计数OUT DX,AL;送控制字MOV DX,TCON1;指向控制口MOV AL,03;计数值低字节OUT DX,AL;送控制字MOV DX,0FF23H;指向8255A控制口MOV AL,80;A口方式0,输出,C口上半部输出,B口方式,输出,C口下半部输出OUT DX,AL;送控制字STI; 开中断WATING: CALL DISP ;DISP 825359JMP WATINGWRINTVER:MOV AX,0H MOV ES,AX MOV DI,002CH;目的地址 LEA AX,INTQ3;INTQ3的偏移地址 STOSW;存字 MOV AX,0000h;清零 STOSW RET;中断返回INTREEUP3: push ax;入栈 push bx push cx push dx MOV DX,TCON1;指向控制口MOV AL,03;计数值低字节OUT DX,AL MOV AL,INTCNT CALL CONVERS MOV BX,OFFSET BUF MOV AL,10H MOV CX,05H;置循环数INTRE0: MOV BX,AL;将Al中的值存在BX中 INC BX;BX加1 LOOP INTRE0;循环 ADD INTCNT,01H;循环数是五次 CMP INTCNT,06H JNA INTRE2 CALL BUF2 ;DISP:goodINTRE1: CALL DISP JMP INTRE1CONVERS: AND AL,0FH;显示次数 MOV BX,offset buf MOV BX+5,AL RETINTRE2: MOV AL,20H MOV DX,INTPORT1 OUT DX,AL pop dx pop cx pop bx pop ax IRET;软中断返回DISP: MOV AL,0FFH ;00HMOV DX,PA;清零OUT DX,ALMOV CL,0DFH ;20H MOV BX,OFFSET BUFDIS1: MOV DX,PC OUT DX,AL MOV AL,BX MOV AH,00HPUSH BXMOV BX,OFFSET DATA1 ADD BX,AX MOV AL,BXPOP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2:MOV CX,00A0H LOOP $ POP CXCMP CL,0FEH ;01HJZ LX1INC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,08H MOV BUF+1,02H MOV BUF+2,05H MOV BUF+3,03H MOV BUF+4,05H MOV BUF+5,09H RETBUF2: MOV BUF,09H MOV BUF+1,00H MOV BUF+2,00H MOV BUF+3,0dH MOV BUF+4,10H MOV BUF+5,10H RETCODE ENDSEND START思考:计数器0方式0计数,计满5个数产生中断,中断3次后结束。硬件修改:将连接在CLK1,GATE1,OUT1的连线改接到CLK0,GATE0,OUT0上。程序修改:将程序对应部分做如下修改1、TCON1 EQU 0041H改为TCON1 EQU 0040H 2、将8253控制字由MOV AL,51H改为 MOV AL,11H 3、计数值低字节将MOV AL,02改为MOV AL,04 4、将CMP INTCNT,06H改为CMP INTCNT,04H;2、8253定时器实验
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!