版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、13.1 基本概念 微机系统常常需要为处理机和外设提供时间标记,或对外部事件进行计数。例如,分时系统的程序切换。 定时采集外部数据信号。 统计外部事件发生的次数。 定时的本质是计数。把若干小片的计时单元进行计数累加,就可获得一段定长的时间。 2(1)软件定时:用一小段循环程序来实现等待延时。因为各条指令执行时有自己规定的指令周期。主要用于短延时。此法不增加硬设备,但增加CPU的时间开销。(2)硬件定时:采用可编程通用的定时计数器或不可编程的单稳延时电路产生定时或延时。这种方法,不占用CPU的时间,定时时间长,使用灵活,故得到广泛应用。目前,通用的定时计数器集成芯片种类很多,本章主要对Intel
2、 8253-58254-2可编程定时计数器进行详细讨论。345 (1)数据总线D7D0:它们为三态输入/输出线。用于将8253与系统数据总线相连,供CPU对8253读写数据、命令和状态信息。 (2)片选信号 CS :输入信号。低电平有效。 (3)读信号 RD :输入信号。低电平有效。由CPU发出,用于对8253寄存器读操作。 (4)写信号 WR :输入信号,低电平有效。 678910 当前计数值锁存器(16位):锁存减1计数器在某一时刻的值。可供读出和查询。 计数初值寄存器(16位):用于存放计数初值(定时常数、分频系数)。可供读出和自动重装(当减1计数器值减到0时,自动把初值再装入减1计数器
3、,重新开始计数) 。 减1计数器(16位):在获取计数初值后,执行减1计数。每进入一个时钟脉冲CLK,计数器就减1,减到0时输出OUT信号,计数结束。可执行自动重装。不能对它执行读操作。112. 计数初值:获得符合要求的输出信号所需要的时钟信号的个数。 设输入信号CLK的频率为fclk,要求输出OUT信号频率fout。计数初值C为: C= fclk/fout= fclkTout 12 芯片加电后,必须要进行初始化,这包含两个方面: 1.向控制寄存器写入方式命令字: 目的是:选择计数器 确定工作方式 指定计数初值的长度 指定计数初值的装入顺序 指定计数值的码制。2.向已选定的计数器按方式命令字的
4、要求写入计数初值。131415161718有如下三个特点: (1)写入方式字后,相应的输出信号OUT就开始变成低电平。当计数器减到零时,OUT立即输出高电平。可利用它的上升沿作为IRQ信号。 (2)门控信号GATE为高电平时,计数器工作,当GATE为低电平时,计数器停止工作,其计数值保持不变。待GATE变为高电平时,从中止处继续计数。 (3)在计数器工作期间,如果重新写入新的计数值,则计数器将按新写入的计数值重新工作。1920 在计数器工作期间: GATE的下降沿不影响计数; GATE上升沿使计数器重装计数初值并开始计数。 在计数期间对计数器写入新的计数值,计数过程不受影响,直到计数值计满回零
5、且门控信号再次出现上升沿后,才按新写入的计数值开始工作。 2122方式2是自动重装时间常数的N分频器。有如下三个特点:(1) 方式2的方式字被写入计数器后,输出就保持高电平。直到计数值变为1时,OUT才为低电平并自动重装原计数值。低电平维持一个时钟周期后,输出又恢复高电平并开始新一次计数。于是,在OUT端输出一定频率的周期性负脉冲信号。可见这种方式是一个分频比为计数值的频率发生器。(2)计数器工作期间,如果向它写入新的计数值,则计数器仍按原计数值计数,直到回零并在输出一个时钟周期的低电平之后,才按新的计数值计数。232425不同之处在于:(1)工作在3方式,引脚OUT输出的不是一个时钟周期的负
6、脉冲,而是占空比为1:1或近似1:1的方波;当计数初值为偶数时,输出在前一半的计数过程中为高电平,在后一半的计数过程中为低电平。(2)由于3方式输出的波形是方波,并且具有自动重装计数初值的功能,因此,8253一旦计数开始,就会在输出端OUT输出连续不断的方波。27此方式设定后,OUT就开始变成高电平,写完计数值后,计数器开始计数,计数回零时,输出变为低电平,并维持一个时钟周期后恢复高电平。但计数器不再计数,输出也一直保持高电平不变。GATE为高电平时,允许计数器工作,为低电平时,计数停止,待其恢复高电乎后,计数器又重装原计数值并开始计数。计数器工作期间,若向计数器写入新的计数值,并不影响当前计
7、数状态,直到当前计数值计完回零并输出一个负脉冲后,计数器才按新计数值开始计数,一旦计数完毕,计数器将停止工作。2829 (1)写入计数初值后,并不立即开始计数,而由GATE上升沿启动计数。回零后,在输出一个时钟周期的低电平后恢复高电平。(2)在计数过程中(或计数结束后),如果门控再次出现上升沿,则计数器将从原设定的计数初值重新计数。 其他特点基本与方式4相同。小结:6 种工作方式的比较 0方式(门控单稳)和1方式(门控单稳),这两种方式的输出波形类似。 2方式(分频器)和3方式(方波发生器),这两种方式共同的特点是具有自动再加载功能(装入)能力。二者的区别在于:2方式在计数过程中输出高电平,而
8、在每当减1至0时输出宽度为1个TCLK的负脉冲。3方式是在计数过程中,OUT的信号是占空比为1:1的方波或近似方波。 4方式(软件触发单脉冲)和5方式(硬件触发单脉冲)。这两种方式的OUT输出波形相同,两者的区别是计数启动的触发信号不同,前者由写信号启动计数,后者或一个脉冲)。 3132 8253-5/8254-2应用举例3334日时钟的硬件主要由定时/计数器8254和中断控制器8259A构成,共工作原理框图如图3.10所示。该图还画出了在日时钟运行时对内存RAM的使用情况。8254OUT0GATE0CLK08259AIRQ0T=54.9msIR0INTD07INTA总线控制器S2S1S0D
9、QQ状态=000CPPCLK+5VCPUINTRD07S2S1S0RAMFEA5HF000HTIMER-LOTIMER-HI存储器TIMER-INT(中断程序)00:0000:20H00:23H40:6CH40:6EH向量向量指针时间值+1并保存图3.10 日时钟运行原理示意图2.3863632MHZ中断号8日时钟中断8的中断服务程序流程图开中断有关寄存器进栈TIMER-LO加1到0? 到24小时?TIMER-HI加1TIMER-OFL置1并使日时钟复位0点0 TIMER-LO0 TIMER-HINYYN关闭软驱电机计算值减1 减至0?电机运行状态清零输出命令关闭电机调用定时报时中断ICH输出
10、结束中断的命令EOI到8259A有关寄存器出栈N图3.11 日时钟中断8的中断服务程序流程图37二、稳定延时三、发声器1.要求 利用定/计数器8253发600Hz的长/短音。按任意键,开始发声;按ESC键,停止发声。8253的输入时钟CLK的频率1.19318MHz。2.分析3.设计(1)硬件设计(2)软件设计发声程序由主程序和子程序组成。主程序流程图如图3.13所示。.开始8253初始化计算并装入初值关闭扬声器按下任意键?发长音(BL=6)(CALL SSP)发短音(BL=1)(CALL SSP)按下Esc键?关闭扬声器返回DOS结束YYNN发长/短音的程序为:CODE SEGMENT AS
11、SUME CS:CODE,DS:CODE ORG 100H START: JMP BEGIN LONG1 EQU 6 SHORT1 EQU 1 BEGIN: MOV AX,CODE MOV CS,AX MOV DS,AX ;初始化8253 MOV AL,10110110B ; 方式命令 OUT 43H,AL ;命令口 ;装计数初值 MOV AX,1983 ;输出600Hz的计数初值 OUT 42H,AL ;先装低字节 MOV AL,AH ; 后装高字节 OUT 42H,AL ; 关闭扬声器 IN AL,61H ; 读入8255的PB口原输出值 AND AL,0FCH ; 置PB0和PB1为零,
12、关闭GATE2和与门 OUT 61H,AL ; 查任意键,启动发声器 WAIT1: MOV AH, 0BH ; 功能调用 INT 21H CMP AL,0H ;无按按下,发出长音 JE WAIT ;有键按下,发出长音 ;发长音 LOP: MOV BL,LONG1 ;长音入口参数 CALL SSP ;;调发声子程序 ;查Esc键,停止发声 MOV AH,0BH ;功能调用 INT 21H CMP AL,0H JE CONTINUE1 MOV AH,08H ;有键铵下,检测是Esc键? INT 21H CMP AL,1BH JE QUIT ;是,停止发声,并退出 ;发短音CONTINUE1: MO
13、V BL,SHORT1 ;短音入口参数 CALL SSP ;调用发声子程序 JMP LOP ;循环 ;关闭扬声器,并退出 QUIT: IN AL, 61H ;停止发声 MOV AH,AL AND AL,0FCH OUT 61H,AL MOV AL,AH MOV AX,4C00H ;退出,返回DOS INT 21H ;发声子程序SSP PROC NEAR IN AL,61H ;读取PB口的原值 OR AL,03H ;置PB0和PB1为高,打开GATE2与门 OUT 61H,AL ;开始发声 ;延时 SUB CX,CX ;设CX的值为216 L: LOOP L DEC BL ;BL为子程序的入口条
14、件 JNZ L RET SSP ENDPCODE ENDS END START四、波特率时钟发生器1.要求 设计一个波特率时钟发生器,其输入时钟CLK=1.19318Mz,波特率因子factor=16,输出的波特率为8档,它们分别是110b/s、 150b/s、 300b/s、 600b/s、1200 b/s、2400b/s、4800b/s、9600b/s。要求利用人-机对话方式选择波特率。按Esc键,退出。2. 分析 分析:波特率(Baud)是每秒钟传输的数据位数。 实际传输中,在时钟脉冲作用下,通过移位来实现收发器对1位数据的收发。 波特率因子:每传输1位所需要的时钟脉冲的个数。 收发时钟
15、频率TxC=BaudFactor。 选用8253的输出方波作为串行通信的收/发时钟,则有TxC=OUT。由于定时器的定时常数为:Tc= CLK/ OUT,故可得 :Tc=CLK/(Baud*Factor)。依此式可求出各波特率对应的定时常数Tc。 计算出的8个定时常数在程序中可用查表法或现场计算法获取,作为计数初值装入8253即可。发送时钟 TxC=BaudFactor Tc=CLK/BaudFactor=CLK/BF 例如,若要求串行通信传输率为1200b/s,而波特率因子为16,8253的输入时钟为1.19318MHz,则8253的定时常数可利用关系式(3.2)求得: (CLK=1.19M
16、,B=1200,F=16) 1.19318106次/秒Tc= =62 1200位/秒16次/秒题目要求实现波特率任选,就是实现8253定时常数的任选,其方法有二。一是查表法,二是现场计算法。3. 设计(1)硬件设计 波特率时钟发生器的硬件包括定时/计数器8253、并行接口芯片8255A及I/O端口地址译码电路等。(2)软件编程 计算出题目中要求的8档波特率的定时常数,分别为678H、497H、249H、124H、62H、31H、16H、8H。其次,设计查表法的波特率时钟发生器程序流程图,如图3.15所示。图3.15 波特率时钟发生器程序流程图开始8253初始化8255初始化关闭8253 提示选
17、择波特率选择波特率选择有错?YN波特率代号temp查表获取计数初值,并装入8253(CALL Load)有ESC键按下?关8253返回DOS结束NY产生不同波特率的程序如下: DATA SEGNENT TC-TABLE DW 678 ;0=110b/s ,定时常数表 DW 497 ;1= 150b/s DW 249 ;2= 300b/s DW 124 ;3= 600b/s DW 62 ;4= 1200b/s DW 31 ;5= 2400b/s DW 16 ;6= 4800b/s DW 8 ;7= 9600b/s TEMP DB(?) MES DB NOW BEGIN TO GENERATE B
18、AUD-RATES CLK!,0DH,0AH DB HTP ESC TO QUIT !,0DH,OAH,$ INPUR-MES DB 0:110 1:150 2:300 3:600 4:1200,0DH,0AH ,$ DB 5:2400 6:4800 7:9600 ,0DH,0AH, $ ERROR-MES DB INPUT ERROR! TRY AGAIN PLEASE!,0DH,0AH, $ DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAOK:MOV AX,CODE MOV CS,AX MOV DX,307H ;8253命令口 MOV AL,0B6
19、H ;8253方式命令 OUT DX,AL MOV AL,0CH ;使PC6=0,关8253 OUT DX,AL MOV AX,DATA MOV DS,AX LEA DX,INPUT-MES ;提示选择波特率 MOV AH,09H INT 21HINPUT:MOV AH,08H INT 21H CMP AL,0 ;选择波特率是否正确? JB ERROR ;不正确,则转出错处理 CMP AL,7 JA ERROR SUB AL,30H ;正确 MOV TEMP,AL ;则保存波特率代号 CALL LOAD ;装入计数初值 JMP BEGIN ;启动8253波特率时钟发生器ERROR:MOV AH
20、,9H ;出错处理 LEA DX,ERROR-MES INT 21H JMP INPUT ;重新选择波特率BEGIN:LEA DX,MES ;显示提示信息 MOV AH,09H INT 21HSTART:MOV DX,303H ;8255命令口 MOV AL,0DH ;使PC6=1,启动8253, 产生波特率时钟 OUT DX,AL NOPLOP: MOV AH,0BH ;检测有键按下? INT 21H CMP AL,00 JE LOP ;无,等待 MOV AH,08H;有,检测是否是Esc键 INT 21H CMP AL,1BH JE QUIT;是,则退出 JMP LOP ;不是,循环查Es
21、c键QUIT:MOV DX,303H MOV AL,0CH;关闭8253 OUT DX,AL MOV AX,4C00H;退出,返回DOS INT 21H LOAD PROC NEAR PUSH AX PUSH DX PUSH SI MOV DL,TEMP SHL DL,1;波形代号乘2,存放在DX中 AND DX,0FH ;只取DX的低4位 MOV SI,OFFSET TC-TABLE ;取定时常数表的首址SI ADD SI,DX ;SI为定时常数表指针(首址+偏移量) MOV DX,306H ;计数器2的数据口 MOV AL,SI ;装入数初值低字节 OUT DX,AL MOV AL,SI+
22、1 ;装入计数初值高字节 OUT DX,AL POP SI POP DX RETLOAD ENDPCODE ENDS END OK 项目:用项目:用8253实现生产流水线上的工件计数实现生产流水线上的工件计数 1项目要求与目的(1)项目要求:用8253实现生产流水线上的工件计数,每通过100个工件,扬声器便发出频率为1000Hz的音响信号,持续时间为5秒。(2)项目目的: 学习8253芯片引脚及编程方法。 学习8086与8253的连接方法。了解8253在工业上的应用。2项目电路连接与说明 (1)项目电路连接:8253的片选孔用导线接至译码处 200H207H插孔, 8255的片选孔用导线接至译
23、码处 208H20FH插孔, 8259的片选孔用导线接至译码处 210H217H插孔;CLK0接至工件脉冲(正脉)提供插孔(也可以用直流电机的转速产生脉冲),GATE0接至+5V电源插孔上,OUT0接至中断芯片8259的IR0上;CLK1接至2MHz频率插孔,GATE1接至8255的PA0上,OUT1接驱动电路到扬声器,2)项目说明: 当工件从光源与光敏电阻之间通过时,光源被工件遮挡,光敏电阻阻值增大,在晶体管的基极产生一个正脉冲,随之在晶体管的发射极将输出一个正脉冲给8253计数通道0的计数输入端CLK0;8253计数通道0工作于方式0,其门控制输入端GATE0固定接+5V。当100个工件通
24、过后,计数通道0减1计数至0,在其输出端OUT0-产生一个正跳变信号,用此信号作为中断请求信号;在中断服务程序中,由8255A的PA0-启动8253计数通道1工作,由OUT1端输出1000Hz的方波信号给扬声器驱动电路,持续5秒钟后停止输出。 计数通道1工作于方式3(方波发生器),其门控信号GATE1由8255A的PA0控制,输出的方波信号经过驱动电路送给扬声器。计数通道1的时钟输入端CLK1接2MHz的外部时钟电路。计数通道1的计数初值应为: n1=TOUT/TCLK=fCLK1/fOUT1=2106 Hz/1000Hz=2000。3项目电路原理框图 用8253实现生产流水线上的工件计数,电
25、路原理框图如图6-19所示。电路由8086CPU芯片、8253芯片、8255芯片、8259芯片、工件检测电路和蜂鸣器电路等组成。 图6-19用8253实现生产流水线上的工件计数电路原理框图4项目程序设计 (1)程序流程图 用8253实现生产流水线上的工件计数程序流程图如图所示。(a)主程序流程图 (b)中断服务程序流程图 图 用8253实现生产流水线上的工件计数程序流程图 (2)程序清单 用8253实现生产流水线上的工件计数程序清单如下所示。DATA SEGMENTDATA ENDS STACK SEGMENT STACKSTA DW 50 DUP(?)STACK ENDSCODE SEGME
26、NT ASSUME CS:CODE,DS: DATA ,SS:STACK START :MOV AL,13H;00010011B ICW1:边沿触发,单片,要ICW4 MOV DX,210H; 8259偶地址 OUT DX,AL MOV AL,8; ICW2中断类型号为8 MOV DX,211H ; 8259奇地址,写ICW2 OUT DX,AL MOV AL,01H; ICW4不用缓冲方式,正常中断 结束,非特殊的全嵌套方式 OUT DX,AL MOV AX,0 ; 清零 MOV DS,AX ;数据段清零 LEA AX,INT0 ;写8259中断程序的入口地址 MOV DS:4*8,AX M
27、OV AX,CS MOV DS:4*8+2,AX IN AL,DX ;读中断屏蔽寄存器IMR, AND AL,0FEH ;屏蔽IR1IR7,允许IR0中的中 断请求 OUT DX,AL MOV DX,20BH ; 8255控制口(8255初始化) MOV AL,80H ;PA口方式0输出 OUT DX,AL ;写控制字 MOV DX,203H ; 8253控制口(8253初始化) MOV AL,00010001B;8253计数通道0初始化:方式0,只写低8位,BCD计数OUT DX,ALMOV DX,200H MOV AL,99H ;写计数通道0的计数初值OUT DX,AL STI ;CPU开
28、中断HERE:JMP HERE ;等待中断 INT0 PROC NEAR ;8259中断程序 MOV DX,208H MOV AL,01H ;8255A的PA0输出高电平,启动 8253计数通道1工作OUT DX,ALMOV DX,203H ; 8253 地址MOV AL,01110111B ;8253计数通道1初始化:先写低8位,后写高8位OUT DX,AL ;方式3,BCD计数MOV DX,201H ; 8253计数通道1地址MOV AL,00HOUT DX,AL ;写计数初值低8位MOV AL,20HOUT DX,AL ;写计数初值高8位CALL DELAY5S ;延迟5秒MOV DX,208HMOV AL,00H ;8255A的PA0输出低电平,停止 8253计数通道1工作OUT DX,ALMOV DX,200HMOV AL,99H ;写8253计数0初值(为下次工作做 准备) OUT DX,AL MOV DX,210H MOV AL,20H; OCW2发结束命令EOI=1 OUT DX,ALIRET INT0 ENDPDELAY5S PROC NEAR; 延迟5秒子程序 MOV BH,20DEL100MS:MOV BL,100DEL1MS:MOV CX,374DEL1: PUSHF POPF LOOP DEL1 DEC BL JNZ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿教师素质测评题库及答案
- 2025年科学实验员招聘面试题库及参考答案
- 2025年全国销售经理招聘面试参考题库及答案
- 村级会计考试题库及答案
- 2025年影院营销推广经理招聘面试题库及参考答案
- 2025年私募股权投资专员招聘面试参考题库及答案
- 2025年无线通信工程师人员招聘面试题库及参考答案
- 2025年信贷风险分析师招聘面试参考题库及答案
- 2025年作家与编辑人员招聘面试参考题库及答案
- 2025年供应链管理招聘面试题库及参考答案
- 烟花爆竹零售申请书
- 数控刀具基础知识讲解
- 拓展总监年度工作计划
- 《建筑结构体系简介》课件
- 2018年-2022年江苏高中英语高考真题五年合集
- 中央空调系统智能监控方案
- 病原真菌课件教学课件
- 《论语》全文带拼音有注释(完整版)
- 2024年全国职业院校技能大赛中职(企业经营沙盘模拟赛项)考试题库-下(多选、判断题)
- 2024-2030年肠粉行业市场发展分析及发展前景与投资机会研究报告
- 智慧物流方案设计与实施
评论
0/150
提交评论