符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 名称及定义 内部定时器1溢出标志。当定时器/计数器溢出时,由硬件置位,申请中断,进入中断服务后被硬件自动清除。 内部定时器1运行控制位。靠软件置位或清除,置位时,定时器/计数器接通工作,清除时停止工作。 内部定时器0溢出标志。其作用类似于TF1 内部定时期0运行控制位。其作用类似于TR1 外部中断1请求标志。检测到外部中断引脚上出现的外部中断信号有效时,由硬件置位,请求中断。进入中断服务后被硬件自动清除。 外部中断1类型控制位。靠软件来设置或清除,以控制外部中断的触发类型。高电平时,下降沿触发;低电平时,低电平触发。 外部中断0请求标志。其作用类似于IE1。 外部中断0类型控制位。起作用类似于IT1。 3、定时器0和1的操作 定时器0和 1定时和计数功能由特殊功能寄存器TMOD的控制位C/T进行选择。这两个定时/计数器4 种操作模式,通过TMOD的M1和M0进行选择。两个定时/计数器的模式0,1和2都相同,模式3不同。如下所述:
模式 0
将定时器设置成模式0时类似8048定时器,即 8位计数器带32分频的预分频器。
此模式下,定时器寄存器配置为13位寄存器。当计数从全为 1 翻转为全为 0 时,定时器中断标志位 TFn 置位。当 TRn=1 同时 GATE=0 或 INTn=1 时定时器计数。置位GATE时允许由外部输入INTn控制定时器,这样可实现脉宽测量。 该13位寄存器包含THn全部8个位及TLn的低5位。TLn的高3位不定,可将其忽略,置位运行标志 TRn 不能清零此寄存器。
模式0的操作对于定时器 0 及定时器 1 都是相同的,两个不同的GATE位 TMOD.7和 TMOD.3分别分配给定时器 0 及定时器 1。
模式 1
模式 1 除了使用了THn及TLn全部 16 位外,其它与模式0相同。 模式 2
此模式下定时器寄存器作为可自动重装的8位计数器 TLn。TLn 的溢出不仅置位TFn,而且将THn内容重新装入 TLn,THn 内容由软件预置重装时,THn 内容不变。模式2的操作对于定时器0及定时器1是相同的。
模式 3
在模式3中,定时器1停止计数,效果与将TR1设置为0相同。
此模式下定时器0的TL0及TH0作为两个独立的8位计数器。TL0占用定时器0的控制位C/T,GATE,TR0,INT0及TF。TH0限定为定时器功能(计数器周期),占用定时器1的TR1及TF1。此时TH0控制定时器1中断。
模式 3 可用于需要一个额外的8位定时器的场合。定时器0工作于模式3时,89C51 看似有 3 个定时器/计数器, 定时器1可通过开关进入/退出模式3,它仍可用作串行端口的波特率发生器,或者应用于任何不要求中断的场合。
4、中断
89C51共有5个中断源。外部中断INT0和INT1可根据寄存器TCON中的IT0 和IT1位状态分别设置为电平或者边沿触发。实际产生的中断标志是TCON中的位IE0和IE1。当产生外部中断时,如果是边沿触发,进入中断服务程序后由硬件清除中断标志位。如果中断是电平触发,由外部请求源而不是由片内硬件控制请求标志。
定时器0和定时器1中断由TF0和TF1(分别由各自的定时/计数寄存器控制, 定时器0工作在模式3时除外)产生。当产生定时器中断时,进入中断服务程序后由片内硬件清除标志位。
所以这些产生中断的位都可通过软件置位或清零。与通过硬件置位或清零的效果相同。简而言之,中断可由软件产生,推迟或取消。
当中断服务程序执行到RETI指令时,通知处理器中断程序已执行完毕,然后从堆栈弹出两个字节重新装入PC,继续执行被中断的程序。
注意:RET指令也可以返回被中断的程序,但这样会使中断系统认为中断仍在执行,那么后面的中断就无法响应.
5、中断优先级结构
每个中断源都可通过编程中断优先级寄存器IP单独设置优先级。一个中断服务程序可响应更高级的中断,但不能响应同优先级或低级中断。最高级中断服务程序不响应其它任何中断。如果两个不同中断优先级的中断源同时申请中断时,响应较高优先级的中断申请。下面就简单介绍一下IP寄存器。
IP寄存器定义如下图所示:
表7. IP寄存器定义
* * * PS PT1 PX1 PT0 PX0 各位的作用如下表所示:
表8. IP寄存器各位作用
符号 PS PT1 PX1 PT0 PX0 名称及定义 串行口中断优先级设定位。高电平时,串行口为高优先级,相反为低优先级。 内部定时器1中断优先级设定位。高电平时,T1为高优先级,相反为低优先级。 外部中断1优先级设定位。高电平时,外部中断1为高优先级,相反为低优先级。 内部定时器0中断优先级设定位。高电平时,T0为高优先级,相反为低优先级。 外部中断0优先级设定位。高电平时,外部中断0为高优先级,相反为低优先级。 IP寄存器中包含了一些无效位,由于这些位可能用于其它89C51系列产品中,用户软件不应将这些位写入1。
89C51共有5个中断源,为了使每个中断源都能被独立的允许或禁止,以使用户灵活使用,它在每个中断信号的通道中设置了一个中断屏蔽触发器。只有该触发器无效,它所对应的中断请求信号才能进入CPU,即此类型中断开放。同时,CPU内还设置了一个中断允许触发器,它控制CPU能否相应中断。
中断屏蔽触发器和中断允许触发器由中断允许寄存器IE控制,其各位定义如下表所示:
表9. IE寄存器各位定义
EA * * ES ET1 EX1 ET0 EX0 各位的作如下表所示:
表10. IE寄存器各位作用
符号 EA ES ET1 EX1 名称及定义 中断总允许位。低电平时,禁止一切中断;高电平时,每个中断源是否允许由各自的允许位确定。 串行口中断允许位。低电平禁止,高电平允许。 内部定时器1中断允许位。低电平禁止,高电平允许。 外部中断1允许位。低电平禁止,高电平允许。 ET0 EX0 内部定时器0中断允许位。低电平禁止,高电平允许。 外部中断0允许位。低电平禁止,高电平允许。 另外,每个中断向量都有其相应的中断入口地址,如下表所示:
表11. 中断入口地址
中断源 外部中断0 定时器0 外部中断1 定时器1 串行口中断 6、堆栈指针SP
向量地址 0003H 000BH 0013H 001BH 002BH 堆栈操作是在内存RAM区专门开辟出来的按照‘先进后出’原则进行数据存取的一种工作方式,主要用于子程序调用及返回和中断处理断点的保护和返回,它在完成子程序嵌套和多重中断处理中是必不可少的。为保证逐级正确返回,进入栈区的‘断点’数据应遵循‘先进后出’的原则。SP用来指示堆栈所处的位置,在进入操作之前,先用之令给SP赋值,以规定栈区在RAM区的起始地址。当数据进入栈区后,SP的值也自动随之变化。89C51系统复位后,SP初始化为07H。
2.9 CD4094芯片简介
CD4094是带输出锁存和三态控制的串入/并出高速转换器,具有使用简单、功耗低、驱动能力强和控制灵活等优点。
CD4094的引脚定义如图2-15。其中{1}脚为锁存端,{2}脚为串行数据输入端,{3}脚为串行时钟端。{1}脚为高电平时,8位并行输出口Q1~Q8在时钟的上升沿随串行输入而变化;{1}脚为低电平时,输出锁定。利用锁存端可方便地进行片选和级联输出控制。{15}脚为并行输出状态控制端,{15}脚为低电平时,并行输出端处在高阻状态,在用CD4094作显示输出时,可使显示数码闪烁。{9}脚QS、{10}脚Q′S是串行数据输出端,用于级联。QS端在第9个串行时钟的上升沿开始输出,Q′S端在第9个串行时钟的下降沿开始输出。
当CD4094电源为5V时,输出电流大于3.2mA,灌电流为1mA。串行时钟频率可达2.5MHz。
1、CD4094 是8 位移位存贮总线寄存器其功能表如下
表2-2 CD4094功能表
CLK OE STR D 并行输出 串行输出 ↑ ↓ ↑ ↑ ↑ ↓ L L H H H H * * L H H H * * * L H H Q1 三态 三态 不变 L H 不变 Qn 三态 三态 不变 Qn-1 Qn-1 不变 QS’ Q7 不变 Q7 Q7 Q7 不变 QS 不变 Q7 不变 不变 不变 Q7 * 在时钟脉冲正沿移位寄存器第7 级的内容传送到Q8 和QS
2、CD4094 管脚图
图2-15 CD4094 管脚图
第三章 多用方波信号发生器设计
信号发生器是科研及工程实践中最重要的仪器之一,以往多用硬件组成,系统结构比较复杂,可维护性和可操作性不佳.随着计算机技术的发展,信号发生器的设计制作越来越多的是用计算机技术,种类繁多,价格,性能差异很大.
3.1 多种方波信号发生器的比较
3.1.1 一般的方波发生器
一般的方波发生器只有频率和幅度是可调的,而占空比则不可调。其频率和幅度的改变都是通过旋转螺钮来实现的。用螺钮来实现频率可调的弊端就在于,这样做不仅保证不了方波频率的精确性,而且人工旋转螺钮到一定频率本身就是比较困难的事。所以,随着实验本身的重要性和其精度要求的不断提高,一般的方波发生器注定将被淘汰,而对其改进的方波发生器也将应运而生。
3.1.2 多功能方波发生器
多功能方波发生器就是在对一般方波发生器进行改进的基础上设计的。在此