微机实验教案xx111_第1页
微机实验教案xx111_第2页
微机实验教案xx111_第3页
微机实验教案xx111_第4页
微机实验教案xx111_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机实验教案xx111 xx-xx学年度第一学期微机原理实验教案陈善荣物理科学与信息工程学院微机原理与接口技术实验安排表实验时间班级第一组第二组第三组08电科1星期一 5、6节星期三 1、2节08电科2星期三 3、4节08电子1星期一 3、4节星期一 7、8节星期二 7、8节08电子2星期四 1、2节星期二 7、8节08通信1星期三 7、8节星期三 9、10节星期二 9、10节08通信2星期二 1、2节星期二 9、10节实验项目教学周次实验项目名称对应的实验指导书的内容汇编语言程序设计指导书(电子文档)微机原理与接口实验指导书(xx.7) 41、熟悉汇编语言的编程环境实验一熟悉汇编语言的编程过程 52、循环程序设计实验实验五循环程序设计 63、子程序设计实验实验七子程序设计 74、中断程序设计实验P39实验八 85、数字钟设计实验P41实验九 95、数字钟设计实验P41实验九 106、8253定时计数器实验P30实验六 117、8255并口可编程实验P24实验四 128、模数转换ADC0809P17实验一 139、数模转换DAC0832P20实验二 1410、小型直流电机调速实验P57实验十三 1511、双机通信实验P44实验十注意事项 1、实验室位置第三教学楼3607(商学院办公室楼上); 2、中午实验的同学1230分开始,其它按照学校作习时间表; 3、每次实验前写好预习报告,进入实验室时指导老师检查合格后方可进行实验,实验过程中认真记录实验结果和出现的问题,各组独立完成实验,并按规定交实验报告(每个实验做完当堂交报告)。 4、分组08电科1 (1)=学号前36,08电科1 (2)=余下的37人;08电科2=全班37人08电子1 (1)=学号前32,08电子1 (2)=学号前33-64,08电子1 (3)=余下的18人,08电子2 (1)=学号前32,08电子2 (2)=余下的12人08通信1 (1)=学号前30,08通信1 (2)=学号前31-60,08通信1 (3)=余下的9人08通信2 (1)=学号前30,08通信2 (2)=余下的20人实验1熟悉汇编语言的编程环境实验目的1学习并掌握Visual ASM软件的使用;2学习在MSDOS方式下的手工汇编方式;3.学习Debug.exe软件的使用方法;实验重点和难点1Debug命令实验课时2学时实验仪器联想启天2400微型计算机。 实验原理180X86微处理的编程结构1.18086/8088微处理器的内部编程结构1.28086/8088的内部寄存器2Visual ASM的使用方法选择工作目录;编写源程序保存源程序汇编源程序链接目标码运行/调试程序;3手工汇编运行“cmd.exe”进入MSDOS方式,用记事本等文本工具软件编写源程序并以“.asm”扩展名存盘进入到工作目录汇编源文件,运行“masm文件名”链接目标文件,运行“link文件名”运行可执行文件,“文件名.exe”4.DEBUG命令常用命令汇编A;反汇编U;查看内存D;修改寄存器R;修改内存命令:E;单步命令:T;单步命令:P;运行命令:G等实验内容与步骤1用VISUAL ASM的建立一个汇编语言程序;输入如下程序并存盘。 data segmentmessage dbHello World!,$data endscode segmentassume cs:code,ds:data begin:mov ax,data mov ds,ax mov dx,offset messagemov ah,9int21h;显示字符串mov ah,0int16h;等待键盘输入,暂停程序运行mov ah,4ch int21h;退出程序code ends end begin汇编、链接、运行该程序,记录运行结果2将上述程序复制到记事本,另存为a1.asm。 然后手工编译运行程序。 2.1“另存为”对话框的选择保存路径“C:dv8086”;“保存类型”选择“所有文件”,文件名填“a1.asm”;2.2“开始”菜单“运行。 执行命令“cmd”,进入MSDOS方式,执行“cddv8086”转换到工作目录“c:dv8086”下;2.3执行“masm a1.asm”将a1.asm汇编成目标代码;2.4执行“link a1.obj”将a1.obj连接生成可执行文件“a1.exe”2.5执行“a1.exe”或“a1”可以得到程序的执行结果。 3用DEBUG命令调试运行上述程序3.1同2.23.2执行“debug a1.exe”,显示“”号提示符3.3执行“u”并按“enter”键,可以看到从“begin”行开始的程序代码,该命令为反汇编命令;3.4连续按“p”+“enter”,可以一步一步、执行程序,并显示每一步的执行结果;也可以按“t”+“enter”,但二者不同的是后者会进行中断子程序中去,之后就看不懂了。 3.5按“g”+“enter”执行程序,可以得到2中的运行结果,按“q”+“enter”退出。 4其它DEBUG命令使用,记录命令执行前和执行后的结果()键入DEBUG进入DEBUG控制状态,显示提示符-。 (2)用命令F10010FA将A的ASCII码填入内存。 (3)用命令D10010F观察内存中的十六进制码及屏幕右边的ASCII字符。 (4)用命令F11011F41重复上二项实验,观察结果并比较。 (5)用命令E100303132?3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的十六进制数是什么字符的ASCII码? (6)用H命令检查下列各组十六进制数加减结果并和你的手算结果比较:A)34H,22H B)56H,78H C)A5,79H D)1284H,5678H E)A758H,347FH (7)用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。 (8)用R命令将AX,BX内容改写为1050H及23A8H。 5用DEBUG调试指令,输入以下程序段MOV BX,1000MOV CX,10SUB AX,AX LOP:ADD AL,BXADC AH,0INC BXJ:LOOP LOPINT3记录每一个步骤的执行执行结果。 (1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。 (2)用命令N AA将此程序命名为文件AA(文件名可任取)。 (3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址)。 (4)用命令W100将此程序存到AA命名的磁盘文件中。 (5)用命令Q退出DEBUG。 (6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。 若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。 (7)用E命令在内存地址1000H处键入16个数字(8)用命令G=100J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值。 (9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错。 (10)重复G J与T,再检查AX是否正确。 (11)用G命令使程序运行到结束,检查AX值是否正确。 本实验注意事项1第一次实验,请仔细按照指导书操作,以免出现莫名其妙的错误实验总结12附实验参考程序12实验循环程序设计实验实验目的1掌握循环程序和排序程序设计方法。 2掌握带符号数的比较转移指令:JL,JLE,JG,JGE;3.伪指令EQU及操作符$的使用;实验重点和难点1转移指令的使用实验课时2学时实验仪器联想启天2400微型计算机。 实验原理1参考教材的汇编语言程序设计实验内容与步骤1简单的循环程序。 data segmentstring db“Hello world”code segmentassume cs:code,ds:data begin:mov ax,ds mov ds,ax mov cx,7mov bx,offset stringnext:mov dl,bxmov ah,2int21h inc bx loopnext mov ah,0int16h mov ah,4ch int21h code endsendbegin编译上面的程序。 指出其中的错误并改正错误。 2多重循环CODE SEGMENTORG100H ASSUME CS:CODE,DS:CODE MAIN:JMP STARTARRAY DW1234H,5673H,7FFFH,8000H,0DFFH DW0AB5H,0369H,005FH,5634H,9069H COUNTEQU$-ARRAY START:MOV CX,COUNT SHRCX,1DEC CXMOV BL,-1AGAIN:MOV DX,CX ANDBL,BL JEEXIT XORBL,BL XORSI,SI AGAIN1:MOV AX,ARRAYSICMP AX,ARRAYSI+2JLE NCHGXCHG ARRAYSI+2,AX MOVARRAYSI,AX MOVBL,-1NCHG:INC SIINC SIDEC DXJNZ AGAIN1LOOP AGAINEXIT:INT20H CODE ENDS ENDMAIN输入,汇编并连接此程序。 忽略连接时的无堆栈告警。 在DEBUG下运行此程序,记录运行结果。 将转移指令JLE改为JBE,JGE和JAE,分别运行并记录排序结果。 本实验注意事项12实验总结12附实验参考程序12实验子程序设计实验实验目的1掌握利用堆栈传递参数的子程序调用方法。 2掌握子程序递归调用方法。 3过程调用伪指令:PROC,ENDP,NEAR和FAR。 48088指令:CALL,RET,RET n。 5利用RET指令退出EXE文件的方法。 实验重点和难点1利用堆栈传递参数的子程序调用方法;实验课时2学时实验仪器联想启天2400微型计算机。 实验原理1参考教材的汇编语言程序设计2实验内容与步骤1利用堆栈传递参数的子程序调用(求累加和)程序内容:STACK SEGMENTSTACK DB256DUP (0)STACK ENDSDATA SEGMENTARY1DB1,2,3,4,5,6,7,8,9,10COUNT1EQU$-ARY1SUM1DW?ARY2DB10,11,12,13,14,15,16,17,18COUNT2EQU$-ARY2SUM2DW?DATA ENDSMAIN SEGMENT ASSUME CS:MAIN,DS:DATA,SS:STACK STARTPROC FARPUSH DSXOR AX,AX PUSH AX MOV AX,DATA MOVDS,AX MOV AX,COUNT1PUSH AXLEA AX,ARY1PUSH AXCALL FARPTR SUMMOV AX,COUNT2PUSH AXLEA AX,ARY2PUSH AXCALL FARPTR SUMRET STARTENDP MAINENDS PROCESEGMENTASSUME CS:PROCE SUMPROC FARMOV BP,SP MOV CX,BP+6MOV BX,BP+4XOR AX,AX ADN:ADD AL,BXADC AH,0INC BXLOOP ADN MOVBX,AX RET4SUM ENDPPROCE ENDS END START操作步骤: (1)输入,汇编并将此程序连接成EXE文件。 (2)用DEBUG的断点命令和T命令运行此程序,观察并记录每次过程调用及进出栈指令前后(带;的语句)的SP和堆栈内容。 (3)记录最后结果:SUM1,SUM2的段及偏移地址和它们的内容。 2.子程序递归调用(求阶乘)程序内容:STACK SEGMENTSTACK DB100H DUP(?)STACK ENDSDATA SEGMENTRESUL DW?DATA ENDSCODE SEGMENTMAIN PROCFAR ASSUME CS:CODE,DS:DATA,SS:STACK START:PUSH DSSUB AX,AX PUSHAX MOV AX,DATA MOVDS,AX MOV AX,5CALL FACTMOV RESUL,AX RET FACT PROCAND AL,AL JNEIIA MOV AL,1RET IIA:PUSHAXDEC ALCALL FACTX2:POP CXMUL CLRETFACTENDP MAINENDP CODEENDS END START操作步骤: (1)将程序输入,汇编并连接成EXE文件。 (2)用DEBUG的断点和T命令检查并记录每层递归嵌套过程的堆栈和AL内容。 (3)修改源程序,将阶乘数5改为本程序的最大允许值(是多少?),重新汇编连接之。 用DEBUG运行并记录RESUL单元内容。 (4)若要在DOS命令下直接运行并显示阶乘结果(十六进制形式),试修改程序并调试运行。 (机动)本实验注意事项12实验总结12附实验参考程序12实验4中断程序设计实验实验目的1熟悉PC机系列从中断请求到中断响应处理、中断返回的整个中断过程和详细流程;2.熟悉掌握中断有关概念3.了解8259的原理及使用方法4.学会中断服务程序的编写、入口地址的设置和将用户中断源引入的方法实验重点和难点1中断服务程序的编写实验课时2学时实验仪器联想启天2400微型计算机。 实验原理1中断向量的装入中断向量并非常驻内存,而是开机上电时,由程序装入内存指定的中断向量表中。 (1)用MOV指令,假设中断类型号为60H,中断服务程序的段基址是SEG_INTR,偏移是OFFSET_INTR,则填写中断向量表的程序为CLI;关中断CLD;内存地址加1MOVAX,0MOV ES,AX;给ES赋值MOV DI,4*60H;中断向量指针DI MOVAX,OFFSET_INTR;中断服务程序偏移值AX STOSW;AX-DIDI+1MOVAX,SEG_INTR;中断服务程序段基址-AX STOSW;AX-DI+2DI+3STI;开中断 (2)将中断服务程序的入口地址直接写入中断向量表MOVAX,00H MOV ES,AX MOVBX,60H*4;中断号*4-BX MOVAX,006DH;中断服务程序偏移地址MOV ES:BX,AX;装入偏移地址PUSH CSPOP AX;获取中断服务程序的段基址MOVES:BX+2,AX;装入段基址2.中断向量的修改 (1)保存原中断向量(例1CH)的入口地址MOV AL,N MOVAH,35H INT21H MOVOLD_INT_SEG,AX MOVOLD_INT_OFF,BX;取原中断向量的入口地址并保存 (2)设置新的中断向量N的入口地址MOV AL,N MOVAH,25H MOV DX,SEG INT_PR MOVDS,DX MOV DX,OFFSET INT_PR INT21H (3)恢复原中断向量MOV AL,NMOVAH,25H MOV DX,OLD_INT_PR MOVDS,DX MOV DX,OLD_INT_PR INT21H3主程序结构CLI;关中断?;初始化部分,保存原中断向量N的入口地址;设置新的中断入口地址STI;开中断?;主程序的其它处理INT N;(调用中断)?;主程序的其它处理CLI;关中断;恢复原来的借用的中断向量STI;开中断MOVAX,4C00H;退出程序,回到DOS INT21H4.中断程序结构INT-PR PROCFAR CLI?保护现场SETI?(中断主程序)CLI?恢复现场SETI IRETINT-PR ENDP实验内容与步骤1结合前几次实验的内容,编写一个简单的显示字符串的小程序,并调试运行;显示字符串的简单程序d_seg segmentmsg dbHello World!,$d_seg endsc_seg segmentassume cs:c_seg,ds:d_seg start:mov ax,d_seg mov ds,ax mov cx,4l1:mov dx,offset msgmov ah,9h int21h dec cx jzexit1jmp l1exit1:mov ax,4c00h int21h c_seg endsend start2.将上述显示部分功能写成子程序调用的方式,再调试运行;用子程序的方式实现显示字符串d_seg segmentmsg dbHello World!,$d_seg endsc_seg segmentassume cs:c_seg,ds:d_seg mainproc farcall dispcall dispexit1:mov ax,4c00h int21h mainendp disp proc near mov ax,d_seg movds,ax mov dx,offset msgmov ah,9h int21h retdisp endpc_seg endsend main3.将上述子程序写成中断程序如67H中断(系统为用户预留),并调试运行;用中段的方式实现显示字符串d_seg segmentmsg dbHello World!,$old_int_seg dw0old_int_off dw0d_seg endss_seg segmentstack db250dup (0)s_seg endsc_seg segmentassume cs:c_seg,ds:d_seg,ss:s_seg mainproc farmov ax,d_seg movds,ax call init_int int67h int67h int67h call restore_int exit1:mov ax,4c00h int21h mainendp init_int proear cli mov al,67h mov ah,35h int21h mov old_int_off,bx movold_int_seg,es mov ax,seg dispmovds,ax mov dx,offset dispmov ah,25h mov al,67h int21h stiret init_int endprestore_int proear cli;mov ax,d_seg;movds,ax movdx,old_int_off mov ax,old_int_seg movds,ax movah,25h mov al,67h int21h stiret restore_int endpdisp proearmov ax,d_seg movds,ax movdx,offset msgmovah,9h int21h iretdisp endpc_seg endsend main4.修改系统的时钟中断1CH,编一中断处理程序,让系统每秒钟次显示一个字符串进行提示,共显示20次参考源程序;用1CH定时中段的方式实现每秒一个,显示10个字符串d_seg segment;数据段msg dbHello World!,$old_int_seg dw0;存储1ch中断入口的段地址old_int_off dw0;存储1ch中断入口的偏移地址count db0;次数,全局变量,在主程序和;中断子程序间通信count1db0;18次为1秒d_seg endss_seg segmentstack;堆栈段db250dup (0)s_seg endsc_seg segment;代码段assume cs:c_seg,ds:d_seg,ss:s_seg mainproc far;主程序开始movax,d_seg movds,ax;数据段初始化callinit_int;初始化中断l1:cmp count,10;50次jne l1callrestore_int;恢复原1ch中断入口exit1:movax,4c00h;退出,回到DOS int21h mainendp;主程序结束init_int proear;初始化中断子程序开始cli pushds;保存DS,因程序中修改了它mov al,1ch movah,35h int21h movold_int_off,bx;保存原1ch的偏移地址movold_int_seg,es;保存原1ch的段地址movax,seg disp;安装新中断程序入口地址movds,ax movdx,offset dispmovah,25h mov al,1ch int21h popds;恢复DS stiret init_int endp;初始化中断子程序结束restore_int proear;恢复原中断子程序开始cli movdx,old_int_off movax,old_int_seg movds,ax movah,25h moval,1ch int21h stiret restore_int endp;恢复原中断子程序结束dispproear;新的1ch中段程序开始climovax,d_seg;为确保访问到字符串,重新指定DS movds,ax movdx,offset msgmovah,9h;显示字符串inc count1cmp count1,18jne lessthen1sec inount movcount1,0int21h lessthen1sec:sti iretdisp endp;新的1ch中段程序结束c_seg ends;代码段结束end main;程序结束本实验注意事项1实验内容和步骤 3、4为学生必做, 1、2选做实验总结12附实验参考程序12实验58279键盘显示接口实验实验目的1学习8279A与微机8088系统的接口方法;2了解8279A用在译码扫描和编码扫描方式时的编程方法;3.8088CPU用查询方式和中断方式对8279A进行控制的编程方法。 实验重点和难点18279A的结构和用在译码扫描和编码扫描方式时的编程方法实验课时2学时实验仪器DVCC8086JH十六位微机仿真实验系统、联想启天2400微型计算机。 实验原理18279的功能与结构8279A是一种通用的可编程键盘/显示器接口器件,可对64个开关矩阵组成的键盘进行自动扫描,接收键盘上的输入信息,存入内部的FIFO寄存器,并在有键输入时,CPU请求中断。 8279A内部还有一个168的显示缓冲器,能对8位或16位LED自动扫描,使显示缓冲器的内容在LED上显示出来。 内部结构 (1)8279A内部具有时序控制逻辑,通过控制和时序寄存器存放键盘和显示器的工作方式和其他状态信息。 内部还包含有N分频器,分频系数为N,由231之间任一数可编程确定,对CLK上时钟进行N分频以产生基本的100KHZ的内部计数信号(扫描时间为5.1ms,去抖动时间为10.3ms)。 (2)8279A内部的扫描计数器有两种工作方式一是编码方式,计数器以二进制计数,4位计数器的状态直接从SL0SL3译码产生键盘和显示的扫描信号,高电平有效;二是译码方式,对计数器的低二位译码后从SL0SL3上输出,作为48键盘和4位显示器的扫描信号,低电平有效。 (3)8279A在键盘工作时,由输入缓冲区锁存RL0RL7上的信息,以确定键入情况,其内部有去抖动电路(10ms)。 (4)FIFO/传感器RAM它是一个双功能88RAM,在键盘和选通输入方式中,它是一个先进的数据缓冲器。 当/CS=0,A0=1,/RD=0时,读出FIFO的内容,FIFO中有数据时,由控制电路发IRQ信号,在传感方式中,88RAM用作传感器RAM,当检测到某个传感器发生变化时,IRQ上升为高电平。 (5)显示地址寄存器和显示RAM用于存放CPU当前正在读写的显示RAM单元地址,以及正在显示的两个4位半字节地址。 在选定了工作方式和地址后,CPU可直接读出显示RAM中的内容。 28279的编程 (1)键盘显示器方式设置命令*RESET后,设定为该种方式。 (2)扫描频率控制命令 (3)读FIFO前设置的读地址命令FIFO中的数据格式(键盘数据格式)D7D6D5D4D3D2D1D0TL SHIFTSL2SL1SL0R2R1R0控制移位行编码列编码 (4)读显示RAM前设置的读地址命令 (5)写显示RAM前设置的写地址命令 (6)显示RAM写入禁止/消隐命令(BCD码显示用)显示RAM的位与输出引脚的对应关系 (7)清除FIFO状态字、显示RAM清除命令说明清除显示RAM约需160us,此时FIFO状态字最高位Du=1,表示显示无效,CPU不能向显示RAM写入数据。 (8)中断结束/出错方式设置命令 4、FIFO状态字FIFO状态字由控制字口读入FIFO中的数据格式实验内容与步骤1采用系统默认的工作方式和时钟分频模式,编写程序,将键盘的输入转换成显示字形码从8个LED上显示出来.code segmentassume cs:code cmd8279equ00dfh data8279equ00deh org01000h start:jmp scankeyled db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h;0-F的字形码;初始化工作方式,时钟分频的步骤省略,采用系统初始化好的方式;检测是否有键按下,如果有则读取之scankey:movdx,cmd8279in al,dx testal,07h jzscankey movdx,cmd8279moval,40h;读键值命令out dx,al movdx,data8279in al,dx;得到的是什么格式?tl,shift,sl2,sl1,sl0,r2,r1,r0mov bx,offset ledxlat;查表得字形al movbl,al;bl字形movdx,cmd8279moval,90h;自增out dx,al movdx,data8279moval,bl movcx,08h l1:out dx,al loopnz l1jmp scankeycode endsend start2按照实验原理中所述,修改工作方式和执行其它命令,运行修改后的程序并记录实验结果.本实验注意事项1如果采用单步调试运行,程序不能正确执行.2实验总结12附实验参考程序12实验68253定时计数器实验实验目的1.学习8253A可编程定时/计数器与8088CPU的接口方法;2.了解8253A的工作方式;3.掌握8253A在各种方式下的编程方法。 实验重点和难点18253A在各种方式下的编程方法实验课时2学时实验仪器DVCC8086JH十六位微机仿真实验系统、联想启天2400微型计算机。 实验原理18253A内部结构8253A定时/计数器具有定时、计数双功能。 它具有三个相同且相互独立的16位减法计数器,分别称为计数器 0、计数器 1、计数器2。 每个计数器计数频率为02MHz,其内部结构如图6-10所示。 由于其内部数据总线缓冲器为双向三态,故可直接连接在系统数据总线上,通过CPU写入计数初值,也可由CPU读出计数当前值;其工作方式通过控制字确定;读写控制逻辑用于当选中该芯片时,根据读/写命令及送来的地址信息控制整个芯片工作;控制字寄存器用于接收数据总线缓冲器的信息;当写入控制字时,控制计数器的工作方式,当写入数据时则装入计数初值(控制寄存器为8位,只写不能读)。 图6-10图6-112.计数器内部结构如图6-11所示,每个计数器由一个16位可预置的减1计数器组成,计数初值可保存在16位的锁存器中,该锁存器只写不能读。 在计数器工作时,初值不受影响,以便进行重复计数。 图中每个计数器有一个时钟输入端CLK作为计数脉冲源,计数方式可以是二进制,计数范围110000H,也可以是十进制,计数范围165536。 门控端GATE用于控制计数开始和停止。 当计数器计数值减到零时,OUT端输出标志信号。 3.8253A端口地址选择表5-28253A端口地址选择4.8253A功能8253A既可作定时器又可作计数器 (1)计数计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK脉冲对计数值进行减1计数,每来一个脉冲减1,当计数值减至0时,由OUT端输出一个标志信号。 (2)定时计数器装入初值后,当GATE为高电平时,由CLK脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。 除上述典型应用外,8253A还可作频率发生器、分频器、实时钟、单脉冲发生器等。 5.8253A控制字说明 (1)8253A每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输入一个信号。 (2)8253A编程时先写控制字,再写时间常数。 6、8253A工作方式 (1)方式0计数结束产生中断方式当写入控制字后,OUT变成低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。 (2)方式1可编程单次脉冲方式当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。 /CS/RD/WR A1A2寄存器选择与操作00001111000000110101写入计数器#0写入计数器#1写入计数器#2写入控制寄存器000000111001010读计数器#0读计数器#1读计数器#xx011111无操作(三态)禁止(三态)无操作(三态) (3)方式2频率发生器方式当初值装入时,OUT变为高,计数结束,OUT变为低。 该方式下如果计数未结束,但GATE为低时,立即停止计数,强逼OUT变高,当GATE再变高时,便启动一次新的计数周期。 (4)方式3方波发生器当装入初值后,在GATE上升沿启动计数,OUT输出高电平;当计数完成一半时,OUT输出低电平。 (5)方式4软件触发选通当写入控制字后,OUT输出为高,装入初值且GATE为高时开始计数,当计数结束,OUT端输出一个宽度等于一个时钟周期的负脉冲。 (6)方式5硬件触发选通在GATE上升沿启动计数器,OUT一直保持高电平;计数结束,OUT端输出一个宽度等于一个时钟周期的负脉冲。 实验内容与步骤1.电路连接本实验原理图如图5-12所示,8253A的A 0、A1接系统地址总线A 0、A1,故8253A有四个端口地址,如端口地址表5-2所示。 8253A的片选地址为48H4FH。 因此,本实验仪中的8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道 0、通道 1、通道2和控制字。 四、实验线路连接 1、8253A芯片的CLK2引出插孔连分频输出插孔1MHZ。 2、8253A的GATE2接开关K1。 2为各种工作方式编写测试程序,并用软件示波器观察输出波形,记录波形。 2.1方式0测试程序和所观察到的波形,修改置入T2定时器的初值,观察负脉冲的宽度如何变化。 2.2方式1测试程序和所观察到的波形,读取信号周期或脉冲宽度。 2.3方式2测试程序和所观察到的波形,读取信号周期或脉冲宽度。 2.4方式3测试程序和所观察到的波形,读取信号周期或脉冲宽度。 2.5方式4测试程序和所观察到的波形,读取信号周期或脉冲宽度。 2.6方式6测试程序和所观察到的波形,读取信号周期或脉冲宽度。 本实验注意事项1软件示波器的使用用专用串行线将另一个串口连接到实验箱的J10,电源开关处的粗白线连接到WAVE插座,表笔一端插入电源指示灯处的红色插孔,另一端接触OUT2。 (实验指导书中有点错,不使用0通道!)2根据工作方式不同,测试波形时操作方法略有不同。 实验总结12附实验参考程序11方式0测试程序CODE SEGMENTASSUMECS:CODE CON8253EQU004BH T2_8253EQU004AH org1000h START:JMP fs0fs0:MOV DX,CON8253;方式010110000MOV AL,10110000B;方式010110000OUT DX,AL MOV DX,T2_8253MOV AL,0h OUTDX,AL;低8位初值MOV AL,0fH OUTDX,AL;高8位初值call delay;为了看到循环的波形,添加循环功能jmp fs0delay:MOVCX,08fffH l1:LOOP l1ret CODEENDSENDSTART修改置入T2定时器的初值,观察负脉冲的宽度如何变化。 2实验78255并口可编程实验实验目的1掌握并行接口芯片8255A和微机接口的连接方法。 2掌握并行接口芯片8255A的工作方式及其编程方法。 实验重点和难点18255A的工作方式及其编程方法。 2实验课时2学时实验仪器DVCC8086JH十六位微机仿真实验系统、联想启天2400微型计算机。 实验原理18255A结构8255A是可编程并行接口芯片,双列直插式封装,用+5V单电源供电,如图5-6是8255A的逻辑框图,内部有3个8位I/O端口:A口、B口、C口;也可以分为各有12位的两组:A和B组,A组包含A口8位和C口的高四位,B组包含B口8位和C口的低4位;A组控制和B组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。 由于8255A数据总线缓冲器是双向三态8位驱动器,因此可以直接和8088系统数据总线相连。 图5-68255A结构引脚图如下所示28255A端口地址见表5-1A1AO/RD/WR/CS操作类型操作方向001010000111000PA数据总线PB数据总线PC数据总线输入(读)00110101111100000000数据总线PA数据总线PB数据总线PC数据总线控制字输出(写)110111100数据总线三态非法状态数据总线三态断开38255A工作方式8255A芯片有三种工作方式:方式 0、方式 1、方式2。 它通过对控制寄存器写入不同的控制字来决定其三种不同的工作方式。 方式0:基本输入/输出图5-7(a)图5-7(d)如图5-7(a)所示。 该方式下的A口8位和B口8位可以由输入的控制字决定为输入或输出,C口分为高4位(PC7PC4)和低4位(PC3PC0)两组,也有控制字决定其输入或输出。 需注意的是:该方式下,只能将C口其中一组的四位全部置为输入或输出。 方式1:选通输入/输出图5-7(b)图5-7(c)如图5-7(b)、(c)所示。 该方式又叫单向输入输出方式,它分为A、B组,A组由数据口A和控制口C的高4位组成,B组由数据口B和控制口C的底4位组成。 数据口的输入/输出都是锁存的,与方式0不同,由控制字来决定它作输入还是输出。 C口的相应位用于寄存数据传送中所需的状态信号和控制信息。 方式2:双向输入输出如图5-7(d)所示。 本方式只有A组可以使用,此时A口为输入输出双向口,C口中的5位(PC3PC7)作为A口的控制位。 48255A控制字 (1)方式选择控制字 (2)PC口按位置/复位控制字实验内容与步骤1实验原理图如实验原理图5-8所示,PC口8位接8个开关K1K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。 拨动K1K8,PB口上接的8个发光二极管L1L8对应显示K1K8的状态。 图5-82编写程序实验1中的功能。 3发挥部分将K1设计为流水灯开关,即当K1为高电平时,L1L8每三个灯亮,中间隔一个灯亮,循环点亮。 当K1为低电平时,K2K8为1中的功能。 本实验注意事项12实验总结12附实验参考程序12CODE SEGMENTASSUMECS:CODE IOCONPTEQU0073H IOCPTEQU0072H IOBPTEQU0071H START:JMP IOLEDIOLED:MOV AL,89H;10001001B方式有效,AB输出,C输入MOV DX,IOCONPT OUTDX,AL movcx,3h l1:loop l1IOLED1:MOV DX,IOCPT INAL,DX MOV DX,IOBPT OUTDX,AL MOVCX,0FFFFH DELAY:LOOP DELAYJMP IOLED1CODEENDSENDSTART实验8电子琴设计实验实验目的1.掌握模数转换芯片DAC0832的工作原理。 2通过D/A转换器产生模拟信号,使实验系统作为一简单电子琴。 3了解利用数模产生音乐的基本方法。 实验重点和难点1DAC0832的工作原理及编程方法2实验课时2学时实验仪器DVCC8086JH十六位微机仿真实验系统、联想启天2400微型计算机。 实验原理1DAC0832结构DAC0832是用先进的CMOS/SiCr工艺制成的双列直插式单片8位D/A转换器。 它可以直接和8088CPU相接口。 它采用二次缓冲方式(有两个写信号/WR 1、/WR2),这样可以在输出的同时,采集下一个数字量,以提高转换速度。 而重要的是能够在多个转换器同时工作时,有可能同时输出模拟量。 它的主要技术参数如下分辨率为8位,电流建立时间为1us,单一电源5V-15V支流供电,可双缓冲、单缓冲或支流数据输入。 DAC0832内部结构见图5-3。 图5-32DAC0832引脚功能*DI0DI7数据输入线,TTL电平,有效时间应大于90ns(否则锁存的数据会出错);*ILE数据锁存允许控制信号输入线,高电平有效;*/CS选片信号输入线,低电平有效;*/WR1输入锁存器写选通输入线,负脉冲有效(脉宽应大于500ns)。 当/CS为“0”、ILE为“1”、/WR1为“0”时,DI0DI7状态被锁存到输入锁存器。 */XFER数据传输控制信号输入线,低电平有效;*/WR2:DAC寄存器写选通输入线,负脉冲(宽于500ns)有效.当/XFER为“0”且/WR2有效时,输入锁存器的状态被传送到DAC寄存器中;*lout1:电流输入线,当输入为全1时lout1最大;*lout2:电流输出线,其值和lout1值之和为一常数;*Rfb:反馈信号输入线,改变Rfb端外接电容器值可调整转换满量程精度;*V:电源电压线,V范围为+5V+15V;*VREF:基准电压输入线,VREF范围为-10V+10V;*AGND:模拟地;*DGND:数字地.3DAC0832工作方式根据对DAC0832的输入锁存器和DAC寄存器的不同的控制方法,DAC0382有如下三种工作方式: (1)单缓冲方式此方式适用与只有一路模拟量输出或几路模拟量非同步输出的情形。 方法是控制输入锁存器和DAC寄存器同时接数,或者只用输入锁存器而把DAC寄存器接成直通方式。 (2)双缓冲方式此方式适用于多个DAC0832同时输出的情形方法是先分别使这些DAC0832的输入锁存器接数,再控制这些DAC0832同时传递数据到DAC寄存器以实现多个D/A转换同步输出。 (3)直通方式此方式宜于连续反馈控制线路中.方式是使所有控制信号(/CS、/WR 1、/WR 2、ILE、XFER)均有效.4电流输出转换成电压输出DAC0832的输出是电流,有两个电流输出端(lout1和lout2),它们的和为一常数.使用运算放大器,可以将DAC0832的电流输出线性地转换成电压输出.根据运放和DAC0832的连接方法,运放的电压输出可以分为单极型和双极型两种.图5-4是一种单极型电压输出电路.图5-4中,DAC0832的lout2被接地,lout1接运放LM741的反相输入端,LM741的正相输入端接地.运放的输入电压Vout之值等于lout1与Rfb之积,Vout的极性与DAC0832的基准电压VREF极性相反.Vout=-(VREF(输入数字量的十进制数)/256,如果在单极型输出的线路中再加一个放大器,便构成双极型输出线路.图5-42实验内容与步骤1测试DAC0832模块是否工作正常,测试0,80,255等数据对应的转换电压约为多少,然后编写程序从DAC0832输出正弦波信号。 2编写程序让82

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论