收藏 分销(赏)

微机实验优秀教案2010-11-1.doc

上传人:天**** 文档编号:2565655 上传时间:2024-06-01 格式:DOC 页数:40 大小:2.40MB
下载 相关 举报
微机实验优秀教案2010-11-1.doc_第1页
第1页 / 共40页
微机实验优秀教案2010-11-1.doc_第2页
第2页 / 共40页
点击查看更多>>
资源描述
2010-2011学年度第一学期 微机原理实验教案 陈善荣 物理科学与信息工程学院《微机原理与接口技术》实验安排表 实验时间 班级 第一组 第二组 第三组 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节 实验项目 教学周次 实验项目名称 对应的实验指导书的内容 汇编语言程序设计指导书(电子文档) 微机原理与接口实验指导书(2006.7) 4 1、熟悉汇编语言的编程环境 实验一 熟悉汇编语言的编程过程 5 2、循环程序设计实验 实验五 循环程序设计 6 3、子程序设计实验 实验七 子程序设计 7 4、中断程序设计实验 P39实验八 8 5、数字钟设计实验 P41实验九 9 5、数字钟设计实验 P41实验九 10 6、8253定时/计数器实验 P30实验六 11 7、8255并口可编程实验 P24实验四 12 8、模数转换ADC0809 P17实验一 13 9、数模转换DAC0832 P20实验二 14 10、小型直流电机调速实验 P57实验十三 15 11、双机通信实验 P44实验十 注意事项: 1、实验室位置:第三教学楼3607(商学院办公室楼上); 2、中午实验的同学12:30分开始,其它按照学校作习时间表; 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软件的使用方法; [实验重点和难点] 1.Debug命令 [实验课时] 2学时 [实验仪器] 联想启天2400微型计算机。 [实验原理] 1. 80X86微处理的编程结构 1.1 8086/8088微处理器的内部编程结构 1.2 8086/8088的内部寄存器 2. Visual ASM的使用方法 选择工作目录;编写源程序->保存源程序->汇编源程序->链接目标码->运行/调试程序; 3. 手工汇编 运行“cmd.exe”进入MSDOS方式,用记事本等文本编辑工具软件编写源程序并以“.asm”扩展名存盘->进入到工作目录->汇编源文件,运行“masm 文件名”->链接目标文件,运行“link 文件名”->运行可执行文件,“文件名.exe” 4.DEBUG命令 常用命令:汇编A;反汇编U;查看内存D;修改寄存器R;修改内存命令:E;单步命令:T;单步命令:P;运行命令:G等 [实验内容与步骤] 1. 用VISUAL ASM的建立一个汇编语言程序;输入如下程序并存盘。 data segment message db "Hello World!",'$' data ends code segment assume cs:code,ds:data begin:mov ax,data mov ds,ax mov dx,offset message mov ah,9 int 21h ;显示字符串 mov ah,0 int 16h ;等待键盘输入,暂停程序运行 mov ah,4ch int 21h ;退出程序 code ends end begin 汇编、链接、运行该程序,记录运行结果: 2. 将上述程序复制到记事本,另存为a1.asm。然后手工编译运行程序。 2.1“另存为”对话框的选择保存路径“C:\dvcc8086”;“保存类型”选择“所有文件”,文件名填“a1.asm”; 2.2 “开始”菜单“运行。。。”执行命令“cmd”,进入MSDOS方式,执行“cd\dvcc8086”转换到工作目录“c:\dvcc8086”下; 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.2 3.2 执行“debug a1.exe”,显示“-”号提示符 3.3 执行“u”并按“enter”键,可以看到从“begin”行开始的程序代码,该命令为反汇编命令; 3.4 连续按“p”+“enter”,可以一步一步、执行程序,并显示每一步的执行结果;也可以按“t”+“enter”,但二者不同的是:后者会进行中断子程序中去,之后就看不懂了。 3.5 按“g”+“enter”执行程序,可以得到2中的运行结果,按 “q ”+“enter”退出。 4. 其它DEBUG 命令使用,记录命令执行前和执行后的结果 (1)键入 DEBUG 进入 DEBUG 控制状态,显示提示符 '- '。 (2)用命令 F100 10F 'A' 将'A'的ASCII码填入内存。 (3)用命令 D100 10F 观察内存中的十六进制码及屏幕右边的ASCII字符。 (4)用命令 F110 11F 41 重复上二项实验,观察结果并比较。 (5)用命令 E100 30 31 32 …… 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,1000 MOV CX,10 SUB AX,AX LOP: ADD AL,[BX] ADC AH,0 INC BX J: LOOP LOP INT3 记录每一个步骤的执行执行结果。 (1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。 (2)用命令N AA将此程序命名为文件AA(文件名可任取)。 (3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址)。 (4)用命令W 100将此程序存到AA命名的磁盘文件中。 (5)用命令Q退出DEBUG。 (6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。 (7)用E命令在内存地址1000H处键入16个数字 (8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值。 (9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错。 (10)重复G J与T,再检查AX是否正确。 (11)用G命令使程序运行到结束,检查AX值是否正确。 [本实验注意事项] 1.第一次实验,请仔细按照指导书操作,以免出现莫名其妙的错误 [实验总结] 1. 2. [附实验参考程序] 1. 2. 实验2 循环程序设计实验 [实验目的] 1.掌握循环程序和排序程序设计方法。 2.掌握带符号数的比较转移指令:JL,JLE,JG,JGE; 3. 伪指令 EQU 及操作符 '$'的使用; [实验重点和难点] 1. 转移指令的使用 [实验课时] 2学时 [实验仪器] 联想启天2400微型计算机。 [实验原理] 1. 参考教材的汇编语言程序设计 [实验内容与步骤] 1.简单的循环程序。 data segment string db “Hello world” code segment assume cs:code,ds:data begin:mov ax,ds mov ds,ax mov cx,7 mov bx,offset string next: mov dl,[bx] mov ah,2 int 21h inc bx loop next mov ah,0 int 16h mov ah,4ch int 21h code ends end begin 编译上面的程序。指出其中的错误并改正错误。 2.多重循环 CODE SEGMENT ORG 100H ASSUME CS:CODE,DS:CODE MAIN: JMP START ARRAY DW 1234H,5673H,7FFFH,8000H,0DFFH DW 0AB5H,0369H,005FH,5634H,9069H COUNT EQU $-ARRAY START: MOV CX,COUNT SHR CX,1 DEC CX MOV BL,-1 AGAIN: MOV DX,CX AND BL,BL JE EXIT XOR BL,BL XOR SI,SI AGAIN1: MOV AX,ARRAY[SI] CMP AX,ARRAY[SI+2] JLE NCHG XCHG ARRAY[SI+2],AX MOV ARRAY[SI],AX MOV BL,-1 NCHG: INC SI INC SI DEC DX JNZ AGAIN1 LOOP AGAIN EXIT: INT 20H CODE ENDS END MAIN 输入,汇编并连接此程序。忽略连接时的无堆栈告警。 在DEBUG下运行此程序,记录运行结果。 将转移指令JLE改为JBE,JGE和JAE,分别运行并记录排序结果。 [本实验注意事项] 1. 2. [实验总结] 1. 2. [附实验参考程序] 1. 2. 实验3 子程序设计实验 [实验目的] 1.掌握利用堆栈传递参数的子程序调用方法。 2.掌握子程序递归调用方法。 3.过程调用伪指令: PROC,ENDP,NEAR和FAR。 4.8088指令: CALL,RET,RET n。 5.利用RET指令退出EXE文件的方法。 [实验重点和难点] 1.利用堆栈传递参数的子程序调用方法; [实验课时] 2学时 [实验仪器] 联想启天2400微型计算机。 [实验原理] 1.参考教材的汇编语言程序设计 2. [实验内容与步骤] 1.利用堆栈传递参数的子程序调用(求累加和) 程序内容: 40 / 40 STACK SEGMENT STACK DB 256 DUP(0) STACK ENDS DATA SEGMENT ARY1 DB 1,2,3,4,5,6,7,8,9,10 COUNT1 EQU $-ARY1 SUM1 DW ? ARY2 DB 10,11,12,13,14,15,16,17,18 COUNT2 EQU $-ARY2 SUM2 DW ? DATA ENDS MAIN SEGMENT ASSUME CS:MAIN,DS:DATA,SS:STACK START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV AX,COUNT1 PUSH AX LEA AX,ARY1 PUSH AX CALL FAR PTR SUM MOV AX,COUNT2 PUSH AX LEA AX,ARY2 PUSH AX CALL FAR PTR SUM RET START ENDP MAIN ENDS PROCE SEGMENT ASSUME CS: PROCE SUM PROC FAR MOV BP,SP MOV CX,[BP+6] MOV BX,[BP+4] XOR AX,AX ADN: ADD AL,[BX] ADC AH,0 INC BX LOOP ADN MOV [BX],AX RET 4 SUM ENDP PROCE ENDS END START 操作步骤: (1)输入,汇编并将此程序连接成EXE文件。 (2)用DEBUG的断点命令和T命令运行此程序,观察并记录每次过程调用及进出栈指令前后(带';'的语句)的SP和堆栈内容。 (3)记录最后结果:SUM1,SUM2的段及偏移地址和它们的内容。 2.子程序递归调用(求阶乘) 程序内容: STACK SEGMENT STACK DB 100H DUP(?) STACK ENDS DATA SEGMENT RESUL DW ? DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV AX,5 CALL FACT MOV RESUL,AX RET FACT PROC AND AL,AL JNE IIA MOV AL,1 RET IIA: PUSH AX DEC AL CALL FACT X2: POP CX MUL CL RET FACT ENDP MAIN ENDP CODE ENDS END START 操作步骤: (1)将程序输入,汇编并连接成EXE文件。 (2)用DEBUG的断点和T命令检查并记录每层递归嵌套过程的堆栈和AL内容。 (3)修改源程序,将阶乘数 5 改为本程序的最大允许值(是多少?),重新汇编连接之。用DEBUG运行并记录RESUL单元内容。 (4)若要在DOS命令下直接运行并显示阶乘结果(十六进制形式),试修改程序并调试运行。(机动) [本实验注意事项] 1. 2. [实验总结] 1. 2. [附实验参考程序] 1. 2. 实验4 中断程序设计实验 [实验目的] 1.熟悉PC机系列从中断请求到中断响应处理、中断返回的整个中断过程和详细流程; 2. 熟悉掌握中断有关概念 3. 了解8259的原理及使用方法 4. 学会中断服务程序的编写、入口地址的设置和将用户中断源引入的方法 [实验重点和难点] 1.中断服务程序的编写 [实验课时] 2学时 [实验仪器] 联想启天2400微型计算机。 [实验原理] 1.中断向量的装入 中断向量并非常驻内存,而是开机上电时,由程序装入内存指定的中断向量表中。 (1)用MOV指令,假设中断类型号为60H,中断服务程序的段基址是SEG_INTR,偏移是OFFSET_INTR,则填写中断向量表的程序为: CLI ;关中断 CLD ;内存地址加1 MOV AX,0 MOV ES,AX ;给ES赋值 MOV DI,4*60H ;中断向量指针->DI MOV AX,OFFSET_INTR ;中断服务程序偏移值->AX STOSW ;AX->[DI][DI+1] MOV AX,SEG_INTR ;中断服务程序段基址->AX STOSW ;AX->[DI+2][DI+3] STI ;开中断 (2)将中断服务程序的入口地址直接写入中断向量表 MOV AX,00H MOV ES,AX MOV BX,60H*4 ;中断号*4->BX MOV AX,006DH ;中断服务程序偏移地址 MOV ES:[BX],AX ;装入偏移地址 PUSH CS POP AX ;获取中断服务程序的段基址 MOV ES:[BX+2],AX ;装入段基址 2.中断向量的修改 (1)保存原中断向量(例1CH)的入口地址 MOV AL,N MOV AH,35H INT 21H MOV OLD_INT_SEG,AX MOV OLD_INT_OFF,BX ;取原中断向量的入口地址并保存 (2)设置新的中断向量N的入口地址 MOV AL,N MOV AH,25H MOV DX,SEG INT_PR MOV DS,DX MOV DX,OFFSET INT_PR INT 21H (3)恢复原中断向量 MOV AL,N MOV AH,25H MOV DX,OLD_INT_PR MOV DS,DX MOV DX,OLD_INT_PR INT 21H 3.主程序结构 CLI ;关中断 … ;初始化部分,保存原中断向量N的入口地址 … ;设置新的中断入口地址 STI ;开中断 …… ;主程序的其它处理 INT N ;(调用中断) …… ;主程序的其它处理 CLI ;关中断 ;恢复原来的借用的中断向量 STI ;开中断 MOV AX,4C00H ;退出程序,回到DOS INT 21H 4.中断程序结构 INT-PR PROC FAR CLI ……保护现场 SETI …… (中断主程序) CLI ……恢复现场 SETI IRET INT-PR ENDP [实验内容与步骤] 1.结合前几次实验的内容,编写一个简单的显示字符串的小程序,并调试运行 ;显示字符串的简单程序 d_seg segment msg db "Hello World!",'$' d_seg ends c_seg segment assume cs:c_seg,ds:d_seg start: mov ax,d_seg mov ds,ax mov cx,4 l1: mov dx,offset msg mov ah,9h int 21h dec cx jz exit1 jmp l1 exit1: mov ax,4c00h int 21h c_seg ends end start 2.将上述显示部分功能写成子程序调用的方式,再调试运行 ;用子程序的方式实现显示字符串 d_seg segment msg db "Hello World!",'$' d_seg ends c_seg segment assume cs:c_seg,ds:d_seg main proc far call disp call disp exit1: mov ax,4c00h int 21h main endp disp proc near mov ax,d_seg mov ds,ax mov dx,offset msg mov ah,9h int 21h ret disp endp c_seg ends end main 3.将上述子程序写成中断程序如67H中断(系统为用户预留),并调试运行 ;用中段的方式实现显示字符串 d_seg segment msg db "Hello World!",'$' old_int_seg dw 0 old_int_off dw 0 d_seg ends s_seg segment stack db 250 dup(0) s_seg ends c_seg segment assume cs:c_seg,ds:d_seg,ss:s_seg main proc far mov ax,d_seg mov ds,ax call init_int int 67h int 67h int 67h call restore_int exit1: mov ax,4c00h int 21h main endp init_int proc near cli mov al,67h mov ah,35h int 21h mov old_int_off,bx mov old_int_seg,es mov ax,seg disp mov ds,ax mov dx,offset disp mov ah,25h mov al,67h int 21h sti ret init_int endp restore_int proc near cli ;mov ax,d_seg ;mov ds,ax mov dx,old_int_off mov ax,old_int_seg mov ds,ax mov ah,25h mov al,67h int 21h sti ret restore_int endp disp proc near mov ax,d_seg mov ds,ax mov dx,offset msg mov ah,9h int 21h iret disp endp c_seg ends end main 4.修改系统的时钟中断1CH,编一中断处理程序,让系统每秒钟次显示一个字符串进行提示,共显示20次 参考源程序 ;用1CH定时中段的方式实现每秒一个,显示10个字符串 d_seg segment ;数据段 msg db "Hello World!",'$' old_int_seg dw 0 ;存储1ch中断入口的段地址 old_int_off dw 0 ;存储1ch中断入口的偏移地址 count db 0 ;次数,全局变量,在主程序和 ; 中断子程序间通信 count1 db 0 ;18次为1秒 d_seg ends s_seg segment stack ;堆栈段 db 250 dup(0) s_seg ends c_seg segment ;代码段 assume cs:c_seg,ds:d_seg,ss:s_seg main proc far ;主程序开始 mov ax,d_seg mov ds,ax ;数据段初始化 call init_int ;初始化中断 l1: cmp count,10 ;50次 jne l1 call restore_int ;恢复原1ch中断入口 exit1: mov ax,4c00h ;退出,回到DOS int 21h main endp ;主程序结束 init_int proc near ;初始化中断子程序开始 cli push ds ;保存DS,因程序中修改了它 mov al,1ch mov ah,35h int 21h mov old_int_off,bx ;保存原1ch的偏移地址 mov old_int_seg,es ;保存原1ch的段地址 mov ax,seg disp ;安装新中断程序入口地址 mov ds,ax mov dx,offset disp mov ah,25h mov al,1ch int 21h pop ds ;恢复DS sti ret init_int endp ;初始化中断子程序结束 restore_int proc near ;恢复原中断子程序开始 cli mov dx,old_int_off mov ax,old_int_seg mov ds,ax mov ah,25h mov al,1ch int 21h sti ret restore_int endp ;恢复原中断子程序结束 disp proc near ;新的1ch中段程序开始 cli mov ax,d_seg ;为确保访问到字符串,重新指定DS mov ds,ax mov dx,offset msg mov ah,9h ;显示字符串 inc count1 cmp count1,18 jne lessthen1sec inc count mov count1,0 int 21h lessthen1sec: sti iret disp endp ;新的1ch中段程序结束 c_seg ends ;代码段结束 end main ;程序结束 [本实验注意事项] 1.实验内容和步骤3、4为学生必做,1、2选做 [实验总结] 1. 2. [附实验参考程序] 1. 2. 实验5 8279键盘显示接口实验 [实验目的] 1.学习8279A与微机8088系统的接口方法; 2.了解8279A用在译码扫描和编码扫描方式时的编程方法; 3. 8088CPU用查询方式和中断方式对8279A进行控制的编程方法。 [实验重点和难点] 1.8279A的结构和用在译码扫描和编码扫描方式时的编程方法 [实验课时] 2学时 [实验仪器] DVCC-8086JH十六位微机仿真实验系统、联想启天2400微型计算机。 [实验原理] 1.8279的功能与结构 8279A是一种通用的可编程键盘/显示器接口器件,可对64个开关矩阵组成的键盘进行自动扫描,接收键盘上的输入信息,存入内部的FIFO寄存器,并在有键输入时,CPU请求中断。8279A内部还有一个16×8的显示缓冲器,能对8位或16位LED自动扫描,使显示缓冲器的内容在LED上显示出来。 内部结构 (1)8279A内部具有时序控制逻辑,通过控制和时序寄存器存放键盘和显示器的工作方式和其他状态信息。内部还包含有N分频器,分频系数为N,由2~31之间任一数可编程确定,对CLK上时钟进行N分频以产生基本的100KHZ的内部计数信号(扫描时间为5.1ms,去抖动时间为10.3ms)。 (2)8279A内部的扫描计数器有两种工作方式:一是编码方式,计数器以二进制计数,4位计数器的状态直接从SL0~SL3译码产生键盘和显示的扫描信号,高电平有效;二是译码方式,对计数器的低二位译码后从SL0~SL3上输出,作为4×8键盘和4位显示器的扫描信号,低电平有效。 (3)8279A在键盘工作时,由输入缓冲区锁存RL0~RL7上的信息,以确定键入情况,其内部有去抖动电路(10ms)。 (4)FIFO/传感器RAM:它是一个双功能8×8RAM,在键盘和选通输入方式中,它是一个先进的数据缓冲器。当/CS=0,A0=1,/RD=0时,读出FIFO的内容,FIFO中有数据时,由控制电路发IRQ信号,在传感方式中,8×8RAM用作传感器RAM,当检测到某个传感器发生变化时,IRQ上升为高电平。 (5)显示地址寄存器和显示RAM:用于存放CPU当前正在读写的显示RAM单元地址,以及正在显示的两个4位半字节地址。在选定了工作方式和地址后,CPU可直接读出显示RAM中的内容。 2.8279的编程 (1)键盘显示器方式设置命令 *RESET后,设定为该种方式。 (2)扫描频率控制命令 (3)读FIFO前设置的读地址命令 FIFO中的数据格式(键盘数据格式): D7 D6 D5 D4 D3 D2 D1 D0 CNTL SHIFT SL2 SL1 SL0 R2 R1 R0 控制 移位 行编码 列编码 (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 segment assume cs:code cmd8279 equ 00dfh data8279 equ 00deh org 01000h start: jmp scankey led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h ;0-F的字形码 ;初始化工作方式,时钟分频的步骤省略,采用系统初始化好的方式 ;检测是否有键按下,如果有则读取之 scankey:mov dx,cmd8279 in al,dx test al,07h jz scankey mov dx,cmd8279 mov al,40h;读键值命令 out dx,al mov dx,data8279 in al,dx;得到的是什么格式?cntl,shift,sl2,sl1,sl0,r2,r1,r0 mov bx,offset led xlat ;查表得字形al mov bl,al ;bl字形 mov dx,cmd8279 mov al,90h ;自增 out dx,al mov dx,data8279 mov al,bl mov cx,08h l1: out dx,al loopnz l1 jmp scankey code ends end start 2.按照实验原理中所述,修改工作方式和执行其它命令,运行修改后的程序并记录实验结果. [本实验注意事项] 1.如果采用单步调试运行,程序不能正确执行. 2. [实验总结] 1. 2. [附实验参考程序] 1. 2. 实验6 8253定时/计数器实验 [实验目的] 1.学习8253A可编程定时/计数器与8088CPU的接口方法; 2.了解8253A的工作方式; 3.掌握8253A在各种方式下的编程方法。 [实验重点和难点] 1.8253A在各种方式下的编程方法 [实验课时] 2学时 [实验仪器] DVCC-8086JH十六位微机仿真实验系统、联想启天2400微型计算机。 [实验原理] 1.8253A内部结构 8253A定时/计数器具有定时、计数双功能。 它具有三个相同且相互独立的16位减法计数器,分别称为计数器0、计数器1、计数器2。每个计数器计数频率为0~2MHz,其内部结构如图6-10所示。 由于其内部数据总线缓冲器为双向三态,故可直接连接在系统数据总线上,通过CPU写入计数初值,也可由CPU读出计数当前值;其工作方式通过控制字确定;读写控制逻辑用于当选中该芯片时, 根据读/写命令及送来的地址信息控制整个芯片工作; 控制字寄存器用于接收数据总线缓冲器的信息; 当写入控制字时,控制计数器的工作方式,当写入数据时则装入计数初值(控制寄存器为8位,只写不能读)。 图6-10 图6-11 2. 计数器内部结构 如图6-11所示,每个计数器由一个16位可预置的减1计数器组成,计数初值可保存在16位的锁存器中,该锁存器只写不能读。在计数器工作时,初值不受影响,以便进行重复计数。图中每个计数器有一个时钟输入端CLK作为计数脉冲源,计数方式可以是二进制,计数范围1~10000H,也可以是十进制,计数范围1~65536。门控端GATE用于控制计数开始和停止。当计数器计数值减到零时,OUT端输出标志信号。 3. 8253A端口地址选择 /CS /RD /WR A1 A2 寄存器选择与操作 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 写入计数器#0 写入计数器#1 写入计数器#2 写入控制寄存器 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 读计数器#0 读计数器#1 读计数器#2 0 1 0 0 × 1 1 × 1 1 × × 1 × × 无操作(三态) 禁止(三态) 无操作(三态) 表5-2 8253A端口地址选择 4. 8253A功能 8253A既可作定时器又可作计数器: (1)计数:计数器装入初值后, 当GATE
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服