实验三_8253定时器计数器实器
微原硬件实验三:8253计数器定时器的应用
微原硬件实验报告北京邮电大学微机原理硬件实验报告实验三:8253计数器/定时器的应用专业:信息工程学生姓名:×××学号:×××指导教师:××完成时间:2013年11月29日一、实验目的 (3)二、实验原理及内容 (3)1、实验原理 (3)①8253定时器介绍 (3)②8253初始化 (3)③8253控制字 (3)④注意事项 (4)2、实验内容 (4)①基本功能 (4)②拓展功能 (5)三、硬件连接图及程序流程图 (5)1、硬件连接图 (5)①8253定时器 (5)②数码管 (6)③译码器 (7)④扬声器 (7)⑤分频器 (8)2、程序流程图 (9)四、源程序 (10)五、实验结果 (12)六、实验总结 (13)1、都是不认真听课惹的祸 (13)2、难听的曲子 (13)七、实验收获与心得体会 (13)八、思考题 (13)一、实验目的1、进一步熟悉汇编语言;2、学习掌握8253用作定时器的编程原理。
二、实验原理及内容1、实验原理①8253定时器介绍Ⅰ、微机系统使用的8254,其3个通道均有固定的用途:0号计数器为系统时钟源,每隔55ms向系统主8259IR0提一次中断请求;1号计数器用于动态存储器的定时刷新控制;2号计数器为系统的发声源。
用户在使用微机系统的时候,可以使用0号和2号计数器,但不能改变对1号计数器的初始化。
Ⅱ、实验箱上的8253,其数据线D7—D0,地址线A1、A0和控制线RD、WR通过总线驱动卡和微机系统的三总线相连。
除此之外,三个计数器的引出段和片选端都是悬空的,这意味着实验箱上的8253的三个计数器都归用户使用,你可以单独使用其中的一个计数器,也可以串联使用其中的2个或3个计数器。
Ⅲ、8253计数器的输入信号,其频率不能超过2MHz,否则长时间使用,芯片过热,容易烧毁②8253初始化使用8253前,要进行初始化编程。
8253定时计数器实验
8253定时器/计数器实验一、实验目的:1、进一步了解可编程定时/计数器8253的特点与功能;2、掌握8253定时/计数器的应用、编程方法。
二、实验设备:MUT—Ⅲ型实验箱、8086CPU模块、示波器。
三、实验内容:用定时/计数器8253的计数器0、计数器1级联实现1秒的定时。
使OUT1端所接发光二极管每隔1S闪烁一次,模拟电子秒表或信号报警器。
两个计数器皆工作于方式3(输出方波),CLK0端接频率为750KHz的时钟。
四、实验电路:本实验用到两部分电路:时钟脉冲发生器(脉冲产生电路)(见附录)、8253定时器/计数器(1片)。
电路原理图如图1所示。
图1:8253定时/计数器实验电路五、实验步骤:(1)实验连线:CS0连CS8253,8253CLK0连时钟脉冲发生电路的CLK3,OUT0连8253CLK1,OUT1连LED1。
如图2所示。
注意:GATE信号线、数据线、地址线、读写控制信号线均已接好。
图2:线路连接示意图(2)输入以下程序,编译、链接后,全速运行,观察实验结果。
;8253初始化参考程序CODE SEGMENTASSUME CS:CODEORG 0100HSTART:MOV DX,04A6H ;控制寄存器地址MOV AL,00110110B ;计数器0控制字:方式3,二进制计数OUT DX,ALMOV DX,04A0H ;计数器0的口地址MOV AL,0EEH ;写计数初值低8位OUT DX,ALMOV AL,02H ;写计数初值高8位OUT DX,ALMOV DX,04A6H ;控制寄存器地址MOV AL,01110110B ;计数器1控制字:方式3,二进制计数OUT DX,ALMOV DX,04A2H ;计数器1的口地址MOV AL,0E8H ;计数初值低8位OUT DX,ALMOV AL,03H ;计数值高8位OUT DX,ALNEXT: NOPJMP NEXT ;CPU在此循环执行空操作,说明8253独立工作。
实验三 8253定时器计数器实器
实验三8253定时器/计数器实验一、电路图二、流程图三、实验程序及注释CODE SEGMENTASSUME CS:CODEORG 1200HSTART:MOV DX,43HMOV AL,00110100B 写入控制字,选择计数器0OUT DX,ALMOV DX,40HMOV AL,0F4H 写入初值低8位OUT DX,ALMOV AL,01H 写入初值高8位OUT DX,ALMOV DX,43HMOV AL,01110110B 写入控制字,选择计数器1OUT DX,ALMOV DX,41HMOV AL,0E8H 写入初值低8位OUT DX,ALMOV AL,03H 写入初值高8位OUT DX,ALJMP $CODE ENDSEND START四、实验内容1.2EEH=750 3E8H=1000输出频率=(5X10^5)/(750X1000)=0.667HZ实验结果:灯闪烁20次所花时间为30S,与理论值一致。
2.将初值一改为500=1F4H输出频率=(5X10^5)/(500X1000)=1HZ实验结果:灯闪烁20次所花时间为20S,与理论值一致。
3.BCD码:将初值一改为500H将初值二改为1000H输出频率=(5X10^5)/(500X1000)=1HZ实验结果:灯闪烁20次所花时间为20S,与理论值一致。
五、问答题:1. 8253初始化编程时需要遵循的原则是什么?①选择控制寄存器,先写控制字,选择计算器及工作方式、读写格式、数制。
②初始值设置时,如果是16位,则需要两条指令来完成。
2. 简述8253初始化编程的步骤。
将控制命令字写入控制寄存器,给计算器赋初值。
六、调试过程:1. 按连线图连接好,检查无误后打开实验箱电源。
2. 在PC端软件开发平台上输入设计好的程序,编译通过后下载到实验箱。
3.运行程序后,观察LED闪烁周期,记录20次闪烁时间。
4.按要求调整初始值,使得闪烁周期为1S时间。
汇编语言 可编程定时器/计数器(8253)
信息学院实验报告学号:114100136 姓名:熊忠飞班级:11B课程名称:微机原理、汇编与接口技术实验名称:可编程定时器/计数器(8253)实验性质:验证性实验实验时间: 2013 年 6 月 7 日实验地点:睿智4号楼一、实验目的掌握8253的基本工作原理和编程方法。
二、实验内容及要求1、按图虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
2、按图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。
3、编程提示(1)8253控制寄存器地址 283H 计数器0地址 280H计数器1地址 281HCLK0连接时钟 1MHZ(2)参考流程图三、实验步骤及结果1、代码如下:(1)计数器stack segment stack'stack'dw 32 dup(0)stack endsdata segmentioport equ 0ec00h-0280hio8253a equ ioport+283hio8253b equ ioport+280h data endscode segmentassume cs:code,ds:data,ss:stack start:mov ax,datamov ds,axmov al,10hmov dx,io8253aout dx,almov dx,io8253bmov al,0fhout dx,alzby: mov dx,io8253amov al,00hout dx,almov dx,io8253bin al,dxand al,0fhmov dl,alcmp dl,9jbe numadd dl,7num: add dl,30hmov ah,2hint 21hjmp zbymov ah,4chint 21hcode endsend start(2)定时器stack segment stack'stack'dw 32 dup(0)stack endsdata segmentioport equ 0ec00h-0280hio8253a equ ioport+280hio8253b equ ioport+281hio8253c equ ioport+283hdata endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov dx,io8253cmov al,00110110Bout dx,almov dx,io8253amov al,0E8Hout dx,almov al,03Hout dx,almov dx,io8253cmov al,01110110Bout dx,almov dx,io8253bmov al,0E8Hout dx,almov al,03Hout dx,almov ah,4chint 21hcode endsend start四、实验小结通过本实验,掌握了8253这块芯片的一些基本功能,在实验中不仅学会了用计数器0计数,还学会了用计数器2和计数器1。
8253可编程计数器定时器实验
集美大学计算机工程学院实验报告课程名称微机系统与接口技术实验名称实验三8253可编程计数器/定时器实验实验类型设计型姓名学号日期地点室成绩教师1. 实验目的及内容1.1实验目的1)了解8253的内部结构、工作原理;了解8253与8088的接口逻辑; 2)熟悉8253的控制寄存器和初始化编程方法,熟悉8253的6种工作模式。
1.2实验内容1)设计8253与8086CPU 的硬件连接图,分配8253的基地址为0F000H 。
2)设计8253与外界输入时钟频率2MHZ 和电源的硬件连接,使8253产生周期为1秒的方波。
用此方波控制LED 灯,使其发出闪烁信号。
2. 实验环境星研电子软件,STAR 系列实验仪一套、PC 机一台、导线若干3. 实验方法8259A 的中断引脚IRi 与单脉冲连接,实现拨动单脉冲开关触发8259A 中断,8086计数中断次数并显示于G5区的断码管LED 上,此实验使用8259A 的IR2中断,正脉冲触发中断,脉冲频率为2MHz.4. 实验步骤4.1电路设计D0D1D2D4D5D6D7WR RD D3D08OUT010D17GATE011D26CLK09D35D44D53D62OUT113D71GATE114CLK115CS 21RD 22WR 23OUT217A019GATE216A120CLK2188253U35A0A1GATE0CLK0OUT1GATE1OUT2GATE2CLK2CSVCC 2M(B2)Ctrl(D1)VCCCS5(0B000H)A0A1A8253_1 EQU 0F002HA8253_2 EQU 0F001HA8253_3 EQU 0F003H.DATA.STACK.CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXmov dx,A8253_3mov al,00110101bout dx,almov dx,A8253_0mov al,00Hout dx,almov al,20Hout dx,almov dx,A8253_3mov al,01110111bout dx,almov dx,A8253_1mov al,00Hout dx,almov al,10Hout dx,alEND START4.4运行调试程序1)按要求设计的电路正确连接线路,检查完毕后打开电源。
8253定时计数器应用实验
3.电子发声实验(3) 系统的 OPCLK(1.1625MHz)作为音乐节拍,有表格查出每个音符对应的时常送给
计数器 2(工作在方式3:方波频率发生器),以确定音调,驱动扬声器产生音乐,
实验接线图
+5V
如下:
系 统 OPCLK 总 线 1.1625MHz
GATE2
8253
CLK2
OUT2
SPK SPK UNIT
图 7-6 实验(3)接线图 实验程序如下: STACK SEGMENT STACK
DW 64 DUP(?) STACK ENDS DATA SEGMENT TABLE DB 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 26H, 2DH, 2DH, 26H, 2DH, 33H
图 7-5 实验(2)线路
Байду номын сангаас
实验流程图及程序如下:
STACK SEGMENT STACK DW 64 DUP(?)
STACK ENDS CODE SEGMENT
ASSUME CS:CODE START: PUSH DS
MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ0 ADD AX,2000H MOV SI,0020H MOV [SI],AX MOV AX,0000H MOV SI,0022H MOV [SI],AX POP DS MOV AL,0FCH OUT 21H,AL MOV AL,15H OUT 43H,AL MOV AL,0FFH OUT 40H,AL MOV DL,30H A1: STI JMP A1
A1: MOV DL,25H MUL DL PUSH AX MOV AL,0B7H OUT 43H,AL POP AX OUT 42H,AL MOV AL,AH OUT 42H,AL INC BX MOV AH,00H MOV AL,[BX] TEST AL,0FFH JZ A3 MOV CX,77FFH
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变为高电平。
接口 定时器与计数器实验(8253)-- 8253定时器实验
同组同学学号:同组同学姓名:实验日期:2012 年 3月 26日交报告日期:2012 年 5月 30日实验(No. 1_1 )题目:定时器与计数器实验(8253)-- 8253定时器实验实验目的及要求:实验目的:1、学习8253可编程定时器/计数器定时方法。
2、学习8253多级串联实现大时间常数的定时方法。
3、学习8088/86控制8253可编程定时器的方法。
实验要求:用8253对标准脉冲信号进行计数,就可以实现定时功能。
用板上的1MHz做为标准信号,将8253可编程计数器/定时器的时间常数设在1000000次,就可以在定时器的管脚上输出1秒钟高/1秒钟低的脉冲信号。
因为8253每个计数器只有十六位,要用两个计数器才能实现一百万次的计数,实现每一秒钟输出状态发生一次反转。
实验电路及连线:连线连接孔1 连接孔21 8253_CS CS42 8253_OUT0L03 8253_GATE0VCC4 8253_CLK08253_OUT15 8253_GATE1VCC6 8253_CLK1F/4(1M)7 4MHz Fin实验说明:1、本实验工作方式0,计数值减完后输出一个脉冲宽度的高电平。
而本实验在计数值减完后,管脚状态产生变化(从高到低或从低到高)。
直到下一次计数值减完。
这样输出的波形为方波。
2、由于定时常数过大,就要用多级串联方式。
本实验采用两级计数器。
定时常数分别为100和10000。
将计数器的输出接到计数器0输入。
计数器0 的输出接到LED0。
实验框图:主程序框图源程序及分析:CONTROL equ 0c003h ;设置命令寄存器COUNT0 equ 0c000h ;设置计数器0COUNT1 equ 0c001h ;设置计数器1COUNT2 equ 0c002h ;设置计数器2code segmentassume cs:codestart proc near;第一次定时器设定:mov al, 36h; ; 计数器0,16位,方式3,二进制(00110110B=36h) mov dx, CONTROLout dx, almov ax, 1000mov dx, COUNT0out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节;第二次定时器设定mov al,01110110B; ; 计数器1,16位,方式3,二进制mov dx, CONTROLout dx, almov ax, 1000mov dx, COUNT1out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节jmp $start endpcode endsend start实验(No. 1-2 )题目:定时器与计数器实验(8253)-- 8253计数器实验实验目的及要求:实验目的:1、学习8088/86与8253的连接方法。
定时器计数器8253实验
【本次实验所使用的模块区,见下两页】
CODE SEGMENT 'code' ASSUME CS:CODE START: MOV DX,307H MOV AL,01110110B OUT DX,AL MOV DX,305H MOV AL,0E8H OUT DX,AL MOV AL,03H OUT DX,AL MOV DX,307H MOV AL,10110110B OUT DX,AL MOV DX,306H MOV AL,0E8H OUT DX,AL MOV AL,03H OUT DX,AL MOV AH,4CH INT 21H CODE ENDS END START
实验程序8253key1.ASM
;注:03E8H=1000D
思考题
① 利用8253、8259和8255设计中断方式走马灯电路, 8253每秒通过总线向8253发出一次中断申请, 8259中断允许后,8255的A端口输出一个数据,使 得和A端口相连的8个发光二极管依次变亮且每次 只亮一个。 ② 利用8253和8255设计查询方式走马灯电路,8253 每秒使的PC4的电位变化一次,编程查询PC4的状 态,当PC4为低电平时从8255的A端口输出一个数 据,使得和A端口相连的8个发光二极管依次变亮 且每次只亮一个。
附录 8253的端口地址
0号计数器 304H 1号计数器 305H 2号计数器 306H 计数器控制寄存器 307H
8253控制寄存器(1)
8253控制寄存器(2)
实验八
定时器/计数器8253
【实验名称】 定时器/计数器8253 【实验目的】 了解定时器/计数器8253的原理,掌握编制定时器/计数器 程序设计方法。 【实验内容】 设计连线和程序,以1MHz的信号为时钟信号,利用8253产 生1s的定时控制发光二极管变化。 【实验原理图】 实验原理图见下页,其中译码电路见实验六存储器连接。
微机实验 可编程定时器计数器8253
微机原理实验报告实验题目:可编程定时器/计数器8253一、实验目的1、学习8253可编程定时器/计数器定时方法2、学习8253多级串联实现大时间常数定时方法二、实验内容编一个1秒定时子程序,并提示有键盘读入要计时的时间,并把数值显示在屏幕上三、实验器材微机原理实验箱1个电脑(带TPC-USB软件)1台插线若干四、实现过程1、流程图2、程序源代码;*****************************************IOY0 EQU 280H;*****************************************MY8253_COUNT0 EQU IOY0+00HMY8253_COUNT1 EQU IOY0+01HMY8253_COUNT2 EQU IOY0+02HMY8253_MODE EQU IOY0+03H;*****************************************MY8255IOY0 EQU 2A0H;*****************************************MY8255_A EQU MY8255IOY0+00HMY8255_B EQU MY8255IOY0+01HMY8255_C EQU MY8255IOY0+02HMY8255_MODE EQU MY8255IOY0+03HSTACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTCOUNTER2 DB 0MESG1 DB 'Please input your number:',0DH,0AH,'$' ;提示语一,请输入数字MESG2 DB 'It is counting:',0DH,0AH,'$';提示语二,正在计数MESG3 DB 'Wrong input,please input again:',0DH,0AH,'$';提示语三,输入错误,请重新输入DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESG1 ;输出提示语MOV AH,9INT 21HDEAL: MOV AH,1 ;读入一个数字INT 21HCMP AL,'0'JL EXITCMP AL,'9'JG EXITMOV BL,ALSUB BL,30H ;把输入的ASCII码转化成数字ADD COUNTER2,BL ;COUNTER2+=INPUTMOV CH,00HMOV CL,COUNTER2MOV DL,0DH ;回车换行MOV AH,02INT 21HMOV DL,0AHMOV AH,02INT 21HONE_SECOND:MOV AL,CL ;输出当前计数值CXADD AL,30HMOV DL,ALMOV AH,02INT 21HMOV DL,0DH ;回车换行MOV AH,02INT 21HMOV DL,0AHMOV AH,02INT 21HMOV DX,MY8253_MODE ;计数器0,方式3,十进制计数MOV AL,37HOUT DX,ALMOV DX,MY8253_COUNT0 ;装入初值MOV AL,00H ;1000分频OUT DX,ALMOV AL,10HOUT DX,ALMOV DX,MY8253_MODE ;计数器1,方式0,十进制计数MOV AL,71HOUT DX,ALMOV DX,MY8253_COUNT1 ;装入初值MOV AL,00H ;1000分频MOV AL,10HOUT DX,ALMOV DX,MY8255_MODEMOV AL,89HOUT DX,ALMOV DX,MY8255_CL1: IN AL,DX ;判断PC7口是否为高,即计数一秒是否已到TEST AL,80HJZ L1DEC CXJNZ ONE_SECONDQUIT:MOV AX,4C00HINT 21HEXIT: MOV DX,OFFSET MESG3 ;输入范围错误,提示重新输入MOV AH,9INT 21HJMP DEALCODE ENDSEND START3、实验结果图五、实验改进1、说明本实验中课本上只给出了0~9秒的计数,而实际运用的时候我们经常会需要用到任意值的定时,因此我们做了改进,计时可以输入任意数,若要输出到屏幕则能计数0~992、流程图注:改进的地方是分十位和个位进行存储和输出显示六、小结1、通过本次试验,我进一步了解了8253的定时和计数功能,以及如何通过串联定时器的方式实现大时间常数的定时。
8253定时计数器
专业班级姓名学号
实验题目日期
实验三:可编程定时/计数器8253
一、实验目的
掌握8253定时器的编程原理,用示波器观察不同模式下的输出波形。
二、实验设备
MUT—Ⅲ型实验箱、8086CPU模块、示波器。
三、实验内容Biblioteka 8253计数器0,1,2工作于方波方式,观察其输出波形。
四、实验原理
本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路
3、分析软触发与硬触发的区别。
1.软触发
code segment
assume cs:code
org 100h
start:
mov dx,04a6h
mov al,70h ;通道1
out dx,al
mov dx,04a2h
mov al,02h
out dx,al
mov al,0h
out dx,al
mov dx,04a6h
end start
七、思考题
1、编程。利用通道1的软触发计数工作方式(方式0、4),对输入的单脉冲进行计数。注意观察计数初值与输入的脉冲数,以及输出信号的波形。70h
2、编程。利用通道2的硬触发计数工作方式(方式1、5),对输入的单脉冲进行计数。注意观察计数初值与输入的脉冲数,以及输出信号的波形b2
out dx,al
jmp $
code ends
end start
六、参考程序
code segment
assume cs:code
org 100h
start: mov dx,04a6h
mov al,36h ;通道0
out dx,al
mov dx,04a0h
8253定时器计数器实验
理工学院实验报告(1)、连接实验电路连线:8253 CS ------ 端口地址 300CS PACK IMS ----- 393 1A393 1QD ------ 8253 CLK18253 OUT1 ---- 8253 CLK28253 OUT2 ---- 发光二极管 L15 8253 GATE1 -- (A10)+5V8253 GATE2 -- (A10)+5V结果如下图所示:(2)、实验程序如下所示:CS8253 EQU 0303HCOUNT0 EQU 0300HCOUNT1 EQU 0301HCOUNT2 EQU 0302HCODE SEGMENTASSUME CS:CODESTART PROC NEARMOV DX,CS8253MOV AL,01110110BOUT DX,ALMOV DX,COUNT1MOV AX,307OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,CS8253MOV AL,10110110BOUT DX,ALMOV DX,COUNT2MOV AX,1000OUT DX,ALMOV AL,AHOUT DX,ALJMP $START ENDPCODE ENDS(3)、经编译、无语法错误后装载到实验系统,全速运行程序,观察发光二极管L15,应有周期为1s的点亮、熄灭。
结果如下图所示:一秒后又熄灭,如此往复。
(4)、做完实验后,应按暂停命令中止程序的运行。
二、8253计数器实验验证8253的工作方式3,CLK1每输入5个单脉冲信号,改变一次OUT1状态。
实验电路:DATA BUS D7~D0D08OUT010D17GATE011D26CLK09D35D44D53D62OUT113D71GATE114CLK115CS21RD22WR23OUT217A019GATE216A120CLK2188253/CS300CSIORIOWA0A1VCC1.8432MHzOUT0GATE1CLK1OUT1OUT2CLK2GATE2+5VSP单次正脉冲L15发光二极管显示图4-6-2 8253计数器实验电路图实验步骤:1)按图4-6-2连接实验电路,参考程序:8253-2.ASM;2)编写实验程序,经编译、无语法错误后装载到实验系统;3)全速运行程序,每按5次单脉冲按钮,改变1次发光二极管L15的状态;4)实验完毕后,应使用暂停命令中止程序的运行。
微机接口技术实验定时计数器8253
微机接口技术实验定时/计数器(8253)1. 实验原理TPC-USB平台上有一块8253定时/计数器芯片,除了片选引脚,其他信号都已接好。
有关结构和编程,请参考本章前几节内容。
2. 实验内容(1)计数器方式0实验将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动开关逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
步骤如下:1)按图2.1虚线连接电路。
图2.1 TPC-USB平台计数器方式0实验连线图2)根据流程图2.2,编程并运行,观察实验结果。
图2.2 TPC-USB平台计数器方式0实验流程图3)实验代码:CODE SEGMENTASSUME CS:CODESTART:MOV AL,10HMOV DX,283HOUT DX,ALMOV AL,0FHMOV DX,280HOUT DX,ALLL: MOV AL,00HMOV DX,283HOUT DX,ALMOV DX,280HIN AL,DXCMP AL,9JBE L1ADD AL,7L1:ADD AL,30HMOV DL,ALMOV AH,2INT 21HMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AH MOV AH,02H INT 21HMOV AH,6MOV DL,0FFH INT 21H JZ LLMOV AH, 4CH INT 21H CODE ENDS END START(2)计数器方式3实验将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。
步骤如下:1)按图2.3连接电路。
U5 8253+5V+5V图2.3 TPC-USB 平台计数器方式3实验连线2)根据流程图2.4,编程并运行,观察实验结果。
图2.4 TPC-USB平台计数器方式3实验流程图3)实验代码:CODE SEGMENTASSUME CS:CODESTART:MOV AL,37HMOV DX,283HOUT DX,ALMOV AL,00HMOV DX,280HOUT DX,ALMOV AL,10HOUT DX,ALMOV AL,77HMOV DX,283HOUT DX,ALMOV AL,00HMOV DX,281HOUT DX,ALMOV AL,10HOUT DX,ALMOV AH,4CHINT 21HCODE ENDSEND START(3)计数器级联实验将计数器0设置为方式3(方波),计数器1设置为方式2(分频)。
实验三、82C54定时器、计数器实验
接口技术实验指导书实验三8253定时器/计数器实验一、实验目的和内容1.掌握8253定时器/计数器芯片的工作原理2.完成8253定时器/计数器的编程实验二、实验电路及说明实验电路如图8所示地址为10H8253的三个计数器全部开放,J53上有OUT0、GATE0CLK0、OUT1、GATE1、CLK1、OUT2、GATE2、CLEK2。
它们可与任何I/O相连。
在我公司提供的实验箱上的D部分有各种频率时钟信号。
下面提供一例,供参考,学生可根据要求自行调换频率。
如图8所示三、实验器材奔腾微机一台、SXL-100(PCI)接口实验仪一套、示波器一台四、硬件实验步骤本实验在板上由J与D部分组成,有短路块结合跳线一种方式。
五、程序框图六.程序代码#include <stdio.h>#include <dos.h>#include “PCIcard.h”unsigned long int ic82530=0x20,ic82531=0x21,ic8253type=0x23; unsigned long int ic8255a=0x0,ic8255b=0x1,ic8255type=0x3;int buffer1[10]={0x0c0,0x0f9,0x0a4,0x0b0,0x99,0x92,0x82,0x0f8,0x80,0x98};int dis1[4]={0,0,0,0};void main(void){int err,rt1=0,count1=0,flagm=1,flag1=0;void plus1();void mydisp1();int mypckey();err=findPCIcard();if (err!=0){printf("The PCI card isn't found!!!\n");flagm=0;}err=getPCIbase0();iobase0=iobase0&0xfffc;//从PCI配置空间读入的与地址空间有关的数据其bit 0位为1,printf("IOBase0=%xH\n",iobase0);//表明此空间为IO空间参与PCI总线地址译码err=getPCIbase1();iobase1=iobase1&0xfffc;printf("IOBase1=%xH\n",iobase1);err=getPCImembase1();err=getPCImembase0();membase0=membase0+membase1<<16;//左移16位,将高位地址变换成双字中的高位字printf("MEMBase0=%lxH\n",membase0);err=getPCIIRQ();printf("PCI IRQ = %d\n",err);ic82530=ic82530+iobase1; //获取8253 T0 T1 控制寄存器的地址ic82531=ic82531+iobase1;ic8253type=ic8253type+iobase1;ic8255a=ic8255a+iobase1; //获取8255 A、B口和控制寄存器的地址ic8255b=ic8255b+iobase1;ic8255type=ic8255type+iobase1;printf("Press e to exit:\n"); //显示提示字符outportb(ic8255type,0x80); //初始化8255outportb(ic8255a,0x0ff);outportb(ic8255b,0x0ff);// 将8253的定时器0初始化为工作方式3,//采用二进制先读写低8位,在读写高8位,//写入时间常数,值为0X0FFF//写入时间常数//将8253的定时器1初始化为工作方式3,//采用二进制只读写低8位,写入时间常数,值为8//主循环{outportb(ic8253type,0x4F);rt1=inportb(ic82531);if (rt1==2) //判断是否计数到2{if (flag1==0) //判断是否计过2{flag1=1; //若是则置标志位count1=count1+1; //count1加1if (count1==2) //判断是否计过两次2{count1=0; //若是则清count1plus1(); //调加1子程序}}}elseflag1=0; //若rt1不为2,则清flag1 mydisp1(); //调显示子程序flagm=mypckey(); //调扫描键盘子程序}while (flagm==1);} // main() endint mypckey() //扫描键盘子程序{int pckey1();int flagk,judge;judge=pckey1();if (judge=='e')flagk=0;elseflagk=1;return (flagk);}int pckey1() //调用int 21H中断{union REGS regs;regs.h.ah=0x6;regs.h.dl=0x0ff;int86(0x21,®s,®s);return(regs.h.al);}void plus1() //加1子程序{int i;dis1[0]=dis1[0]+1;for (i=0;i<=2;i++){if (dis1[i]>=10){dis1[i]=dis1[i]-10;dis1[i+1]=dis1[i+1]+1;}}if (dis1[3]>=10)dis1[3]=0;return;}void mydisp1() //显示子程序{void delay1();int i,a1,a2=0x0fe;for (i=0;i<=3;i++){outportb(ic8255a,0x0ff);a1=buffer1[dis1[i]];outportb(ic8255a,a1);outportb(ic8255b,a2);a2=a2<<1;a2=a2|0x1;delay1();}return;}void delay1() //延时子程序{int i,j,a=0;for (i=1;i<=50;i++){for (j=1;j<=1000;j++){a=a+0;}}return;}六、思考题(1)、不更改硬件连接,程序只修改定时器的工作方式,但要完成同样功能,定时器还能初始化为哪几种工作方式?(2)、加长delay1()的延时时间对显示效果有什么影响?为什么?(3)、源程序中空白(6)解释这个函数的作用?在当前程序中有没有必要?为什么?什么情况有必要?(4)Gate0,Gate1为什么要接VCC?悬空会有什么情况发生?为什么?。
实验三 8253计数器
实验三 8253计数器/定时器的实验一、实验目的掌握8253定时器的编程原理及应用练习使用Proteus仿真软件二、实验内容利用Proteus仿真实现8253控制LED的闪烁,要求LED点亮0.5秒,熄灭0.5秒。
三、实验步骤1、画硬件连接图(1)启动Proteus,点击开始、程序、Proteus 7 professional、ISIS 7 professional(2)放置元件,点击,再点击,出现依次输入8086 74LS373 4LS138 NAND 8253A LED-RED PULLUP(3)按下图连接电路(4)放置标号,点击,依次放置总线标号,网络标号(如上图)(5)放置电源和终端,点击(6)修改元件属性,双击LED,出现如下对话框,将Model Type 改为Digital2M2、加载软件(1)启动emu8086 4.07,生成.com文件或. Exe文件(2)在emu8086 4.07,输入程序参考程序如下;PORT_0 equ 0e8hPORT_1 equ 0eahPORT_2 equ 0echPORT_CTR equ 0eehmov al, 00110101Bmov dx, PORT_CTRout dx, almov dx, PORT_0mov ax,00hout dx,almov dx, a8253mov ax,10hout dx,almov al, 01110110Bmov dx, PORT_CTRout dx, almov dx, PORT_1mov ax,0e8hout dx,almov ax,03hout dx,al(3)编译程序,点击,生成.com文件或. Exe文件(4)加载程序,双击仿真图中的8086CPU,出现如下对话框,点击加载软件,同时将各参数修改如下图3.仿真,点击,系统开始仿真。
四实验报告要求整理好运行正确的源程序,画出程序流程图,并列出源程序清单,写出实验的心得体会。
实验三 8253计数器原理及分频实验
D2位 位
方式2 方式
计数开
1 0 1 1
CLK
方式0 方式
计数开
0 1 1 fx 0
0 1 0 1 0
方式2 方式
计数开
往地址0x03写入 写入0xFF,开闸门,启动计数器 计数,并将 x接入. 计数, 往地址 写入 ,开闸门,启动计数器0计数 并将f 接入.
计数器1计数结束,则计数器 已经循环了 已经循环了N次 计数器 计数结束,则计数器0已经循环了 次 计数结束
写入N后,输出
3
方波速率发生器
{(N+1)/2个CLK高电平,(N-1)/2N个CLK低电平(N为奇数)
1/2N个CLK高电平,1/2N个CLK低电平(N为偶数)
4 5
软件触发选通 硬件触发选通
写入 N 后,过 N+1 个 CLK,输出一个宽度为 1 个 CLK 的脉冲 门控触发后,过 N+1 个 CLK,输出一个宽度为 1 个 CLK 的脉冲
▼本实验共用到六个端口地址:
23H(1Y1): 输出口,8255的控制端口 22H(1Y1): 输出端口(PC3),发出计数器0的闸门信 号(0为关,1为开) A0H(1Y5): 输入/输出端口,8253计数器0 的读写口 A1H(1Y5): 输入/输出端口,8253计数器1的读写口 A3H(1Y5): 输出端口,8253的控制寄存器的端口
思考和练习题
1.向计数器0和计数器1写入不同的值,指示灯 会出现什么现象? 2.计数器0和1采用不同的工作方式,指示灯有 什么现象. 3.8253的初始化要在一个脉冲的作用下才能完 成,这对实验中计数器输出信号的频率有没 有影响?
�
方式0 方式1 方式2 方式3 方式4 方式5
8253实验报告
定时器计数器实验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)
实验报告——可编程定时器/计数器(8253)专业:材料物理;姓名:曾瑞;学号:2011301230019一、实验目的1)学会8253芯片和微机接口原理和方法。
2)掌握8253定时器/计数器的基本工作原理、工作方式和编程原理。
二、实验内容按图6虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
图 6三、程序的流程图四、源程序;FILENAME ZZZ.ASMCODE SEGMENTASSUME CS:CODESTART: MOV AL,10H ;控制字:通道0,只读低字节MOV DX,0CB03H ;控制口OUT DX,AL ;写入控制字MOV DX,0CB00H ;计数器0MOV AL,0FH ;预置计数值n=15OUT DX,AL ;送计数值初值MOV CL,AL ;初始值给CLCALL DISPLP: MOV AH,0BHINT 21HINC AL ;AL减一JZ EXIT ;若有键按下,跳转到EXITIN AL,DX ;取端口0CB00H当前值CMP AL,CL ;比较AL与CLJZ LP ;若计数值未发生改变,跳回LPCALL DISP ;调用子程序,显示输出DEC CL ;CL中的值减一JMP LPEXIT: MOV AH,4CHINT 21H ;返回到DOS DISP PROC NEARPUSH DXAND AL,0FH 将高四位清零,保留低四位MOV DL,ALCMP DL,9JLE NUM ;若小于等于9,跳转到NUMADD AL,7NUM: ADD DL,30HMOV AH,02HINT 21H ;输出计数值MOV DL,0DHINT 21H ;回车MOV DL,0AHINT 21H ;换行POP DXDISP ENDPCODE ENDSEND START五、实验结果及分析(1)运行程序后,实验结果如下:FED……21FE…...当有键按下时,程序结束,返回到DOS;(2)对结果的分析:从以上结果可知,每手动按下一次脉冲,输出相应的一个16进制数,依次从小到大排列,显示的是当前计数器的数值。
可编程计数器(定时器)8253实验
四、实验步骤1、验证性实验(使用8253产生1S的时钟)具体要求:采用计数器0和计数器1完成对2MHz输入方波信号的两级分频(将计数器0的输出作为计数器1的输入),定时常数均为1000,得到一个周期为2秒钟的方波,用此方波控制蜂鸣器发出报警信号。
实验步骤:参见《微机原理及接口技术实验指导书》P.39“演示实验”的相关内容。
.MODEL TINYCOM_ADDR EQU 0B003HT0_ADDR EQU 0B000HT1_ADDR EQU 0B001H.STACK 100.CODESTART: MOV DX,COM_ADDRMOV AL,35HOUT DX,ALMOV DX,T0_ADDRMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,ALMOV DX,COM_ADDRMOV AL,77HOUT DX,ALMOV DX,T1_ADDRMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,ALJMP $END START图1 8253实验原理图2、拓展性实验(LED指示灯的计次闪烁)具体要求:将8253的CLK0接到脉冲发生开关S4端,OUT0接到一发光二极管。
将8253的计数器0初始化为方式0,并设置计数初值6。
拨动脉冲发生开关并计数,观察LED的变化与拨动开关次数的关系。
实验步骤:参见《微机原理及接口技术实验指导书》P.39“编程实验”的相关内容。
.MODEL TINYCOM_ADDR EQU 0B003HT0_ADDR EQU 0B000H.STACK 100.CODESTART: MOV DX,COM_ADDRMOV AL,11HOUT DX,ALMOV DX,T0_ADDRMOV AL,06HOUT DX,ALEND START。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 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 是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz用+5V 单电源供电。
8253 的六种工作方式:
⑴方式0:计数结束中断⑷方式3:方波频率发生器
⑵方式l:可编程频率发生⑸方式4:软件触发的选通信号
⑶方式2:频率发生器⑹方式5:硬件触发的选通信号8253 初始化编程
1. 8253 初始化编程
8253 的控制寄存器和 3 个计数器分别具有独立的编程地址,由控制字的内容确定使用的是哪个计数器以及执行什么操作。
因此8255 在初始化编程时,并没有严格的顺序规定,但在编程时,必须遵守两条原则:
①在对某个计数器设置初值之前,必须先写入控制字;
②在设置计数器初始值时,要符合控制字的规定,即只写低位字节,还是只写高位字节,还是高、低位字节都写(分两次写,先低字节后高字节)。
2. 8253 的编程命令
8253 的编程命令有两类:一类是写入命令,包括设置控制字、设置计数器的初始值命令和锁存命令;另一类是读出命令,用来读取计数器的当前值。
锁存命令是配合读出命令使用的。
在读出计数器值前,必须先用锁存命令锁定当前计数寄存器的值。
否则,在读数时,减 1 计数器的值处在动态变化过程中,当前计数输出寄存器随之变化,就会得到一个不确定的结果。
当CPU 将此锁定值读走后,锁存功能自动失效,当前计数输出寄存器的内容又跟随减 1 计数器变化。
在锁存和读出计数值的过程中,减 1 计数器仍在作正常减 1 计数。
这种机制确保了即能在计数过程中读取计数值,又不影响计数过程的进行。
五、实验程序及注释
CODE SEGMENT
ASSUME CS:CODE
ORG 1200H
START:
MOV DX,43H
MOV AL,00110100B ;写入控制字,选择计数器0
OUT DX,AL
MOV DX,40H
MOV AL,0F4H ;写入初值低8位
OUT DX,AL
MOV AL,01H ;写入初值高8位
OUT DX,AL
MOV DX,43H
MOV AL,01110110B ;写入控制字,选择计数器1
OUT DX,AL
MOV DX,41H
MOV AL,0E8H ;写入初值低8位
OUT DX,AL
MOV AL,03H ;写入初值高8位
OUT DX,AL
JMP $
CODE ENDS
END START
六、实验内容
1.2EEH=750 3E8H=1000
输出频率=(5X10^5)/(750X1000)=0.667HZ
实验结果:灯闪烁40次所花时间为60S,与理论值一致。
2.将初值一改为500=1F4H
输出频率=(5X10^5)/(500X1000)=1HZ
实验结果:灯闪烁30次所花时间为30S,与理论值一致。
3.BCD码:将初值一改为500H
将初值二改为1000H
输出频率=(5X10^5)/(500X1000)=1HZ
实验结果:灯闪烁40次所花时间为40S,与理论值一致。
七、问答题:
1. 8253初始化编程时需要遵循的原则是什么?
①选择控制寄存器,先写控制字,选择计算器及工作方式、读写格式、数制。
②初始值设置时,如果是16位,则需要两条指令来完成。
2. 简述8253初始化编程的步骤。
将控制命令字写入控制寄存器,给计算器赋初值。
八、调试过程:
1. 按连线图连接好,检查无误后打开实验箱电源。
2. 在PC端软件开发平台上输入设计好的程序,编译通过后下载到实验箱。
3. 运行程序后,观察LED闪烁周期,记录20次闪烁时间。
4.按要求调整初始值,使得闪烁周期为1S时间。
九、心得体会:
这个实验的难点主要在于定时器的初始化和初值的计算。
弄懂初始化命令字每一位的作用,就可以轻松的选择计算器,规定计算器的工作方式、读写格式和数制。
初值的计算和时钟频率以及工作方式有关。
写入初值时如果是8位,一条指令即可完成,如果是16位则需要两条指令来完成。