定时器及中断(1秒基时

定时器及中断(1秒基时
定时器及中断(1秒基时

实验十二定时器及中断(1秒基时)

一、实验目的

1.通过实验了解定时器的工作原理、编程方法。

2.通过实验了解定时器工作方式、定时与计数、单启动与双重启动的选择。

3.掌握通过一个定时器加入软件计数产生1S基时的方法。

4.通过实验了解多个中断源申请中断的处理方法。

二、实验内容及实验电路及步骤

1.产生1S延时的设计:(11.0592MHZ)

方案1:定时器0定时加软件计数。

1)采用定时器0,方式1,定时50MS中断。当1S 时间到后,使P1.0 闪亮。

一个机器周期为=(1/11.0592Mhz)*12us。

定时器0的定时初值=(65536-50000/(1/11.0592Mhz*12us))=(65536-46080)=19456=4C00H

软件计数:计数器采用R2,计数20 次。

实验电路如图4-4所示:用导线将A2区的P10与D1区的LED1相连。

图4-4 定时器0实验接线图

参考程序:

ORG 8000H

AJMP MAIN

ORG 800BH

AJMP T0S

MAIN: MOV SP,#60H

MOV TMOD,#01H

MOV TH0,#4CH

MOV TL0,#00H

MOV R2,#00H

MOV IE,#10000010B

SETB TR0

CLR P1.4

SJMP $

T0S: MOV TH0,#4CH

MOV TL0,#00H

INC R2

CJNE R2,#20,NEXT

CPL P1.4

MOV R2,#00H

NEXT:RETI

END

注:机器LED1 LED2 LED3 LED4损坏,因此用排线讲A2区的J61接口与D1区的J52接口相连,程序中P1.0改为P1.4(使LED5亮)

记录结果如下:(红色表示改变的数值)

实验结果:LED灯间隔1秒钟灯闪亮一次

结果参照视频01

2)采用定时器0,方式1,定时50MS,查询方式,当1S 时间到后,使P1.5闪亮。

用导线将A2区的P10与D1区的LED1相连。

参考程序:

ORG 8000H

AJMP MAIN

MAIN: MOV TMOD,#01H ;T/C0定时,方式1。

MOV TH0,#4CH ;T0 定时50MS。

MOV TL0,#00H

MOV R2,#00H ;软件计数器初值

SETB TR0

LOOP:JBC TF0,T0S

SJMP LOOP

T0S: MOV TH0,#4CH

MOV TL0,#00H

INC R2

CJNE R2,#20,NEXT ;1S使P1.5取反一次。

CPL P1.5

MOV R2,#00H

NEXT:SJMP LOOP

END

注:机器LED1 LED2 LED3 LED4损坏,因此用排线讲A2区的J61接口与D1区的J52接口相

连,程序中P1.0改为P1.5(使LED6亮)

记录结果如下:(红色表示改变的数值)

实验结果:LED灯间隔1秒钟灯闪亮一次

结果参照视频02

3)采用GATE=1时,利用信号/INT0与TR0双重启动T/C0,产生1S延时。

用导线将A2区的P10与D1区的LED1相连,用导线将A2区的INT0 与D1区的SW1相连,运行相面程序前先将SW1置在0位,程序运行后将SW1置在1位,观察LED1的闪亮情况,然后将SW1再置在0位,LED1将停止闪亮,再SW1置在1位,重复前述步骤,观察GATA与/INT0引脚信号的作用。

注意:调试前,SW1 一定处于0的位置。

参考程序:

ORG 8000H

AJMP MAIN

ORG 800BH

AJMP T0S

MAIN: MOV SP,#60H

MOV TMOD,#09H ;T/C0定时,方式1,GATE=1。

MOV TH0,#4CH ;T0 定时50MS,中断一次。

MOV TL0,#00H

MOV R2,#00H ;软件计数器初值

MOV IE,#10000010B

SETB TR0

CLR P1.0

SJMP $

T0S: MOV TH0,#4CH

MOV TL0,#00H

INC R2

CJNE R2,#20,NEXT ;1S使P1.0取反一次。

CPL P1.0

MOV R2,#00H

NEXT:RETI

END

实验结果:

1.当SW1置0时,现象如下:八个灯(实际上仅后四个灯)常亮,但是不闪烁

2.当SW1置1时,现象如下:八个灯(实际上仅后四个灯)闪烁

3.改变SW1的位置则继续按照上述规律变化

方案2:采用T/C0与T/C1级联加软件计数的方法。

1)电路图如图4-5所示。

2)接线方法:

⑴断开DP-51PROC实验仪的电源,按图3-5接线,

使用排线将A2区的J61接口与D1区的J52接口相连,

⑵使用导线把A2区的P3.0与A2区T1(P3.5)相连。

3)参考程序:

ORG 8000H

LJMP MAIN

ORG 800BH

LJMP TC0SV

ORG 801BH

LJMP tc1SV

ORG 8100H

MAIN: MOV SP,#70H

MOV TMOD,#61H

MOV TH1,#0FBH

MOV TL1,#0FBH

MOV TH0,#4CH ;T0 定时50MS,中断一次。

MOV TL0,#00H

SETB ET1

SETB ET0

SETB EA

SETB TR1

SETB TR0

MOV R2,#0

SETB P3.0

MOV A,#0FH

MOV P1,A

SJMP $

TC1SV:

INC R2

CJNE R2,#2,NEXT

MOV R2,#0

CPL A

MOV P1,A

NEXT:

RETI

TC0SV:

MOV TH0,#4CH

MOV TL0,#00H

CPL P3.0

RETI

END

实验结果:四个灯为一组,交替闪烁,右边的灯首先开始

2、计数器实验

采用T/C0 每计1个数,使8个LED 全部点亮。

设计方案:采用T/C0 方式2,计数,每计1个数中断一次,在中断服务程序中,点亮/熄灭8个LED。使用排线将A2区的J61接口与D1区的J52接口相连,用导线将A2区的T0与D1区的SW1相连,请自行画出电路。

注意:调试前,SW1 一定处于1的位置。

参考程序:

ORG 8000H

AJMP MAIN

ORG 800BH

AJMP T0S

MAIN: MOV SP,#60H

MOV TMOD,#06H ;T/C0定时,方式2。

MOV TH0,#0FFH ;计1个数,中断一次.

MOV TL0,#0FFH

SETB ET0

SETB EA

SETB TR0

MOV P1,#0FFH

SETB 00H

SJMP $

T0S: JNB 00H,MIEP1

MOV P1,#00H

CLR 00H

RETI

MIEP1: MOV P1,#0FFH

SETB 00H

RETI

END

实验结果:如下表

三、思考题

1、将实验十一思考题2的软件延时修改为采用T/C0的硬件延时。采用T/C0中断与/INT0中断方式实现8个LED 循环点亮(左或右)。

设计程序如下

ORG 8000H

LJMP MAIN

ORG 8003H

LJMP INTSV

ORG 800BH

LJMP TOS

MAIN:MOV SP,#5FH

MOV TMOD,#01H

MOV TH0,#4CH

MOV TL0,#00H

MOV IE,#83H

MOV A,#0FEH

MOV R2,#00H

SETB IT0

SETB TR0

SETB PX0

CLR F0

SJMP $

TOS: MOV TH0,#4CH+4

MOV TL0,#00H+4

INC R2

CJNE R2,#255,NEXT

JB F0,TOS1

RR A

AJMP TOS2

TOS1: RL A

NOP

TOS2: MOV P1,A

MOV R2,#00H

NEXT: RETI

INTSV:CPL F0

RETI

END

实验结果:LED从最后开始循环点亮

2、将实验1中T/C0定时改为25MS,软件计数应该为多少?修改程序产生1S。

初值=65536-(25000*11.0592)/12=42496=0A600H

设计程序如下:

ORG 8000H

AJMP MAIN

ORG 800BH

AJMP T0S

MAIN: MOV SP,#5FH

MOV TMOD,#01H

MOV TH0,#A6H

MOV TL0,#00H

MOV R2,#00H

MOV IE,#82H

SETB TR0

CLR P1.4

SJMP $

T0S: INC R2

CJNE R2,#40,NEXT CPL P1.4

MOV R2,#00H

NEXT: MOV TH0,#A6H

MOV TL0,#00H

RETI

END

实验结果:LED4闪亮

定时器中断程序设计实验

实验一定时器/中断程序设计实验 一、实验目的 1、掌握定时器/中断的工作原理。 2、学习单片机定时器/中断的应用设计和调试 二、实验仪器和设备 1、普中科技单片机开发板; 2、Keil uVision4 程序开发平台; 3、PZ-ISP 普中自动下载软件。 三、实验原理 805l 单片机内部有两个 16 位可编程定时/计数器,记为 T0 和 Tl。8052 单片机内除了 T0 和 T1 之外,还有第三个 16 位的定时器/计数器,记为 T2。它们的工作方式可以由指令编程来设定,或作定时器用,或作外部脉冲计数器用。定时器 T0 由特殊功能寄存器 TL0 和 TH0 组成,定时器 Tl 由特殊功能寄存器 TLl 和 TH1 组成。定时器的工作方式由特殊功能寄存器 TMOD 编程决定,定时器的运行控制由特殊功能寄存器 TCON 编程控制。T0、T1 在作为定时器时,规定的定时时间到达,即产生一个定时器中断,CPU 转向中断处理程序,从而完成某种定时控制功能。T0、T1 用作计数器使用时也可以申请中断。作定时器使用时,时钟由单片机内部系统时钟提供;作计数器使用时,外部计数脉冲由 P3 口的 P3.4(或 P3.5)即 T0(或 T1)引脚输入。 方式控制寄存器 TMOD 的控制字格式如下: 低 4 位为 T0 的控制字,高 4 位为 T1 的控制字。GATE 为门控位,对定时器/计数器的启动起辅助控制作用。GATE=l 时,定时器/计数器的计数受外部引脚输入电平的控制。由由运行控制位 TRX (X=0,1)=1 和外中断引脚(0INT 或 1INT)上的高电平共同来启动定时器/计数器运行;GATE=0时。定时器/计数器的运行不受外部输入引脚的控制,仅由 TRX(X=0,1)=1 来启动定时器/计数器运行。 C/-T 为方式选择位。C/-T=0 为定时器方式,采用单片机内部振荡脉冲的 12 分频信号作为时钟计时脉冲,若采用 12MHz 的振荡器,则定时器的计数频率为 1MHZ,从定时器的计数值便可求得定时的时间。 C/-T=1 为计数器方式。采用外部引脚(T0 为 P3.4,Tl 为 P3.5)的输入脉冲作为计数脉冲,当 T0(或 T1)输入信号发生从高到低的负跳变时,计数器加 1。最高计数频率为单片机时钟频率的 1/24。 M1、M0 二位的状态确定了定时器的工作方式,详见表。

电子秒表课程设计

电子秒表课程设计报告 目录 一、设计要求 (2) 二、设计的目的与作用 (2) 三、设计的具体体现 (2) 1. 电子秒表的基本组成 (3) 2.电子秒表的工作原理 (3) 3.电子秒表的原理图 (4) 4. 单元电路设计 (4) 5.设计仿真与PCB制版 (12) 四、心得体会 (17) 五、附录 (18) 六、参考文献 (20)

一、设计要求 1.以0.01秒为最小单位进行显示。 2.秒表可显示0.01~59:59:99秒的量程。 3.该秒表具有清零、开始计时、停止计时功能。 二、设计方案 方案一:通过单片机来实现电子秒表 基于51单片机电子秒表,设计简单,而且技术准确,缺点是价格相比于数字电路实现的秒表技术要昂贵。 方案二:采用数字电路来实现秒表计数,优点是价格便宜,计数精确,反应较快,缺点是,电路芯片较多,设计电路复杂。 经过比较选择了较为经济适用的数字电路。 二、设计的目的与作用 1.培养我们运用有关课程的基础理论和技能解决实际问题,并进一步提高专业基本技能、创新能力。通过课程设计,学习到设计写作方法,能用文字、图形和现代设计写作方法系统地、正确地表达课程设计和研究成果。 2. 熟悉555方波振荡器的应用。 3.熟悉计数器的级联及计数、译码、显示电路的整体配合。

4.建立分频的基本概念。 三、设计的具体体现 1.电子秒表的基本组成 电子秒表电路的基本组成框图如图所示,它主要由基本RS 触发器、多谐振荡器、计数器和数码显示器4个部分组成。 电子秒表电路的基本组成(方框图)如下: 图(1)电子秒表基本组成方框图 2.电子秒表的工作原理 由555定时器构成多谐振荡器,用来产生50Hz 的矩形波。第Ⅰ块计数器作5分频使用,将555输来的50Hz 的脉冲变为0.1秒的计数脉冲,在输出端Qd 取得,作为第2块计数器的始终输入,第2、第3块计数器QA 与CP2相连,都已接成8421码十进 基本RS 触发器 多谐振荡器 单稳态触发器 计数器 译码显示器

电子秒表课程设计

湖南人文科技学院 课程设计报告 课程名称:电子技术课程设计 设计题目数字电子秒表 系别: 专业: 班级: 学生姓名: 学号: 起止日期: 指导教师: 教研室主任:

摘要 本次设计的数字电子秒表以555定时器为核心,由多谐振荡电路,计数译码显示电路,控制电路三大主要模块构成。由NE555定时器组成的多谐振荡电路通过控制阻值产生10Hz,1Hz的脉冲;输入由74LS192芯片组成的计数电路、74LS48组成的译码电路在数码管FJS5101显示器上输出,以上部分组成计数译码显示电路;通过控制电路实现复位,置数功能,灵活启动停止。电路是采用外接电源来实现的。经过仿真、布线、制板等工作,数字秒表成形。本组在此次设计过程中主要是先分析设计要求,根据提出的设计要求选取合适的芯片,再用multisim 10 画出电路图,进行仿真。再用Prote 2004 Sp2绘制原理图和PCB图,并把PCB图转印到印制板上完成焊接和调试等工作。最终完成数字电子秒表的工作。 关键词:NE555定时器;74LS192计数器;74LS48译码器;控制电路

目录 1、方案论证与对比 (1) 1.1 方案一 (1) 1.2方案二 (2) 1.3方案的对比与选择 (2) 2、数字电子秒表总体方案的分析与设计 (3) 2.1电子秒表电路总图 (3) 2.2控制电路 (4) 2.3 脉冲产生原理 (5) 2.4计数译码显示单元 (7) 2.4.1 计数器 (8) 2.4.2 译码器 (9) 2.4.3 七段显示数码管 (11) 3、调试与检测 (12) 3.1调试方法 (12) 3.2调试故障的原因与排除 (13) 3.3调试结果 (14) 4、总结与致谢 (14) 5、参考文献 (16) 6、附录 (17) 附录一元件清单 (17) 附录二总电路的PCB图 (17) 附录三总电路的仿真图 (18)

定时器中断产生方波源程序

①fangbo.asm。利用定时器Timer0在XF脚产生周期1s的的方波 .title "fangbo.asm" .mmregs .def CodeStart ;程序入口 .def TINT0_ISR ;Timer0中断服务程序 STACK .usect "STACK",10H ;分配堆栈空间 ;设定定时器0控制寄存器的内容 K_TCR_SOFT .set 0B<<11 ;TCR第11位soft=0 K_TCR_FREE .set 0B<<10 ;TCR第10位free=0 K_TCR_PSC .set 0B<<6 ;TCR第9-6位,可跟TDDR一样,也可不设自动加载 K_TCR_TRB .set 1B<<5 ;TCR第5位TRB=1此位置1,PSC会自动加载的 K_TCR_TSS .set 0B<<4 ;TCR第4位TSS=0 K_TCR_TDDR .set 1001B<<0 ;TCR第3-0位TDDR=1001B K_TCR .set K_TCR_SOFT|K_TCR_FREE|K_TCR_PSC|K_TCR_TRB|K_TCR_TSS|K_TCR_TDDR K_TCR_STOP .set 1B<<4 ;TSS=1时计数器停止 .data DATA_DP: XF_Flag: .word 1 ;当前XF的输出电平标志,如果XF_Flag=1,则XF=1 ;================================================ ;主程序: ;================================================ .text CodeStart: STM #STACK+10H,SP ;设堆栈指针SP LD #DATA_DP,DP ;设数据地址DP STM #XF_Flag,AR2 ;AR指向XF标志 ;改变中断向量表位置 K_IPTR .set 0080h ;指向0080H,默认是FF80 LDM PMST,A AND #7FH,A ;保留低7位,清掉高位 OR #K_IPTR,A ; STLM A,PMST ;初始化定时器0 ;f=100Mhz,定时最大是:10ns*2^4*2^16=10ms, ;要输出1s的方波,可定时5ms,再在中断程序中加个100计数器 ;Tt=10ns*(1+9)*(1+49999)=5ms ;f=50M, Tt=20ns*(1+9)*(1+49999)=10ms ;再加50计数器 CounterSet .set 49 ;定义计数次数 PERIOD .set 49999 ;定义计数周期 .asg AR1,Counter ;AR1做计数指针,重新命名以便识别 STM #CounterSet,Counter ;设计数器初值 STM K_TCR_STOP,TCR ;停止计数器0 ; STM #PERIOD,TIM ;可设成跟PRD一样,也可不设自动加载STM #PERIOD,PRD ;设定计数周期 STM #K_TCR,TCR ;开始Timer0 stm #0008h,IMR ;允许Timer0中断 STM #0008h,IFR ;清除挂起的中断 RSBX INTM ;开中断 end: nop B end ;================================================ ;Timer0中断服务程序:TIN0_ISR ;================================================

定时器中断实验

实验四定时器中断实验 一、实验目的 (1)深刻理解对MCS-51单片机定时/计数器内部结构、工作原理和工作方式。(2)掌握定时/计数器工作在定时和计数两种状态下的编程方法。 (3)掌握中断服务程序设计方法。 二、实验设备 计算机 操作系统:Windows 98/2000/XP 应用软件:WAVE 6000或其他。 三、实验内容 设单片机的时钟频率为12MHz,要求在P1.0脚上输出周期为2ms的方波。四、实验原理 周期为2ms的方波要求定时间隔为1ms,每次时间到将P1.0取反。定时计数器频率为f osc/12,T cy=12/f osc=1us。每个机器周期定时计数器加1,1ms=1000us,需技术次数为1000/(12/f osc)=1000。由于加1计数器向上计数,为得到1000个计数之后的定时器溢出,必须给加1计数器赋初值65536-1000。 五、实验源程序 ORG 0000H AJMP START ORG 001BH AJMP T1INT ORG 0030H START: SETB TR1 SETB ET1 SETB EA MOV SP,#60H MOV TMOD,#10H MOV TH1,#0FCH MOV TL1,#18H MAIN: AJMP MAIN T1INT: CPL P1.0 MOV TH1,#0FCH MOV TL1,#18H RETI END

六、实验结果 七、实验心得 通过这次实验,我对MCS-51单片机定时/计数器内部结构、工作原理和工作方式有了更加深刻的理解,同时也掌握了定时/计数器工作在定时和计数两种状态下的编程方法以及中断服务程序设计方法。在今后的学习中,要更加注重实践,通过动手来增强自己解决问题的能力。

电子秒表课程设计

电子秒表 摘要 电子秒表是一种用数字电路技术实现时、分、秒计时的装置,无机械装置,具有较长的使用寿命,因此得到了广泛的使用。它从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。本次实验所做电子式秒表由信号发生系统和计时系统构成,并具有清零,暂停功能。由于需要比较稳定的信号,所以信号发生系统555定时器与电阻和电容组成的多谐振荡器构成,信号频率为100HZ。计时系统由计数器、译码器、显示器组成。计数器由74 LS160构成,由十进制计数器组成了一百进制和六十进制计数器,采用异步进位方式。译码器由74LS48构成,显示器由数码管构成。清零,暂停功能由RS触发器构成防抖动开关。具体过程为:由晶体震荡器产生100HZ脉冲信号先进入计数器,然后传入译码器,将4位信号转化为数码管可显示的7位信号,结果以“分”、“秒”、“10毫秒”依次在数码管显示出来。该秒表最大计时值为59分59.99秒,“10毫秒”为一百进制计数器组成,“分”和“秒”为六十进制计数器组成。 关键词:计时精度计数器显示器 Abstract Electronic stopwatch is the realization of a digital circuit technology,.It can realize the hour, minute, second timer.It does not have mechanical means and has a longer life, so it has been widely used. The principle is a typical digital circuit, which includes a combination logic circuit and a timing circuit. The experiments can be done by electronic stopwatch constituted by the signal system and timing system, and has cleared pause function. Due to the need of a more stable signal, the signal generating system is constituted by the 555 Timer with the resistors and capacitors, and the signal frequency is 100Hz. Timing system contains the counter, decoder, display. Counter 74 LS160 constituted by the decimal counter the decimal and sexagesimal counter, which uses asynchronous binary. The decoder from 74LS48 constitute display digital tube constitute Cleared, the pause function by the RS flip-flop. Its specific process: the 100Hz pulse signal generated by the crystal oscillator and first into the counter, and then the incoming decoder, a 4-bit signal is converted to 7-bit signal of the digital control can be displayed, the result by "minute", "second", "10 milliseconds" turn on the digital display. The stopwatch timing is 59 minutes, 59.99 seconds, 10 milliseconds is the 150 binary counter, "minute" and "second" is the six decimal counter. Keyword:Timing accuracy counter display

51单片机定时中断C语言的写法步骤

51单片机定时中断C语言的写法步骤 程序说明:51单片机定时器0工作于方式一,定时50ms中断一次 晶振为12M #include void main { TOMD = 0X01;//配置定时器0工作于方式一 TH1 = (65536-50000)/256; //高八位装入初值 TL1 = (65536-50000)%256; //低八位装入初值 ET0 = 1; //开定时器0中断 EA = 1; //开总中断 TR0 = 1; //启动定时器0 while(1) { ; } } void Timer0_int() interrupt 1 { //重新装初值 TH1 = (65536-50000)/256; //高八位装入初值 TL1 = (65536-50000)%256; //低八位装入初值 } /****************************************************************************** *********************************/ 上面是比较好理解的。如果实在要求简洁的话,看下面的,跟上面功能一样 #include void main { TOMD = 0X01;//配置定时器0工作于方式一 TH1 = 0x3c; //高八位装入初值 TL1 = 0xb0; //低八位装入初值 IE = 0x82;//开总中断并开定时器0中断 TR0 = 1; //启动定时器0 while(1) { ; } }

void Timer0_int() interrupt 1 { //重新装初值 TH1 = 0x3c; //高八位装入初值TL1 = 0xb0; //低八位装入初值}

用定时器计数器设计一个简单的秒表

目录 摘要................................................................................................ 错误!未定义书签。 1 Proteus简介错误!未定义书签。 2 主要相关硬件介绍错误!未定义书签。 AT89C52简介错误!未定义书签。 四位数码管错误!未定义书签。 74LS139芯片介绍错误!未定义书签。 3 设计原理错误!未定义书签。 4 电路设计错误!未定义书签。 电路框图设计错误!未定义书签。 电路模块介绍错误!未定义书签。 控制电路错误!未定义书签。 译码电路错误!未定义书签。 数码管显示电路错误!未定义书签。 仿真电路图错误!未定义书签。 5 设计代码错误!未定义书签。 6 仿真图错误!未定义书签。 7 仿真结果分析错误!未定义书签。 8 实物图错误!未定义书签。 9 心得体会错误!未定义书签。 参考文献错误!未定义书签。

摘要 现在单片机的运用越来越宽泛,大到导弹的导航装置、飞机上各种仪表的控制、计算机的网络通讯与数据传输、工业自动化过程的实时控制和数据处理,小到广泛使用的各种智能IC卡、各种计时和计数器等等。本次课设我们要设计一个能显示计时状态和结果的秒表,它是基于定时器/计数器设计一个简单的秒表。 本次设计的数字电子秒表系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬件有机地结合起来,使得系统能够实现四位LED显示,显示时间为0~秒,计时精度为秒,能正确地进行计时,并显示计时状态和结果。其中软件系统采用汇编或者C语言编写程序,包括显示程序,定时中断服务,外部中断服务程序,延时程序等,并在keil中调试运行,硬件系统利用PROTEUS强大的功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。 关键词:秒表,AT89C51,proteus,C语言

定时器工作原理

定时器工作原理 通电延时型。只要在定时的时间段内(即1分钟)定时器一直得电,则常开触电就会闭合,只要定时器不断电常开触电就会一直闭合。定时器断电则常开触电断开 1,定时器/计数器的结构与功能 主要介绍定时器0(T0)和定时器1(T1)的结构与功能。图6.1是定时器/计数器的结构框图。由图可知,定时器/计数器由定时器0、定时器1、定时器方式寄存器TMOD和定时器控制寄存器TCON组成。 定时器0,定时器1是16位加法计数器,分别由两个8位专用寄存器组成:定时器0由TH0和TL0组成,定时器1由TH1和TL1组成。 图6.1 定时器/计数器结构框图 TL0、TL1、TH0、TH1的访问地址依次为8AH~8DH,每个寄存器均可单独访问。定时器0或定时器1用作计数器时,对芯片引脚T0(P3.4)或T1(P3.5)上输入的脉冲计数,每输入一个脉冲,加法计数器加1;其用作定时器时,对内部机器周期脉冲计数,由于机器周期是定值,故计数值确定时,时间也随之确定。 TMOD、TCON与定时器0、定时器1间通过内部总线及逻辑电路连接,TMOD 用于设置定时器的工作方式,TCON用于控制定时器的启动与停止。 6.1.1 计数功能 计数方式时,T的功能是计来自T0(P3.4)T1(P3.5)的外部脉冲信号的个数。 输入脉冲由1变0的下降沿时,计数器的值增加1直到回零产生溢出中断,表示计数已达预期个数。外部输入信号的下降沿将触发计数,识别一个从“1”到“0”的跳变需2个机器周期,所以,对外部输入信号最高的计数速率是晶振频率的1/24。若晶振频率为6MHz,则计数脉冲频率应低于1/4MHz。当计数器满后,再来一个计数脉冲,计数器全部回0,这就是溢出。 脉冲的计数长度与计数器预先装入的初值有关。初值越大,计数长度越小;初值越小,计数长度越大。最大计数长度为65536(216)个脉冲(初值为0)。 6.1.2 定时方式 定时方式时,T记录单片机内部振荡器输出的脉冲(机器周期信号)个数。 每一个机器周期使T0或T1的计数器增加1,直至计满回零自动产生溢出中断请求。 定时器的定时时间不仅与定时器的初值有关,而且还与系统的时钟频率有关。在机器周期一定的情况下,初值越大,定时时间越短;初值越小,定时时间越长。最长的定时时间为65536(216)个机器周期(初值为0)。

电子秒表电路的设计

摘要 在数字测量仪表和各种数字系统中,都需要将数字量直观的显示出来,数字显示电路通常由译码驱动器和显示器等部分组成。数码显示器就是用来显示数字、文字或符号的器件。七段式数字显示器是目前常用的显示方式,它利用不同发光段的组合,可以显示0~9等阿拉伯数字。充分运用芯片74LS90的逻辑功能,用四片74LS90芯片实现秒表示0.1~60秒。利用集成与非门构成的基本RS触发器(低电平直接触发)实现电路的直接置位、复位功能。利用集成与非门构成的微分型单稳态触发器为计数器清零提供输出负脉冲。利用555定时器构成的多谐振荡器为电路提供脉冲源以驱动电路工作。?关键词:基本RS触发器,单稳态触发器,多谐振荡器,译码显示器。 ?1电子秒表简介 电子秒表是一种较先进的电子计时器,目前国产的电子秒表一般都是利用石英振荡器的振荡频率作为时间基准,采用6位液晶数字显示时间。电子秒表的使用功能比机械秒表要多,它不仅能显示分、秒,还能显示时、日、月及星期,并且有1/l00s的功能。 本实验设计的电子秒表电路的基本组成框图如图1-1所示,它主要由基本RS触发器、单稳态触发器、多谐振荡器、计数器和译码显示器5个部分组成。 图1-1 电子秒表电路的基本组成框图

2单元电路设计及相关元器件的功能简介 2.1基本RS触发器 本实验设计电路所选用的基本RS触发器为用集成与非门构成的基本RS触发器。属低电平直接触发的触发器,有直接置位、复位的功能。其功能表如表2-1所示。 RSQn Qn+1功能 0 0 0 不用不允许 0 0 0 不用 0 1 00 Qn+1=0,置0 0 1 1 0 1011Qn+1=1,置1 10 0 1 1 1 11Qn+1=Qn,保持 1 1 0 0 表2-1 基本RS触发器 如图2-1所示,它的一路输出Q作为单稳态触发器的输入,另一路输出Q作为与非门5的输入控制信号。切换按钮开关K1(接地),则门1输出Q =1;门2输出Q=0,K1复位后Q、Q状态保持不变。再切换按钮开关K2,则Q由0变为1,门5开启,为计数器启动作好准备;Q由1变为0,送出负脉冲,启动单稳态触发器工作。 基本RS触发器在电子秒表中的职能是启动和停止秒表的工作. 图2-1 基本RS触发器

单片机定时器中断时间误差的分析及补偿(精)

单片机定时器中断时间误差的分析及补偿作者冰晓日期 2009-1-8 8:09:00 推荐 摘要:本文分析了单片机定时器溢出中断与CPU响应中断的时间误差,并给出了补偿误差的方法和实例。 关键词:单片机; 定时器; 中断; 误差 1前言 单片机内部一般有若干个定时器。如8051单片机内部有定时器0和定时器1。在定时器计数溢出时,便向CPU发出中断请求。当CPU正在执行某指令或某中断服务程序时,它响应定时器溢出中断往往延迟一段时间。这种延时虽对单片机低频控制系统影响甚微,但对单片机高频控制系统的实时控制精度却有较大的影响,有时还可能造成控制事故。为扩大单片机的应用范围,本文介绍它的定时器溢出中断与CPU响应中断的时间误差、补偿误差的方法和实例。 2误差原因、大小及特点 产生单片机定时器溢出中断与CPU响应中断的时间误差有两个原因。一是定时器溢出中断信号时,CPU正在执行某指令;二是定时器溢出中断信号时,CPU正在执行某中断服务程序。 2.1.CPU正在执行某指令时的误差及大小 由于CPU正在执行某指令,因此它不能及时响应定时器的溢出中断。当CPU执行此指令后再响应中断所延迟的最长时间为该指令的指令周期,即误差的最大值为执行该指令所需的时间。由于各指令都有对应的指令周期,因此这种误差将因CPU正在执行指令的不同而不同。如定时器溢出中断时,CPU正在执行指令MOVA,Rn,其最大误差为1个机器周期。而执行指令MOVRn, direct时,其最大误差为2个机器周期。当CPU正在执行乘法或除法指令时,最大时间误差可达4个机器周期。在8051单片机指令系统中,多数指令的指令周期为1~2个机器周期,因此最大时间误差一般为1~2个机器周期。若振荡器振荡频率为fosc,CPU正在执行指令的机器周期数为Ci,则最大时间误差为Δtmax1=12/fosc×Ci(us)。例如fosc=12MHZ,CPU正在执行乘法指令(Ci=4),此时的最大时间误差为: Δtmax1=12/fosc×Ci=12/(12×106)×4=4×10-6(s)=4(μs) 2.2CPU正在执行某中断服务的程序时的误差及大小 定时器溢出中断信号时,若CPU正在执行同级或高优先级中断服务程序,则它仍需继续执行这些程序,不能及时响应定时器的溢出中断请求,其延迟时间由中断转移指令周期T1、中断服务程序执行时间T2、中断返回指令的指令周期T3及中断返回原断点后执行下一条指令周期T4(如乘法指令)组成。中断转移指令和中断返回指令的指令周期都分别为2个机器周期。中断服务程序的执行时间为该程序所含指令的指令周期的总和。因此,最大时间误差Δtmax2为: Δtmax2=(T1+T2+T3+T4)12/fosc=(2+T2+2+4)12/fosc=12(T2+8)/fosc

单片机实验 中断、定时器

大连理工大学实验报告(模板) 实验时间:年月日星期时间::~ : 实验室(房间号):实验台号码:班级:姓名: 指导教师签字:成绩: 实验三外部中断/INT0实验 一、实验目的和要求 学习、掌握单片机的中断原理。正确理解中断矢量入口、中断调用和中断返回的概念及物理过程。学习编写“软件防抖”程序,了解“软件防抖”原理。 对/int0、/int1两个外部中断进行编程,其中: ●主程序的功能:LDE灯“全亮”、“全灭”交替进行 --------(状态2); ●Int0中断服务程序功能:2个相邻的LED灯被点亮且循环左移(状态0); ●Int1中断服务程序功能:1个LED灯被点亮且循环右移 ---(状态1);【注意】:实验仪上的LED灯物理位置最左侧为d0;最右侧为d7。 二、实验算法 1 在主程序中利用CPL P3.3的指令驱动其电平不断地转换(由逻辑笔电路做程序状态监视)。 2 在中断服务程序中将P3.3置位(P3.3=1),实现对计数器“加1”并(通过P1口)显示的功能。 3 中断结束后回到主程序,程序继续对P3.3的电平不断取反。 三、实验电路图

四、实验流程图 主程序入口INT0入口 设置中断允许P3.2置1 设置中断优先级调用延时子程序 设TCON 计数器加一并显示 CLR A开中断 (P0)—(A) P3.2=0? 调用延时子程序调用延时子程序 (A)—(A) RETI INT1同理 五、程序清单 ORG 0000H LJMP START ORG 0003H LJMP INT_0 ORG 0013H LJMP INT_1 ORG 0100H ;主程序 START: MOV SP,#60H MOV IE,#85H

电子秒表计时电路的设计

电子秒表的设计 摘要:目前数字电子技术已经广泛地应用于计算机,自动控制,电子测量仪表, 电视,雷达,通信等各个领域。例如在现代测量技术中,数字测量仪表不仅比模拟测量仪表精度高,功能强,而且容易实现测量的自动化和智能化。随着集成技术的发展,尤其是中、大规模和超大规模集成电路的发展,数字电子技术的应用范围将会更广泛地渗透到国民经济的各个部门,并将产生越来越深刻的影响。随着现代社会的电子科技的迅速发展,要求我们要理论联系实际,数字电路课题设计的进行使我们有了这个非常好的机会,通过这种综合性训练,我们的动手能力、实际操作能力、综合知识应用能力得到了更好的提升。 本次毕业设计的题目是电子秒表.电子秒表是用于测量较短且较精确的时间,它在体育运动项目上有着广泛的应用.本次设计中应用了多种数字电路中的单元电路,如基本RS触发器、单稳态触发器、时钟发生器及计数器,译码显示器等.我相信通过本次实验,将进一步加深对各数字单元电路的理解,同时也对基础电子设计有一定的了解,为今后的学习和工作打下一定的基础。 关键词:电子秒表;基本RS触发器;单稳态触发器;时钟发生器;计数器;译码显示器 The Design of Digital Stopwatch Abstract: Current digital electronics technology has been widely used in computers, automatic control, electronic measuring instruments, TV, radar, communications and other fields. For example, in the modern measurement technology, digital measuring instrument is not only accurate than analog gauges, powerful, and easy measurement of automation and intelligence. With the integration of technology, particularly in large-scale and ultra large scale integrated circuit development, application of digital electronic technology will be more widely infiltrated into all sectors of the national economy, and will have more profound impact. With modern society, the rapid development of electronic technology, requires us to integrate theory with practice, digital circuit design the project so that we have this great opportunity, through this comprehensive training, our ability, practical skills, ability of comprehensive knowledge applications get better promotion. The course design is the subject of electronic stopwatch. Stopwatch is a shorter and more accurate for measuring time, it projects in sports has been widely used. The design of the application of a variety of digital circuit elements in the circuit, such as basic RS flip-flop, one-shot, the clock generator and counter, decoder display. I believe that through this experiment, will further deepen the understanding of the digital cell circuits, but also on the basis of a certain electronic design understanding for future study and work to lay a certain foundation. Keywords: electronic stopwatch, the basic RS flip-flop, one-shot, the clock generator, counters, decoding display

定时器中断—频率计程序

/*注:定时器中断的例子,简单的频率计,初学者留意各引脚电压极性和电压值,不可超出5V,我们只是做学习实验,不要 超出51hei单片机学习板的承受范围,否则要求对电子非常熟悉,不然会烧坏芯片, 版权:,注意:P1.3与P1.7要相连接 如果是测量外部频率要共地. */ #include //头文件 #include #define uchar unsigned char//宏定义 #define uint unsigned int sbit Fin=P1^3; //测量频率管脚 sbit Fout=P1^7; //发生频率管脚 uchar code table[]={0x3f,0x06,0x5b,//数码管显示的数值 0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; void display(uchar *lp,uchar lc); //显示子函数 void delay(); //延时子函数 void mee_F(); //测频率子函数 void mee_T(); //测周期子函数 void Fry_mee(); //测频测周选择的子函数 uchar l_tmpdata[8]; //程序显示的缓冲区 bit int_flag; //中断事件相应的标志 uint fry; //保存的频率值 void init() ; void main() //主函数 { init(); // 调用初始化函数 } void init() //初始化函数 {

uint tmp; //数据转换缓冲区 uint i=2000;//显示延时,提高亮度 EA=1; //打开总中断 TMOD=0x11;//工作方式3 TH0=256-(50000/256); //装入初值 TL0=256-(50000%256); TH1=256-500/256; TL0=256-500%256; ET0=1; //定时器0开 ET1=1; //定时器1开 TR1=1; //启动定时器1 while(1) { Fry_mee();//开始测量 l_tmpdata[0]=tmp/10000; //测量完后将整数分离出来 tmp=tmp%10000; //进行显示 l_tmpdata[1]=tmp/1000; tmp=tmp%1000; l_tmpdata[2]=tmp/100; tmp=tmp%100; l_tmpdata[3]=tmp/10; l_tmpdata[4]=tmp%10; while(i--) //显示延时,提高亮度 { display(l_tmpdata,5); //用数字显示频率 } i=2000; //从新装入初值 } }

51单片机C语言程序 定时 计数器 中断

51单片机C语言程序定时计数器中断51单片机C语言程序定时计数器 中断 程序一 利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁, #include reg52.h//52单片机头文件 #include intrins.h//包含有左右循环移位子函数的库 #define uint unsigned int//宏定义 #define uchar unsigned char//宏定义 sbit P1_0=P1^0; uchar tt; void main()//主函数 { TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 while(1);//等待中断产生 } void timer0()interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++;

if(tt==20) { tt=0; P1_0=~P1_0; } } 程序二 利用定时/计数器T1产生定时时钟, 由P1口控制8个发光二极管, 使8个指示灯依次一个一个闪动, 闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。 #include reg52.h//52单片机头文件 #include intrins.h//包含有左右循环移位子函数的库 #define uint unsigned int//宏定义 #define uchar unsigned char//宏定义 sbit P1_0=P1^0; uchar tt,a; void main()//主函数 { TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 a=0xfe; while(1);//等待中断产生 } void timer0()interrupt 1

详细介绍定时器和定时器中断

详细介绍定时器和定时器中断 后来学着学着就了解到中断的意义了,不过对于第一次接触单片机的人来说,还是很难解说的清楚的。 所以这里我做个比喻吧。假设你客厅的电话来电时,有铃声和闪光提示,而你在房间看书,那么有电话来的时候,你听到铃声,然后放下手上的书,并用书签记录你的页数,再出去听电话。听完后,回到房间,从书签标记的位置继续看你的书。 OK,分析上面的几个动作,电话响并被你听到,那是中断来了;你用书签标记位置,那是现场保护;听电话,就是执行中断咯;听完电话,你要从你刚才标记的地方继续看书,那就是中断执行完毕后回到原中断处继续执行程序。这个就是中断的过程了。 假设没有了中断的话,你会如何?你会用扫描法:电话不会响铃了,只有闪光,但你必须在房间看书,那你只能每看几段,就跑出去看看是否有电话到,如果没有,就跑回去看书,如果有了,那你就听电话吧。很明显,扫描法效率非常低,因为你每看一会书就得花时间看看电话的闪光以判断是否有电话的到来,这样你看书的效率就大大减低了。而且扫描法还有个最大的缺点,就是中断丢失,试想如果你扫描的间隔过大(就是看很久书才去看一下电话),那你极有可能丢了几个重要的来电。 其实上面的比喻,正能很好地表现中断的作用——其实中断就是为了处理突发事件。 对于单片机来说,突发的事情实在太多了,例如用户对单片机输入数据,按键,那都是单片机本身无法估计的事情。外来数据的突然进入,也属于突发事件。这些外部来的突发信号,一般就由单片机的外部中断来处理。外部中断其实就是一个管脚的状态改变引起的中断,在之后会说。 这里先介绍定时器和定时器中断: 在测量控制系统中,常常需要实时时钟,以实现定时控制、定时测量或定时中断等。也常需要计数器以实现对外部事件的计数。MCS-51单片机中有两个(增强型有三个)十六位的定时计数器T0,T1,简称定时器0和定时器1,两者均为可编程定时计数器。 ——以上P话抄自《单片微型计算机与接口技术》94页第一段-_-#!!!!!

定时器中断原理

定时器中断原理#define _1231_C_ #include "reg51.h" //sbit OE=P2^3; unsigned int SystemTime; void timer0(void) interrupt 1 using 3 //中断部分代码,见下文的释疑 { TH0 = 0xdb; TL0 = 0xff; // TF0 = 0; SystemTime++; } void main() { TMOD &= 0xF0; TMOD |= 0x01; //TMOD的值表示定时器工作方式选择 TH0 = 0xdb; //写入初始值,初始值可以决定定时多久 TL0 = 0xff; //根据下文的木桶比喻的话,如果TH0 = 0x00;TL0 = 0x00;则表示从桶底开始装水。 //TH0 = 0xdb;TL0 = 0xff;可以这样子理解相当于木桶里已经有部分液铅在里面, //TH0和TL0这个两个值表示木桶里液铅的高度,即此时桶里只能从液铅的高度以上开始装水, //TH0 = 0xff;TL0 = 0xff;即表示桶的最高位置.

TF0 = 0; //计数到时TF0为1,即当TH0 = 0xff;TL0 = 0xff;再运行一步TF0 = 1; TR0 = 1; //开始计数,从这时起,每运行一步TH0和TL0都会增加,直到TH0 = 0xff;TL0 = 0xff; //相当于开水龙头,如TR0=0则TH0和TL0不变 ET0 = 1; //允许定时器0中断 EA=1; //开总中断 //下面是个死循环,程序里每运行一步TH0和TL0都会增加,当增加到TH0 = 0xff;TL0 = 0xff; //单片机会从死循环里退出,去执行中断部分的代码,即开始运行void timer0(void) interrupt 1 using 3{} //运行完中断部分的代码后,接着继续执行死循环里的代码。 //注意:当TH0 = 0xff;TL0 = 0xff;再运行,TF0并没有从0变为1,个人猜测TF0=1;时触发了中断,并重新被置零。 //如把ET0 = 1;和EA=1;注释掉,当TH0 = 0xff;TL0 = 0xff;再运行,TF0会变为1,此时不会再执行中断部分代码。 while(1) { if ((SystemTime%100)<50) //SystemTime除以100,余数小于50为真 { …………; } else { …………; } };

相关文档
最新文档