微机接口 8253定时器实验报告剖析

合集下载

定时计数器(8253)实验报告

定时计数器(8253)实验报告

实验6 8253定时计数器电路接口实验2220083443 赵洪宇一、实验目的掌握8253定时器的编程原理,用示波器观察不同模式下的输出波形。

二、实验设备MUT—Ⅲ型实验箱、8086CPU模块、示波器(实验台无)。

三、实验内容8253计数器0,1,2工作于方波方式,观察其输出波形四、实验原理介绍本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路(1)电路原理该电路由1片8253组成,8253的片选输入端插孔CS8253,数据口,地址,读写线均已接好,T0、T1、T2时钟输入分别为8253CLK0、8253CLK1、8253CLK2。

定时器输出,GATE控制孔对应如下:OUT0、GATE0、OUT1、GATE1、OUT2、GATE2、CLK2。

本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路脉冲产生电路8253的方式控制字8253的状态字(2)电路测试检查复位信号,通过8253定时器/计数器接口实验,程序全速运行,观察片选、读、写、总线信号是否正常。

五、实验步骤1、实验连线:CS0CS8253 OUT08253CLK2 OUT2LED1示波器(实验中无)OUT1 CLK38253CLK0 CLK38253CLK1实验接线原理图如下:注:GATE信号无输入时为高电平2、编程调试程序assume cs:codecode segment publicorg 100hstart:mov dx,04a6h ;控制寄存器mov ax,36h ;计数器0,方式3out dx,axmov dx,04a0hmov ax,7Chout dx,axmov ax,92hout dx,ax ;计数值927Chmov dx,04a6hmov ax,76h ;计数器1,方式3out dx,axmov dx,04a2hmov ax,32hout dx,axmov ax,0 ;计数值32hout dx,axmov dx,04a6hmov ax,0b6h ;计数器2,方式3out dx,axmov dx,04a4hmov ax,04hout dx,axmov ax,0 ;计数值04hout dx,axnext:nopjmp nextcode endsend start3、全速运行,观察实验结果六、实验结果程序全速运行后,LED1闪烁(周期为0.25s),本实验由于实验台没有提供示波器,所以对于实验所要求的观察方式3的波形无法实现。

微机实验报告——定时器计数器

微机实验报告——定时器计数器

实验三8253定时器/计数器实验一、实验目的1.学会8253芯片与微机接口的原理和方法。

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

二、实验内容编写程序,将8253的计数器0设置为方式2(频率发生器),计数器1设置为方式3(方波频率发生器),计数器0的输出作为计数器1的输入,计数器1的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。

1.编程时用程序框图中的二个计数初值,计算OUT1的输出频率,用表观察LED,进行核对。

2.修改程序中的二个计数初值,使OUT1的输出频率为1Hz,用手表观察LED,进行核对。

3.上面计数方式选用的是 16 进制,现若改用 BCD 码,试修改程序中的二个计数初值,使LED的闪亮频率仍为1Hz。

三、实验区域电路连接图CS3→0040H;JX8→JX0;IOWR→IOWR;IORD→IORD;A0→A0;A1→A1;GATE0→+5V;GATE1→+5V;OUT0→CLK1;OUT1→L1;CLK0→0.5MHz;(单脉冲与时钟单元)四、程序框图8253方式控制字五、编程程序code segmentassumecs:codeorg 1000hstart:mov dx,43h /控制字地址/ mov al,00110100boutdx,almov dx,40h /计时器0地址/mov al,0F4houtdx,almov al,01h /计数器0写入初值01F4H/outdx,almov dx,43hmov al,01110110boutdx,almov dx,41h /计时器1地址/mov al,0E8houtdx,almov al,3h /计数器1写入初值03E8H/out dx,al /分两次赋值,先低八位0E8H,后高八位03H/jmp $ /8253自行控制led灯/code endsend start六、实验步骤1. 按连线图连接好,检查无误后打开实验箱电源。

8253定时计数器实验报告

8253定时计数器实验报告

实验四定时计数器实验
一、实验目的
1.了解定时器8253的初始化及使用方法
2.会用逻辑笔或示波器观察8253的工作状态
二、实验要求
编写程序,使8253的定时/计数器2工作在方式3下,使逻辑笔交替显示三、实验算法
先对8253进行初始化,选择计数器2工作在方式3下,输入计数值ffH,则O2端输出以FFH为周期的方波,将O2端连到逻辑笔输入端即可观察现象。

四、实验电路图
如图所示:
五、程序清单
T IM_CTL EQU 203H
TIMER0 EQU 200H
TIMER1 EQU 201H
TIMER2 EQU 202H
MODE23 EQU 0B6H
MODE13 EQU 76H
CODE SEGMENT
ASSUME CS:CODE
START:
TT: CLI
MOV DX,TIM_CTL
MOV AL,MODE23
OUT DX,AL ;8253初始化,选择计数器2工作在方式3下 MOV DX,TIMER2
MOV AL,0FFh
OUT DX,AL
MOV AL,0FFh ;设置输入数值为FFFFH
OUT DX,AL
WT: JMP WT ;无限循环显示程序现象
CODE ENDS
END START
六、实验现象结果与分析
K0打开,逻辑笔有红绿变化
七、实验体会
通过本实验知道了如何运用8253定时计数,了解了8253的功能特点,知道了如何运用8253进行定时做事。

八、主要仪器设备
计算机、接口实验箱平台。

可编程定时器计数器(8253)(微机实验报告)

可编程定时器计数器(8253)(微机实验报告)

可编程定时器/计数器(8253)一、实验目的 1)学会8253芯片和微机接口原理和方法。

芯片和微机接口原理和方法。

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

二、实验内容按图6虚线连接电路,将计数器0设置为方式0,计数器初值为N (N ≤0FH 0FH)),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。

图 6按图7连接电路,连接电路,将计数器将计数器0、计数器1分别设置为方式3,计数初值设为10001000,用逻辑笔观察,用逻辑笔观察OUT1输出电平的变化(频率1HZ 1HZ))。

图 7三、编程提示1 1、、8253控制寄存器地址控制寄存器地址283H计数器0地址地址 280H 计数器1地址地址 281HCLK0连接时钟连接时钟 1MHZ2 2、参考流程图(见图、参考流程图(见图8、9): 开 始读计数器值显示计数值有键按下吗?开 始送计数器初值N Y结 束结 束设计数器0为工作方式0向计数器0送初值1000先送低字节后送高字节向计数器1送初值1000先送低字节后送高字节设计数器0为工作方式3设计数器1为工作方式3图 8 图图 9四、实验代码1、图6电路的实验代码电路的实验代码CODE SEGMENT ;CODE SEGMENT ;段定义开始(段定义开始(段定义开始(CODE CODE 段)段)ASSUME CS:CODE ; ASSUME CS:CODE ;规定规定CODE 为代码段为代码段START:MOV START:MOV AL,10H ;AL,10H ;AL,10H ;设置控制字设置控制字0001000000010000(计数器(计数器0,方式0,写两个字节,二进制计数)二进制计数)MOV DX,283H ; MOV DX,283H ;把控制寄存器地址放在把控制寄存器地址放在DX 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV DX,280H ; MOV DX,280H ;把计数器把计数器0地址放在DX 寄存器中寄存器中MOV AL,0FH ; MOV AL,0FH ;将将0FH 存入AL 寄存器寄存器OUT DX,AL ; OUT DX,AL ;将此时将此时AL 的值送入DX 端口端口LP1: IN AL,DX ;LP1: IN AL,DX ;从从DX 端口读入8位,放在AL 寄存器中寄存器中CALL DISP ; CALL DISP ;调用调用DISP PUSH DX ; PUSH DX ;将将DX 内容保存到堆栈段内容保存到堆栈段MOV AH,06H ; MOV AH,06H ;将将06H 存入AH AH,为了下句调用,为了下句调用21中断中断MOV DL,0FFH ; MOV DL,0FFH ;将将0FFH 存入DLINT 21H ; INT 21H ;调用调用21中断中断POP DX ; POP DX ;将将DX 的内容推出栈段的内容推出栈段JZ LP1 ; JZ LP1 ;如果如果DX 的内容是0,就跳转到LP1MOV AH,4CH ; MOV AH,4CH ;将将4CH 存入AH AH,为了下句调用,为了下句调用21中断中断INT 21H ; INT 21H ;调用调用21中断中断DISP PROC NEAR ;DISP PROC NEAR ;定义一个名为定义一个名为DISP 的子程序的子程序PUSH DX ; PUSH DX ;把把DX 的内容保存到堆栈段中的内容保存到堆栈段中AND AL,0FH ;AL,0FH ;将将AL 寄存器的内容与0FH 进行“与”运算,再把结果存入AL 中MOV DL,AL ; MOV DL,AL ;将将AL 的值送入DL 寄存器寄存器CMP DL,9 ; CMP DL,9 ;比较比较DL 中的值与9的大小的大小JLE NUM ; JLE NUM ;如果如果DL 的值小于或等于9时,则跳转到NUM ADD DL,7 ; ADD DL,7 ;将将DL 的值与7进行相加后,再送入DL 中NUM: ADD DL,30H ;NUM: ADD DL,30H ;将将DL 的值与30H 进行相加后,再送入DL 中 MOV AH,02H ; MOV AH,02H ;将将02H 存入AHINT 21H ; INT 21H ;调用调用DOS21中断中断MOV DL,0DH ; MOV DL,0DH ;结合“结合“结合“MOV AH,02H MOV AH,02H MOV AH,02H”就是说输出”就是说输出0DHINT 21H ; INT 21H ;调用中断指令调用中断指令调用中断指令MOV DL,0AH ; MOV DL,0AH ;结合“结合“结合“MOV AH,02H MOV AH,02H MOV AH,02H”就是说输出”就是说输出0AHINT 21H ; INT 21H ;调用调用DOS21中断中断POP DX ; POP DX ;将将DX 的内容推出栈段的内容推出栈段RET ; RET ;子程序在功能完成后返回调用程序继续执行子程序在功能完成后返回调用程序继续执行 DISP ENDP ; DISP ENDP ;子程序结束子程序结束子程序结束CODE ENDS ; CODE ENDS ;代码段结束代码段结束代码段结束END START ; END START ;程序结束程序结束程序结束2、图7电路的实验代码电路的实验代码CODE SEGMENT ;CODE SEGMENT ;段定义开始(段定义开始(段定义开始(CODE CODE 段)段)ASSUME CS:CODE ; ASSUME CS:CODE ;规定规定CODE 为代码段为代码段START:MOV DX,283H ;START:MOV DX,283H ;把控制寄存器地址放在把控制寄存器地址放在DX 寄存器中寄存器中MOV AL,36H ; MOV AL,36H ;设置控制字设置控制字0011011000110110(计数器(计数器0,方式3,写两个字节,二进制计数)二进制计数)OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AX,1000H ; MOV AX,1000H ;该语句是立即寻址方式,就是把该语句是立即寻址方式,就是把1000H 这个数赋给AX MOV DX,280H ; MOV DX,280H ;把计数器把计数器0地址放在DX 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AL,AH ; MOV AL,AH ;将将AX 的高8位存入AL 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将此时将此时AL 的值送入DX 端口端口MOV DX,283H ; MOV DX,283H ;把端口地址放在把端口地址放在DX 寄存器中寄存器中MOV AL,76H ; MOV AL,76H ;设置控制字设置控制字0111011001110110(计数器(计数器1,方式3,写两个字节,二进制计数)二进制计数) OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AX,1000H ; MOV AX,1000H ;把把1000H 赋给AXMOV DX,281H ; MOV DX,281H ;把端口地址放在把端口地址放在DX 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AX 的低8位送入DX 端口端口MOV AL,AH ; MOV AL,AH ;将将AX 的高8位存入AL 寄存器中寄存器中OUT DX,AL ; OUT DX,AL ;将将AL 的值送入DX 端口端口MOV AH,4CH ; MOV AH,4CH ;将将4CH 存入AHINT 21H ; INT 21H ;调用调用DOS21中断中断CODE ENDS ;CODE ENDS ;代码段结束代码段结束代码段结束END START ; END START ;程序结束程序结束程序结束五、实验总结通过实验,学会通过实验,学会8253芯片和微机接口原理和方法,掌握8253定时器定时器//计数。

定时器实验报告

定时器实验报告

实验六定时器 / 计数器一、实验目的 :⒈学会8253芯片和微机接口的原理和方法。

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

二、实验内容 :用8253的0通道工作在方式3,产生方波。

三、实验接线图 :四、编程指南:⒈8253芯片介绍8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V单电源供电。

8253的功能用途:⑴延时中断⑸实时时钟⑵可编程频率发生器⑹数字单稳⑶事件计数器⑺复杂的电机控制器⑷二进制倍频器8253的六种工作方式:⑴方式0:计数结束中断⑷方式3:方波频率发生器⑵方式l:可编程频率发生⑸方式4:软件触发的选通信号⑶方式2:频率发生器⑹方式5:硬件触发的选通信号五、实验程序框图:六、实验步骤:⒈按图连好实验线路:⑴8253的GATE0接+5V。

⑵8253的CLK0插孔接分频器74LS393(左下方)的T2插孔,分频器的频率源为8.0MHZ,(3) T→8.0MHZ。

⒉运行实验程序:在系统处于提示符“P.”状态下,按SCAL键,输入1290,按EXEC键。

⒊用示波器测量8253的OUT0输出插孔有方波产生。

七、实验结果:八、实验程序清单:CODE SEGMENT ;H8253.ASMASSUME CS:CODEORG 1290HSTART:JMP TCONTTCONTRO EQU 0043H ;控制口地址TCON0 EQU 0040H ;定时器0地址TCONT: MOV DX,TCONTRO ;取控制口地址MOV AL,36H ;设控制字OUT DX,AL ;输出控制字MOV DX,TCON0 ;取定时器0地址MOV AL,00HOUT DX,AL ;初值0送定时器0MOV AL,04HOUT DX,AL ;初值04送定时器0MOV DX,TCONTRO ;取控制口地址MOV AL,36H ;取控制字OUT DX,AL ;输出控制字MOV DX,TCON0 ;取定时器0地址MOV AL,00HOUT DX,AL ;初值0送定时器0MOV AL,02HOUT DX,AL ;初值02送定时器0JMP $ ;CPUT踏步,定时器自动工作CODE ENDSEND START说明:系统提供用户使用的空间为00000H-0FFFFH,用于存放、调试实验程序。

北理工微机原理与接口技术之8255,8253实验报告

北理工微机原理与接口技术之8255,8253实验报告

北理工微机原理与接口技术之8255,8253实验报告微机原理与接口技术实验报告———8253可编程定时器8255并行接口实验实验一8255并行接口实验一,实验内容8255的A口作为输入口,与逻辑电平开关相连。

8255的B口作为输出口,与发光二极管相连。

编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。

二,实验目的(1)掌握8255的工作原理。

(2)掌握编写8255并行接口初始化及编程实现的方法。

三,实验仪器微机实验教学系统实验箱、8086CPU模块四,实验步骤(1)连线8255的PA0—PA7分别与逻辑电平开关的K1—K8相连?PB0—PB7分别与发光二极管电路的LED1—LED8相连?CS0与8255的片选CS8255相连其它线路均已连好具体如图所示:(2)编辑程序,编译链接后,单步运行,调试程序。

(3)调试通过后,全速运行,观察实验结果。

(4)撰写实验报告。

五,实验源程序如下CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04A6HMOV AX,90H ;写8255的控制字,A组工作在方式0,A口输入,C口高4位输出,B组工作在方式0,B口及C口的低4位均工作在输出OUT DX,AXSTART1:MOV DX,04A0HIN AX,DX ;读取A口数据MOV DX,04A2HOUT DX,AX ;将从A口读取的数据从B口输出,控制LED灯JMP START1CODE ENDSEND START六,实验现象LED灯低电平有效。

当某一开关拨到低电平时,对应的LED灯点亮。

当某一开关拨到高电平时,对应的LED灯熄灭七,思考题1.将片选线接到CS1—CS7;重新编写程序。

CS0对应地址是04A0---O4AF, CS1对应地址是04B0---O4BF.现将片选线接到CS1,重新编程:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04B6H ;CS1对应的地址MOV AX,90HOUT DX,AXSTART1:MOV DX,04B0HIN AX,DXMOV DX,04B2HOUT DX,AXJMP START1CODE ENDSEND START实验现象:如同片选线接到CS02.交换A B接线,A口输出、B口输入;重新编写程序。

微机接口 8253定时器实验报告

微机接口 8253定时器实验报告

微机接口 8253定时器实验报告浙江工业大学计算机学院实验名称 8253定时器实验姓名学号班级教师日期一、实验内容与要求1.1 实验内容计数器方式2实验:将8253芯片的计数器0的工作方式设置为方式2,计数器初值为N,用手动开关逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用TPC-USB平台上的LED灯观察OUT0电平变化(当输入第N倍数个脉冲后OUT0变低电平,LED灯由亮变灭,其余脉冲OUT0都是高电平,LED灯都处于亮状态)。

计数器方式3实验:将计数器0、计数器1的工作方式分别设置为方式3,计数初值设为1000,并同时用TPC-USB平台上的LED灯观察OUT1电平变化(频率1Hz)。

1.2 实验要求(1) 具有一定的汇编编程的基础,能编写一些基本语句来实现实验。

实验前根据实验流程图,写出对应代码;(2) 要了解8253定时/计数器芯片内部结构和外部引脚,了解芯片的硬件连接方法、时序关系、各种模式的编程及应用,能熟练地对其进行编程;(3) 熟悉实验平台TPC-USB了解各个接口的名称与功能,进行实验时能快速并正确地连接好实验电路;(4) 计数器方式2实验:连接PC与TPC-USB平台,用微机实验软件运行程序,用手动开关逐个输入单脉冲,在屏幕上能一次显示计数值,当输入第N倍数个脉冲后OUT0变低电平,TPC-USB平台上的LED灯由亮变灭,其余脉冲OUT0都是高电平,LED 灯都处于亮状态;(5) 计数器方式3实验:连接PC与TPC-USB平台,用微机实验软件运行程序,TPC-USB平台上的LED灯能周期性地亮灭,频率为1Hz。

二、实验原理与硬件连线2.1 实验原理1、8253定时/计数器芯片的内部结构:1数据总线缓D7-D0冲器CLK0计数器0GATE0OUT0A0读/写控制A1逻辑1CLKRDWR计数器1GATE1OUT1CS控制字CLK2寄存器计数器2GATE2OUT2图1 8253内部结构图(1)数据总线缓冲器:三态双向8位寄存器,与系统数据总线相连,可寄存以下3种数据: , CPU向8253/8254写入的工作方式命令字;, CPU向计数寄存器写入的计数初值;, 从计数器读出的当前计数值。

8253计数器定时器接口实验

8253计数器定时器接口实验

微机原理实验报告实验五 8253计数器/定时器接口实验1.实验目的1)学会通过PC总线、驱动器、译码器等在PC机外部扩充为新的芯片;2)了解8253计数器/定时器的工作原理;3)掌握8253初始化的程序设计;4)掌握8253方式0的计数方式的使用方法和方式3方波产生的方法。

2.实验内容将实验装置上的1片8253定时器/计数器接入系统,具体做两个内容的实验。

1)实验一:将8253的计数器0设置为工作于方式0,设定一个计数初值,用手动逐个输入单脉冲,观察OUT0的电平变化。

硬件连接:断开电源,按图2-1将8253接入系统。

具体包括:(1)将8253的CS接I/O地址输出端280H-287H;(2)将8253的计数器0的CLK0与单脉冲信号相连,以用来对单脉冲进行计数;(3)将8253的GATE0用专用导线接向+5V,以允许计数器0工作;(4)将8253的OUT0接到LED发光二极管,以显示8253计数器0的输出OUT0的状态。

图2-1 8253实验一的连线图2)实验二:将8253的计数器0、1均设置为工作于方式3(方波),按图2-2重新接线。

要求是当CLK0接1MHz时,OUT1输出1Hz的方波,OUT的输出由LED 显示出来。

将计数器0与计数器1串联使用,计数器0的输出脉冲OUT0作为计数器1的时钟输入CLK1。

图2-2 8253实验二的连线图3.程序及框图1)程序框图图4-1给出了8253实验一的流程图。

图4-1 程序流程图图4-2给出了8253实验二的流程图。

2)程序代码实验一程序代码:CTRL EQU 283HTIME0 EQU 280HTIME1 EQU 281HDATA SEGMENTMESS DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DX,AXMOV DX,OFFSET MESSMOV AH,09HINT 21HMOV DX,CTRLMOV AL,30HOUT DX,ALMOV DX,TIME0MOV AX,03HOUT DX,ALXCHG AH,ALOUT DX,ALCOUNT:MOV AH,06HMOV DL,0FFHINT 21HJZ COUNTMOV AX,4C00HINT 21HCODE ENDSEND START实验二程序代码:CTRL EQU 283HTIME0 EQU 280HTIME1 EQU 281HDATA SEGMENTMESS DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DX,AXMOV DX,OFFSET MESSMOV AH,09HINT 21HMOV DX,CTRLMOV AL,36HOUT DX,ALMOV AL,76H OUT DX,ALMOV DX,TIME0 MOV AX,1000OUT DX,ALXCHG AH,ALOUT DX,ALMOV DX,TIME1 MOV AX,1000OUT DX,ALXCHG AH,ALOUT DX,ALCOUNT:MOV AH,06H MOV DL,0FFHINT 21HJZ COUNTMOV AX,4C00HINT 21HCODE ENDSEND START4.实验数据、现象及结果分析5. 实验思考题1)实验一中的定时器0的输出OUT0的电平是如何变化的,为什么?解:假设对定时器0赋初值为3,则控制字发送后,OUT0变为低电平,当手动输入3个单脉冲后,OUT0变为高电平。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浙江工业大学计算机学院实验报告实验名称 8253定时器实验姓名学号班级教师日期一、实验内容与要求1.1 实验内容计数器方式2实验:将8253芯片的计数器0的工作方式设置为方式2,计数器初值为N,用手动开关逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用TPC-USB平台上的LED 灯观察OUT0电平变化(当输入第N倍数个脉冲后OUT0变低电平,LED灯由亮变灭,其余脉冲OUT0都是高电平,LED灯都处于亮状态)。

计数器方式3实验:将计数器0、计数器1的工作方式分别设置为方式3,计数初值设为1000,并同时用TPC-USB平台上的LED灯观察OUT1电平变化(频率1Hz)。

1.2 实验要求(1)具有一定的汇编编程的基础,能编写一些基本语句来实现实验。

实验前根据实验流程图,写出对应代码;(2)要了解8253定时/计数器芯片内部结构和外部引脚,了解芯片的硬件连接方法、时序关系、各种模式的编程及应用,能熟练地对其进行编程;(3)熟悉实验平台TPC-USB了解各个接口的名称与功能,进行实验时能快速并正确地连接好实验电路;(4)计数器方式2实验:连接PC与TPC-USB平台,用微机实验软件运行程序,用手动开关逐个输入单脉冲,在屏幕上能一次显示计数值,当输入第N倍数个脉冲后OUT0变低电平,TPC-USB平台上的LED灯由亮变灭,其余脉冲OUT0都是高电平,LED灯都处于亮状态;(5)计数器方式3实验:连接PC与TPC-USB平台,用微机实验软件运行程序,TPC-USB平台上的LED灯能周期性地亮灭,频率为1Hz。

二、实验原理与硬件连线2.1 实验原理1、8253定时/计数器芯片的内部结构:D7-D0112201002图1 8253内部结构图(1)数据总线缓冲器:三态双向8位寄存器,与系统数据总线相连,可寄存以下3种数据: ➢ CPU 向8253/8254写入的工作方式命令字; ➢ CPU 向计数寄存器写入的计数初值; ➢ 从计数器读出的当前计数值。

(2)读/写控制逻辑:接收CPU 发来的读、写、片选和地址信号,选择相应的寄存器,进行读写操作。

(3)控制字寄存器:接收CPU 发来的控制字(只写)。

控制字的功能: ➢ 选择计数器;➢ 确定计数器的工作方式;➢ 确定计数初值的格式(高低8位或16位); ➢ 确定计数格式:二进制或BCD 格式。

(4)计数器0~2:3个结构相同、相互独立的计数器。

每个计数器包含一个16位初值寄存器、一个16位减1计数器和一个16位输出锁存器。

计数器内部结构如下图所示:2、8253的工作方式:8253A一共有6种工作方式:方式0——计数期间低电平输出(GA TE高电平时计数)方式1——计数期间低电平输出(GA TE上升沿重新计数)方式2——周期性输出负脉冲方式3——周期性输出方波方式4——软件触发输出单脉冲方式5——硬件触发输出单脉冲6种工作方式的区别在于:➢输出波形不同。

➢启动计数器的触发方式不同。

➢计数过程中门控信号GA TE对计数操作的影响不同。

本次实验要用到的是方式2和方式3:(1)方式2——周期性输出负脉冲:1)向计数器写入方式2控制字后,WR的上升沿使OUT信号变高。

写入初值后,在CLK 下降沿进行减1计数。

减为1时,OUT变低并维持一个周期,然后又变高,并自动装入初值重新计数。

工作时序如图2所示。

CLKWR OUT 方式2初值n=443214321GATE=1图2 方式2特点1工作时序2)GATE为高电平允许计数,为低电平终止计数。

待GATE恢复高电平后,计数器将按原来设定的计数值重新计数。

工作时序如图3所示。

CLKWR OUT 方式2初值n=33213321GATE=1图3 方式2特点2工作时序3)若在计数过程中写入新的计数初值不会影响正在进行的计数过程,必须等计数器减到1 之后,计数器才装入新的计数初值,并按新的初值进行计数。

工作时序如图4所示。

CLK WROUT方式2初值n =44321321n =33图4 方式2特点3工作时序(2)方式3——周期性输出方波:初值为偶数的工作时序如图5所示。

写入方式字后,OUT 信号变高。

写入初值后开始减1计数;减到 n/2 时,OUT 变低继续计数;减到0时,OUT 变高,并自动装入初值重新计数。

GATE =1CLKWR OUT方式3初值n =443214321图5 方式3计数初值为偶数的工作时序3、8253的编程: (1)8253的方式控制字:实验中:计数器方式2实验:将计数器0设置为方式2 对应的方式控制字:00010100B=14H;计数器方式3实验:将计数器0设置为方式3 对应的方式控制字:00110110B=36H;将计数器1设置为方式3 对应的方式控制字:01110110B=76H;(2)8253的初始化编程:初始化编程分两步,即对所用到的计数器写方式控制字;将计数初始值写入相应的计数器。

方式控制字要送到控制端口,即对应A1A0=11。

计数初值要送到相应的计数器端口:计数器0的初值要送到A1A0=00所对应的端口;计数器1的初值要送到A1A0=01所对应的端口;计数器2的初值要送到A1A0=10所对应的端口。

2.2 硬件连线(1)计数器方式2实验的连线如图6所示:CS接端口地址280H~287H,CLK0接单脉冲按钮,GA TE0接+5V电源,OUT0接LED灯。

图6 TPC-USB平台计数器方式2实验连线图(2)计数器方式3实验的连线如图7所示:CS接端口地址280H~287H,GATE0、GATE1接+5V电源,CLK1与OUT0连接,CLK0接1MHZ的时钟脉冲。

图7 TPC-USB 平台计数器方式3实验连线图三、设计思路、步骤和程序流程图3.1 设计思路本次实验做的是计数器实验,需要用到8253定时/计数器芯片,了解芯片的内部结构后,理解芯片的计数原理,8253芯片的工作方式有多种,所做的实验是方式2和方式3,理解了工作方式后,便可根据8253芯片的初始化编程步骤画出程序流程图,再根据流程图,写出实验程序。

根据实验连接图连接好电路,运行程序,便可达到计数和计时的目的。

本次实验采用方式2而不是方式0的原因:项计数器写入方式2控制字后,OUT 端输出高电平作为起始电平。

写入计数初值后,计数器开始在CLK 时钟下降沿进行减1计数;当减到1时,OUT 端将由高电平变为低电平并维持一个CLK 周期宽度,然后OUT 又变为高电平。

并自动重新装入原计数初值,重新开始计数过程。

这刚好与实验内容相符,而方式0是自动减1的,而且无法自动重新装入原计数初值。

计数器方式3实验的原理:计数器0工作在方式3下,方式3的特点是输出方波,由于初始值为1000,所以相当于CLK0输出1000个脉冲后,OUT0输出一个方波;相对的,计数器1也工作在方式3下,初始值也为1000,相当于OUT0输出1000个方波后,OUT1才输出一个方波,归结起来,CLK0的频率是OUT1频率的1000000倍,所以最后输出的方波频率为1HZ 。

3.2 实验步骤(1) 按图6连接好实验电路;(2) 根据图8流程图编写程序,并运行;(3)用手动开关逐个输入单脉冲,观察屏幕显示结果和TPC-USB平台上LED灯亮灭状态;(4)按图7连接好实验电路;(5)根据图9流程图编写程序,并运行;(6)观察TPC-USB平台上LED灯亮灭状态,和亮灭的频率。

3.3 程序流程图图8 TPC-USB平台计数器方式2实验流程图图8 TPC-USB平台计数器方式3实验流程图四、程序清单与执行结果4.1 程序清单(1)计数器方式2实验:code segmentassume cs: codestart:mov al,14h ;设置8253通道0为工作方式2,二进制计数mov dx,283hout dx,almov al,14hmov dx,280hout dx,alAA:;mov al,0000000 ;锁存;mov dx,283h;out dx,almov dx,280hin al,dx ;读锁存器cmp al,9 ;判断是否小于9jbe PRINTmov ah,0mov bl,10div blpush axmov dl,aladd dl,30h ;将十位的数字转换成ASCII码mov ah,2 ;显示十位int 21hpop axmov al,ahPRINT:add al,30h ;将小于9的数字转换成ASCII码mov dl,almov ah,2 ;显示存在dl中的个位int 21hmov dl,0dh ;换行,回车mov ah,02hint 21hmov dl,0ahmov ah,02hint 21hmov ah,06h ;判断有无键按下mov dl,0ffhint 21hjz AA ;若无,则继续计数输出mov ah,4ch ;否则,退出int 21hcode endsend start(1)计数器方式3实验:code segmentassume cs:codestart:mov dx,283h ;向8253写控制字mov al,36h ;使计数器0为工作方式3out dx,almov ax,1000 ;写入循环计数初值1000mov dx,280hout dx,al ;先写入低字节mov al,ahout dx,al ;后写入高字节mov dx,283hmov al,76h ;使计数器1为工作方式3out dx,almov ax,1000 ;写入循环计数初值1000mov dx,281hout dx,al ;先写低字节mov al,ahout dx,al ;后写高字节mov ah,4ch ;程序退出int 21hcode endsend start4.2 执行结果(1)计数器方式2实验:连接好的实验电路图,如图10所示:图10计数器方式2实验电路连接实物图用手动开关逐个输入单脉冲,观察屏幕上显示的内容,计数从20开始,每按一次开关,计数减1,减到1后,又从20开始计数,如图12、13、14所示;并同时用TPC-USB平台上的LED 灯观察OUT0电平变化,当输入第20倍数个脉冲后OUT0变低电平,LED灯由亮变灭,其余脉冲OUT0都是高电平,LED灯都处于亮状态,如图10所示。

当计数减到1时,输出从高电平变成低电平,LED灯灭,如下图11所示。

之后再从20开始计数,如上图12~20这些图所示。

图11 计数值为01时的LED灯的情况当键盘有键按下时,程序退出,如下图21所示:图21 程序退出图(2)计数器方式3实验:连接好的实验电路图,如图22、23所示:运行程序,观察TPC-USB平台上的LED灯观察OUT1电平变化,发现LED等周期性地亮灭,频率为1Hz。

相关文档
最新文档