单片机实验三 定时计数器实验
实验三-定时器、计数器应用实验二
实验三-定时器、计数器应用实验二定时器/计数器应用实验二设计性试验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输出取反中断返回开始结束五、实验总结通过本次试验,我掌握了定时器/计数器定时功能的使用方法,能够利用定时器/计数器以查询、中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数。
定时器计数器实验报告
定时器计数器实验报告简介:定时器是一种用来产生、计数和处理时间信号的计时装置。
在数字电路中,定时器主要分为内部定时器和外部定时器两类,内部定时器是在单片机内部实现的,外部定时器则是通过外部电路实现的。
计数器则是一种用来计数的电子元件,根据不同的使用场合和要求,计数器可以分为多种类型。
在嵌入式系统中,定时器计数器应用广泛,例如在时钟、延时、计数等方面都有很大的作用。
实验目的: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)进一步掌握中断处理程序的编写方法。
二、实验器材(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、TCONTF0、TF1分别是定时器/计数器T0、 T1 的溢出中断标志位, 加法计数器计满溢出时置1, 申请中断, 在中断响应后自动复0。
TF产生的中断申请是否被接受, 还需要由中断是否开放来决定。
TR1、TR0 分别是定时器/计数器T1、 T0 的运行控制位, 通过软件置 1 后, 定时器/计数器才开始工作, 在系统复位时被清0。
单片机实验三-定时计数器实验报告
南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合■设计□创新实验日期:实验成绩:实验三定时计数器实验(一)实验目的1. 熟练掌握STC型开发板的使用方法和注意事项;2. 掌握应用USB_ISP烧录过程;3. 掌握单片机中断原理;4. 掌握定时器的初始化和定时模式编程。
(二)设计要求采用定时器0/1做16位自动重装(方式0), 中断频率为1000HZ,中断函数从P1.7/ P1.6/ P4.7取反输出500HZ方波信号。
如果由于频率问题实验现象无法观察,请在中断程序中想办法实现。
(三)实验原理1. 开发板部分电路示意图2. 定时器的使用在应用定时/计数器资源时,按照以下几个步骤进行:(1)确定工作方式,对方式控制寄存器TMOD赋值(2)根据要求计算初值并装入寄存器THx、TLx,实际定时时间Tc=(M-X)×Tp(3)根据需要开放定时/计数器中断,即EA、ETx置1(4)启动定时/计数器开始工作,即TRx位置1(5)编写中断服务程序或查询处理方式程序定时器/计数器T0的工作方式0:当M1,M0为00时,定时器/计数器被设置为工作方式0,此时为13位计数器,由TLx(x=0,1)的低5位和THx的高8位构成。
TLx低5位溢出则向THx进位,THx计数溢出则把TCON中溢出标志位TFx置1。
3. 单片机中断系统当中断请求源发出中断请求时,如果中断请求被允许的话,单片机暂时中止当前正在执行的主程序,转到中断处理程序处理中断服务请求。
中断服务请求处理完后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。
定时器/计数器T0计数溢出发出的中断请求,中断请求标志为TF0。
(四)实验设备装有Keil4和STC-ISP的电脑、STC实验箱及连接线。
(五)实验结果实验结果与预期一致,因为输出频率太高,肉眼无法分辨,LED一直保持常量状态,所以设定了中断100次,输出一个方波信号,这样P1.7引脚对应的LED灯闪烁,频率为5Hz,肉眼可见。
定时计数器实验
实验四、定时/计数器实验一、实验目的1、学习51单片机内部定时计数器的使用和编程方法。
2、进一步掌握中断处理程序的编程方法。
二、实验内容1、定时器实验(1)基本部分:用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生反转。
(2)扩展部分:利用P1口控制发光二极管LED按照下面方式工作:a)从左到右奇数LED灯依次点亮;b)从右到左偶数LED灯依次点亮;c)按照以上步骤重复运行,要求灯亮的时间为1s,由定时器T1实现。
2、计数器实验8501内部定时计数T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。
将其数值按二进制数在P1口驱动LED灯上显示出来。
三、实验连线1、基础部分:JP8(P1)和JP1(LED)用8PIN排线连接起来。
计数器实验还需用杜邦线连接P3.5(JP9)与独立键(JP5).2、扩展部分:实验1的扩展部分选用P2口,即JP11(P2)和JP1(LED)用8PIN排线连接起来。
四、实验步骤与说明1、定时器实验(1)基本部分a)编写程序:由于系统的晶振是12MHZ,即机器周期为1微秒,选择定时器工作在方式1,设定定时时间为50ms,则要循环20次,计算其初值为(65536—50000/1)。
接着编写程序如下:#include<reg51.h>unsigned char i;void main(){P1=0;TMOD=0x01;EA=1; ET0=1; TR0=1;i=20;TH0=(65536-50000)/256; TL0=(65536-50000)%256;while(1);}void timer() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;i--;if(i==0){ P1=~P1;i=20;}}b)将程序烧入单片机内,观察现象。
(2)扩展部分按要求写出如下程序并烧入单片机,程序如下:#include<reg51.h>#include<intrins.h>unsigned char i=0;unsigned char sum;void main(){P2=0xfe;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1);}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;sum++;if(sum==20){sum=0;i++;if(i<4){P2=_crol_(P2,2);}if(i==4){P2=0x7f;}if((i>4) && (i<8)){P2=_cror_(P2,2);}if(i==8){P2=0xfe;i=0;}}}编译生成hex文件烧入单片机观察现象。
第3次《单片机原理与应用》-定时计数器
定时器初始化编程:
使用定时器工作之前,先写入控制寄存器, 确定好定时器工作方式。 初始化编程格式:
MOV TMOD,# 方式字 MOV THx,#XH MOV TLx,#XL (SETB EA ) (SETB ETx) SETB TRx ;选择方式 ;装入Tx时间常数 ;开Tx中断 ;启动Tx定时器
TMOD,#01H ;设置T0为方式1定时
ACALL PT0M0
HERE: AJMP HERE
;调用初始化子程序PT0M0
;原地循环,等待中断
22
PT0M0: MOV
TL0,#0CH
;T0初始化,装初值的低8位
MOV
TH0,#0FEH
;装初值的高8位
;允许T0中断 ;总中断允许 ;启动T0 ;中断子程序,T0重装初值 ;P1.0的状态取反
本例,主程序用一条转至自身的短跳转指令来代替。
21
参考程序如下:
ORG 0000H ;程序入口 ;转主程序 ;T0中断入口 ;转T0中断处理程序IT0P ;主程序入口 ;设堆栈指针
RESET: AJMP MAIN ORG 000BH
AJMP IT0P ORG MAIN: MOV MOV 0100H SP,#60H
2)中断方式:初始化后执行其它任务,中断服务程序处理溢出。 ORG 0000H LJMP MAIN ORG 000BH(001BH) ;Tx中断入口 LJMP PTS MAIN: … ;初始化后执行其他程序 PTS: … ;溢出中断服务程序 MOV THx,#XH ;重装时间常数 MOV TLx,#XL RETI
即T0每隔1ms产生一次中断,CPU响应中断后,在中断服务 子程序中对P1.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 0000HORG 0100HMAIN: MOV SP, #2FHCLR EA ;CLR ET1 ;MOV TMOD, #00010000B ;设置定时器1MOV TH1, #0FFH ;设置计数初值MOV TL1, #9CHSETB TR1 ;LOOP: JNB TF1, LOOP ;查询计数是否溢出MOV TH1, #0FFH ;重置计数初值MOV TL1, #9CHCLR TF1 ;CPL P1.0 ;输出取反LJMP LOOP ;重复取反END/*********设计要求:(b)单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200us的连续方波编写:吕小洋说明:用定时器0的免装初值方式2以中断方式工作 时间:2012年11月10日 ***************/ORG0000HSTART: LJMP MAIN ORG000BHLJMP TTC0ORG 0100H MAIN: MOVSP,#2FH SETB EA ; SETB ET0;定时器0 MOV TMOD, #02H ;设置T0为工作方式2 MOV TH0, #88H ;设置计数初值 MOVTL0, #88HSETB TR0;HERE: LJMP HERE;等待中断/****中断服务程序****/ORG0200HTTC0: CPLP1.0;输出取反 RETI;中断返回END五、实验总结通过本次试验,我掌握了定时器/计数器定时功能的使用方法,能够利用定时器产生特定脉宽的波形,掌握了定时器/计数器的中断、查询使用方法。
定时器实验计数器实验
实验五:定时器实验实验是利用片内定时器和计数器进行定时,定时时间为1s。
单片机的P1.0脚接一个发光二极管,控制发光二极管闪烁,时间间隔为1s实验程序:ORG 0000HORG 0000HAJMP MAINORG 000BHAJMP TOINTORG 0030HMAIN:MOV TMOD,#01H;T0定时方式1MOV TH0,#3CHMOV TL0,#0B0H;装50ms初始值MOV IE,#82H;总中断开关,T0开关SETB TR0;启动T0MOV R7,#14H;循环次数,1sSJMP $TOINT:MOV TH0,#3CHMOV TL0,#0B0H;重装50ms初始值DJNZ R7,NEXT;判断R7是否等于0,等于零灯亮CPL P1.0 ;P1.0取反MOV R7,#14H ;重装循环次数NEXT:RETI ;中断返回END把汇编程序编译生成hex机器码文件,加载进AT89C51中,进行仿真。
proteus电路图如下:仿真图如下每隔一秒钟绿灯闪一次实验六:计数器实验一.实验要求利用单片机内定时器、计数器T0的计数模式,对T0引脚上的按键开关按下次数进行显示计数。
实验程序如下:ORG 0000H;程序起始地址AJMP MAIN;主程序地址入口ORG 000BHAJMP INT;中断入口地址ORG 0100HMAIN:MOV A,#00H ;赋A初始值0MOV TMOD,#06H ;设置计时方式2,T0计时器MOV IE,#82H ;设置中断开关MOV TH0,#0FFH ;保存初始值FFHMOV TL0,#0FFH ;放置初始值SETB TR0 ;启动计时器T0LP:SJMP LPINT:INC A ;中断MOV P1,ARETIEND把汇编程序编译生成hex机器码文件,加载进AT89C51中,进行仿真。
proteus电路图如下:开始仿真,截图如下:5.60秒倒计时钟程序如下:ORG 0000HAJMP MAINORG 000BHAJMP TOINTORG 0030HMAIN:MOV R6,#59;秒单位初始值59 MOV TMOD,#01H;定时器T0方式1MOV TH0,#3CHMOV TL0,#0B0H;装入初始值50msMOV IE,#82H;设置中断SETB TR0 ;启动T0MOV R7,#14H ;循环次数20次,时间一秒SJMP $TOINT:MOV TH0,#3CHMOV TL0,#0B0H;重装初始值50msDJNZ R7,NEXT ;R7是否等于0CJNE R6,#00H,EX ;R6不等于00H,跳到EX,等于00H,就从59开始显示MOV R6,#59 ;设置初始显示值59MOV R7,#14H ;循环次数20次,时间一秒MOV A,R6MOV B,#10DIV ABMOV P2,AMOV P3,BNEXT:RETIEX:DEC R6MOV R7,#14HMOV A,R6MOV B,#10DIV ABMOV P2,A;取秒单位十位数输出P2MOV P3,B;取秒单位个位数输出P3RETIEND把汇编程序编译生成hex机器码文件,加载进AT89C51中,进行仿真。
实验3、定时器计数器实验
实验三、定时器/计数器实验一、实验目的1、了解MCS-51单片机定时/计数器的基本结构、工作原理和工作方式。
2、掌握定时/计数器工作在定时器和计数器两种方式下的编程方法。
3、掌握数码管显示电路的驱动原理及编程方法。
二、实验内容1、编写单片机程序,用T0作定时器产生周期为1秒的方波(用查询方式编程),从P3.6,P3.7口输出,将P3.7接到示波器显示该方波波形;用T1作计数器对从P3.6输出的方波进行计数,计数结果通过P1口输出到发光二极管显示。
(计算机仿真)2、编写单片机程序,用T0作定时器产生周期为1秒的方波(用查询方式编程),从P3.6,P3.7口输出,将P3.6输出的方波接到P3.5口通过T1作计数器对该方波进行计数,计数值由LED显示,用存储示波器显示P3.7输出的方波。
(实验台验证)3、设计一个60秒计时器,秒计时结果用两位LED数码管显示。
(计算机仿真)4、选做:设置按键控制计时器的启、停及清零功能。
三、实验原理电路原理图如下,所需元件为:AT89C52、LED-YELLOW、7SEG-COM-CAT-GRN 当晶振为22.1184M时,一个机器周期为0.54251微秒,要实现500毫秒的定时,需要921659个机器周期,对于51单片机内部定时器来说,最大只能定时65536个机器周期,定时35.535毫秒,不能满足要求,为此必须借助软件循环进行扩展。
实现的方法是:用定时器中断定时10毫秒,再用软件扩展50倍即可得到500毫秒的定时。
当到达500毫秒时,对P3.7输出取反,可得到周期为1秒的方波。
选择模式1,每个10ms中断一次,设初值为X,根据下面公式,可求得X 的值。
(216-计数初值)*机器周期=定时时间36161010101184.2212)2(-⨯=⨯⨯-X 有关定时计数器的特殊功能寄存器,请参考课本。
选择模式1,每个10ms 中断一次,设初值为X ,根据下面公式,可求得X 的值。
实验三单片机定时计数器实验
实验三单片机定时/ 计数器实验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, #0movTL0, #0setbTR0开始记数;由于方式0的特点是计数时使用TL0的低五位和八位TH0,故用加法器a用与”(ANL)取TL0的低五位,再用yiwei子程序实现TH0 的低三位变为高三位与TL0相加,这样赋给P1时就是八位计数的结果。
实验三 定时计数器实验
实验三定时/计数器实验一、实验目的:1、学习80C51内部计数器的使用和编程方法。
2、掌握中断处理程序的编写方法。
二、实验设备:微机、KEIL2、Proteus 7.10三、实验原理:1.定时常数的确定定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率的1/12。
本实验中时钟频率为6.0 MHZ,现要采用中断方法来实现0.5秒延时,要在定时器0中设置一个时间常数,使其每隔0.1秒产生一次中断,CPU响应中断后将R0中计数值减一,令R0=05H,即可实现0.5秒延时。
时间常数可按下述方法确定:机器周期=12÷晶振频率=12/(6×106)=2us设计数初值为X,则(216-X)×2×106=0.1,可求得X=15536化为十六进制则X=3CB0H,故初始值为TH1=3CH,TL1=B0H2.初始化程序包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入定时器中。
由于只有定时器中断,IP便不必设置。
3.设计中断服务程序和主程序中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。
主程序则用来控制发光二极管按要求顺序燃灭。
四、实验内容由80C51内部定时器0按方式1工作,即作为16位定时器使用,每0.1秒钟T1溢出中断一次。
P1口的P1.0~P1.7分别接发光二极管的L1~L8。
要求编写程序模拟一循环彩灯。
彩灯变化花样可自行设计。
要求给出的变化花样为:①L1、L2、…L8依依点亮;②L1、L2、…L8依依熄灭;③L1、L2、…L8交差亮8次。
④L1、L2、…L8全亮、全灭8次。
各时间间隔为0.3秒。
让发光二极管按以上规律循环显示下去。
五、实验步骤:1.电路设计:P1.0~P1.7分别接发光二极管L1~L8即可。
2.编写程序实现所要求的功能。
七、实验报告1.在实验报告中请将实验中所设计电路图、编写的实验程序及程序框图附上。
实验二 中断控制实验实验三 定时/计数器实验
《单片机原理与接口技术》第3章单片机集成功能模块实验实验二中断控制实验实验三定时/计数器实验班级:学号:姓名:成绩:指导老师:日期:2017年11月6日实验二中断控制实验一、实验目的学习中断控制技术的基本原理,掌握中断程序的设计方法。
二、实验原理1、参照实验电路连线图接线,在8051的P1口上接8个发光二极管,在INT0(P3.2)接入触发脉冲电路,利用下降沿触发产生中断。
2、编制主程序,使P1口的8个发光二极管同时亮,延时一会儿在同时熄灭,延时时间自定。
外来脉冲每触发一次,主程序便中断一次,在中断服务子程序中,使P1口的8个发光二极管在某一时刻只有一个点亮,并向左循环移动。
三、仪器设备:1、PC计算机一台。
2、Dais-386PRO+实验系统一套。
四、实验内容:1、定时器中断单片机集成的定时器可以产生定时中断,利用定时器T0,编写程序,使P1.0控制的发光二极管L0每隔1秒交替点亮或熄灭。
实验步骤:1)按图3-2-1连接实验电路,参考程序:A51\3_2_1.ASM;2)编写程序,经编译、链接无语法错误后装载到实验系统;3)运行程序,观察发光二极管L0,应每隔1秒交替点亮或熄灭;4)实验完毕后,应使用暂停命令中止程序的运行。
2、外部中断L0P1.0发光二极管单片机图3-2-2 实验接线图SP单脉冲P3.2L0P1.0发光二极管单片机图3-2-1 实验接线图P3.2(INT0)连接单脉冲发生器,编写程序,每按一次脉冲产生一次中断,使P1.0控制的发光二极管L0交替点亮或熄灭。
1)按图3-2-2连接实验电路,参考程序:A51\3-2-2.ASM;2)编写程序,经编译、链接无语法错误后装载到实验系统;3)运行程序,每按动一次单脉冲按钮令发光二极管L0交替点亮或熄灭;4)实验完毕后,五、实验结果讨论:定时器中断:由于实际晶振为11.0592MHz,所以延时10ms时设置的初值为DBFFH,本程序运用了两种方法设置初值,一种是用HIGH(65536-COUNT)取高8位,一种是(65536-COUNT)/256右移8位来取高八位,然后用中断服务子程序来进行100次循环来延时1s 并且CPL指令取反来实现灯的明暗交替变换。
89C51实验三定时计数器实验
成绩实验报告实验名称定时计数器实验实验班级电子08-2姓名何达清学号12(后两位)指导教师实验日期2010年11月12日实验三定时/计数器实验一、实验目的1、掌握数码管的静态和动态扫描显示法。
2、掌握单片机定时计数器的初始化编程。
3、学会运用定时计数器进行单片机控制程序设计。
二、实验内容1、见图一,利用静态扫描显示法,让数码管显示数字6 。
(数码管元件7SEG-MPX1-CA,共阳极数码管)0RG 0000HMOV P0,#82HEND2、见图一,利用静态扫描显示法,让数码管显示数字0。
间隔时间1秒后,显示数字1。
间隔时间1秒后,显示数字2。
………间隔时间1秒后,显示数字F。
间隔时间1秒后,显示数字0 。
周而复始,循环不息。
图一程序如下:ORG 0000HLJMP MAINMAIN:MOV R0,#0FFHLOOP:INC R0CJNE R0,#16,SHOWMOV R0,#0SHOW:MOV A,R0MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,AACALL DELAY1SAJMP LOOPDELAY1S: ;误差0usMOV R7,#0A7HDL1:MOV R6,#0ABHDL0:MOV R5,#10HDJNZ R5,$DJNZ R6,DL0DJNZ R7,DL1NOPRETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH END3、见图二,利用动态扫描显示法,,让数码管显示数字01234567 。
(数码管元件7SEG-MPX8-CA-BLUE,共阳极数码管)图二程序如下:ORG 0000HAJMP MAINORG 000BHAJMP TEFORG 33HMAIN:MOV SP,#60HMOV R4,#0MOV R3,#80HMOV TMOD,#02HMOV TH0,#06HMOV TL0,#06HSETB ET0SETB EASETB TR0LP:CJNE R4,#8,NEXTMOV R4,#0NEXT:MOV A,R4MOV DPTR,#TABMOVC A,@A+DPTRMOV R5,AAJMP LPTEF:PUSH ACCMOV A,R3RL AMOV P1,AMOV P2,R5INC R4MOV R3,APOP ACCRETITAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH END4、见图二,利用动态扫描显示法,,让数码管显示数字12.34.56,每隔一秒,数字变化相当于时间计时器。
实验三 定时器实验 实验报告
课程名称:单片机实验题目:实验三定时实验学生姓名:专业:电子信息科学与技术班级:学号:指导教师:张涛实验三 定时器实验一、实验目的1、掌握单片机系统定时器断的原理及使用方法。
二、实验原理 (一)、单片机定时器/计数器的结构 1.定时器/计数器组成框图8051单片机内部有两个16位的可编程定时器/计数器,称为定时器0(T0)和定时器1(T1),可编程选择其作为定时器用或作为计数器用。
此外,工作方式、定时时间、计数值、启动、中断请求等都可以由程序设定,其逻辑结构如图所示。
_____INT1(P3.3)_____INT0(P3.2)T1(P3.5)T0(P3.4)图 8051定时器/计数器逻辑结构图由图可知,8051定时器/计数器由定时器 T0、定时器T1、定时器方式寄存器TMOD 和定时器控制寄存器TCON 组成。
2.定时/计数器的方式寄存器和控制寄存器定时/计数器的初始化通过定时/计数器的方式寄存器TMOD 和控制寄存器TCON 完成。
1)定时/计数器方式寄存器TMODTMOD 为T1、T2的工作方式寄存器,其格式如下:TMOD D7 D6 D5 D4 D3 D2 D1 D0(89H) TMOD 的低 (1(2)T /C :功能选择位。
0/C =时,设置为定时器工作方式;1/C =时,设置为计数器工作方式。
(3)GATE :门控位。
当GA TE=0时,软件控制位TR0或TR1置1即可启动定时器;当GATE=1时,软件控制位TR0或TR1须置1,同时还须0INT (P3.2)或1INT (P3.3)为高电平方可启动定时器,即允许外中断0INT 、1INT 启动定时器。
TMOD 不能位寻址,只能用字节指令设置定时器工作方式,高4位定义T1,低4位定义T0。
复位时,TMOD 所有位均置0。
2)定时器/计数器控制寄存器TCONTCON 的作用是控制定时器的启动、停止,标志定时器的溢出和中断情况。
定时器控制字TCON 的格式如下:TCON (88H ) 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H(1) TCON.7 TF1:定时器1溢出标志位。
单片机实验三 定时器实验
实验三:定时器实验一、实验要求实验目的:了解MCS-51单片机中定时器/计数器的基本结构、工作原理和工作方式,掌握工作在定时器模式下的编程方法。
实验内容:设单片机的晶振频率f=12Mhz,使用T0定时100ms,在p1.2引脚产生周期为200ms的方波信号,并通过示波器观察P1.2的输出波形。
二、实验原理定时器和外部计数方式选择位C/TC/T=0为定时器方式,采用晶振频率的1/12作为计数器的计数脉冲,几对及其周期进行计数。
若选择12MHz晶振,则定时器的计数频率为1MHz。
C/T=1为计数方式,采用外部引脚的输入脉冲作为计数脉冲。
当T0或T1输入发生由高到低的负跳变时,计数器加1,其最高计数频率为晶振频率的1/24。
工作方式2当TMOD的M1、M0未为10是,计时器/计数器工作在工作方式2.当方式0、方式1用于循环重复定时计数时,计数器全部为0,下一次计数还得重新装入计数初值,这样编程麻烦,而且影响定时时间的精度。
方式2是能自动重新装入计数初值的8位计数器,可以解决这个问题。
方式2把16位计数器分成两个8为的计数器,低8为作为计数器使用,高8位用以保存计数初值,当低8位计数产生溢出是,将TF0或TF1置1,同时又将保存在高8位的计数初值重新自动装入低8位计数器汇总,又继续计数,循环重复。
计数初值X=2^8-t*f osc/12;其中t为定时时间。
初试化编程是,TH0和TL0(或TH1和TL1)都装入次X值。
方式2适用于作较为精确的脉冲信号发生器,尤其适用于串口波特率发生器。
三、程序设计1、程序流程图图 1 定时器实验流程图2、程序代码ORG 0100HMAIN: MOV A, 0HMOV TMOD, #61H ;外部引脚脉冲计数,工作方式2MOV TL1, #0FFHMOV TH1, #0FFH ;计数1次,以CP1.0为脉冲连接计数器CPL P1.0SETB TR1;LP1: CPL P1.2LP2: MOV TL0, #0B0HMOV TH0, #3CH ;一次计数50ms,P1.0的脉冲周期为100msSETB TR0LP3: JBC TF0, LP4SJMP LP3LP4: CPL P1.0JBC TF1, LP1SJMP LP2END四、程序验证1、在Proteus中连接电路图如下:图 2 定时器实验电路图2、将程序导入A T89C523、按键观察电路中示波器波形:图 3 示波器上显示的周期为200ms的方波示波器1格为50ms,故产生的波形周期为200ms。
定时计数器实验-单片机
单片机实验报告G A T EC /TM 1M 0G A T EC /TM 1M 0TH1TL1TH0TL0T1方式T1引脚T0引脚机器周期脉冲内部总线TMODTCON 外部中断相关位T F 1T R 1T F 0T R 0实验五 定时/计数器实验一、实验目的1.学习8051内部定时/计数器的工作原理及编程方法; 2.掌握定时/计数器外扩中断的方法。
二、实验原理8051单片机有2个16位的定时/计数器:定时器0(T0)和定时器1(T1)。
它们都有定时器或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。
T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。
作计数器时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。
计数的最高频率一般为振荡频率的1/24。
定时/计数器的结构:定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。
TMOD 是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON 是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
计数器初值的计算:设计数器的最大计数值为M(根据不同工作方式,M 可以是213、216或28),则计算初值X的公式如下:X=M-要求的计数值(十六进制数)定时器初值的计算:在定时器模式下,计数器由单片机主脉冲fosc经12分频后计数。
因此,定时器定时初值计算公式:X=M-(要求的定时值)/(12/fosc)80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。
TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。
❖工作方式寄存器TMOD:工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。
其格式如下:GATE:门控位。
GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。
单片机 实验三中断及定时器实验
实验三:中断及定时器实验一、实验目的:1、弄清中断的概念、基本原理,掌握中断技术的应用2、了解中断初始化的方法,中断向量安装和中断服务子程序的设计方法。
3、了解定时/计数器的工作原理及MCS51单片机的定时器内部结构4、掌握时间常数计算方法5、掌握定时器初始化方法和定时中断程序设计方法二、实验内容:定时器实验1、这个是一个电子钟走时程序,利用定时器T0产生50ms中断,中断计数器中断20次为1秒,利用秒信号进行电子钟计时。
先读懂下面程序段,然后编辑、编译程序,并在伟福仿真器上模拟调试该程序。
程序清单如下:COUNT EQU 7FHCOUNT1 EQU 7EHS_MEM EQU 73HM_MEM EQU 72HH_MEM EQU 71HORG 0000HLJMP MAINORG 000BHLJMP INT_T0 ;“*1”MAIN: MOV SP,#2FHMOV TMOD,#BMOV TH0,#03CH ;50毫秒中断时间常数MOV TL0,#0BHMOV IE,#B ;开放T0MOV IP,#0MOV S_MEM,#0MOV M_MEM,#0MOV H_MEM,#0MOV COUNT,#20SETB TR0;______________________________________________________ W AIT:NOPSJMP W AITINT_T0: MOV TL0,#0BHMOV TH0,#3CHDJNZ COUNT,EXT_T0MOV COUNT,#20 ;恢复中断计数器INC S_MEM ;“*2”MOV A,S_MEMCJNE A,60,EXT_T0MOV S_MEM,#0INC M_MEMMOV A,M_MEMCJNE A,#60,EXT_T0MOV M_MEM,#0INC H_MEMMOV A,H_MEMCJNE A,#13,EXT_T0MOV H_MEM,#0EXT_T0: RETI2、按下列要求修改程序或回答问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三定时/计数实验
一、实验目的
1、理解单片机的定时/计数原理,掌握定时/计数程序的编写方法。
2、掌握定时/计数器在定时、计数、频率测量等方面的应用。
3、学会使用PROTEUS中VSM虚拟示波器观察波形。
二、实验设备
计算机一台;单片机实验仪一台;Keil C51和Proteus软件。
三、实验内容
利用定时计数器1,编程实现从P1.0、P1.1、P1.2三个I/O引脚分别输出频率为
0.25Hz、50 Hz、1k Hz的方波信号。
利用P1.0、P1.1、P1.2三个I/O引脚所接的三个LED
灯或利用示波器进行观察。
已知fosc=12MHz。
四、实验电路图
图1 8路LED灯控制原理图
五、实验接线
P1.0、P1.1、P1.2三个I/O引脚接J12的三个引脚(即三个LED灯)。
六、思考题
1、简要写出实现该实验的方案(要有必要的计算)。
2、单片机定时/计数器的“加一”操作和单片机运行主程序是同时工作(并行工作)的,还是有先后顺序的?单片机运行中断程序和运行主程序是同时工作(并行工作)的,还是有先后顺序的?
3、单片机定时/计数器的定时与计数的区别是什么,软件上分别应如何设置?
4、在该实验的基础上,输出的三路信号的占空比可以分别为1/2,1/3,1/4吗?
七、实验报告要求
实验目的
1、实验目的
2、实验设备
3、实验内容
4、实验流程图
5、实验源程序
7、思考题解答
8、实验总结及心得体会
1。