定时器和计数器应用C语言程序

定时器和计数器应用C语言程序
定时器和计数器应用C语言程序

1、定时器应用实验

单片机的P1口上接有8只LED。采用定时器T0的方式1的定时中断方式,使P1口外接的8只LED每0.5s闪亮一次。

#include

Char i=100;/*给变量i赋初值*/

void main( )

{TMOD=0x01;/*设置定时器T0为方式1*/

TH0=0xee;/*向TH0写入初值的高8位*/

TL0=0x00;/*向TL0写入初值的低8位*/

P1=0x00;/*P1口8只LED点亮*/

EA=1;/*总中断允许*/

ET0=1;/*定时器T0中断允许*/

TR0=1;/*启动定时器T0*/

while(1) ;/*无穷循环,等待定时中断*/

}

/*以下为定时器T0的中断服务程序*/

void T0_int(void) interrupt 1

{TH0=0xee;/*给T0装入16位初值,计4608个数后,T0溢出*/

TL0=0x00;

i--;/*循环次数减1*/

if(i<=0)

{P1=~P1;/*P1口按位取反*/

i=100;/*重新设置循环次数*/

}

}

2、计数器应用实验

采用定时器T1的方式1的中断计数方式。计数输入引脚T1(P3.5)上外接开关K1,作为计数信号输入。按4次K1后,P1口的8只LED闪烁不停。

#include

void Delay(unsigned int i)/* 定义延时函数Delay( ),i是形式参数,不能赋初值*/ {unsigned int j;

for(;i>0;i--) /* 变量i由实际参数传入一个值,因此i不能赋初值*/

for(j=0;j<125;j++)

{;} /*空函数*/

}

void main( ) /*主函数*/

{TMOD=0x50;/*设置定时器T1为方式1计数*/

TH1=0xff;/*向TH1写入初值的高8位*/

TL1=0xfc;/*向TL1写入初值低8位*/

EA=1;/*总中断允许*/

ET1=1;/*T1中断允许*/

TR1=1;/*启动T1*/

while(1) ;/*无穷循环,等待定时中断*/ }

/*以下为定时器T1的中断服务程序*/

void T1_int(void) interrupt 3

{for(;;) /*无限循环*/

{P1=0xff;/*8位LED全灭*/

Delay(500) ;/*延时500ms*/

P1=0;/*8位LED全亮*/

Delay(500);} /*延时500ms */

}

定时器、计数器操作与应用实验报告

实验三 定时器、计数器操作与应用实验报告 、实验目的 1、 了解和熟悉FX 系列可编程序控制器的结构和外 部接线方法; 2、 了解 和熟 悉 GX Developer Version 7.0 软件的 使用 方法 ; 3、 掌握 可编 程序 控制器 梯形 图程 序的 编制 与调 试。 二、实验要求 仔 细阅 读实 验指 导书 中关 于编 程软 件的 说明 ,复习 教材 中有 关内 容 , 分 析程 序运 行结 果。 三、实验设备 2 、 开关 量输 入 / 输出 实验 箱 3、 计算 机 4、 编程 电缆 注 意: 1) 开关量输入/输出实验 箱内的钮子开关用来产生模拟的 开关量输入 信 号; 2) 开关量输入/输出实验箱内的LED 用来指示开关 量输出信号; 3) 编程电缆在连接PLC 与计算机时请注意方向。 四、实验内容 1 、梯形图 1 、 FX 系列可 编程 序控 制器 一只 一套 5、 GX Developer Version 7.0 软件 一套

2、梯形图程序 0LD xooo 1OUT YOOO X001 2LD 3OR¥001 4AN I X002 5OUT Y001 6OUT TO K50 9MPS 10AHI TO 11OUT Y002 12MPP 13ASD TO 14OUT¥003 15LD X003 16RST CO 18LD X004 19OUT CO K5 22LD CO 23OUT Y004 24END 3、时序图

r 时序10 □ ?Si 正在进荷囲1SL 金冃勖厂手祜r XI广X3厂X5厂K1Q拧应C 40 J2fl MIB -380 .360 '340 -33 MW 脚 M 创Q,220,200,13Q -1?-14D ,1如■!? 如也 40 如厂「 五、实验步骤 1、程序的编辑、检查和修改; 2、程序的变换; 3、程序的离线虚拟设备仿真测试; 4、程序写入PLC; 5、用PLC运行程序; 6、比较程序的分析结果与实际运行结果。 六、实验报告 1、实验梯形图程序的编写; 2、梯形图程序的理论分析与结果; 3、梯形图程序的实际运行结果; 4、结论。 七、实验心得 通过这样一次实验,我对GX Developer Version 7.0 软件的使用方 法更加的熟悉了,也了解到在实验中需要我们集中精力,仔细认真地完成■XDU "Tlr-.Ll-t-1!- D LJ D-IT--1 z?E I4J 一 — Ti ll IL — 」 ill-t-ll-r — 1

PLC实验定时器计数器实验

实验二定时器、计数器实验 一、目的要求 1、了解和熟悉编程软件的使用方法。 2、了解写入和编辑用户程序的方法。 3、掌握定时器、计数器的使用。 二、实验设备 台达可编程序控制器一台;PLC实验箱一台;装有WPL编程软件和开发软件的计算机一台;编程连接电缆一根。 三、实验内容 1、实验原理 定时器相当于继电器电路中的时间继电器,可在程序中作延时控制。 可编程控制器中的定时器是根据时钟脉冲累积计时的,时钟脉冲有 1ms、10ms、100ms等不同规格。(定时器的工作过程实际上是对时钟脉冲计数)因工作需要,定时器除了占有自己编号的存储器位外,还占有一个设定值寄存器(字),一个当前值寄存器(字)。设定值寄存器(字)存储编程时赋值的计时时间设定值。当前值寄存器记录计时当前值。这些寄存器为16位二进制存储器。其最大值乘以定时器的计时单位值即是定时器的最大计时范围值。定时器满足计时条件开始计时,当前值寄存器则开始计数,当当前值与设定值相等时定时器动作,常开触点接通,常闭触点断开,并通过程序作用于控制对象,达到时间控制的目的。 TMR为十六位定时器,当该指令执行时,其所指定的定时器线圈受电,定时器开始计时,当到达所指定的定时值(计时值≥设定值),其接点动作如下:CNT为十六位计数器,当该指令由Off→On执行,表示所指定的计数器线圈由失电→受电,则该计数器计数值加1,当计数到达所指定的定数值(计数值 = 设定值),其接点动作如下:?? 当计数到达之后,若再有计数脉冲输入,其接点及计数值均保持不变,若要重新计数或作清除的动作,请利用RST指令。 编程使PLC输出Y0输出3秒的脉冲,PLC输入1对脉冲计数,计数值为10时,PLC输出Y1输出为1,第11个脉冲清零。 OUTPUT00

第5章习题解答

第5章思考题及习题5参考答案 一、填空 1.如果采用晶振的频率为3MHz,定时器/计数器T x(x=0,1)工作在方式0、1、2下,其方式0的最大定时时间为,方式1的最大定时时间为,方式2的最大定时时间为。 答:32.768ms,262.144ms,1024μs 2.定时器/计数器用作计数器模式时,外部输入的计数脉冲的最高频率为系统时钟频率的。 答:1/24 3.定时器/计数器用作定时器模式时,其计数脉冲由提供,定时时间与有关。 答:系统时钟信号12分频后,定时器初值 4.定时器/计数器T1测量某正单脉冲的宽度,采用方式可得到最大量程?若时钟频率为6MHz,求允许测量的最大脉冲宽度为。 答:方式1定时,131.072ms。 5. 定时器T2 有3种工作方式:、和,可通过对寄存器中的相关位进行软件设置来选择。 答:捕捉,重新装载(增计数或减计数),波特率发生器,T2CON 6. AT89S52单片机的晶振为6MHz,若利用定时器T1的方式1定时2ms,则(TH1)= ,(TL1)= 。 答:FCH,18H。 二、单选 1.定时器T0工作在方式3时,定时器T1有种工作方式。 A.1种 B.2种 C.3种D.4种 答:C 2. 定时器T0、T1工作于方式1时,其计数器为位。 A.8位 B.16位 C.14位 D.13位 答:B 3. 定时器T0、T1的GATE x=1时,其计数器是否计数的条件。

A. 仅取决于TR x状态 B. 仅取决于GATE位状态 C. 是由TR x和INT x两个条件来共同控制 D. 仅取决于INT x的状态 答:C 4. 定时器T2工作在自动重装载方式时,其计数器为位。 A.8位 B. 13位 C.14位 D. 16位 答:D 5. 要想测量INT0引脚上的正单脉冲的宽度,特殊功能寄存器TMOD的内容应为。 A.87H B. 09H C.80H D. 00H 答:B 三、判断对错 1.下列关于T0、T1的哪些说法是正确的。 A.特殊功能寄存器SCON,与定时器/计数器的控制无关。对 B.特殊功能寄存器TCON,与定时器/计数器的控制无关。错 C.特殊功能寄存器IE,与定时器/计数器的控制无关。错 D.特殊功能寄存器TMOD,与定时器/计数器的控制无关。错 2.定时器T0、T1对外部脉冲进行计数时,要求输入的计数脉冲的高电平或低电平的持 续时间不小于1个机器周期。特殊功能寄存器SCON与定时器/计数器的控制无关。错 3.定时器T0、T1对外部引脚上的脉冲进行计数时,要求输入的计数脉冲的高电平和低电平的持续时间均不小于2个机器周期。对 四、简答 1.定时器/计数器T1、T0的工作方式2有什么特点?适用于哪些应用场合? 答:方式2为初值自动装入的8位定时器/计数器,克服了在循环定时或循环计数应用时就存在用指令反复装入计数初值影响定时精度的问题。 2.TH x与TL x(x=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满后才能刷新? 答:THx与TLx(x = 0,1)是计数器,其内容可以随时用指令更改,但是更改后的新值要等当前计数器计满后才能刷新。 3.如果系统的晶振的频率为24MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少? 答:晶振的频率为24MHz, 机器周期为0.5μs。

8254定时计数器应用实验报告

XX 大学实验报告 课程名称: 实验项目名称:8254定时/计数器应用实验学院:信息工程学院 专业:通信工程 指导教师: 报告人:学号:班级: 实验时间: 实验报告提交时间:

教务处制

单元的内容外,还可以读出状态寄存器的内容。 (6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为: n=fCLKi÷fOUTi、其中fCLKi 是输入时钟脉冲的频率,fOUTi 是输出波形的频率。 图(1)是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。8254 的工作方式如下述:(1)方式0:计数到0 结束输出正跃变信号方式。 (2)方式1:硬件可重触发单稳方式。 (3)方式2:频率发生器方式。 (4)方式3:方波发生器。 (5)方式4:软件触发选通方式。 (6)方式5:硬件触发选通方式。 图(1)8254的内部借口和引脚8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表

1所示。 表1 8254的方式控制字 表2 8254 读出控制字格式 表3 8254 状态字格式 8254 实验单元电路图如下图所示:

五、实验步骤及相应操作结果 1. 计数应用实验 编写程序,将8254 的计数器0 设置为方式3,计数值为十进制数4,用单次脉冲KK1+ 作为CLK0 时钟,OUT0 连接MIR7,每当KK1+按动5 次后产生中断请求,在屏幕上显示字符“M”。 实验步骤: (1)实验接线如图2所示。 (2)编写实验程序,经编译、链接无误后装入系统。 (3)运行程序,按动KK1+产生单次脉冲,观察实验现象。(4)改变计数值,验证8254 的计数功能。

嵌入式定时器基本功能(定时器中断)c语言代码

定时器基本功能实验(定时器中断) 1.实验内容 使用定时器0 实现1 秒定时,控制蜂鸣器蜂鸣。采用中断方式实现定时控制。 备注:EasyARM2131实验板上的系统时钟默认为11.0592MHz;系统中已定义了符号常量Fpclk = 11059200 ; 2.实验步骤 ①启动ADS 1.2,使用ARM Executable Image for lpc2131工程模板建立一个工程 TimeOut_C。 ②在user 组中的main.c 中编写主程序代码。 ③主程序中使用IRQEnable( )使能IRQ 中断。 ④选用DebugInExram 生成目标,然后编译连接工程。 ⑤将LPC2131实验板上的Beep跳线短接到P0.7。 ⑥选择【Project】->【Debug】,启动AXD 进行JTAG 仿真调试。 ⑦全速运行程序,蜂鸣器会响一秒,停一秒,然后再响一秒……依次循环。 3.实验参考程序 程序清单错误!文档中没有指定样式的文字。-1 定时器实验参考程序#include "config.h" #define BEEP 1 << 7 /* P0.7控制BEEP,低电平蜂鸣 */ /***************************************************************************************** ** 函数名称:IRQ_Timer0() ** 函数功能:定时器0中断服务程序,取反LED9控制口。 ** 入口参数:无 ** 出口参数:无 ****************************************************************************************** */ void __irq IRQ_Timer0 (void) { if ((IO0SET & BEEP) == 0) IO0SET = BEEP; /* 关闭BEEP */ else IO0CLR = BEEP; T0IR = 0x01; /* 清除中断标志*/ VICVectAddr = 0x00; /* 通知VIC中断处理结束*/ } /* ***************************************************************************************** ** 函数名称:main() ** 函数功能:使用定时器实现1秒钟定时,控制LED9闪烁。中断方式。

实验报告五 定时器计数器实验

信息工程学院实验报告 课程名称:微机原理与接口技术Array 实验项目名称:定时器/计数器实验实验时间: 班级:姓名:学号: 一、实验目的 1. 掌握8254 的工作方式及应用编程。 2. 掌握8254 典型应用电路的接法。 二、实验设备 PC 机一台、TD-PITD+实验系统一套。 三、实验原理 8254 是Intel 公司生产的可编程间隔定时器。是8253 的改进型,比8253 具有更优良的性能。8254 具有以下基本功能: (1)有 3 个独立的16 位计数器。 (2)每个计数器可按二进制或十进制(BCD)计数。 (3)每个计数器可编程工作于 6 种不同工作方式。 (4)8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz)。 (5)8254 有读回命令(8253 没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。 (6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为: n=f CLKi ÷f OUTi、其中f CLKi 是输入时钟脉冲的频率,f OUTi 是输出波形的频率。 图5-1 是8254 的内部结构框图和引脚图,它是由与CPU 的接口、内部控制电路和三个计数器组成。8254 的工作方式如下述: (1)方式0:计数到0 结束输出正跃变信号方式。 (2)方式1:硬件可重触发单稳方式。 (3)方式2:频率发生器方式。 (4)方式3:方波发生器。 (5)方式4:软件触发选通方式。 (6)方式5:硬件触发选通方式。

图5-1 8254 的内部接口和引脚 8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表5-1~5-3 所示。 表5-1 8254 的方式控制字格式 表5-2 8254 读出控制字格式 表5-3 8254 状态字格式 8254 实验单元电路图如下图所示:

第五章定时器/计数器

第五章MCS-51定时器/计数器及其应用 5.1定时方法概述 在单片机的应用中,可供选择的定时方法主要有: 1.软件定时 软件定时是靠执行一个循环程序以进行时间延迟。软件定时的特点是时间较精确,且不需外加硬件电路。但软件定时要占用CPU的时间,增加CPU开销,因此软件定时的时间不宜太长。 当单片机时钟确定后,每条指令的指令周期是确定的,在指令表中用振荡周期表示出来了。因此,根据程序执行所用的总的振荡周期数和振荡频率,可以较准确的计算,程序执行完所用的时间。软件延时是实际经常采用的一种短时间定时方法。 例4-16 ORG 1000H TIME:MOV R1, #0FAH ;12个振荡周期 L1 :MOV R0, #0FFH ;12个振荡周期 W1 :DJNZ R0 , W1 ;24个振荡周期 DJNZ R1 , L1 ;24个振荡周期 NOP ;12个振荡周期 NOP ;12个振荡周期 RET ;24个振荡周期 计算延时时间: N=12+(12+24×255+24)×250+12+12+24 =1539060个振荡周期 如果?=6MHz T?=1/?=1/6μs Tt=N×T?=1539060×1/6μS=256510μS=0.25651S 调整R 0和R 1 中的参数,可改变延时时间,如果需要加长延时间,可以增加循环嵌入。 当延时时间较长、不便多占用CPU时间的情况下,一般采用定时器方法。

2.内部可编程定时器 这种定时方法是通过对系统时钟脉冲的计数来实现的。计数值通过程序设定,改变计数值,也就改变了定时时间,使用起来既灵活又方便。此外,由于采用计数方法实现定时,因此可编程定时器都兼有计数功能,可以对外来脉冲进行计数。 3.外部扩展专用定时器 对于时间较长的定时,常使用外部扩展专用定时器完成。这种方法定时全部由硬件电路完成,不占用CPU时间。例如:DALLAS 公司的DS1302低功耗时钟芯片.它可以对年月日时分秒计时,并且有闰年补偿功能,它可以很方便地和单片机接口. 5.2 51单片机内部的定时器/计数器 作为基本组成内容,8051单片机共有两个可编程的定时器/计数器,分别称定时 器/计数器0和定时器/计数器1。它们都是十六位加法计数结构,分别由TH 0和TL 及TH 1和TL 1 两个8位计数器组成,它们具有计数和定时两种工作方式以及四种工作模 式。两个特殊功能寄存器(定时器控制寄存器TCON和定时器方式寄存器TMOD)用于确定定时器/计数器的功能和操作方式。图5-1给出了定时器/计数器的结构框图, 它反映了单片机中微处理器、寄存器TCON和TMOD与定时器T 0、T 1 之间的关系。计数 器的输入脉冲源可以是外部脉冲源或系统时钟振荡器,计数器对这两个输入脉冲之一进行递增计数。 顾名思义,MCS-51的每个定时器/计数器都具有定时和计数两种功能。

单片机实验之定时器计数器应用实验二

一、实验目的 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 三、电路原理图 六、实验总结 通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。 七、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。 答:程序见程序清单。

四、实验程序流程框图和程序清单。 1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数, 每计满100个脉冲,则取反P1.0口线状态。 汇编程序: START: LJMP MAIN ORG 0100H MAIN: MOV IE, #00H MOV TMOD, #60H MOV TH1, #9CH MOV TL1, #9CH SETB TR1 LOOP: JNB TF1, LOOP CLR TF1 CPL P1.0 AJMP LOOP END C语言程序: #include sbit Y=P1^0; void main() { EA=0; ET1=0; TMOD=0x60; TH1=0x9C; TL1=0x9C; while(1) { TR1=1; while(!TF1); TF1=0; Y=!Y; } }

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; //低八位装入初值}

定时器实验报告

电子信息工程学系实验报告 课程名称:单片机原理及接口应用Array实验项目名称:51定时器实验实验时间: 班级:姓名:学号: 一、实验目的: 熟悉keil仿真软件、protues仿真软件的使用和单片机定时程序的编写。了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理。掌握中断方式处理定时/计数的工作过程,掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。 二、实验环境: 软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件 三、实验原理: 1、51单片机定时计数器的基本情况 8051型有两个十六位定时/计数器T0、T1,有四种工作方式。MCS-51系列单片机的定时/计数器有几个相关的特殊功能寄存器: 方式控制寄存器TMOD; 加法计数寄存器TH0、TH1 (高八位);TL0、TL1 (低八位); 定时/计数到标志TF0、TF1(中断控制寄存器TCON) 定时/计数器启停控制位TR0、TR1(TCON) 定时/计数器中断允许位ET0、ET1(中断允许寄存IE) 定时/计数器中断优先级控制位PT0、PT1(中断优IP) 2、51单片机的相关寄存器设置 方式控制寄存器TMOD: TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。TMOD各位的含义如下: 1. 工作方式选择位M1、M0 3、51单片机定时器的工作过程(逻辑)方式一 方式1:当M1M0=01时,定时器工作于方式1。

T1工作于方式1时,由TH1作为高8位,TL1作为低8位,构成一个十六位的计数器。若T1工作于定时方式1,计数初值为a,晶振频率为12MHz,则T1从计数初值计数到溢出的定时时间为t =(216-a)μS。 4、51单片机的编程 使用MCS-51单片机的定时/计数器的步骤是: .设定TMOD,确定: 工作状态(用作定时器/计数器); 工作方式; 控制方式。 如:T1用于定时器、方式1,T0用于计数器、方式2,均用软件控制。则TMOD的值应为:0001 0110,即0x16。 .设置合适的计数初值,以产生期望的定时间隔。由于定时/计数器在方式0、方式1和方式2时的最大计数间隔取决于使用的晶振频率fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。 计数初值的计算方法如下,设晶振频率为fosc,则定时/计数器计数频率为fosc/12,定时/计数器的计数总次数T_all在方式0、方式1和方式2时分别为213 = 8192、216 = 65536和28 = 256,定时间隔为T,计数初值为a,则有 T = 12×(T_all – a)/fosc a = T_all – T×fosc/12 a = – T×fosc/12 (注意单位) THx = a / 256;TLx = a % 256; .确定定时/计数器工作于查询方式还是中断方式,若工作于中断方式,则在初始化时开放定时/计数器的中断及总中断: ET0 = 1;EA = 1; 还需要编写中断服务函数: void T0_srv(void)interrupt 1 using 1 { TL0 = a % 256; TH0 = a / 256; 中断服务程序段} .启动定时器:TR0(TR1)= 1。 四、实验内容过程及结果分析: 利用protues仿真软件设计一个可以显示秒表时间的显示电路。利用实验板上的一位led数码管做显示,利用中断法编写定时程序,控制单片机定时器进行定时,所定时间为1s。刚开始led数码管显示9,每过一秒数码管显示值减一,当显示到0时返回9,依此反复。然后设计00-59的两位秒表显示程序。 (1)实现个位秒表,9-0

实验三定时器计数器应用实验一

定时器/计数器应用实验一 设计性试验 2012年11月14日星期三第三四节课 一、实验目的 1、掌握定时器/计数器定时功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200μS的连续方波,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,在P1.1口线上产生周期为240μS的连续方波,在P 1.1口线上接示波器观察波形。 三、电路原理图

四、实验程序流程框图和程序清单及实验结果 /********* 设计要求:(a)单片机的定时器/计数器以查询方式工作, 在P1.0口线上产生周期为200us的连续方波 编写:吕小洋 说明:用定时器1的方式1以查询方式工作 时间:2012年11月10日 ***************/ ORG 0000H 开始 系统初始化

START: LJMP MAIN ORG 0100H MAIN: MOV SP, #2FH CLR EA ;关总中断 CLR ET1 ;禁止定时器1中断 MOV TMOD, #00010000B ;设置定时器1为工作方式1 MOV TH1, #0FFH ;设置计数初值 MOV TL1, #9CH SETB TR1 ;启动定时器 LOOP: JNB TF1, LOOP ;查询计数是否溢出 MOV TH1, #0FFH ;重置计数初值 MOV TL1, #9CH CLR TF1 ;清除计数溢出标志 CPL P1.0 ;输出取反 LJMP LOOP ;重复取反 END

单片机实验-定时器计数器应用实验二教学文稿

单片机实验-定时器计数器应用实验二

定时器/计数器应用实验二 一、实验目的和要求 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、实验内容或原理 1、利用单片机的定时器/计数器以查询方式计数外 部连续周期性矩形波并在单片机口线上产生某一频率的连续周期性矩形波。 2、利用单片机的定时器/计数器以中断方式计数外 部连续周期性矩形波并在单片机口线上产生某一频率的连续周期性矩形波。 三、设计要求 1、用Proteus软件画出电路原理图,单片机的定时 器/计数器以查询方式工作,设定计数功能,对 外部连续周期性脉冲信号进行计数,每计满100 个脉冲,则取反P1.0口线状态,在P 1.0口线上 接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时 器/计数器以中断方式工作,设定计数功能,对 外部连续周期性脉冲信号进行计数,每计满200

个脉冲,则取反P1.0口线状态,在P 1.0口线上 接示波器观察波形。 四、实验报告要求 1、实验目的和要求。 2、设计要求。 3、电路原理图。 4、实验程序流程框图和程序清单。 5、实验结果(波形图)。 6、实验总结。 7、思考题。 五、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续 方波,利用定时器1,对 P1.0口线上波形进行计数,满 50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。 原理图:

程序清单: /*功能:用计数器1以工作方式2实现计数(查询方式)每计满100个脉冲,则取反P1.0口线状态*/ ORG 0000H START:MOV TMOD,#60H MOV TH1,#9CH MOV TL1,#9CH MOV IE,#00H SETB TR1

单片机实验-定时器计数器应用实验二

定时器/计数器应用实验二 一、实验目的和要求 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、实验内容或原理 1、利用单片机的定时器/计数器以查询方式计数外 部连续周期性矩形波并在单片机口线上产生某一 频率的连续周期性矩形波。 2、利用单片机的定时器/计数器以中断方式计数外 部连续周期性矩形波并在单片机口线上产生某一 频率的连续周期性矩形波。 三、设计要求 1、用Proteus软件画出电路原理图,单片机的定时 器/计数器以查询方式工作,设定计数功能,对 外部连续周期性脉冲信号进行计数,每计满100 个脉冲,则取反P1.0口线状态,在P 1.0口线上 接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时 器/计数器以中断方式工作,设定计数功能,对 外部连续周期性脉冲信号进行计数,每计满200 个脉冲,则取反P1.0口线状态,在P 1.0口线上 接示波器观察波形。 四、实验报告要求 1、实验目的和要求。 2、设计要求。 3、电路原理图。 4、实验程序流程框图和程序清单。 5、实验结果(波形图)。 6、实验总结。 7、思考题。 五、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续 方波,利用定时器1,对P1.0口线上波形进行计数,满 50个,则取反P1.1口线状态,在P 1.1口线上接示波器 观察波形。 原理图:

程序清单: /*功能:用计数器1以工作方式2实现计数(查询方式)每计满100个脉冲,则取反P1.0口线状态*/ ORG 0000H START:MOV TMOD,#60H MOV TH1,#9CH MOV TL1,#9CH MOV IE,#00H SETB TR1 LOOP:JBC TF1,LOOP1 AJMP LOOP LOOP1:CPL P1.0

实验三单片机定时计数器实验

实验三单片机定时/计数器实验 1、实验目的 1、学习计数器的使用方法。 2、学习计数器程序的编写。 3、学习定时器的使用方法。 4、学习定时器程序的编写。 5、熟悉汇编语言 2、实验说明 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 3、实验仪器和条件 计算机 伟福实验箱(lab2000P) 4、实验内容 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个统统的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。 3、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 4、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD

用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 5、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 五、思考题 1、使用其他方式实现本实验功能; 2、改为门控方式外部启动计数; 3、如果改为定时间隔为200us,如何改动程序; 4、使用其他方式实现本实验功能,例如使用方式1,定时间隔为10ms,如何改动程序。 六、源程序修改原理及其仿真结果 思考题一:使用其他方式实现本实验功能 方法一: movTMOD, #00000100b;方式0,记数器 movTH0, #0 movTL0, #0 setbTR0;开始记数;由于方式0的特点是计数时使用TL0的低五位和八位 TH0,故用加法器a用“与”(ANL)取TL0的低五位,再用yiwei子程序实现TH0的低三位变为高三位与TL0相加,这样赋给P1时就是八位计数的结果。 Loop: mova,TL0 anla,#1fh

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

51单片机C语言中断程序定时/计数器 程序一 利用定时/计数器T0从P1.0输出周期为1s 的方波,让发光二极管以1HZ闪烁, #include //52单片机头文件 #include //包含有左右循环移位子函数的库#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 //52单片机头文件 #include //包含有左右循环移位子函数的库 #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义

实验四 8253定时计数器应用

实验四8253定时/计数器应用 1.实验目的 掌握8253命令字的设置及初始化和8253的工作方式及应用编程 2.实验内容 8253是INTEL公司生产的通用外围接口芯片之一,它有3个独立的16位计数器,计数 频率范围为0-2MHZ。它所有的计数方式和操作方式都可通过编程控制。其功能是延时 终端、可编程频率发生器、事件计数器、倍频器、实时时钟、数字单稳和复杂的电机控 制器。 3.实训步骤 实现方式0的电路图。设8253端口地址为:40H-43H 要求:设定8253的计数器2工作方式为0 ,用于事件计数,当计数值为5时,发出 中断请求信号,8088响应中断在监视设备上显示M。本实训利用KK1作为CLK输 入,故初值设为5时,需按动KK1键6次,可显示一个 M. 实验七 8253定时/计数器应用实验 一.实验目的 1.熟悉8253在系统中的典型接法。 2.掌握8253的工作方式及应用编程。 二.实验设备

TDN86/88教学实验系统 一台 三.实验内容 (一)系统中的8253芯片 图7-1 8253的内部结构及引脚 1. 8253可编程定时/计数器介绍 8253可编程定时/计数器是Intel公司生产的通用外围芯片之一。它有3个独立的十六位计数器,计数频率范围为0-2MHz。它所有的计数方式和操作方式都通过编程的控制。 8253的功能是:(1)延时中断(2)可编程频率发生器(3)事件计数器 (4)倍频器(5)实时时钟(6)数字单稳(7)复杂的电机控制器

8253的工作方式:(1)方式0: 计数结束中断(2)方式1: 可编程频率发生器 (3)方式2: 频率发生器(4)方式3: 方波频率发生器 (5)方式4: 软件触发的选通信号 (6)方式5:硬件触发的选通信号 8253的内部结构及引脚如图7-1所示,8253的控制字格式如图7-2所示。 图7-2 8253的控制字

实验三 单片机定时计数器应用实验(一)(学生用)

实验三单片机定时/计数器应用实验(一) 一、实验目的 (1)掌握定时/计数器的基本结构、工作原理和工作方式。 (2)掌握定时/计数器的使用和编程方法。 (3)进一步掌握中断处理程序的编写方法。 二、实验器材 (1)HJ-C52开发板一块 (2)计算机一台 (3)Keil C51编程软件 (4)数据下载线 三、实验电路 图2 电路图 四、实验说明 1、51单片机有。两个16位内部定时器/计数器(T/C,Timer/ Counter)。若是计数内部晶振驱动时钟,则是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。定时器实际上也是工作在计数方式下,只不过对固定频率的脉冲计数。由于脉冲周期固定由计数值可以计算出时间,有定时功能。 定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要

功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 2、TMOD (1)M1M0工作方式控制位 (2)C/T 定时器方式或计数器方式选择位 若C/T=1时, 为计数器方式;C/T = 0时, 为定时器方式。 (3)GATE 定时器/计数器运行门控标志位 当GATE=1时, T/C的启动受双重控制,即要求INT0 (或INT1)引脚为高电平且TR0(或TR1 )置 1 时, 相应的T/C才被选通工作。若GATE=0, T/C的启动仅受TR0 (或 TR1)控制,即置 1, T/C就被选通, 而不管 INT0 (或 INT1)的电平是高还是低。 3、TCON TF0、TF1分别是定时器/计数器T0、 T1 的溢出中断标志位, 加法计数器计满溢出时置1, 申请中断, 在中断响应后自动复0。TF产生的中断申请是否被接受, 还需要由中断是否开放来决定。TR1、TR0 分别是定时器/计数器T1、 T0 的运行控制位, 通过软件置 1 后, 定时器/计数器才开始工作, 在系统复位时被清0。 4、初始化 (1)初始化步骤 在使用51系列单片机的T/C前,应对它进行编程初始化,主要是对TCON 和TMOD编程,还需要计算和装载T/C的计数初值。一般完成以下几个步骤: 1)确定T/C的工作方式——编程TMOD寄存 2)计算T/C中的计数初值,并装载到TH和TL; 3)T/C在中断方式工作时,必须开CPU中断和源中断——编程IE寄存器; 4)启动定时器/计数器——编程TCON中TR1或TR0位。 (2)计数初值的计算 1)定时器的计数初值:

《PIC16系列单片机C程序设计与proteus仿真》学习之2----TMR0定时器中断

/**用TMR0延时中断,产生脉冲**/ /** 设定时器TMR0延时10MS,8位pic单片机晶振4MHZ,则指令周期Tcy=1us,计算如下:1.设预分频比为K,则256*K*Tcy=10_000us,得K=39.06,要取大于此值的最小分频比,即K=64 2.计算延时常数X,(256-X)*64*Tcy=10_000us,得X=99.75,四舍五入取整,得X=100. */ #include __CONFIG(0x3f71); #define LED RB0 #define T0_10MS 100 //定义TMR0延时10MS的时间常数 char A; void interrupt ISR(void); void main(void) { RISB0=0; //设定RB0位输出,其余B口未设置,采用上电默认值,为输入 OPTION=0b10000101;//RBPU=1:B口上拉使能,INTEDG=0:下降沿触发,T0CS=0:对内部指令周期计数,T0SE=0:RA4/T0CKI的上升沿计数,PSA=0:预分频分配位给TMRO,PS2PS1PS0=101:TMR0比率为1:64 INTCON=0b10100000;//GIE=1:允许全局中断使能,PEIE=0:禁止外设中断使能,T0IE/TMR0IE=1:允许TMR0溢出中断使能,INTE=0:禁止INT引脚中断使能//RBIE=0:禁止RB口高4位电平变化使能,T0IF/TMR0IF=0:TMR0溢出中断标志位--未溢出 //INTF=0:未发生INT中断,RBIF=0:RB7:RB4引脚的逻辑状态未发生变化 TMR0=T0_10MS; //TMR0赋初值 LED=1; A=1; while(1); //原地等待 } void interrupt ISR(void) { if(T0IF==1) { T0IF=0; TMR0=T0_10MS;//TMR0赋初值,必须 if(A==1) { A=0; LED=0; } else { A=1; LED=1;

C语言的定时器中断程序

C语言的定时器中断程序 #include #define uint unsigned int #define uchar unsigned char uchar code table[]= {0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; uchar aa,num; void main() { aa=0; num=0; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1;

TR0=1; P2=0xf0; P0=0x3f; while(1) { if(aa==10) { aa=0; num++; if(num==10) { num=0; } P2=0xf0; P0=table[num]; } } } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256;

aa++; } void timer0(void) interrupt 1 using 3 //中断部分代码,见下文的释疑{ …………… } 释疑:void Timer0() interrupt 1 using 1 Timer0 是函数名,随便取的 interrupt xx using y 跟在interrupt 后面的xx 值得是中断号,就是说这个函数对应第几个中断端口,一般在51中 0 外部中断0 1 定时器0 2 外部中断1 3 定时器1 4 串行中断 实际上编译的时候就是把你这个函数的入口地址方到这个对应中断的跳转地址 using y 这个y是说这个中断函数使用的那个寄存器组,51里面一般有4组 r0 -- r7寄存器,一共有32个,看看原码、补码就知道。正数的补码是对应的二进制数,符号位为零,负数的补码是它的绝对值对应的二进制数按位取反再加一,符号位为一。

相关文档
最新文档