AT89C51单片机定时器中断模式和查询设置

合集下载

第6章AT89C51定时器计数器

第6章AT89C51定时器计数器
用12MHz频率的晶体 ,则可输入500KHz的外部脉冲。 输入信号的高 、低电平至少要保持一个机器周期 。如图6- 12
所示 , 图中Tcy为机器周期。
图6- 12
6.4 定时器/计数器的编程和应用 4种工作方式中 ,方式0与方式1基本相同 , 由于方式0是为兼容
MCS-48而设 ,初值计算复杂 ,在实际应用中 ,一般不用方式 0 ,而采用方式1。 6.4. 1 方式1应用 例6- 1 假设系统时钟频率采用6MHz ,要在P1.0上输出一个周期 为2ms 的方波 ,如图6- 13所示。
M1 、M0=01 , 16位的计数器。
图6-5 6.2.3 方式2 计数满后自动装入计数初值。
M1 、M0= 10 ,等效框图如下:
图6-6
TLX作为常数缓冲器 , 当TLX计数溢出时 ,在置“ 1 ”溢出标志 TFX的同时 ,还自动的将THX中的初值送至TLX ,使TLX从初 值开始重新计数。
定时器/计数器的方式2工作过程如图6-7 (X=0, 1) 。
图6-7 省去用户软件中重装初值的程序 ,来精确定时。
6.2.4 方式3 增加一个附加的8位定时器/计数器 , 从而具有3个定时器/计数
器。
只适用于定时器/计数器T0 。T1不能工作在方式3 。 T1方式3时相当于TR1=0 ,停止计数(此时T1可用来作串行口
图6-8( a)
图6-8(b)
2. T0工作在方式3下T1的各种工作方式 当T1用作串行口的波特率发生器时 , T0才工作在方式3 。 T0为方式3时 , T1可定为方式0 、方式1和方式2 ,用来作为串
行口的波特率发生器 , 或不需要中断的场合。 ( 1)T1工作在方式0
图6-9
(2) T1工作在方式1

跑马灯中断控制实训报告

跑马灯中断控制实训报告

一、实训目的本次实训旨在通过使用AT89C51单片机,结合中断技术实现对跑马灯的控制,加深对单片机中断系统、定时器/计数器以及程序设计方法的理解和掌握。

二、实训内容1. 硬件设计- 主控制器:AT89C51单片机- 驱动电路:ULN2003A驱动器- 显示电路:8个LED灯- 控制电路:按键开关2. 软件设计- 编写程序实现跑马灯的基本功能,包括:- 跑马灯模式:LED灯依次点亮,形成跑马灯效果。

- 定时控制:通过定时器实现LED灯点亮时间的控制。

- 中断控制:通过外部中断实现按键控制跑马灯模式的切换。

三、实训步骤1. 硬件连接- 将AT89C51单片机的P1.0至P1.7引脚连接至ULN2003A的输入端,用于驱动LED灯。

- 将按键开关连接至单片机的P3.2和P3.3引脚,用于控制跑马灯模式。

- 将ULN2003A的输出端连接至LED灯的正极,负极接地。

2. 程序设计- 初始化配置:- 初始化定时器T0,设置定时时间为50ms。

- 初始化外部中断0和外部中断1,配置中断触发方式为下降沿触发。

- 跑马灯控制:- 设置定时器T0中断,当定时器溢出时触发中断,实现LED灯的点亮和熄灭。

- 在中断服务程序中,通过移动LED灯的位置,实现跑马灯效果。

- 按键控制:- 当按下P3.2引脚对应的按键时,切换跑马灯模式。

- 当按下P3.3引脚对应的按键时,停止跑马灯运行。

3. 程序调试- 编译程序,将生成的HEX文件烧录至AT89C51单片机。

- 连接调试器,观察程序运行情况,确保跑马灯控制功能正常。

四、实训结果与分析1. 跑马灯效果通过实验,成功实现了跑马灯的基本功能,LED灯依次点亮,形成跑马灯效果。

定时器T0的设置保证了LED灯点亮时间的控制,中断技术实现了按键控制跑马灯模式的切换。

2. 中断控制外部中断0和外部中断1的配置保证了按键控制功能的实现。

当按下按键时,中断服务程序会根据按键的引脚和状态切换跑马灯模式或停止跑马灯运行。

AT89C51单片机说明

AT89C51单片机说明
此外,在将程序代码烧录至 8751 内部 EPROM、89C51 内部 FALSH 时,可以利用此引 脚来输入提供编程电压(8751 为 2lV、AT89C51 为 12V、8051 是由生产厂方一次性加工好)。
PSEN 此为"Program Store Enable"的缩写。访问外部程序存储器选通信号,低电平有效。在访
(60KB)
0FFFFH
1000H
外部 程序 存储器
0FFFH
EA=0 (4KB)
0000H
0FFFFH
外 部 数 据 存 储 器
(64KB)
0000H
图 2-2 只读程序存储器
图 2-3 外部数据存储器
直接地址
2FH 7F 7E 7D 7C 7B 7A 79 78 2EH 77 76 75 74 73 72 71 70 2DH 6F 6E 6D 6C 6B 6A 69 68 2CH 67 66 65 64 63 62 61 60 2BH 5F 5E 5D 5C 5B 5A 59 58 2AH 57 56 55 54 53 52 51 50 29H 4F 4E 4D 4C 4B 4A 49 48 28H 47 46 45 44 43 42 41 40 位寻址区 27H 3F 3E 3D 3B 3C 3A 39 38 26H 37 36 35 34 33 32 31 30 25H 2F 2E 2D 2B 2C 2A 29 28 24H 27 26 25 24 23 22 21 20 23H 1F 1E 1D 1C 1B 1A 19 18 22H 17 16 15 14 13 12 11 10 21H 0F 0E 0D 0C 0B 0A 09 08 20H 07 06 05 04 03 02 01 00 1FH

AT89C51单片机程序

AT89C51单片机程序
{
ch451_write(display[0]+0);
}
}
else if(!stop_flag)
{
ch451_write(display[0]+BCD[miaoge]);
}
}
void key_Recognize()
{
switch(ch451_key)
//beep=~beep;
miaoge++;
}
}
else if(stop_flag)
{
timecount=0;
ss_flag=~ss_flag;
}
}
}
void ch451_inter() interrupt 3
{
#include<reg52.h>
#include"ch451.h"
sbit beep=P2^6;
uchar timecount=0;
uint count;
extern uchar shishi,shige,fenshi,fenge,miaoshi,miaoge;
extern bit stop_flag,ss_flag;
num=1;
}break;
case 0x49: delay(65000);
num--;
if(num<1)
{
num=6;
}
break;
case 0x43:delay(65000);
//*****************************************************

AT89C51单片机电子时钟的设计

AT89C51单片机电子时钟的设计

AT89C51单片机电子时钟的设计1.硬件设计首先,我们需要选择合适的外设硬件进行设计。

以下是一些常见的硬件组件:-AT89C51单片机-蜂鸣器-DS1302时钟模块-按键开关和对应的电阻液晶模块的连接方式如下:-VSS->GND-VDD->VCC-V0->电位器-RS->P0.7-R/W->P0.6-E->P0.5-DB0-DB7->P2.0-P2.7蜂鸣器的连接方式如下:-正极->P3.0-负极->GNDDS1302时钟模块的连接方式如下:-VCC->VCC-GND->GND-CE->P1.7-IO->P1.6-SCLK->P1.5按键开关的连接方式如下:-第一个按键->P3.1-第二个按键->P3.2-第三个按键->P3.32.软件设计在软件设计方面,我们将使用C语言编程来编写程序。

首先,我们需要定义和初始化必要的变量,例如小时、分钟和秒钟等计时变量。

然后,我们需要编写一个初始化函数来配置单片机的各种外设和寄存器。

在这个函数中,我们需要设置计时器/计数器、I/O口和中断等。

接下来,我们需要编写一个定时器中断函数,来更新计时变量并实现计时功能。

我们可以使用定时器中断来定期更新秒钟,并在需要时更新小时和分钟。

在主循环中,我们需要编写代码来控制液晶模块、蜂鸣器和按键开关等外设。

通过液晶模块,我们可以实现显示时间的功能。

通过蜂鸣器,我们可以实现头每秒发出一次滴答声的功能。

通过按键开关,我们可以实现设置时间的功能。

3.程序实现以下是AT89C51单片机电子时钟的程序框架:```c#include <reg51.h>#include <intrins.h>//定义和初始化计时变量unsigned char second = 0;unsigned char minute = 0;unsigned char hour = 0;//初始化函数void ini//配置计时器/计数器,设置定时器中断//配置I/O口和中断等//...//定时器中断函数//更新计时变量//...//主函数void mai//初始化init(;//主循环while (1)//控制液晶模块//控制蜂鸣器//控制按键开关//...}```在具体的代码实现中,我们需要根据液晶模块、蜂鸣器和按键开关等外设的具体规格和功能来编写相应的代码。

c51单片机的定时器和中断

c51单片机的定时器和中断

二、方式1 方式
方式1结构 图6-5 T0 (或T1) 方式 结构 或
三、方式2 方式
TMOD 申请 TCON 中断 D7 TF1 TR1 TF0 TR0 T1引脚 溢出 TL1 重装初值控制 TH1 8位 &
≥1
0 1
M0 M1 C/T
D4
1
1 0
机器周期
GATE D7
1 INT1引脚
D0
方式2结构 图6-6 T0 (或T1) 方式 结构 或
图6-3 方波硬件设计和仿真波形
(2)源程序 ) //中断方式 中断方式 #include "reg51.h" #include "stdio.h" Uart_Init(); sbit P1_1=P1^1; void main() { TMOD=0X01; // T0工作在方式 工作在方式1 工作在方式 TL0=0xB0; //给TL0置初值 给 置初值 TH0=0x3c; //给TH0置初值 给 置初值 ET0=1; //开串行口中断 开串行口中断 EA=1; TF0=0; TR0=1; //启动 启动T0 启动 while(1) ; //设置断点处 设置断点处 } void Int_T0() interrupt 1 using 2 { TL0=0xB0; TH0=0x3c; //重赋初值 重赋初值 P1_1=!P1_1; //定时时间到 定时时间到P1_1取反 定时时间到 取反 printf("Timer1 overflow in Mode 1\n");/* 定时 溢出后, 器0溢出后,输出提示信息 */ 溢出后 }
计数器控制寄存器TCON 三、定时/计数器控制寄存器 定时 计数器控制寄存器
定时器控制字TCON的格式如下。 位地址 位符号 8FH TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0

基于at89c51单片机的定时闹钟的设计

基于at89c51单片机的定时闹钟的设计

基于at89c51单片机的定时闹钟的设计本文介绍了基于AT89C51单片机的定时闹钟的设计。

文章将探讨设计目的和背景,并着重阐述定时闹钟的实现原理和功能。

本文档将介绍基于at89c51单片机的定时闹钟的硬件设计要点,包括电源、显示器、按键等组件选择和连接方式。

电源选择与连接在设计定时闹钟的硬件方案时,选择合适的电源是非常重要的。

以下是一些电源选择和连接的要点:使用稳定可靠的电源模块,例如直流电源模块,以确保单片机工作的稳定性。

将电源模块的正负极连接到at89c51单片机的VCC和GND引脚上。

注意电源的电压和电流要符合at89c51单片机的工作要求。

显示器选择与连接显示器是定时闹钟中显示时间和其他信息的重要组件。

以下是一些显示器选择和连接的要点:考虑使用液晶显示器 (LCD) 或数码管作为显示器,这些显示器可以清晰地显示数字和字符。

根据设计需求,选择合适的显示器尺寸和类型。

将显示器的控制引脚与at89c51单片机的相应引脚连接,以实现时间和信息的显示。

按键选择与连接按键是控制定时闹钟设置和功能的重要组件。

以下是一些按键选择和连接的要点:选择合适的按键类型,例如触摸按键或机械按键。

根据设计需求,确定所需的按键数量和布局。

将按键的引脚连接到at89c51单片机的GPIO引脚,以接收按键输入并实现相应的功能。

上述是基于at89c51单片机的定时闹钟的硬件设计要点,通过合理选择和连接电源、显示器和按键等组件,可以确保定时闹钟的稳定运行和正常功能。

本文将阐述基于at89c51单片机的定时闹钟的软件设计要点,包括如下内容:定时器的设置:使用at89c51单片机的定时器来实现定时功能,可以通过对定时器寄存器的设置来调整定时的时间间隔。

中断处理:在定时器到达设定的时间间隔时,通过中断处理来触发相应的操作。

可以通过设定中断优先级来确保定时器中断的可靠性。

闹钟功能的实现:通过软件算法和控制电路,将定时器和中断处理结合起来实现闹钟功能。

AT89C51单片机说明

AT89C51单片机说明

EA A8H AF
ET2 ES
ET1 EX1 ET0 EX0
AD AC AB AA A9 A8 IE
A0H A7 A6 A5 A4 A3 A2 A1 A0 P2
SM0 SM1 SM2 REN TB8 RB8 TI
RI
98H 9F 9E 9D 9C 9B 9A 99 98 SCON
90H 97 96 95 94 93 92 91 90 P1
工作寄存器组3 18H
17H 工作寄存器组2
10H
0FH 工作寄存器组1
08H
07H 工作寄存器组0
00H
图 2-4 内部低 128 个字节地址 RAM 空间
第 3 页 共 9页
附录
AT89C51 单片机说明
寄存器符号 ACC B PSW SP
DPTR
P0 P1 P2 P3 IP IE TMOD TCON TH0 TL0 TH1 TL1 SCON SBUF PCON
IP 中断优先次序寄存器
位地址 - - BD BC BB BA B9 B8
符号
- - PT2 PS PT1 PX1 PT0 PX0
-(IP.7) :保留位,无定义。 -(IP.6) :保留位,无定义。 PT2(IP.5) :设定计时器 2 的优先次序(8052 使用)。 PS(IP.4) :设定串行端口的中断优先次序。 PT1(IP.3) :设定时/计时器 1 的优先次序。 PX1(IP.2) :设定外部中断 INT1 的优先次序。 PT0(IP.1) :设定计时器 0 的优先次序。 PX0(IP.0) :设定外部中断 INT0 的优先次序。
(60KB)
0FFFFH
1000H
外部 程序 存储器
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AT89C51单片机定时器终端模式和查询设置
T1为定时模式,定时65.536ms,P2.0对应的LED等闪烁一次,T0计数模式,计数脉冲从P3.4脚用按键输入,按一次,记一次,所以计数初值为0FFFFh,没按一次,产生一个溢出,P2.5对应的LED闪烁,同时数码管加1显示。

一、定时/计数器终端模式
org 0000h
ljmp bb ;跳转到主程序入口bb处
org 000bh ;定时器0中断响应从这里开始执行
cjne r2,#9d,xx
mov r2,#00h
ljmp xx11
org 001bh ;定时器1中断响应从这里开始执行
ljmp xxx
bb: mov p1,#3fh ;主程序入口处
mov tmod,#05h ;05h=0000 0101B设置T1定时T0计数模式,0定时,1计数
;00是13位二进制计数模式0,高4位控制T1
;01是16位二进制计数模式1,低4位控制T0
mov dptr,#0300h ;查表入口地址存放
mov r2,#00h
setb et0 ;和setb 0afh效果相同
setb ea ;和setb 0abh相同
setb et1 ;和setb 0a9h相同
setb tr0
setb tr1
mov th0,#0ffh ;计数器0的计数初值的高8位
mov tl0,#0fdh ;计数器0的计数初值的低8位(第一次开始计数初值)
sjmp $ ;程序执行时,原地踏步等待语句,在没有中断请求时,
;在此位置原地踏步计数定时计数,有请求时跳到中断入口执行中断xx: inc r2
xx11: mov th0,#0ffh ;计数器0的计数初值的高8位
mov tl0,#0fdh ;计数器0的计数初值的低8位(第二次以后开始计数初值)
mov a,r2
movc a,@a+dptr
cpl p2.5
mov p1,a
reti
xxx: mov th1,#00h ;计数器1的计数初值的高8位
mov tl1,#00h ;计数器1的计数初值的低8位
cpl p2.0
reti
org 0300h ;七段显示吗表格入口
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end
二、定时/计数器查询模式
org 0000h
ljmp bb ;跳转到主程序入口bb处
bb: mov tmod,#15h ;主程序入口处
;设置T1定时模式,工作在计数方式0,设置T0计数模
;式工作在计数方式1
mov dptr,#0300h ;查表入口地址存放
clr et0 ;关定时/计数器0中断
setb ea ;和setb 0abh相同,开总中断开关
setb et1 ;和setb 0a9h相同,开定时/计数器1中断
setb tr0
setb tr1
mov th0,#0ffh ;计数器0的计数初值的高8位
mov tl0,#0ffh ;计数器0的计数初值的低8位(第一次开始计数初值)
CX: JBC TF0, xx ;查询定时/计数器0溢出标志位,有溢出跳转xx执行
JBC TF1, xxx ;查询定时/计数器1溢出标志位,有溢出跳转xxx执行
sjmp CX ;无溢出,跳CX继续查询
;溢出是在THi和TLi计数满,超过FFFFH时,TFi被自动置1,中断和查询都是根
;据这个标志是否为1来响应的。

xx: mov th0,#0ffh ;计数器0的计数初值的高8位
mov tl0,#0ffh ;计数器0的计数初值的低8位(第二次以后开始计数初值)
cjne r2,#10d,xx11
mov r2,#00h
xx11: mov a,r2
movc a,@a+dptr ;查表,用七段码显示计数数字
cpl p2.5 ;并让P2.5上的LED有闪烁效果
mov p1,a ;显示数字效果从P1口输出
inc r2 ;加1计数
ret
xxx: mov th1,#00h ;计数器1的计数初值的高8位
mov tl1,#00h ;计数器1的计数初值的低8位
cpl p2.0 ;t0定时模式,定时到让P2.0取反,LED达到闪烁效果 ret
org 0300h ;七段显示吗表格入口
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end。

相关文档
最新文档