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

合集下载

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

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

实验三定时器、计数器操作与应用实验报告、实验目的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 xooo1OUT YOOOX0012LD3OR¥0014AN I X0025OUT Y0016OUT TO K509MPS10AHI TO11OUT Y00212MPP13ASD TO14OUT¥00315LD X00316RST CO18LD X00419OUT CO K522LD CO23OUT Y00424END3、时序图r 时序10 □ ©Si正在进荷囲1SL 金冃勖厂手祜r XI广X3厂X5厂K1Q拧应C40 J2fl MIB -380 .360 '340 -33 MW 脚 M 创Q,220,200,13Q -1«-14D ,1如■!» 如也 40 如厂「五、实验步骤1、程序的编辑、检查和修改;2、程序的变换;3、程序的离线虚拟设备仿真测试;4、程序写入PLC;5、用PLC运行程序;6、比较程序的分析结果与实际运行结果。

实验三-定时器、计数器应用实验二

实验三-定时器、计数器应用实验二

实验三-定时器、计数器应用实验二定时器/计数器应用实验二设计性试验2012年11月21日星期三第三四节课一、实验目的1、掌握定时器/计数器计数功能的使用方法。

2、掌握定时器/计数器的中断、查询使用方法。

3、掌握Proteus软件与Keil软件的使用方法。

4、掌握单片机系统的硬件和软件设计方法。

二、设计要求1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

三、电路原理图开始系统初始化装计数初值并启动定时器定时?时间到 输出取反结束清除溢出标志NY 四、实验程序流程框图和程序清单及实验结果 /*********设计要求:(1)单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P1.0口线上接示波器观察波形 编写:吕小洋时间:2012年11月16日18:09:40 ***************/ORG0000HSTART: LJMP MAINORG0100H MAIN: MOV SP, #2FH CLR EA ;关总中断CLR ET1;禁止定时器1中断MOV TMOD, #01100000B ;设置计数器1为工作方式2 MOV TH1, #9CH ;设置计数初值 MOVTL1, #9CHSETB TR1;启动计数器LOOP: JNB TF1, LOOP ;查询计数是否溢出 CPL P1.0 ;输出取反CLRTF1;清除计数溢出标志 LJMP LOOP;重复取反END//C语言编程//#include "reg52.h"sbit P1_0=P1^0;void main(){TMOD=0x50; /*T/C1工作在定时器方式1*/ TR1=1; /*启动T/C1*/for(;;){TH1=(65536-100)/256; /*装载计数初值*/TL1=(65536-100)%256;do /*查询等待TF1置位*/{ }while(!TF1);P1_0=!P1_0; /*定时时间到P1.0取反*/TF1=0; /*溢出标志清零*/}}启动定时器等待中断输出取反中断返回开始开始中断初始化TMOD初始化计数初值初始化结束/*********设计要求:(2)单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态在P1.0口线上接示波器观察波形编写:吕小洋时间:2012年11月16日18:48:04 ***************/ORG0000HSTART: LJMP MAIN ORG001BHLJMP TTC1ORG0100H MAIN: MOV SP,#2FH SETB EA ;开总中断 SETB ET1;定时器1允许中断MOV TMOD, #60H ;设置T1为工作方式2 MOV TH1, #38H ;设置计数初值 MOVTL1, #38HSETB TR1;启动定时器 HERE: LJMP HERE;等待中断/****中断服务程序****/ORG0200H TTC1: CPL P1.0;输出取反RETI;中断返回END//C语言编程//#include"reg52.h"sbit P1_0=P1^0;void main(){EA=1; /*开总中断*/ET1=1; /*开T/C1中断*/TMOD=0x50; /*T/C1工作在定时器方式1*/ TH1=(65536-200)/256; /*装载计数初值*/TL1=(65536-200)%256;TR1=1; /*启动T/C1*/while(1);}void timer1() interrupt 3 /*T/C1中断服务程序入口*/ {P1_0=!P1_0; /*定时时间到P1.0取反*/TH1=(65536-200)/256; /*装载计数初值*/TL1=(65536-200)%256;}开始中断初始化TMOD初始化、定时 计数初始化、启动T0 T1定时?时间到 输出取反清除溢出标志N Y输出取反中断返回开始结束五、实验总结通过本次试验,我掌握了定时器/计数器定时功能的使用方法,能够利用定时器/计数器以查询、中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数。

单片机电子教案(定时器部分)

单片机电子教案(定时器部分)

程序清单
#include<reg51.h> sbit led=P1^0; unsigned char i; void main() { TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; while(1) { if(TF0) { TF0=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; i++; if(i==20) { led=!led; i=0; } } } }
1位秒表程序清单
#include<reg51.h> unsigned char m,j; unsigned char ledtable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void main() { TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; P1=ledtable[j]; while(1) { if (TF0==1) { TF0=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; m++; if(m==20) { m=0; j++; if(j>9) { j=0; } P1=ledtable[j]; } }
4.定时器/计数器控制寄存器TCON
控制寄存器TCOD
用于中断
5.定时/计数器初始化
① 确定工作方式—对TMOD赋值。如“TMOD = 0X10”,表明定时 器1工作在方式1,且工作在定时器方式。 ② 预置定时或计数的初值—直接将初值写入TH0、TL0或TH1、 TL1。 ③启动定时/计数器工作—将TR0或TR1置“1”。 ④查询TF0=1?,若为,表明定时时间到,做相应处理。

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

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

一、实验目的1、掌握定时器/计数器计数功能的使用方法。

2、掌握定时器/计数器的中断、查询使用方法。

3、掌握Proteus软件与Keil软件的使用方法。

4、掌握单片机系统的硬件和软件设计方法。

二、设计要求1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

三、电路原理图6、实验总结通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。

七、思考题1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。

答:程序见程序清单。

4、实验程序流程框图和程序清单。

1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态。

汇编程序:ORG 0000HSTART: LJMP MAINORG 0100HMAIN: MOV IE, #00HMOV TMOD, #60HMOV TH1, #9CHMOV TL1, #9CHSETB TR1LOOP: JNB TF1, LOOP CLR TF1CPL P1.0AJMP LOOPENDC语言程序:#include <reg52.h>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;}}2、定时器/计数器以中断方式工作,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态。

定时器计数器实验报告

定时器计数器实验报告

定时器计数器实验报告简介:定时器是一种用来产生、计数和处理时间信号的计时装置。

在数字电路中,定时器主要分为内部定时器和外部定时器两类,内部定时器是在单片机内部实现的,外部定时器则是通过外部电路实现的。

计数器则是一种用来计数的电子元件,根据不同的使用场合和要求,计数器可以分为多种类型。

在嵌入式系统中,定时器计数器应用广泛,例如在时钟、延时、计数等方面都有很大的作用。

实验目的:1. 学习定时器和计数器的基本原理及应用。

2. 熟悉定时器和计数器在单片机中的编程方法。

3. 掌握通过定时器和计数器实现延时和计数功能的方法。

实验器材:1. STM32F103C8T6开发板2. ST-LINK V2下载器3. 电脑实验内容:一、实验1:使用定时器和计数器实现延时功能1. 在Keil C中新建一个工程,并编写以下程序代码:```#include "stm32f10x.h"void TIM2_Int_Init(u16 arr,u16 psc){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure ;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);TIM_TimeBaseStructure.TIM_Period = arr;TIM_TimeBaseStructure.TIM_Prescaler=psc;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode _Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM2, ENABLE);}void TIM2_IRQHandler(void){if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {TIM_ClearFlag(TIM2, TIM_FLAG_Update);GPIO_WriteBit(GPIOB,GPIO_Pin_12,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_12)));}}int main(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure);TIM2_Int_Init(9999,7199);while (1);}```2. 将STM32开发板连接到电脑,并下载程序到开发板中。

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

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

、实验目的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 口线上接示波器观察波形。

tJI-JTTALlRSTIPO 1 Z^Cil POiPD 3/jfiD3 IPCLW/MH FD-5/^CB”血P2 O/jtS PNUMa P 2 .2/AJOPI F3JD/RKDP1 且1门池F1 2P1 .3P3^/|NT1 卩11 .4P3.4Z1D P1.5 P3 .5fT1 尸1P3.0AA/RP1I.7 P3.?/RD17三、电路原理图 18HQAT69C52P 2 .4/A12P2 5/A13 P2P2 .7XA1«5蝕丘2Q 37答:程序见程序清单四、实验程序流程框图和程序清单1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,MAIN: MOV IE, #00HMOV TMOD, #60H MOV TH1, #9CH MOV TL1, #9CH SETB TR1LOOP: JNB TF1, LOOP CLRTF1 CPL P1.0 AJMP LOOP ENDC 语言程序:#in elude <reg52.h> sbit Y=P1A0; void mai n() {EA=0; ET1=0; TMOD=0x60;TH1=0x9C;计数数值初始化中断断 艙化!l[启动 =时器1 器一、r动 启N箱 * 1溢断清计数溢出标志—1 ~ P1.(口线取反TL 仁 0x9C; while(1) { TR1=1; while(!TF1); TF1=0; Y=!Y; } }2、定时器/计数器以中断方式工作,对外部连续周期性脉冲信号进行计数, 每计满200个脉冲,则取反P1.0 口线状态。

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

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

实验二定时器/计数器实验一、实验目的1、掌握数码管动态驱动方式的工作原理;2、掌握单片机定时器中断服务程序的编写方法;3、掌握基于单片机定时器中断调度方式的数码管动态显示驱动程序的编写方法。

二、实验内容及要求单片机通过P1 端口连接独立数码管,INT0 引脚(P3.2)和T0 引脚(P3.4)各连接一个独立按键。

通过按键向T0 引脚输入负脉冲,单片机对其进行计数,并将计数值显示在独立数码管上。

观察门控位(GATE)对计数过程的影响。

三、实验设备硬件:PC 机,nKDE-51 单片机实验教学系统;软件:Keil C51 集成开发环境,FlashMagic 单片机程序烧写软件。

四、实验原理及步骤MCS-51 定时器/计数器的结构、功能及设置方法,请参考教材相关内容。

步骤如下:1、创建新项目:Project—New Project—命名、存储—CPU类型(philips P89C52X2)2、创建新程序:编译程序—完成后保存为“.c”格式3、添加程序:Target1—Source Group—add……(程序)4、检测程序:Project—Build Target5、选择烧录程序的方式(右键点target1--opption):output—Creat Execulate:Dubug Information Browse、Creat HexDebug 右侧选择use “Keil Monitor-51 Driver”6、选择程序执行点:在Debug程序烧路后,在开始执行的程序断点上鼠标右键—Set Program Counter7、Go执行五、实验过程1. 电路连接CPU 板上的P3.2 和P3.4(J4 或J8)和基本IO 板上的独立按键SW1 和SW3(J6)相连;CPU板上的P1(J2 或J6)和基本IO 板上的独立数码管LED1(J5)相连,连接方向为P1.0 和数码管的SEG_A 对齐。

2. 程序设计按照实验要求,实验参考程序如下:#include <reg51.h>unsigned char code CharCode[] ={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};void main(void){unsigned char cc,count;TMOD = 0x05; // GATE=0,C/#T=1,Mode=2,工作于计数器模式TH0 = 0;TL0 = 0;TR0 = 1; // T0 开始运行,开启计数器P1 = CharCode[0]; // 显示 0count = 0;cc = TL0; // 设置变量初始值while(1) // 按一次 SW3,TL0 加 1{if(cc != TL0) // 计数值有变化{ cc = TL0; // 更新本次计数器值count ++; // 计数值+1if(count >= 10) count = 0; // 计数值>=10 则从 0 开始P1 = CharCode[count]; // 送数码管显示}}}3. 验证结果在Keil 中建立新工程,将上述程序代码加入工程,编译链接后,将生成的.HEX 文件烧写到单片机中,烧写完毕后复位单片机系统,按下SW3,观察数码管显示的计数值的变化,验证运行结果和设计要求是否相符。

实验二定时器计数器实验

实验二定时器计数器实验

实验二定时器计数器实验1.实验目的①掌握8051的定时器、中断系统编程方法;②了解定时器的应用、实时程序的设计和调试技巧。

2.预习要求①理解定时器的四种工作方式的异同点;②理解TMOD寄存器中GATE、C/T控制位的作用;③理解定时器中断服务程序的响应过程;④理解定时器实现精确定时的方法;⑤认真预习本节实验内容,设计出器件之间的实验连接线,自行编写程序,填写实验报告。

3.实验设备计算机1台;ZDGDTH-1型80C51实验开发系统1套;2号导线、8P数据线若干条;4.基础型实验内容①如图2-1所示,假设采用P1.0口控制外部LED,用拨动开关控制外部中断,用二号导线将D2区80C51/C8051F020MCU模块的 P1.0、P3.2口分别与A 5区八位逻辑电平显示模块的L0、C6区八位逻辑电平输出K0相连。

在Keil环境运行以下程序,分别拨动K0于高低电平位置,观察实验现象,并说明所发生实验现象的原因。

图2-1 外部中断及LED显示电路ORG 0000HLJMP MAINORG 000BHLJMP TIMER0ORG 0030HMAIN: CLR P1.0MOV TMOD,#0AHMOV TL0,#50HMOV TH0,#50HSETB TR0SJMP $TIMER0: CPL P1.0RETIEND②用二号导线将80C51/C8051F020 MCU模块的P1.0与八位逻辑电平显示模块的任意一只发光二极管相连,全速运行下列程序,发光二极管隔一秒点亮一次,点亮时间为一秒。

流程图为:主程序框图定时中断子程序图源程序:Tick equ 10000 ; 10000 x 100us = 1sT100us equ 20 ; 100us时间常数(6M)C100us equ 5h ; 100us记数单元LEDBuf BIT 00HLED BIT P1.0org 0000Hljmp Startorg 000BHLJMP T0IntORG 0100HT0Int: push PSWmov a, C100us+1jnz Goondec C100usGoon: dec C100us+1mov a, C100usorl a, C100us+1jnz Exit ; 100us 记数器不为0, 返回mov C100us, #HIGH(TICK);#high(Tick)mov C100us+1, #LOW(TICK);#low(Tick)cpl LEDBuf ;100us 记数器为0, 重置记数器,取反LEDExit: pop PSWretiStart: mov TMOD, #02h ; 方式2, 定时器mov TH0, #t100usmov TL0, #t100usmov IE, #10000010b ; EA=1, IT0 = 1setb TR0 ; 开始定时clr LEDBufclr P1.0mov C100us, #high(Tick)mov C100us+1, #low(Tick)Loop: mov c, LEDBufmov P1.0, csjmp Loopend5.设计型实验内容①编程使第1~4和5~8发光二极管循环点亮的时间分别为0.25s、0.5s、0.75s、1s。

实验二 单片机定时器和计数器编程

实验二 单片机定时器和计数器编程

仲恺农业工程学院实验报告纸信息科学与技术学院(院、系)电子信息工程专业161 班单片机原理及接口技术课实验二单片机定时器/计数器编程一、实验目的1、掌握单片机定时器/计数器的工作方式;2、掌握单片机定时器/计数器的编程方法。

二、实验内容1、学习单片机定时器/计数器的工作方式、初始化以及应用等;2、利用单片机定时器/计数器编写程序驱动开发板上的LED灯按一定规律工作。

基本要求:单号:利用定时器0控制LEDB闪烁,闪烁频率为1Hz。

双号:利用定时器1控制LEDG闪烁,闪烁频率为2Hz。

三、实验设备1、STC单片机开发板;2、PC机以及串口线。

四、实验分析及关键代码#include <reg51.h>sbit LEDB=P2^4;unsigned char counter;main(){TMOD=0x01; //T0为方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256;//初值EA=1; //允许中断ET0=1;TR0=1; //启动定时while(1);}timer0() interrupt 1 using 1 {TH0=(65536-50000)/256;TL0=(65536-50000)%256;//重置初值counter++;if(counter==10){counter =0;LEDB=!LEDB;}}主程序TMOD定义定时器种类、THO和TLO定义定时器计数初值、EA=1为CPU允许中断、ETO=1为定时器允许中断------以上为定时器的初始化。

TRO=1为定时开始。

计算方面:机器周期=12/fosc=1us1HZ。

则1s内亮灭。

则定时0.5秒次数=0.5*10^6/1=500000。

大于最大计数65536。

则多次计算,以counter计数。

每次50000,计数10次。

10次满,则counter归零,LED灯取反。

初值=65536-50000。

实验二 单片机定时器计数器编程

实验二  单片机定时器计数器编程

实验二单片机定时器/计数器编程一、实验目的1、掌握单片机定时器/计数器的工作方式;2、掌握单片机定时器/计数器的编程方法。

二、实验内容1、学习单片机定时器/计数器的工作方式、初始化以及应用等;2、利用单片机定时器/计数器编写程序驱动开发板上的LED灯按一定规律工作。

基本要求:利用定时器1控制LEDB闪烁,闪烁频率为2Hz。

提高要求:读懂教材定时器/计数器的应用实例4和5,在实验室开发板上采用分模块设计的方法编程实现以下两个任务之一:1、控制LEDB闪烁,2.5秒一个周期,亮0.5s,灭2s,周而复始。

2、将教材例5对P1.0和P1.1的控制,改为对LEDB和LEDG的控制,时序不变。

三、实验设备1、STC单片机开发板;2、PC机以及串口线。

四、实验分析及关键代码(1)利用定时器1控制LEDB闪烁,闪烁频率为2Hz。

实验分析:控制LEDB闪烁,频率为2Hz,即0.5s。

解决思路:定时器工作方式选0x01,计数器初值为(65536-50000),循环10次即为0.5s。

代码如下:#include<reg51.h>#define uchar unsigned char sbit A=P2^4;uchar i=0;void main (){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;while(1){while(TF0){TF0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;i++;if(i==10){A=!A;i=0;}}}}(2)控制LEDB闪烁,2.5秒一个周期,亮0.5s,灭2s,周而复始。

解决思路:设置两个循环,计数器初值设为(65536-50000),亮灯循环10次,灭灯循环40次。

代码如下:#include<reg51.h>#define uchar unsigned charsbit A=P2^4;uchar i=0;void main (){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;while(1){while(TF0){TF0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;i++;if(i==10){A=1;}if(i==50){A=0;i=0;}}}}五、实验总结对软件及计数器的操作及代码不太熟悉,多次查询课本及上网查找资料后懂得计数器工作方式及计数操作,其他问题迎刃而解。

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

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

实验二单片机之定时器/计数器应用一、实验目的1.学习89C51内部定时计数器的使用和编程方法2.进一步掌握中断处理程序的编写方法二、实验说明1、51单片机有。

两个16位内部定时器/计数器(T/C,Timer/ Counter)。

若是计数内部晶振驱动时钟,则是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。

定时器实际上也是工作在计数方式下,只不过对固定频率的脉冲计数。

由于脉冲周期固定由计数值可以计算出时间,有定时功能。

定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。

TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。

TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

2、TMOD1) M1M0工作方式控制位2) C/T 定时器方式或计数器方式选择位若C/T=1时, 为计数器方式; C/T = 0时, 为定时器方式。

3)GATE 定时器/计数器运行门控标志位当GATE=1时, T/C的启动受双重控制,即要求INT0 (或INT1)引脚为高电平且TR0(或TR1 )置1 时, 相应的T/C才被选通工作。

若GA TE=0, T/C的启动仅受TR0 (或TR1)控制,即置1, T/C就被选通, 而不管INT0 (或INT1)的电平是高还是低。

3、TCONTF0、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位。

实验二 定时器及计数器实验

实验二 定时器及计数器实验
项目
16位计数器
32位计数器
计数方向
顺数
顺/倒可切换使用(看上表)
设定值
1~32767
-2147483648~+2147483647
指定的设定值
常数K或数据寄存器
同左但是数据寄存器要一对(2个)
当前值的变化
顺数后不变化
顺数后变化(循环计数器)
输出接点
顺数后保持动作
顺数后保持动作,倒数复位
复位动作
扫行RST命令时,计数器的当前值为零,输出接点恢复
如果使用累计定时器,在线圈驱动断开后,定时器复位,但输出触点保持原来的状态。
试将上面例子中和定时器T0改为T250,观察程序运行结果。
(3)输入上面例程中的程序,观察程序运行结果。
2、计数器
计数器有16位向上计数和32位向上/向下计数用的两种。向上/向下计数器的计数方向由特殊辅助继电器8299~M8234的ON/OFF来指定。
(1)计数器的编号(C)如下表所示(编号按10进制分配)
16位向上计数器
0~32767
32位向上/向下计数器
-2147483648~+2147483647
一般用
停电保持用
停电保持专用
特殊用
FX2N系列
C0~C99,
100点
C100~C199,
100点
C200~C219,
20点
C220~C234,
15点
计数器有16位向上计数和32位向上/向下计数用的两种。向上/向下计数器的计数方向由特殊辅助继电器8299~M8234的ON/OFF来指定。
32位计数器增计数/减计数切换用的辅助继电器编号
计数器No.
方向切换

单片机定时器计数器实验报告

单片机定时器计数器实验报告

单片机定时器计数器实验报告篇一:单片机计数器实验报告计数器实验报告㈠实验目的1. 学习单片机内部定时/计数器的使用和编程方法;2. 进一步掌握中断处理程序的编程方法。

㈡实验器材1. 2. 3. 4. 5.G6W仿真器一台 MCS—51实验板一台 PC机一台电源一台信号发生器一台㈢实验内容及要求8051内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数,使用8051的T1作定时器,50ms 中断一次,看T0内每50ms来了多少脉冲,将计数值送显(通过LED发光二极管8421码来表示),1秒后再次测试。

㈣实验说明1. 本实验中内部计数器其计数器的作用,外部事件计数器脉冲由P3.4引入定时器T0。

单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样,同时这就决定了输入波形的频率不能超过机器周期频率。

2. 计数脉冲由信号发生器输入(从T0端接入)。

3. 计数值通过发光二极管显示,要求:显示两位,十位用L4~L1的8421码表示,个位用L8~L5的8421码表示4. 将脉搏检查模块接入电路中,对脉搏进行计数,计算出每分钟脉搏跳动次数并显示㈤实验框图(见下页)程序源代码 ORG 00000H LJMP MAINORG 001BH AJMP MAIN1 MAIN:MOV SP,#60HMOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOV TH1,#3CHMOV TL0,#00H;T0的中断入口地址 ;设置T1做定时器,T0做计数器,都于方式1工作 ;装入中断次数 ;装入计数值低8位 ;装入计数值高8位MOV TH0,#00HSETB TR1 ;启动定时器T1 SETB TR0 ;启动计数器T0 SETB ET1 ;允许T1中断 SETB EA ;允许CPU中断 SJMP $;等待中断MAIN1: PUSH PSW PUSH ACC CLR TR0CLR TR1 MOV TL1,#0B0H MOV TH1,#3CHDJNZ 20H,RETUNT MOV 20H ,#14HSHOW: MOV R0,TH0 MOV R1,TL0MOV A,R1 MOV B,#0AH DIV ABMOV C,ACC.3MOV P1.0,C MOV C,ACC.2 MOV P1.1,C MOV C,ACC.1 MOV P1.2,C MOV C,ACC.0 MOV P1.3,CMOV A,B MOV C,ACC.3MOV P1.4,C MOV C,ACC.2 MOV P1.5,C MOV C,ACC.1 MOV P1.6,C MOV C,ACC.0 MOV P1.7,C ;保护现场;装入计数值低8位;装入计数值高8位,50ms;允许T1中断;未到1s,继续计时 ;1s到重新开始;显示计数器T0的值;读计数器当前值 ;将计数值转为十进制;显示部分,将A中保存的十位赋给L0~L3 将B中保存的各位转移到A中 ;将个位的数字显示在L4~L7上;RETUNT:MOV TL0,#00H;将计数器T0清零 MOV TH0,#00HSETB TR0SETB TR1POP ACCPOP PSWRETI ;中断返回在频率为1000HZ时,L0~L7显示为50;频率为300HZ时,L0~L7显示为15,结果正确,程序可以正确运行。

定时器计数器应用实验

定时器计数器应用实验

单片机原理及应用实验报告实验五定时器/计数器应用实验一、实验目的1、学习8051内部定时器/计数器的使用方法和编程方法2、掌握定时器0作为中断源时的中断处理程序的编程方法二、实验原理8051单片机内部有两个16为可编程定时器/计数器:T0和T1。

16为是指它们都是有16个触发器构成,故最大计数模值为216-1。

可编程是指它们的工作方式由指令来设定,或者当计数器用,或者当定时器用,并且计数(定时)的范围也可以由指令来设置。

这种控制功能是通过定时器方式控制寄存器TMOD来完成的。

工作在定时方式时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟;工作在计数方式时,时钟脉冲(计数脉冲)由T0和T1(即P3.4和P3.5)输入。

定时器在计到规定的定时值时可以向CPU发出中断申请,从而完成某种定时的控制功能。

定时器控制寄存器TCON用来负责定时器的启动、停止以及中断管理。

程序一:定时器/计数器0按定时模式和方式2工作,产生周期为1秒的方波,方波由P1.0口输出。

此程序用中断方式。

弄清IE寄存器的作用及矢量地址000BH 的含义。

1、内部计数器用作定时器时,是对机器周期计数。

每个机器周期的长度是12个振荡器周期。

因为实验系统的晶振是6MHZ,本程序工作于方式2,即8位自动重装方式定时器, 定时器100US中断一次, 所以定时常数的设置可按以下方法计算:机器周期=12÷6MHZ=2US(256-定时常数)×2US=100US定时常数=206. 然后对100US中断次数计数10000次,就是1秒钟。

2、在中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。

3、实验电路及连线4、实验框图5、汇编语言源程序: TICK EQU 10000 ; 10000 X 100US = 1ST100US EQU 256-50 ; 100US 时间常数(6M)C100US EQU 30H ; 100US 记数单元LEDBUF EQU 0LED EQU P1.0LJMP STARTORG 000BH ;中断程序入口T0INT:PUSH PSWMOV A, C100US+1JNZ GOONDEC C100USGOON:DEC C100US+1MOV A, C100USORL A, C100US+1Y主程序框图 定时中断子程序框图开始 置T0中断工作方式 设置定时常数 设置初始状态位 设置秒计数值 定时中断入口保护现场 秒计数值减1重新设置秒计数值状态位取反 恢复现场中断返回 是否到1秒 是 否 中断允许 输出状态位 等待中断 连线 连接孔1 连接孔2 1 P1.0 L0JNZ EXIT ; C100US 记数器不为0, 返回MOV C100US, #HIGH(TICK)MOV C100US+1, #LOW(TICK)CPL LEDBUF ; C100US 记数器为0, 重置记数器; 取反LEDEXIT:POP PSWRETISTART: ; 主程序入口MOV TMOD, #02H ; 方式2, 定时器0MOV TH0, #T100US ; 计算T/C 的计数初值,并装载到TH 和TL MOV TL0, #T100USMOV IE, #10000010B ; EA=1, IT0 = 1SETB TR0 ; 开始定时CLR LEDBUFCLR LEDMOV C100US, #HIGH(TICK)MOV C100US+1, #LOW(TICK)LOOP:MOV C, LEDBUFMOV LED, CLJMP LOOPEND程序二:定时器/计数器0按计数器模式和方式2工作,对P3.4(T0)引脚进行计数。

实验二、定时器计数器编程

实验二、定时器计数器编程

实验二、定时器/计数器编程
一、实验目的
1、掌握定时器的基本编程方法。

2、掌握计数器的基本编程方法。

二、实验内容
设计单片机程序,用T0作定时器产生周期为1秒的方波在P3.7输出,用示波器显示该信号,用T1作计数器对该脉冲进行计数并在数码管上显示。

三、实验原理
电路原理图如下,所需元件为:AT89C52、7SEG-BCD、LED
当晶振为12M时机器周期为1微秒,要实现500毫秒的定时,需要500000个机器周期,对于51单片机内部定时器来说,最大只能定时65536个机器周期,能定时65.535毫秒,不能满足要求,为此必须借助软件循环进行扩展,当中断定时为10毫秒时,扩展50倍可得到500毫秒的定时,当到达500毫秒时,在输出P3.7输出一个脉冲信号。

让T1工作于计数器模式,就可以对外部引脚P3.5的脉冲进行计数,所以将
P3.5与P3.7相连,能对P3.7进行计数。

对计数值进行显示需要读出T1的计数值,送到P1在数码管上显示。

有关定时计数器的特殊功能寄存器,请参考课本。

四、实验预习
1、学习有关定时器和计数器的知识。

2、提前编写程序,写出预习报告。

五、实验报告
1、总结出实验的详细步骤。

2、写出调试正确的程序及框图。

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

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

实验三定时器、计数器操作与应用实验报告、实验目的1、了解和熟悉FX 系列可编程序控制器的结构和外部接线方法;2、了解和熟悉GX Developer Version 7.0 软件的使用方法;3、掌握可编程序控制器梯形图程序的编制与调试。

二、实验要求仔细阅读实验指导书中关于编程软件的说明,复习教材中有关内容,析程序运行结果。

三、实验设备1 、FX 系列可编程序控制器一只2 、开关量输入/ 输出实验箱3、计算机4、编程电缆一套5、GX Developer Version 7.0 软件一套注意:1) 开关量输入/输出实验箱内的钮子开关用来产生模拟的开关量输入信号;2) 开关量输入/输出实验箱内的LED 用来指示开关量输出信号;3) 编程电缆在连接PLC 与计算机时请注意方向。

四、实验内容1 、梯形图2、梯形图程序0LD xooo1OUT YOOO2LD X0013OR¥0014AN I X0025OUT Y0016OUT TO K509MPS10AHI TO11OUT Y00212MPP13ASD TO14OUT¥00315LD X00316RST CO18LD X00419OUT CO K522LD CO23OUT Y00424END3、时序图1SL 金 冃勖 厂手祜 r XI 广 X3 厂 X5 厂 K1Q 拧应 Cill-t-ll-r 1—I4JTillIL」IT--1五、 实 验步骤1 、 程序的编辑、检查和修改;2 、 程序的变换;3 、 程序的离线虚拟设备仿真测试; 4、 程序写入 PLC ; 5、 用 PLC 运行程序;6、 比较程序的分析结果与实际运行结果。

六、 实 验报告1、 实验梯形图程序的编写;2、 梯形图程序的理论分析与结果;3、 梯形图程序的实际运行结果; 4 、 结论。

七、 实验心得r 时序 10□ ?SiLJ D正在进荷囲 XDU40 J2fl MIB -380 .360 '340 -33 MW 脚 M 创 Q ,220,200 ,13Q -1? -14D"Tlr-.Ll-t-1!-z?E,1如■!? 如 也 40 如厂「通过这样一次实验,我对GX Developer Version 7.0 软件的使用方法更加的熟悉了,也了解到在实验中需要我们集中精力,仔细认真地完成■七、思考题1、自锁的作用?起保停电路和置位、复位有相同的作用,都是具有记忆功能的电路,经验编程法主要就是使用起保停电路实现。

实验六 单片机定时计数器实验2

实验六  单片机定时计数器实验2
微机原理与接口技术实验
实验六 单片机定时/计数器实验
一、实验目的 1、熟悉51单片机内部定时/计数器的功能与特性 2、掌握汇编语言定时/计数器程序设计方法 3、掌握C语言定时/计数器程序设计方法
回目录
上一页
下一页


微机原理与接口技术实验
二、实验器材 1、计算机1台。 2、单片机实验箱1台 3、TKS仿真器 1台
回目录
上一页
下一页


微机原理与接口技术实验 (4)单片机输入输出C51程序设计与修改 (课外完成)
修改程序,使用定时器T1实现125ms定时 回目录 上一页 下一页 结 束
微机原理与接口技术实验 (5)修改汇编和C51程序,移植到学习板 (课内完成) 学习板发光二极管送0亮,实验箱送
1亮,因为要求闪烁,故而可以忽略
“8”,要求每过1秒“8”字左移一位,循环不断。(课内)
3、计数器实验1:CT0计数满3之后(即输入了3个外部脉
冲之后),使显示器上显示字符“8”左移一位。如此不断
重复。(课内)
4、程序移植实验 修改以上程序,移植到学习板(课内) 5、利用Proteus软件仿真以上三个实验(课外) 回目录 上一页 下一页 结 束
修改1:用T1定时2秒。 修改2:显示0-F左移。
回目录
上一页
下一页


微机原理与接口技术实验 输入输出移植实验_C51程序 (课外完成)
修改1:用T1定时2秒。 修改2:显示0-F左移。
回目录
上一页
下一页


微机原理与接口技术实验 输入输出移植实验_C51程序 (课外完成)
回目录
上一页
下一页
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机实验-定时器计数器应用实验二
定时器/计数器应用实验二
一、实验目的和要求
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
AJMP LOOP
END
/*功能:用计数器1以工作方式2实现计数(中断方式)每计满200个脉冲,则取反P1.0口线状态*/
ORG 0000H
START:LJMP MAIN
ORG 001BH
LJMP LOOP1
ORG 0030H
MAIN:MOV SP,#30H
MOV TMOD,#60H
MOV TH1,#38H
MOV TL1,#38H
SETB EA
SETB ET1
SETB TR1
HERE:LJMP $
ORG 001FH
LOOP1:CPL P1.0
RETI
END
原理图:
/*功能:用定时器0(工作方式2)在P1.0口线上产生周期为200us的连续方波用定时器1对P1.0口线上波形进行计数,满50个则取反P1.1口线状态在P1.1口线上接示波器观察波形*/
ORG 0000H
START:LJMP MAIN
ORG 001BH
LJMP TT1
ORG 0030H
MAIN:MOV SP,#60H
MOV TMOD,#62H
MOV IE,#88H
MOV TH0,#0CEH ;设置计数初值
MOV TL0,#0CEH
MOV TH1,#0CEH
MOV TL1,#0CEH
SETB TR0 ;启动定时
SETB TR1
SETB P1.0
LOOP:JBC TF0,LOOP1 ;查询计数溢出 AJMP LOOP
LOOP1:CPL P1.0
AJMP LOOP ;重复循环HERE:LJMP $
TT1:CPL P1.1
RETI
END。

相关文档
最新文档