微机原理与接口技术课件 第6章_第1页
微机原理与接口技术课件 第6章_第2页
微机原理与接口技术课件 第6章_第3页
微机原理与接口技术课件 第6章_第4页
微机原理与接口技术课件 第6章_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,第6章 定时与计数技术 6.1 概 述,6.1.1 定时与计数,1.定时,定义:提供的时间基准。,分类:内部定时、外部定时。,2.计数,定时与计数本质上是一致的。,计数的信号随机,定时的信号具有周期性。,3.应用,2,6.1.2 定时方法,1.软件定时,通过软件指令周期方法定时,如执行循环程序。,增加CPU负担,通用性差,一般用于短延时。,2.不可编程硬件定时,采用中小规模IC构成。,不增加CPU负担,成本低,定时值不可改变。,3.可编程硬件定时,采用可编程计数器完成,软件可改变计数值。,可编程定时/计数器:实质上定时和计数本质上都是脉冲计数器,定时计的是内部基准时钟源产生的脉冲,计数是计

2、外部脉冲。,3,6.1.3 定时/计数器基本原理,1.内部逻辑,CPU接口: 译码、操作,外设接口: 时钟信号、 控制、输出,内部逻辑: REG,2.工作过程,设初值、控制、输出,4,6.2 Intel 8254,8253825482801BA。,6.2.1 8254-2基本功能,3个独立的16位定时/计数器(T/C);,每个T/C功能: 可按二、十进制(BCD)计数; 有6种不同的工作方式; 最高频率10MHz;(82801BA为14.31818MHz) 有读回状态功能。(8253没有),5,6.2.2 8254-2结构与引脚,1.内部逻辑,总线缓冲器8位R/W:写工作方式、计数初值、当前计

3、数值,6,2.计数器内部逻辑,CR:16位 写入两次、清零,CE:16位 写入、计数、输出,OL:16位 先锁存再读出,状态REG:8位 先锁存再读出,注意:GATE信号的作用与应用,重写CR的效果。,计数初值:N=fCLKi/fOUTi,在不同工作方式及定时/计数时的应用不同。,7,3.外部引脚,8,4.CPU操作功能及命令,I/O端口地址:8254提供四个端口(使用A1A0);,命令:初始化设置工作方式、设置计数器初值; 操 作重写计数器初值、取状态命令。,状态:当前计数值、工作方式及当前状态。,I/O端口操作冲突时解决方法:,写工作方式与写读取状态命令采用特征位方法;,读取当前计数值或读

4、取状态采取时序方法。,8254命令关系表:,9,A1 A0,10,6.2.3 8254-2命令及编程,1.工作方式控制字(A1A0=11),特征位:D7D6=0010、D5D4=0111; D7D6选择计数器:00T/C0;01T/C1;10T/C2 D5D4选择读/写方式:01只写低字节;10只写高字节;11先写低字节再写高字节(16位) D3D2D1选择工作方式:000101六种工作方式,X10方式2,X11方式3,例:MOV AL,01110100B ;T/C1,先低后高字节 OUT 43H,AL ;方式2,二进制方式,11,2.计数初值,(1)不同通道的计数初值写到不同地址中; A1A

5、0=0010 (2)每次写入一个字节; (3)根据控制字定义,决定高、低字节写入方法。 (4)初始值的范围是:,二进制为65536(0000H)1(0001H)。 十进制为10000(0000H)1(00001H)。,12,3.T/C初始化,(1)写工作方式控制字 (2)设置计数初值,例: MOV AL, 01110101B; T/C1,先低后高字节,方式2,BCD OUT 43H, AL MOV AX, 2000H ; 计数初值为2000 OUT 41H, AL ; MOV AL, AH OUT 41H,AL ; MOV AL,00010110B; T/C0,只低字节,方式3,二进制 OUT

6、 43H,AL OUT 40H,50H ; 计数初值为50H(80),注意:(1)每个使用的T/C均要初始化; (2)计数初值的设置与T/C的CLK密切相关; (3)计数初值的设置方法由控制字决定。,13,4.T/C数据读取,(1)读取当前计数值方法1 工作方式控制字(A1A0=11)D7D60001,D5D4=00,(a)锁存当前计数值或禁止计数 (b)读取当前计数值,例:MOV AL,01000101B; T/C1,锁存 ;先低后高字节,方式2,BCD OUT 43H,AL IN AL,41H MOV AH,AL IN AL,41H XCHG AH,AL ;AX为T/C1当前计数值,14,

7、(2)读取当前计数值方法2使用读回命令,特征位:D7D6=11。(A1A0=11),功能选择:锁存状态D5D4=10; 锁存计数值D5D4=01; 锁存状态与计数值 D5D4=00。(先读状态再读计数值),计数器选择:D1=1T/C0,D2=1T/C1,D3=1T/C2,特点:控制字同时只能锁存单个通道, 读回命令可同时锁存多个通道。,15,例: MOV AL,11010100B ; T/C1,锁存计数值 OUT 43H,AL IN AL,41H; MOV AH,AL IN AL,41H XCHG AH,AL ;AX为当前计数值 MOV AL,11011010B ; T/C0、T/C2锁存计数

8、值 OUT 43H,AL IN AL,40H; MOV AH,AL IN AL,40H XCHG AH,AL ;AX为T/C0当前计数值 IN AL,42H; MOV AH,AL IN AL,42H XCHG AH,AL ;AX为T/C2当前计数值,16,(3)读取计数器当前状态使用读回命令,例:MOV AL,11100100B ; T/C1,锁存状态值 OUT 43H,AL IN AL,41H ;若AL=00110101,表示T/C1 ; 为方式2,BCD码,先低后高 ;读/写,当前OUT为低电平 MOV AL,11100010B ;T/C0,锁存状态值 OUT 43H,AL IN AL,4

9、0H ;若AL=00010110,表示T/C0 ;为方式3,二进制码,只有低 ;字节,当前OUT为低电平,读出的状态字格式:,17,6.2.4 8254-2工作方式,1.方式0计数结束时中断,特点:一次计数; GATE高允许、下降暂停、低禁止、上升继续计数; WR#写重写后下一脉冲下降沿重新计数; OUT在控制字或计数初值写完时变低、计数值为0时变高(N+1个低)。,18,2.方式1硬件可重触发单稳,特点:一次计数; GATE上升重新、高与下降和低不影响计数; WR#写重写在下次GATE从0到1的跳变时有效; OUT在写入控制字后变高,开始计数时变低、计数值为0时变高(N个低)。,19,3.方

10、式2频率发生器,特点:多次计数; GATE上升重新、高允许、下降停止、低禁止计数; WR#写重写在下次计数时有效; OUT在计数值为1时输出宽度为1个CLK的负脉冲(周期为N,频率为1/N)。,20,4.方式3方波发生器,特点:多次计数; GATE上升重新、高允许、下降停止、低禁止计数; WR#写重写在下次计数时有效; OUT在写入控制字后变高,计数开始后,采用每脉冲计数减2: 当计数初值为偶数时,计数到0时反向。脉冲宽度Tn/2 当计数初值为奇数时,OUT变高的第一CLK减1后装入 CE,其余每个脉冲计数减2。OUT正脉冲时,计数到0的下一个CLK时OUT反向OUT正脉冲宽度为T(n+1)/

11、2 ;OUT负脉冲时在计数到0时反向。负脉冲宽度为T(n-1)/2,21,特点:一次计数; GATE上升重新、高允许、下降停止、低禁止计数; WR#写重写会立即重新计数(软件触发); OUT在写入控制字及计数当中为高电平,计数值为0时输出1个CLK的负脉冲。,5.方式4软件触发选通,22,6.方式5硬件触发选通,特点:一次计数; GATE上升重新、高与下降和低不影响计数; WR#写重写在下次GATE从0到1的跳变时有效; OUT在计数值为0时输出1个CLK的负脉冲。,23,24,6.2.5 8254-2应用举例,1.分频器设计,用8254(地址40H43H)将5MHz的脉冲变为1Hz的脉冲。,

12、初值=fCLK/fOUT=510665536,怎么办?,MOV AL,00110111B;T/C0 OUT 43H,AL MOV AX, 5000H OUT 40H,AL MOV AL, AH OUT 40H,AL MOV AL,01110101B;T/C1 MOV AX, 1000H OUT 41H,AL MOV AL, AH OUT 41H,AL,需要2个T/C级联,T/C0采用方式3产生连续分频方波,做T/C1的CLK,T/C1 采用方式2产生1Hz脉冲。两个T/C的GATE统一控制。,25,2.占空比4:5的方波发生器,8254的CLK0的时钟频率是8KHz,问 1)T/C0最大定时时

13、间是多少? 2)要求8254端口地址为90H、92H、94H和96H,请使用74LS138译码器加简单门电路完成地址连线。 3)现在要求使用该8254产生周期为9秒,占空比为4:9的方波,请在上面的电路图中完成电路,并编写初始化程序。,答: 1)TCLK0=1/fCLK0=1/8000=0.125ms 最大定时时间655360.25ms=8.192秒,26,2),CLK1,GATE1,3),27,MOV AL,00110111B;T/C0 OUT 96H,AL MOV AX, 8000H OUT 90H,AL MOV AL, AH OUT 90H,AL MOV AL,01110111B;T/C

14、1 MOV AX, 9H OUT 92H,AL MOV AL, AH OUT 92H,AL,28,3.包装流水线控制,某产品的包装流水线中,一个包装箱能装24罐饮料。装箱时希望流水线上每通过24罐饮料,流水线要停4秒以等待包装箱封口,然后继续通过下一箱的24罐。流水线就是这样周而复始的运作。试利用一片8254来完成流水线控制中的定时和计数功能。假设8254的端口地址为8CH8FH,采用的时钟频率是2KHz。,29,思路:用8254的计数通道1作为计数器,用于24个罐的计数;计数通道2作为定时器,定时为4S。当计数通道1的OUT脚出现0到1的跳变的时候,将启动计数通道2开始定时,而计数通道2定时

15、阶段将控制计数通道1停止计数,只有其定时结束并停止定时阶段才可再次启动计数通道1开始计数。,计数通道1工作在方式2,计数初值24 计数通道2工作在方式1,计数初值8000,30,;初始化程序 ;计数通道1初始化 MOV AL, 01010100B OUT 8FH, AL MOV AL, 24 OUT 8DH, AL ;初始化计数通道2 MOV AL, 10110010B OUT 8F, AL MOV AX, 8000 OUT 8EH, AL MOV AL, AH OUT 8EH, AL,31,6.3 8254在微机中应用,PC系列机定时系统结构框图,来自主板上74LS138的Y2,地址范围是4

16、0H5FH,加上A1A0两根地址线,组成8254的端口地址是40H、41H、42H、43H。,返回1,返回2,32,6.3.1 计数器0系统定时器,工作方式:3方式,计数初值:65536。,1.系统定时器,连接到8259A的IRQ0(中断类型号为8)上。 fOUT0=1.1931816MHz/65536=18.2Hz, 即:每秒产生18.2次中断用于日时钟计时。,应用:系统BIOS的INT 8H用作日时钟计时; INT 8H调用INT 1CH作为用户定时中断接口。,2.软盘驱动器马达自动延迟控制,33,6.3.2 计数器1动态存储器定时刷新控制,工作方式:2方式,计数初值:18。,连接到823

17、7的DREQ0上,定时产生负脉冲。 脉冲宽度=1/ 1.1931816MHz=838ns, 脉冲周期=18/1.1931816MHz=15.08s, 即:每隔15.08s产生一个脉冲用于刷新。,34,6.3.3 计数器2扬声器音频发生器,工作方式:3方式,计数初值:由调用程序控制。,与8255的PB口D1信号“与”后连接到扬声器上,控制扬声器发声频率及时长。,8255控制发声:8254的OUT2=1,CPU控制8255的PB口的D1位的电平实现; 8254控制发声:8255的PB口的D1位为高电平,控制8254的T/C2的OUT2实现。 通过改变OUT2的方波信号频率,就可以改变扬声器发声的音

18、调。 CR预置值CLK2脉冲频率/发声的频率,转图,35,;功能:按照指定的时间间隔发896Hz声音 ;调用:CX=指定时间 ;返回:无 BEEP PROC FAR IN AL,61H MOV AH,AL PUSH AX MOV AL,10110110B OUT 43H,AL MOV AX,0533H;=1.1931816MHz/896Hz OUT 42H,AL MOV AL,AH OUT 42H,AL POP AX,36,OR AL,03H ;置61H端口D0、D1均为1, ;打开扬声器 OUT 61H,AL NOP L1:LOOP L1 ;延迟 AND AL,FD ;置61H端口D1为0,

19、 ;封锁OUT2输出 OUT 61H,AL MOV AL,AH OUT 61H,AL RET BEEP ENDP,转图,37,6.4 实时钟电路及其应用,6.4.1 MC146818特性及工作原理,MC146818外部引脚图,38,MC146818在系统中连接框图,39,实时钟工作原理示意图,40,COMS RAM实时钟信息存放位置表,可以用INT 1A功能读取或设置这些值。,41,6.4.2 实时钟状态寄存器,6.4.3 RT/CMOS RAM操作,815EP芯片组82801BA的RTC电路包含128字节标准CMOS RAM 区和128字节扩展CMOS RAM区。,访问RT/CMOS RAM

20、的端口地址范围从70H77H。其中,70H和71H用来访问标准CMOS RAM 区,72H, 73H用来访问扩展CMOS RAM 区。,状态寄存器A 状态寄存器B 状态寄存器C 状态寄存器D,42,MOV AL,6H ;6H是存放星期几的单元偏移地址 OUT 70H,AL ;送地址端口 JMP $+2 ;芯片I/O延时要求 IN AL,71H ;读数据端口 MOV AH, AL ;AH中存放的是当前“星期几”的信息 ;0表示星期日,43,6.4.4 CMOS 密码的破解,基本原理是破坏CMOS中的设置,使得开机后必须重新设置CMOS,从而破解密码。,mov AL, 2EH out 70H, A

21、L mov AL, 00H out 71H, AL mov AL, 2FH out 70H, AL mov AL, 00H out 71H, AL,CMOS中偏移为2EH和2FH的位置放的是标准校验和,44,6.5 Win32编程中的时钟(自学),6.5.1 使用基于WM_TIMER消息的定时器,1.使用Win32 SDK函数 必须使用include “Windows.h” 必须使用User32.lib,45,46,UINT_PTR SetTimer( HWND hWnd, / handle to window UINT_PTR nIDEvent, / timer identifier UIN

22、T uElapse, / time-out value TIMERPROC lpTimerFunc / timer procedure );,BOOL KillTimer( HWND hWnd, / handle to window UINT_PTR uIDEvent / timer identifier );,47,LONG APIENTRY MainWndProc( HWND hwnd, / handle to main window UINT message, / type of message WPARAM wParam, / additional information LPARAM

23、 lParam) / additional information switch (message) case WM_TIMER: / Process the timer event. case WM_DESTROY: / Destroy the timer. KillTimer(hwnd, IDT_MOUSETRAP); PostQuitMessage(0); break; ,48,2.使用MFC类CWnd的成员函数,UINT SetTimer( UINT nIDEvent, / Specifies a nonzero timer / identifier. UINT nElapse, /

24、Specifies the time-out value, / in milliseconds. void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) / Specifies the address of the / application-supplied TimerProc callback function that processes / the WM_TIMER messages. If this parameter is NULL, the / WM_TIMER messages are placed in the a

25、pplications message / queue and handled by the CWnd object. );,BOOL KillTimer( int nIDEvent );,49,void CMainFrame:OnStartTimer() m_nTimer = SetTimer(1, 2000, 0); void CMainFrame:OnStopTimer() KillTimer(m_nTimer); void CMainFrame:OnTimer(UINT nIDEvent) MessageBeep(0 xFFFFFFFF); / Beep / Call base cla

26、ss handler. CMDIFrameWnd:OnTimer(nIDEvent); ,50,缺点: WM_TIMER消息的优先级比较低,定时时间不能精确保证。 定时精度低,最小精度为54.915ms, 约18.2次/秒。,51,6.5.2 使用多媒体定时器,1.使用Win32 SDK函数 必须使用#include Mmsystem.h 必须使用Winmm.lib,52,53,1. 确定最大和最小周期,MMRESULT timeGetDevCaps( LPTIMECAPS ptc, / Pointer to a TIMECAPS structure. UINT cbtc /Size, in

27、bytes, of the TIMECAPS structure );,typedef struct UINT wPeriodMin; /Minimum supported resolution UINT wPeriodMax; /Maximum supported resolution TIMECAPS;,54,2. 建立最小时间精度,MMRESULT timeBeginPeriod( UINT uPeriod /Minimum timer resolution, in milliseconds, for the application or device driver. );,MMRESU

28、LT timeEndPeriod( UINT uPeriod ); 和上面的timeBeginPeriod是一对,其中uPeriod 要完全一样, timeBeginPeriod是启动定时器的时候用, timeEndPeriod是结束定时器时用。,55,3. 启动和取消定时器,MMRESULT timeSetEvent( UINT uDelay, /Event delay, in milliseconds. UINT uResolution, / Resolution of the timer event, in milliseconds. LPTIMECALLBACK lpTimeProc, /Pointer to a callback function that is called once upon expiration of a single event or periodically upon expiration of periodic events. DWORD dwUser, / User-supplied callback data UINT fuEvent / Timer event type. TIME_O

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论