173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

实验七单片机定时器基础

htxw 2023-03-14 资讯中心 14 ℃

单片机定时器实验.

你的注释有的有错误,现重新更正如下

ORG 0000H

AJMP START

ORG 001BH ;外中断1入口地址

AJMP INT_T1

ORG 0100H

START:

MOV SP,#60H;设置堆栈深度

MOV TMOD,#10H ;置T1为方式1

MOV TL1,#00H ;延时50mS的时间常数

MOV TH1,#4BH

MOV R0,#00H;表格计数器

MOV R1,#20;1s计数器即20*50ms=1000ms=1s,得到所需要定时时间1s

SETB TR1;打开定时器1

SETB ET1:允许定时器1中断

SETB EA ;开总中断

SJMP $:等待

INT_T1: ;T1中断服务子程序

PUSH ACC ;保护现场

PUSH PSW

PUSH DPL

PUSH DPH

CLR TR1 ;关定时器

MOV TL1,#00H ;重新载入计数初值

MOV TH1,#4BH

SETB TR1 ;再次打开定时器

DJNZ R1,EXIT;判断是否到达20个50ms,如果没有则继续循环

MOV R1,#20 ;重新载入1s计数值

MOV DPTR,#DATA ;置常数表首地址 MOV A,R0 ;置常数表偏移量

MOVC A,@A+DPTR ;读常数表

MOV P1,A ;这里中的A决定是什么花色,也就是显示什么

INC R0;指向下一个数

ANL 00,#07H;

EXIT:

POP DPH ;恢复现场

POP DPL

POP PSW

POP ACC

RETI

LED显示常数表

DATA: DB 0FAH,0F5H,0AFH,05FH,0AAH,55H,00H,0FFH

END

总的来说显示什么样的花色是由你提前计算好,然后将对应的值放入表格中。比方说,你的led是共阴极接法,那么你要L1和L3亮就要给p1口送00000110B,这个值放到表格中等你用的时候从表格中取出来就行了

单片机定时器应用实验程序

我来试试吧,用汇编语言编写:

ORG 0

JMP MAIN

MAIN:SETB P1.0

ACALL DELAY

CLR P1.0

ACALL DELAY

JMP MAIN

DELAY:MOV R1,#10 ;500ms的延时子程序

MOV TMOD,#1 ;定时器0方式1

AGAIN:MOV TL0,#LOW(65536-50000) ;装载计数初值的低位

MOV TH0,#HIGH(65536-50000) ;装载计数初值的高位

SETB TR0 ;启动

LOOP1:JBC TF0,LOOP2 ;查询并清除溢出位

JMP LOOP1

LOOP2:DJNZ R1,AGAIN

CLR TR0

RET

END

刚才我拿51的测试板编译了一下,下载后可以正常运行,你直接拷贝应该就能用,嘻嘻

有关单片机定时器的使用和定时器的介绍

导语:单片机,其实就是一种用于集成电路中的芯片,而单片机的定时器是一个电子元件,它是一个稳定的计数器,是由单片机本身提供的。它也是单片机上的一个连接部件,可以用来编程。定时器还有一个功能显而易见就是可以用来定时,同时,它也可以用来统计一些脉冲信号。下面就来介绍下单片机定时器的使用的相关内容。

  定时器的结构

定时器是由两个寄存器组成的,其中一个寄存器是用来确定计数器的工作形式和功能的,另外一个计时器是用来控制单片机的启动和停止的,同时它也是设置溢出的一个标志。

计数过程

每来一个脉冲计数器加1,当加到计数器为全1(即FFFFH)时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。

定时应用

用作定时器:此时设置为定时器模式,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t 。

计数运用

用作计数器:此时设置为计数器模式,外部事件计数脉冲由T0或T1引脚输入到计数器。每来一个外部脉冲,计数器加1。但单片机对外部脉冲有基本要求:脉冲的高低电平持续时间都必须大于1个机器周期。

定时器的使用

定时器的使用主要分为五个步骤,首先是要打开中断的可以允许的位置,主要是对IE寄存器的控制,然后选择定时器的工作的形式,定时器的一个格式是TMOD的形式,主要有四种方式。第一种计数的方式是十三位加一的形式,第二种是十六位加一的计数器,第三种的定数器被分解成两部分,一个是八位的寄存器,另外一个是八位的计数器。第三步就是要为定时器进行赋值,首先定时器的初值是等于计数器模值减去计数器记满的招满值,而定时器的初值是等于模值减去预定时的时间与单片机时钟周期的十二倍。接下来就是启动计时器,当TRO为0的时候,停止TO开始计数,而TRO值为1的时候,就启动TO进行计数。当TFO为0的时候,没有TO的中断,这时是没有硬件复位,而当值为1的时候有TO溢出中断的情况。当TR1为0的时候,停止TI进行计数,而值为1的时候开启T1进行计数。

当TF1为0的时候,没有T1的中断,为1 的时候会出现T1的溢出中断情况。当IE1的值为0的时候时,出现硬件的复位而当其值为1的时候出现中断。当IT1的值为0的时候INT1出现电平触发的情况,也就是软件复位,而当值为1的时候,INT1的负边沿会出现触发的情况。当IE0的值为0时会出现硬件复位,而当IEO的值为1的时候,INT0上会有中断的情况。当 IT0的值为0时,INT0会发生电平触发,也就是软件复位,同时INT0的负边沿触发。最后一步就是计数器中断入口程序。

定时器/计数器的工作方式

方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

方式1的计数位数是16位,由TL0(TL1)作为低8位、TH0(TH1)作为高8位,组成了16位加1计数器 。

方式2为自动重装初值的8位计数方式。

在方式2下,当计数器计满255(FFH)溢出时,CPU自动把TH 的值装入TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。

方式3只适用于定时器/计数器T0,定时器T1方式3时相当于TR1=0,停止计数。

工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。

总而言之,定时器的使用可以为单片机的功能增加一些性能上的增强。所以,合理的运用定时器将会帮助我们使用单片机。以上就是有关单片机定时器的使用的相关内容,希望能对大家有所帮助!

土巴兔在线免费为大家提供“各家装修报价、1-4家本地装修公司、3套装修设计方案”,还有装修避坑攻略!点击此链接:【;wb】,就能免费领取哦~

单片机定时器和中断初始化流程是什么样的啊?还有就是TMOD和SCON的初值是怎么计算出来的?

至于那些书上都有的理论知识我就不说了,就简单的说一下吧,楼主可以想简单点

定时器工作的流程可以按照这个顺序(以51为例用定时器0方式一产生50毫秒的定时)

1、确定使用哪个定时器,使用哪种方式,这一步通过TMOD设置,TMOD的低四位是设置定时器0的,高四位是用来设置定时器1的,其中的M0,M1是用来设置定时器工作在哪种方式,GATE一般用不要设置,C/T是选择计数模式还是定时模式的,如:TMOD = 0X01,就说明定时器0工作在方式1。

2、接下来就要设置定时的时间,用定时器定时50毫秒,可以用这种方式TH0 = (65535 - 50000) / 256,TL0 = (65535 - 50000) % 256;可以这样理解:因为这是定时器的初值,也就是说计数脉冲就是在这个数的基础上向上递增,到达65535后就溢出产生中断,至于为什么是对256取整,和取余的话楼主自己先琢磨吧, 不懂再hi我;

3、第三步就要打开中断了,使用IE寄存器,我一般是对各个位进行单独设置,这样看起来感觉更好,首先打开总中断EA = 1,这一步是所有中断所必须的,然后打开定时器0中断,ET0 =1;

4、这时准备工作都准备好了就要开始启动定时器了,使用TCON寄存器,TR0 = 1,到现在为止就实现了一个50毫秒的定时了;

总结一下:TMOD = 0X01; TH0 = (65535 - 5000) / 256; TL0 = (65535 - 50000) % 256; EA = 1; ET0 = 1; TR0 = 1,至于那个中断函数我就不写了,要注意的是方式0 ,1, 3是不能自动重装的,所以得在中断函数中重新对TH0 ,TL0赋初值,楼主说的那个SCON寄存器就是用于串口的,定时器会用了的话,串口也就会了的,希望能够帮助楼主了

实验七单片机定时器基础的介绍就聊到这里吧,感谢您花时间阅读,谢谢。

本文标签:实验七单片机定时器基础

<