微机接口 8253定时器实验报告剖析
- 格式:doc
- 大小:12.90 MB
- 文档页数:17
实验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. 按连线图连接好,检查无误后打开实验箱电源。
实验四定时计数器实验
一、实验目的
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)一、实验目的 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实验报告微机原理与接口技术实验报告———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定时器实验姓名学号班级教师日期一、实验内容与要求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计数器/定时器接口实验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变为高电平。
华北电力大学实验报告||实验名称8253应用实验课程名称微机原理及应用老师| 专业班级姓名学号一实验要求在8259的IR2端输入中断请求信号,该信号由8253的方波信号产生(频率1Hz)。
每来一个上升沿,申请中断一次,CPU响应后通过输出接口74LS273使发光二极管亮,第1次中断,LED0亮,第2次中断,LED1亮,…… 第8次中断,LED7亮,中断8次后结束。
【要求273的片选地址为8000h,8259的片选地址为9000h,8253的片选地址为A000H】二思路1.硬件(1)74HC138译码电路如图所示,A15为1,E2、E3接地保证74HC138正常工作,此时Y0、Y1、Y2对应地址分别为8000H、9000H、0A000H.(2) 8259的片选地址为9000H,所以CS接Y18086有16位数据总线,其低8位作为偶存储体来传输数据,8086的A0要一直为0,所以8259的A0要接8086的A1IR2端输入中断请求信号,该信号由8253的方波信号产生(频率1Hz),所以8259的IR2端与8253的OUT1端相连。
(3)74LS273的片选地址为8000H,且需要向其写入LED灯的状态,则Y0和WR经或非门后接入CLK。
(4)8253的片选地址为A000H,所以CS接Y2。
CLK0接入1MHz信号,GATE0与GATE1同时接电源,OUT0输入到CLK1,OUT1经分频输出1HZ的信号。
2.软件(1)流程图(2)与8259A有关的设置①8259A初始化(ICW)据要求(上升沿触发、单片、全嵌套、非缓冲、普通中断结束方式、需设置ICW4,中断类型号为80H—87H),初始化:ICW1=13H(00010011B);写入偶地址端口9000HICW2=08H(00001000B);写入奇地址端口9002HICW4=01H(00000001B);写入奇地址端口9002H②中断屏蔽字(OCW1)(写入奇地址端口9002H)允许IR2中断 OCW1与0FBH(11111011B)相与禁止IR2中断 OCW1与04H(00000100B)相或③中断结束字(OCW2)(写入偶地址端口9000H)OCW2=20H(00000010B)(3)与8253有关的设置1MHZ要分频为1HZ至少需要两个计数器。
实验8 8253定时/计数器实验一、实验目的1.了解8253与8086的硬件连接方法。
2.掌握8253的各种方式的编程及其原理。
3.学会Emu8086和Proteus的联合用调。
二、实验要求安装有Emu8086仿真软件和PROTEUS仿真软件的电脑一台。
三、预习内容1、8253定时计数器的内部结构和主要性能。
2、8253芯片的各个引脚及其含义如下图3.1所示。
图3.1 8253A定时计数器D7~D0:双向,8位三态数据线,用以传送数据(计数器的计数值)和控制字CLK0~CLK2:计数器0、1、2的时钟输入,CE对此脉冲计数OUT0~OUT2:计数器0、1、2的输出。
GA TE0~GATE2:计数器0、1、2的门控输入/CS:输入,片选信号。
/RD:输入,读信号。
/WR:输出、写信号。
A0,A1:输入,两位地址选择。
8253的内部寄存器地址如下表表3.1所示:/CS A1 A0 选中0 0 0 计数器00 0 1 计数器10 1 0 计数器20 1 1 控制寄存器表3.1 8253定时计数器的寄存器3、定时、计数器8253的命令字的初始化。
4、8253的六种工作方式具体参考课本(278页至282页)。
5、汇编软件Emu8086和Proteus软件的联合使用方法步骤。
在Proteus软件绘制系统原理图,然后需要对Proteus进行程序导入设置才能进行方真调试。
具体步骤如下:(1)点击Proteus软件菜单中的source的下拉选项中的Dfine Code Generation Tools...如下图3.2所示。
图3.2(2)a在弹出的对话框中单击new按钮如下图3.3所示。
图3.3(3)弹出如下对话框,找到本机中emu8086安装后生成的emu8086文件夹,打开,选择可执行程序emu8086.exe,点击“打开”按钮,如下图3.4所示。
图3.4(4)回到设置对话框后,将源文件和目标文件分别设为ASM和EXE,单击“OK”,如下图3.5所示图3.5(5)单击菜单选项source的下拉选项Add/Remove Source Files...如下图3.6所示。
南昌理工学院实验报告二O一二年月日课程名称:微机原理与接口技术实验名称:定时、计数器8253A应用班级:姓名:同组人:指导教师评定:签名:【一、实验名称】定时、计数器8253A应用【二、实验目的】学习8253A可编程定时、计数器与8088CPU的接口方法;了解8253A的工作方式;掌握8253A在各种方式下的编程方法。
【三、实验内容和原理】1、实验原理8253A的A0、A1接系统地址总线A0、A1,故8253A有四个端口地址。
8253A的片选地址为40H~4FH。
因此,本实验仪中的8253A四个端口地址为40H、41H、42H、43H,分别对应通道0、通道1、通道2和控制字。
采用8253A通道0,工作在方式3,输入时钟CLK0为1MHZ的方波,并要求用接在GATE0引脚上的导线是接地或甩空来观察GATE对计数器的控制作用,用示波器观察输出波形。
2、实验线路连接(1)8253A的GATE0接+5V。
(2)8253A的CLK0插孔接分频器74LS393的T4插孔,分频器的频率源为4MHZ。
【四、实验条件】微型计算机一台,工具箱,示波器【五、实验过程】运行实验程序:单机时,实验程序起始地址为F000:9180。
在系统显示监控提示符“P."时:输入F000按F1键输入9180按EXEC键。
将CLK0接T6,OUTO插孔连接一个发光的二极管。
附:实验参考程序:ORG 08C0H ;?L8253: MOV DPTR,#0C003HMOV A,#36HMOVX @DPTR,AMOV DPTR,#0C000HMOV A,#00HMOVX @DPTR,AMOV A,#10HMOVX @DPTR,ASJMP $END【六、实验结果】当CLK0接T6时,发现发光的二极管的亮度是在改变的。
当CLK0接T7时,发现发光的二极管的亮度的变化没有CLK0接T6时快。
当CLK0接T4时,肉眼无法发现发光的二极管灯的亮度有改变。
8253定时器实验报告8253定时器实验报告引言:8253定时器是一种广泛应用于计时和计数领域的集成电路。
本实验旨在通过实际操作,深入了解8253定时器的工作原理和应用。
一、实验目的本实验的主要目的是:1. 理解8253定时器的基本原理和工作方式;2. 掌握8253定时器的使用方法;3. 学会通过8253定时器实现各种定时和计数功能。
二、实验器材和原理本实验所需的主要器材有:1. 一台计算机;2. 一块开发板;3. 一根连接线。
8253定时器是一种具有三个独立计数通道的定时/计数芯片。
它可以通过编程控制来实现各种定时和计数功能。
8253定时器的输入时钟信号可以来自计算机的外部时钟源或者计算机内部时钟源。
三、实验步骤1. 将开发板连接到计算机上,并确保连接正确稳定。
2. 打开计算机,并进入开发板的编程环境。
3. 编写程序,初始化8253定时器,并设置计时/计数模式。
4. 定义所需的计时/计数时间间隔。
5. 启动8253定时器,并开始计时/计数。
6. 根据需要,定时器到达预定时间后,触发相应的中断或输出信号。
7. 结束实验,关闭计算机和开发板。
四、实验结果通过本次实验,我们成功地实现了以下功能:1. 利用8253定时器实现了精确的定时功能,可以精确到毫秒级别;2. 利用8253定时器实现了计数功能,可以用于计算某个事件的发生次数;3. 利用8253定时器的中断功能,可以及时响应某个事件的发生。
五、实验总结本次实验通过实际操作,使我们更深入地了解了8253定时器的工作原理和应用。
通过编程控制8253定时器,我们可以实现各种定时和计数功能,为实际应用提供了很大的便利。
然而,在实验过程中也遇到了一些困难和问题。
比如,在设置计时/计数模式时,需要仔细阅读8253定时器的手册,理解各个寄存器的作用和设置方法。
此外,还需要注意编程时的精度和误差,以确保实验结果的准确性和可靠性。
通过本次实验,我们不仅加深了对8253定时器的理论认识,还提高了自己的实际操作能力。
实验三 8253计数器/定时器的应用一、实验目的:学习掌握8253用作定时器的编程原理;二、8253应用小结I8253和I8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。
I8254是I8253的改进型。
1.微机系统定时器和实验箱定时器(1)微机系统使用的8254,其3个通道均有固定的用途:0号计数器为系统时钟源,每隔55ms向系统主8259IR0提一次中断请求;1号计数器用于动态存储器的定时刷新控制;2号计数器为系统的发声源。
用户在使用微机系统的时候,可以使用0号和2号计数器,但不能改变对1号计数器的初始化。
(2)实验箱上的8253,其数据线D7—D0,地址线A1、A0和控制线RD、WR通过总线驱动卡和微机系统的三总线相连。
除此之外,三个计数器的引出段和片选端都是悬空的,这意味着实验箱上的8253的三个计数器都归用户使用,你可以单独使用其中的一个计数器,也可以串联使用其中的2个或3个计数器。
(3)8253计数器的输入信号,其频率不能超过2MHz,否则长时间使用,芯片过热,容易烧毁。
2.8253初始化使用8253前,要进行初始化编程。
初始化编程的步骤是:①向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。
②向使用的计数器端口写入计数初值。
3.8253控制字D7D6=00:使用0号计数器,D7D6=01:使用1号计数器D7D6=10:使用2号计数器,D7D6=11:无效D5D4=00:锁存当前计数值D5D4=01:只写低8位(高8位为0),读出时只读低8位D5D4=10:只写高8位(低8位为0),读出时只读高8位D5D4=11:先读/写低8位,后读/写高8位计数值D3D2D1=000:选择方式0,D3D2D1=001:选择方式1D3D2D1=X10:选择方式2,D3D2D1=X11:选择方式3D3D2D1=100:选择方式4,D3D2D1=101:选择方式5D0=0:计数初值为二进制,D0=1:计数初值为BCD码数三、实验电路蜂鸣器电路四、实验内容1.完成一个音乐发生器,通过蜂鸣器放出音乐,并在数码管上显示乐谱。
8253定时器实验实验七可编程定时/计数器与中断控制一、实验目的1.掌握微机中断处理系统的基本原理、学习中断服务程序的编写方法。
2.掌握8253/8254定时/计数器的基本原理和编程方法。
二、实验原理本实验采用Intel8253作为计数器芯片,8254芯片是8253的兼容替代产品,计数速率等性能优于8253。
1.可编程定时/计数器8253功能简介8253含有三个独立的16位计数器,每个计数器连接外设的信号分别是:CLK ——输入的脉冲信号或外部事件,计数器对此脉冲进行减1计数;GATE ——启动/禁止计数的控制信号;OUT ——输出信号。
每个计数器可有六种工作方式,均可由程序设置和改变,8253的几种工作方式及特点如表7.1所示。
若一个计数器被设定为方式0,计数初值n,在控制信号GATE为高时即可对输入的脉冲作减1计数,OUT维持低电平;计数到0时,则由OUT端输出一个高电平信号。
若一个计数器被设定为方式2,输入为周期性脉冲信号,且计数初值可自动重新装入并连续计数,输出信号就成为周期信号,周期为T OUT = n×T IN(或频率?OUT = ?IN / n),即可作为分频器应用。
表7.1 8253的6种工作方式工作方式功能描述GATE=0启动方式初值设置说明方式0计数到0输出高电平停止计数软件一次有效(n+1)T CLK 负脉冲方式1硬件可重触发单稳态--- 硬件自动装入nT CLK负脉冲方式2分频器停止计数软/硬件自动装入T OUT=n×T CLK方式3方波发生器停止计数软/硬件自动装入分频,占空比≈50﹪方式4软件触发选通停止计数软件一次有效计数到0负T CLK方式5 硬件触发选通--- 硬件自动装入波形同方式4注:软件启动是指当GATE=1时写入方式字和初值即启动;硬件启动是指写入方式字和初值后要由GATE上升沿启动。
2.8253编程简要说明8253的每个计数器必须在写入控制字和计数初值后才启动工作,一般的初始化编程分为两步:先写入控制字、再写入计数初值。
实验五8253 方波实验一、实验目的与要求了解8253 的内部结构、工作原理;了解8253 与8088 的接口逻辑;熟悉8253 的控制寄存器和初始化编程方法,熟悉8253 的6 种工作模式。
二、实验设备STAR系列实验仪一套、PC机一台三、实验内容1、编写程序:使用8253 的计数器0 和计数器 1 实现对输入时钟频率的两级分频,得到一个周期为 1 秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔上来检验程序是否正确。
2、连接线路,验证8253 的功能,熟悉它的使用方法。
四、实验原理图五、实验步骤1、连线说明:C5区:CS、A0、A1 ——A3区:CS5、A0、A1C5区:CLK0 ——B2区:2MC5区:OUT0 ——C5区:CLK1C5区:OUT1 ——D1区:Ctrl( 蜂鸣器)C5区:GATE0、GATE1 ——C1区的VCC2、测试实验结果:蜂鸣器发出时有时无的声音;用逻辑笔测试蜂鸣器的输入端口,红绿灯交替点亮。
六、演示程序.MODEL TINYCOM_ADDREQU 0B003HT0_ADDR EQU 0B000HT1_ADDR EQU 0B001H.STACK 100.CODESTART: MOV DX,COM_ADDRMOV AL,35HOUT DX,AL ; 计数器T0 设置在模式 2 状态,BCD码计数MOV DX,T0_ADDRMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,AL ;CLK0/1000MOV DX,COM_ADDRMOV AL,77HOUT DX,AL ; 计数器T1 为模式 3 状态,输出方波,BCD码计数MOV DX,T1_ADDRMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,AL ;CLK1/1000JMP $ ;OUT1输出频率为1S的方波END START七、实验总结本次实验我们应用了8253 定时器,学会了对8253 的初始化编程。
实验4 8253定时器/计数器接口实验一、实验目的掌握8253定时器的编程原理,用示波器观察不同模式下的输出波形。
二、实验设备微机实验箱、8086CPU模块、示波器。
三、实验内容了解8253计数器的不同工作方式,掌握其初始化控制字对定时/记数效果的影响。
四、实验原理介绍本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路五、实验步骤1、实验连线:CS0↔CS8253 OUT0↔8253CLK2 OUT2↔LED1 OUT1↔LED2CLK3↔8253CLK0,CLK3↔8253CLK12、编程调试程序3、全速运行,观察实验结果六、实验提示8253是计算机系统中经常使用的可编程定时器/计数器,其内部有三个相互独立的计数器,分别称为T0,T1,T2。
8253有多种工作方式,其中方式3为方波方式。
当计数器设好初值后,计数器递减计数,在计数值的前一半输出高电平,后一半输出低电平。
实验中,T0、T1的时钟由CLK3提供,其频率为750KHz。
程序中,T0的初值设为927CH(37500十进制),则OUT0输出的方波周期为(37500*4/3*10-6=0.05s)。
T2采用OUT0的输出为时钟,则在T2中设置初值为n时,则OUT2输出方波周期为n*0.05s。
n的最大值为FFFFH,所以OUT2输出方波最大周期为3276.75s(=54.6分钟)。
可见,采用计数器叠加使用后,输出周期范围可以大幅度提高,这在实际控制中是非常有用的。
七、实验结果程序全速运行后,LED1按一定周期闪烁(周期理论值为0.2s),LED2在高频脉冲信号(约15KHz)影响下,有微弱的光亮,但无明显的周期变化现象。
八、思考题解答1、为什么说范例程序运行时LED1闪烁周期的理论值是0.2秒?在范例程序设置LED2的最大闪烁周期是多少?请分析说明。
程序中,T0的初值设为927CH(37500十进制),则OUT0输出的方波周期为(37500*4/3*10-6=0.05s)。
定时器计数器实验1.简单计数器:用实验系统的频率发生器作为输入信号,作为定时器T0输入,实现秒脉冲发生器,秒脉冲信号接8259A INT0。
用发光二极管二进制方式显示秒计数。
此实验利用8253的一路计时器,将定时频率接到CLK上,使该路工作在方式2下,即将其作为频率发生器,GATE端置为高电平,OUT端接到8259A的INT0端,即当OUT给出一个上升沿跳变时,程序调用中断服务程序,在中断服务程序中,向输出接口273进行写入并输出,每次进中断输出值加一,给适当的输入脉冲,即可实现秒脉冲发生器。
程序代码如下:ICW1 equ 00010011b ; 写8259A控制字(单片8259, 上升沿中断, 要写ICW4)ICW2 equ 00100000b ; 中断号为20HICW4 equ 00000001b ; 工作在8086/88 方式OCW1 equ 11111110b ; 只响应INT0 中断CS8259A equ 09000h ; 8259地址CS8259B equ 09001hCONTROL equ 08003h ;8253控制字COUNT0 equ 08000h ;1路计数器方式字COUNT1 equ 08001h ;2路计数器方式字COUNT2 equ 08002h ;3路方式字(此程序中未用)CS273 equ 0A000hdata segmentCNT db 0data endscode segmentassume cs:code, ds: dataIEnter proc nearpush axpush dxstimov dx, CS273inc CNTmov al, CNTout dx, al ; 输出计数值mov dx, CS8259Amov al, 20h ; 中断服务程序结束指令out dx, alnoppop dxpop axiretIEnter endpIInit procmov dx, CS8259Amov al, ICW1out dx, almov dx, CS8259Bmov al, ICW2out dx, almov al, ICW4out dx, almov al, OCW1out dx, alretIInit endp ;8259A的初始化子程序start proc nearmov al, 34h ; 通道0,方式2mov dx, CONTROLout dx, al ;写入程序控制字mov al, 0out dx, al ; 高八位mov al, 00000000B ; 锁存计数器值mov dx, CONTROLout dx, almov dx,COUNT0 ;写入0通道方式字mov ax,1000out dx,almov al,ahout dx,almov ax, 0mov ds, axmov bx, 4*ICW2 ; 中断号mov ax, codeshl ax, 4 ; x 16add ax, offset IEnter ; 中断入口地址(段地址为0)mov [bx], axmov ax, 0inc bxinc bxmov [bx], ax ; 代码段地址为0call IInitmov ax, datamov ds, axmov CNT, 0 ; 计数值初始为0mov al, CNTmov dx, CS273out dx, alstiLP: ; 等待中断,并计数。
东南大学《微机实验及课程设计》实验报告实验五8253 计数器/定时器姓名:学号:专业:实验室:实验时间:2014年5月29日报告时间:2014年6月5日评定成绩:审阅教师:一. 实验目的与内容实验目的:1.掌握计数器/定时器8253的基本工作原理和编程使用方法;2.了解掌握8253的计数器/定时器典型应用方法。
实验内容:(1)8253 计数器参考图3.6-1 虚线连接电路,将计数器0 设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0 电平变化(当输入N+1 个脉冲后OUT0 变高电平)。
(2)8253 定时器按图3.6-2 连接电路,将计数器0、计数器1 分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1 输出电平的变化(频率1Hz)。
(3)在实验2的基础上,利用输出的1Hz的方波接入计数器2,设置计数器2初值为4,根据键盘输入的数字(0~5)来设置计数器2的工作方式,并将GATE2信号进行相应的连接(接+5V或接单脉冲)用逻辑笔观察OUT2电平的变化。
要求可以响应键盘的连续变化,直到按ESC键退出。
(4)在实验2的基础上,将8253计数器1的工作方式改为方式0,输出OUT1接入8255的PA0,PC0连接任意一个发光二级管,8255A的CS接288H。
编程使得发光二极管亮5秒,灭2秒,一直循环直到按任意键退出。
(提示:PA0查询OUT1输出电平,PC0输出开关量控制二极管发光)二. 基本实验原理电路图如下:程序框图如下:三. 方案实现与测试实验1:ioport equ 0ec00h-280h io8253a equ ioport+283h io8253 equ ioport+280hstacks segment stackdb 100 dup(?)stacks endscode segmentassume cs:code,ss:stacks main proc farstart:mov ax,stacksmov ss,axmov al,10hmov dx,io8253aout dx,almov dx,io8253mov al,0fhout dx,alzzz: in al,dxcall dispmov ah,06hint 21hmov dl,0ffhcmp al,dlpop dxjnz zzzmov ah,4chint 21hmain endpdisp proc nearpush dxand al,0fhmov dl,alcmp dl,9jle numadd dl,7num: add dl,30hmov ah,02hint 21hmov dl,0dhint 21hmov dl,0ahint 21hpop dxretdisp endpcode endsend start实验2ioport equ 0ec00h-0280h io8253a equ ioport+280h io8253b equ ioport+281h io8253 equ ioport+283h stacks segment stackdb 100 dup(?)stacks endscode segmentassume cs:code,ss:stacks main proc farstart:mov ax,stacksmov ss,axmov dx,io8253mov al,36hout dx,almov ax,1000mov dx,io8253aout dx,almov al.ahout dx,almov dx,io8253mov al,76hout dx,almov ax,1000mov dx,io8253bout dx,almov al,ahout dx,almov ah,4chint 21hmain endpcode endsend start实验3:ioport equ 0ec00h-0280h io8253a equ ioport+280h io8253b equ ioport+281hio8253c equ ioport+282h io8253 equ ioport+283h stacks segment stackdb 100 dup(?)stacks endscode segmentassume cs:code,ss:stacks main proc farstart:mov ax,stacksmov ss,axmov dx,io8253mov al,36hout dx,almov ax,1000mov dx,io8253aout dx,almov al.ahout dx,almov dx,io8253mov al,76hout dx,almov ax,1000mov dx,io8253bout dx,almov al,ahout dx,alinput:mov ah,1int 21hcmp al,1bhje exitsub al,30hmov cl,2mul cladd al,0b0hout dx,almov ax,4mov dx,io8253cout dx,almov al,ahout dx,aljmp inputexit:mov ah,4chint 21hmain endpcode endsend start实验4:ioport equ 0ec00h-280hio8253a equ ioport+280h; io8253b equ ioport+281h; io8253 equ ioport+283h;io8255a equ ioport+288h; io8255 equ ioport+28bh;io8255c equ ioport+28ah; stacks segment stackdb 100 dup(?)stacks endscode segmentassume cs:code,ss:stacks main proc farstart:mov ax,stacksmov ss,axmov dx,io8255mov al,90h;out dx,al;mov dx,io8253;mov al,36h;out dx,al;mov ax,1000;mov dx,io8253a;out dx,al;mov al.ah;out dx,al;mov dx,io8253;mov al,70h;out dx,al;inout: mov ax,2000;mov dx,io8253b;out dx,al;mov al,ah;out dx,al;mov dx,io8255a;in al,dx;mov dx,io8255c;out al,dx;mov cx,5000;delay:loop delay;mov dl,0ffh;mov ah,06h;int 21h;jz inout;mov ah,4ch;int 21h;main endp;code ends;end start;四.提高与创新研究1.图3.6-2系统中最大定时时间为多长,如果需要获得20秒的精确定时该如何处理?CLK0:0.0000001sCLK1、OUT0:0.0001sCLK2、OUT1:1s所以最大定时时间为一秒。
浙江工业大学计算机学院实验报告实验名称 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。