51单片机定时器方式一12M和11
第06章 MCS-51单片机定时计数器
10
2 8位计数初值自动重装,TL(7 ~ 0)
TH(7 ~ 0)
11
3 T0运行,而T1停止工作,8位定时/计数。
▪ 2.定时/计数器控制寄存器(TCON)
位
D7 D6 D5 D4 D3 D2 D1 D0
位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TR0:定时 / 计数器0运行控制位。软件置位,软件复位。与GATE有关, 分两种情况:
GATE = 0 时:若TR0 = 1,开启T0计数工作;若TR0 = 0,停止T0计 数。
GATE = 1 时:若TR0 = 1 且/INT0 = 1时,开启T0计数; 若TR0 = 1 但 /INT0 = 0,则不能开启T0计数。 若TR0 = 0, 停止T0计数。
TR1:定时 / 计数器1运行控制位。用法与TR0类似。
▪ (1)计算计数初值。欲产生周期为1000μs的等宽方波脉冲, 只需在P1.7端交替输出500μs的高低电平即可,因此定时 时间应为500μs。设计数初值为X,则有:
▪ (216-X)×1×10-6=500×10-6
▪ X=65536-500=65036=FE0CH
▪ 将X的低8位0CH写入TL1,将X的高8位FEH写入TH1。
;清TCON,定时器中断标志清
▪
MOV TMOD,#10H
;工作方式1设定
▪
MOV TH1,#0FEH
;计数1初值设定
▪
MOV TL1,#0CH
▪
MOV IE,#00H
;关中断
▪
SETB TR1
;启动计数器1
▪ LOOP0:JBC TF1,LOOP1 ;查询是否溢出
▪
51单片机定时器的使用
151单片机定时器/计时器的使用步骤:1、 打开中断允许位:对IE 寄存器进行控制,IE 寄存器各位的信息如下图所示:EA : 为0时关所有中断;为1时开所有中断ET2:为0时关T2中断;为1时开T2中断,只有8032、8052、8752才有此中断 ES : 为0时关串口中断;为1时开串口中断 ET1:为0时关T1中断;为1时开T1中断 EX1:为0时关1时开 ET0:为0时关T0中断;为1时开T0中断 EX0:为0时关1时开2、 选择定时器/计时器的工作方式:定时器TMOD 格式CPU 在每个机器周期内对T0/T1检测一次,但只有在前一次检测为1和后一次检测为0时才会使计数器加1。
因此,计数器不是由外部时钟负边沿触发,而是在两次检测到负跳变存在时才进行计数的。
由于两次检测需要24个时钟脉冲,故T0/T1线上输入的0或1的持续时间不能少于一个机器周期。
通常,T0或T1输入线上的计数脉冲频率总小于100kHz 。
方式0:定时器/计时器按13位加1计数,这13位由TH 中的高8位和TL 中的低5位组成,其中TL 中的高3位弃之不用(与MCS-48兼容)。
13位计数器按加1计数器计数,计满为0时能自动向CPU 发出溢出中断请求,但要它再次计数,CPU 必须在其中断服务程序中为它重装初值。
方式1:16位加1计数器,由TH 和TL 组成,在方式1的工作情况和方式0的相同,只是计数器值是方式0的8倍。
2方式2:计数器被拆成一个8位寄存器TH 和一个8位计数器TL ,CPU 对它们初始化时必须送相同的定时初值。
当计数器启动后,TL 按8位加1计数,当它计满回零时,一方面向CPU 发送溢出中断请求,另一方面从TH 中重新获得初值并启动计数。
方式3:T0和T1工作方式不同,TH0和TL0按两个独立的8位计数器工作,T1只能按不需要中断的方式2工作。
在方式3下的TH0和TL0是有区别的:TL0可以设定为定时器/计时器或计数器模式工作,仍由TR0控制,并采用TF0作为溢出中断标志;TH0只能按定时器/计时器模式工作,它借用TR1和TF1来控制并存放溢出中断标志。
MCS-51单片机的定时器计数器
1. 定时器T0/T1 中断申请过程
(1)在已经开放T0/T1中断允许且已被启动的前提下, T0/T1加1计满溢出时 TF0/TF1标志位自动置“1” ;
(2)CPU 检测到TCON中TF0/TF1变“1”后,将产生指 令:LCALL 000BH/LCALL 001BH 执行中断服务程序;
(3)TF0/TF1标志位由硬件自动清“0”,以备下次中断申
郑州大学
docin/sundae_meng
(3)工作方式寄存器TMOD
T1
T2
GATE C / T M1 M0 GATE C / T M1 M0
M1,M0:工作方式选择位 。
=00:13位定时器/计数器; =01:16位定时器/计数器(常用); =10:可自动重装的8位定时器/计数器(常用); =11:T0 分为2个8位定时器/计数器;仅适用于T0。 C/T :定时方式/计数方式选择位。 = 1:选择计数器工作方式,对T0/T1引脚输入的外部事件 的负脉冲计数; = 0 :选择定时器工作方式,对机器周期脉冲计数定时。 如下页图所示。
CPL P1.0 MOV TH0,#15H MOV TL0,#0A0H
START:MOV SP,#60H MOV P1,#0FFH
SETB TR0 POP PSW
MOV TMOD,#01H MOV TH0,#15H MOV TL0,#0A0H
POP ACC RETI END
SETB EA
Байду номын сангаас
SETB ET0
定时器/计数器0采用工作方式1,其初值为:
21650ms/1s=6553650000=15536=3CB0H
电路图如下:
郑州大学
docin/sundae_meng
单片机原理及其接口技术--第6章 MCS-51单片机定时器计数器
单片机原理及其接口技术
T/C方式2的逻辑结构图
1
TH1/TH0
T8
T7
T6
T5
T4
T3
T2
T1
寄存器 计数器
束
TL1/TL0
T8
T7
T6
T5
T4
T3
T2
T1
主目录
上一页
下一页
结
单片机原理及其接口技术
4、方式3 M1M0=11 T0和T1有不同的工作方式
C/T0:
TH0和TL0被拆成2个独立的8位计数器。
28),向CPU申请中断,标志位TF1自动置位,若中
断是开放的,则CPU响应定时器中断。当CPU响应
中断转向中断服务程序时,由硬件自动将该位清0。
&
加1计数器 & 1
主目录
上一页
下一页
结
束
EA
ET1
单片机原理及其接口技术
2个模拟的位开关,前者决定了T/C的工作状态:当1单片机有2个特殊功能寄存器TCON和TMOD: TCON:用于控制定时器的启动与停止,中断标志。 TMOD:用于设置T/C的工作方式。
主目录
上一页
下一页
结
束
单片机原理及其接口技术
1.定时器控制寄存器TCON
88H TCON
位地址
D7
D6
D5
D4
D3
D2
D1
D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 8F 8E 8D 8C 8B 8A 89 88
过实时计算求得对应的转速。
主目录 上一页 下一页 结 束
单片机原理及其接口技术 对于定时/计数器来说,不管是独立的定时器芯片还是单
单片机原理及应用教程(C语言版)-第6章 MCS-51单片机的定时器计数器
6.1.1 单片机定时器/计数器的结构
MCS-51单片机定时器/计数器的原理结构图
T0(P3.4) 定时器0 定时器1 T1(P3.5) 定时器2 T2EX(P1.1)
T2(P1.0)
TH0
溢 出 控 制
TL0
模 式 溢 出
TH1
控 制
TL1
模 式 溢 出
TH2
TL2
重装 捕获
RCAP 2H
RCAP 2L
6.2.2 T0、T1的工作模式
信号源 C/T设为1,为计数器,用P3.4引脚脉冲 C/T设为0,为定时器,用内部脉冲 运行控制 GATE=1,由外部信号控制运行 此时应该设置TR0=1 P3.2引脚为高电平,T0运行 GATE=0, 由内部控制运行 TR0设置为1,T0运行
6.2.2 T0、T1的工作模式
6.2.3 T0、T1的使用方法
例6-1 对89C52单片机编程,使用定时器/计 数器T0以模式1定时,以中断方式实现从P1.0引 脚产生周期为1000µ s的方波。设单片机的振荡频 率为12MHz。 分析与计算 (1)方波产生原理 将T0设为定时器,计算出合适的初值,定 时到了之后对P1.0引脚取反即可。 (2)选择工作模式 计算计数值N
6.2.1 T0、T1的特殊功能寄存器
TR1、TR0:T1、T0启停控制位。 置1,启动定时器; 清0,关闭定时器。
注意: GATE=1 ,TRx与P3.2(P3.3)的配合控制。
IE1、IE0:外部中断1、0请求标志位 IT1、IT0:外部中断1、0触发方式选择位
6.2.2 T0、T1的工作模式
6.2.1 T0、T1的特殊功能寄存器
GATE=0,禁止外部信号控制定时器/计数器。 C/T——定时或计数方式选择位 C/T=0,为定时器;C/T=1,为计数器 计数采样:CPU在每机器周期的S5P2期间,对 计数脉冲输入引脚进行采样。
单片机原理及接口技术复习题(带答案)
27、下列单片机中,哪一个芯片的 EA 端需接低电平才能正常使用( D ) 。 A、89C51 B、8051 C、89S51 D、8031 28、改变 Fosc 的大小可以影响定时/计数器的( C ) 。 A、计数初值 B、定时初值 C、定时时长 D、计数范围 29、若要使单片机处于复位状态,则应在 RST 引脚端加一( D )信号。 A、低电平 B、负电压 C、正弦波 D、高电平 30、MOVC A,@A+DPTR 的寻址方式是( C ) 。 A、寄存器间接寻址 B、立即寻址 C、变址寻址 D、相对寻址 31、下列指令中,能实现 A=100 功能的指令是( D ) 。 A、MOV A,@R1+100 B、MOV A,#100H C、MOVX A,100 D、MOV A,#100 32、指令 SETB EX1 表示开放( B )中断。 A、定时/计数器 T0 B、外中断 1 C、定时/计数器 T1 D、外中断 0 33、8 位模数转换芯片 ADC0809,基准电压为 2.55V,如输入的模拟电压为 1.2V,则输出的 数字量为( D ) 。 A、100 B、10000000B C、F0H D、120 34、在 MCS-51 单片机的定时/计数器中, ( B )定时的时间最长。 A、方式 0 B、方式 1 C、方式 2 D、方式 3 35、通常情况下,若要通过单片机 I/O 口直接驱动数码管实现 8 位数字动态扫描显示,则需要 ( C )根数据线。 A、18 B、32 C、16 D、64 36、单片机定时器方式设置为方式 1,定时时长为 10ms,fosc=12MHz,如此时需将定时时间 变短,则需( C ) 。 A、仅减小定时器初值 B、仅减小外接晶体振荡器频率 C、仅增大定时器初值 D、同时减小外接晶体振荡器频率及定时器初值 37、要在摄氏 100°C 的环境下使用单片机,则应选用( A ) 。 A、军用级 B、民用级 C、商业级 D、工业级 38、改变 Fosc 的大小可以影响定时/计数器的( D ) 。 A、计数初值 B、定时初值 C、计数范围 D、定时时长 39、若要使单片机处于复位状态,则应在 RST 引脚端加一( A )信号。 A、高电平 B、负电压 C、正弦波 D、低电平 40、MOVC A,@A+DPTR 的寻址方式是( D ) 。 A、寄存器间接寻址 B、立即寻址 C、相对寻址 D、变址寻址 41、下列指令中,能实现 A=128 功能的指令是( A ) 。 A、MOV A,#80H B、MOV A,#128H C、MOVX A,128 D、MOV A,@R1+128 42、某同学用单片机定时器设计了电子钟,但发现每天走时慢 1 分钟,若要解决该问题,则 应( B ) 。 A、减小定时初值 B、加大定时初值 C、加入延时程序 D、降低晶振频率 43、8 位模数转换芯片 ADC0809,基准电压为 2.55V,如输入的模拟电压为 2.4V,则输出的 数字量为( C ) 。 A、220 B、10000000B C、F0H D、FFH 44、用单片机的定时/计数器做一频率计,Fosc=12MHz,若要使最高测量频率达到 3.5MHz,
MCS-51单片机内部定时器计数器
二、 方式1
方式 1(16位计数器)
•MCS-51单片机内部定时器计数器
方式1和方式0的工作原理基本相同,唯一 不同是T0和T1工作在方式1时是16位的计数/定 时器。
方式1时的计数长度M是2的16次方。16位 的初值直接拆成高低字节,分别送入TH和TL 即可。
•MCS-51单片机内部定时器计数器
M1 M0:四种工作方式的选择位 工作方式选择表
M1 M0 方式
说明
0 0 0 13 位定时器(TH的 8 位和TL的低 5 位)
0 1 1 16 位定时器/计数器
1 0 2 自动重装入初值的 8 位计数器 T0 分成两个独立的 8 位计数器,
1 1 3 T1 在方式 3 时停止工作
定时 1 ms的初值:
因为 机器周期=12÷6 MHz= 2 μs
所以 1 ms内T0 需要计数N次:
•MCS-51单片机内部定时器计数器
N= 1 ms÷2 μs = 500
由此可知: 使用方式 0 的 13 位计数器即可, T0 的初值X为 X=M-N=8 192-500=7 692=1E0CH 但是, 因为 13 位计数器中, 低 8 位 TL0 只使用了 5 位, 其 余码均计入高 8 位TH0 的初值, 则 T0
0。TF产生的中断申请是否被接受, 还需要由中断计数器T1、 T0 的运行控制位,
通过软件置 1 后, 定时器 /计数器才开始工作, 在系统复位时
被清 0。
•MCS-51单片机内部定时器计数器
定时器的工作方式
一、 方式 0
方式 0(13位计数器)
•MCS-51单片机内部定时器计数器
•MCS-51单片机内部定时器计数器
51单片机的几种精确延时
对于循环语句同样可以采用for,do…while,while结构来完
成,每个循环体内的变量仍然采用无符号字符变量。
unsigned char i,j
for(i=255;i>0;i--)
for(j=255;j>0;j--);
或
unsigned char i,j
{unsigned char b,c;
b="j";
c="k";
do{
do{
do{k--};
while(k);
k="c";
j--;};
while(j);
j=b;
i--;};
while(i);
在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。使用定时器/计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。但应该注意,C51编写的中断服务程序编译后会自动加上PUSH ACC、PUSH PSW、POP PSW和POP ACC语句,执行时占用了4个机器周期;如程序中还有计数值加1语句,则又会占用1个机器周期。这些语句所消耗的时间在计算定时初值时要考虑进去,从初值中减去以达到最小误差的目的。
51单片机的几种精确延时实现延时
51单片机的几种精确延时实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。
1使用定时器/计数器实现精确延时
单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1μs和2μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。
51单片机定时器初值计算公式
51单片机定时器初值计算公式
51单片机定时器初值计算公式是一项重要的技能,对于嵌入式系统的开发非常有用。
定时器是一种计时器,可用于实现周期性操作和延时功能。
以下是51单片机定时器初值计算公式的详细介绍。
在51单片机中,定时器有两个,分别是定时器0和定时器1。
他们都是基于晶振的时钟,可以用于计算CPU的执行时间和控制外设的操作。
要计算定时器的初值,需要知道以下参数:
1.晶振频率(Fosc):晶振的频率通常为12MHz或11.0592MHz,可以在程序中进行定义。
2.定时器的工作模式(mode):定时器可以工作在多种不同的模式下,包括计数模式、定时模式、事件计数模式等。
每种模式下,定时器的计数方式不同。
3.所需的定时时间(T):定时器可以用来进行延时操作,需要计算所需的时间。
根据以上参数,我们可以使用以下公式来计算定时器的初值:
TH0 = (65536 - (T × Fosc)) / (12 × mode)
其中,TH0表示定时器0的初值,T表示所需的定时时间(单位为秒),Fosc为晶振频率,mode为定时器的工作模式。
在计算的过程中,需要将结果取整,然后将TH0的值写入到TH0寄存器中即可。
这就是51单片机定时器初值计算公式的详细介绍。
掌握这项技能可以帮助开发者更好地使用定时器来实现各种功能,提高嵌入式系统的性能和稳定性。
51单片机定时器产生任意占空比PWM
晶振12M任意占空比方波输出如果是占空比任意,现在考虑12M晶振,所以机器周期Tcy为1 μs。
定时器工作方式1最长定时为65536×1×10-6=65.536ms如果要输出周期为1s的任意占空比的方波。
那可以把1s分为100份,每份中断一次。
然后在中断里面计数(比如全局变量num)加一。
加到100之后,表示一个周期结束。
这样就可以控制每一份的电平的高低了。
如果,占空比为30%,那么也就是num小于等于100×30%=30的时候,输出高电平,其余输出低电平就可以了。
如果占空比为a(百分号的形式),那么也就是num小于等于100×a的时候输出高电平,其余输出低电平就可以了。
现在考虑定时器的初值如何设定,由于定时器需要在1s/100也就是10ms的时候进入一次中断进行判断。
如果采用方式1,那么因为(216 −X) ⨯ 1 ⨯ 10−6 = 10 ⨯ 10−3,所以定时器的初值为X=65536 – 1000.#include<reg52.h> //头文件sbit output=P1^1; //输出端unsigned char num=1; //辅助计时unsigned int a = 0.3;占空比a可以任意设定void Init(void) //初始化函数{//对于定时器一般初始化需要六步TMOD=0x01;TH0=(65536-1000)/256; //(65536-1000)为定时器初值,定时10msTL0=(65536-1000)%256;EA=1;ET0=1;TR0=1;}main(){Init();while(1){if(num<=100*a)output=1; //使占空比为aelse output=0;}}void Timer_0(void) interrupt 1 //中断函数{TH0=(65536-1000)/256; //TL0=(65536-1000)%256;num++;if(num>100) num=1;}。
MCS51的片内接口及定时器计数器
参考程序如下:
ORG 0000H LJMP MAIN
ORG 0100H MAIN:
MOV TMOD,#09H MOV TH0,#00H MOV TL0,#00H BACK1: JB P3.2,BACK1 SETB TR0
BACK2: JNB P3.2,BACK2
BACK3: JB P3.2,BACK3 CLR TR0 MOV 70H,TL0 MOV 71H,TH0 SJMP $
P1=~K;} Return; }
5.2 MCS-51定时/计数器及其应用
51系列内部有2个16位的定时/计数器T0、T1
52系列内部有3个16位的定时/计数器T0、T1、T2
功能:
定时 计数
可编程 串行口的波特率发生器
定时/计数器的可编程特性:
⑴ 确定其工作方式是定时还是计数
⑵ 预置定时或计数初值
回目录 上页 下页
计数初值X的计算方法: 计数方式:
N= 2n-X(X即为要求计数的次数)
定时方式: (2n - X)×T = 定时值
∴ X = 2n -定时值 / T 其中T为机器周期,时钟的12分频, 若晶振为6MHz,则T = 2µs, 若晶振为12MHz,则T = 1µs
回目录 上页 下页
BACK:
MOV A,P0 ;读P0口开关状态,并送入累加器A
CPL A
;对累加器A求反
MOV P1,A
;从P1口输出
SJMP BACK ;循环执行
C51参考程序如下: Sfr P0=0x80; Sfr P1=0x90; Void main(){ Volatile unsigned char k; P0=0xff; P1=0; While(1) { K=P0;
根据51单片机的厨房定时器(可预置分秒倒计时装置)
基于51单片机的厨房定时器设计报告学院:信息光电子科技学院专业:光电信息科学与工程年级:姓名:学号:一、设计报告概述日常生活中熬个汤、煮个蛋……都需要预定一定的时间,设计一个厨房定时器,用户预设倒计时的时长,启动后系统开始倒计时,当时间为0后,启动蜂鸣器报警。
本设计报告中的厨房定时器,是以单片机(STC89C52),四位七段数码管、按键开关和蜂鸣器等组成的综合设计系统电路。
上电,电源指示灯点亮,数码管显示为0000,用户可以通过按键开关预设定时时间,启动后系统开始倒计时,当时间为0后,蜂鸣器报警。
数码管显示分、秒,计时时间上限为99分钟,按键开关以10分钟或1分钟单位调整时间。
图1 系统设计结构图本系统组成如图1 系统设计结构图所示,主要由五个部分组成。
报警电路 (蜂鸣器)1.AT89C52单片机——控制芯片AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。
AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。
图2 AT98C52引脚图2.时钟震荡电路AT89C52中有一个用于构成内部振荡器的高增益反相放大器,与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
如果使用石英晶体,电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10pF,可以使系统更稳定,避免噪音干扰而死机。
此设计采用的是12MHz的石英晶振。
第5章 MCS-51单片单片机内部 定时器计数器
LOOP:
例:由P1.0输出方波信号,周 期为2ms,设fosc=12MHz。 (中断方式)
2ms
解:每隔1ms改变一次P1.0的输出状态,即形成方波, 用T0非门控方式1定时。 计算时间常数:X = 216 - t/T = 216 –(1/1000)/10-6 = 65536-1000 = 64536 = FC18H
3 工作模式2 • 模式2把TL0(或TL1)设置成一个可以自动重 装载的8位定时器/计数器 。 用于需要重复定时和计数的场合。 最大计数值:256 (28) 最大定时时间(晶振12MHz时 T=1s): 256s 自动恢复初值8位定时/计数器。TLx为8位加1计 数器,THx为8位初值暂存器。
复位时,TMOD所有位均置0。 确定定时器工作方式指令: MOV TMOD,#方式字 例:设T0用方式2非门控定时,T1用方式1门控计数。 MOV TMOD,#0D2H ; 1101 0010 B
定时器控制寄存器TCON除可字节寻址外,各 位还可以位寻址。
位地址 位符号 8FH TF1 8EH 8DH 8CH TR1 TF0 TR0 8BH IE1 8AH 89H 88H IT1 IE0 IT0
解得:T0初值=7096=11011101 11000B,其中将高8位 11011101 B=DDH 赋给 TH0 ,低 5 位 11000B=18H 赋 给 TL0。
方法一:
采用查询工作方式,编程如下:
ORG AJMP 0000H MAIN
LOOP:JNB TF0,$;$为当前指令指 针地址 CLR SETB CLR MOV MOV TF0 P1.0 P1.0 TH0 , #0DDH ;重装载 ;产生2µ s正脉冲
ORG AJMP ORG AJMP ORG MAIN:MOV MOV MOV SETB SETB SETB HERE:SJMP PT0INT:MOV MOV CPL RETI
单片机考试复习资料
-第 1 页 共 15 页-一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
每小题2分,共10分)1.若MCS-51单片机采用6MHz 的晶振,其复位高电平脉冲时间应该超过( )。
A. 2S μB. 4S μC. 2mSD. 4mS 2.MCS-51单片机的4个并行I/O 口作为通用I/O 口使用时,( )口应该加上拉电阻。
A. P0 B. P1C. P2D. P33.在片外扩展一片8K 的EPROM 2764需要( )根地址线。
A. 11B. 12C. 13D. 144.程序状态字PSW 的( )位为1时,表示带符号数加减运算中,A 产生了溢出。
A. CyB. AcC. OvD. P5.若PSW.4=0,PSW.3=1,现在需要保存R1的内容,可执行( )指令。
A. PUSH R1B. PUSH @R1C. PUSH 01HD. PUSH 09H二、填空题(每空1分,共10分)1.MCS -51单片机片内共有________字节单元的RAM ,________字节单元的ROM 。
2.若MCS -51单片机采用6MHz 的晶振,ALE 引脚输出正脉冲频率为________。
3.MCS -51单片机的一个机器周期的宽度为________状态。
4.一个10位D/A 转换器,其分辨率为________。
5.要使MCS-51单片机从片内的地址0000H 开始执行程序。
那么EA 应________。
6.串行中断ES 的中断人口地址为________。
7.CHMOS 型80C51有________二种低功耗方式。
8.单片机需要把助记符指令(或汇编指令)转换成________。
9.外部中断请求有两种信号方式即________。
三、名词解释(每小题2分,共8分)1.立即寻址2.地址总线3.波特率4.单片机四、简答题(每小题4分,共20分)1.ALU 具有哪几个运算功能?2.简述MCS -51串行通信的工作方式。
单片机原理及应用复习题()
1.MCS-51单片机的片内都集成了哪些功能部件?各个功能部件的最主要的功能是什么?答:功能部件:微处理器(CPU);数据存储器(RAM);程序存储器(ROM/EPROM),4个8位并行I/O口(P0口、P1口、P2口、P3口);1个全双工的串行口(TXD、RXD);2个16位定时器/计数器;中断系统(INT0、INT1);21个特殊功能寄存器(SFR)。
各部件功能:CPU(微处理器)包括了运算器和控制器两大部分,还增加了面向控制的处理功能,不仅可处理字节数据,还可以进行位变量的处理;数据存储器(RAM)来存储单片机运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等;程序存储器(ROM/EPROM)用来存储程序;中断系统具有5个中断源,2级中断优先权;定时器/计数器用作精确的定时,或对外部事件进行计数;串行口可用来进行串行通信,扩展并行I/O口,还可以与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广;特殊功能寄存器用于CPU对片内各功能部件进行管理、控制、监视。
2.MCS-51单片机的引脚EA的作用,该引脚接高电平和接低电平时各有何功能?答:E\A\允许访问片外程序存储器。
为高电平时,单片机访问片内程序存储器。
为低电平时,单片机则只访问外部程序存储器。
3.MCS?51单片机设有4个8位并行端口,实际应用中8位数据信息由哪个端口传送?16位地址线怎样形成?答:由P0口传送8位数据信息。
P0口为低8位地址线,P2口为高8位地址线。
4.MCS?51单片机内部RAM区的功能结构如何分配?位寻址区域的字节范围是多少?答:51系列单片机内部数据存储器:00H-7FH单元组成的低128字节地址空间的RAM区,又分为工作寄存区(00H-1FH)位寻址区(20H-2FH)和数据缓冲区。
80H-FFH单元组成的高128字节地址空间的特殊功能寄存器。
位寻址范围(20H-2FH)5.位地址7FH与字节地址7FH有何区别?位地址7FH具体在内存中的什么位置?答:二者存储的数据位数不一样。
MCS-51单片机的定时器计数器
TL; 如:任务中的MOV TH0,#00H 两条指令,设定计数初
值。 MOV TL0,#00H
Copyright 2006
(3)根据需要开放定时器/计数器的中断——对IE位赋值; (4)启动定时器/计数器; 如:任务中的SETB TR0 指令 初值的计算方法 X=M-计数值 M是定时器的最大计数值。视工作方式不同而不同。
判断中 断的次 数
程
CPL P1.0
;定时到,输出取反
序
NO:RETI
;中断返回
END
注意:此程序的#20和#60这两个立即数后面没 有加H表示是十进制数。
思考:能否利用定时器来实现一个电子钟?
Copyright 2006
测量每1秒钟之内的按键按下次数
工作方式0: 13位定时/计数方式,因此,最多可以计到2的13 次方,也就是8192次。
工作方式1: 16位定时/计数方式,因此,最多可以计到2的16 次方,也就是65536次。
工作方式2和工作方式3:都是8位的定时/计数方式,因此, 最多可以计到2的8次方,也说是256次。
Copyright 2006
;开中断 ;开T0中断 ;运行T0 ;等待中断 ;定时到,输出取反 ;重新加载初战值
;中断返回
中断程序的主 程序和中断服 务程序的布局
定时器初始化
开定时器中断
Copyright 2006
实例二:利用方式1定时
题目:用定时器T1,使用工作方式1,在单片机的P1.0输出一个周期为2分钟、占 空比为1:1的方波信号。
Copyright 2006
MCS-51单片机的定时器/计数器(二)
MCS51单片机中的定时器
7
1.3
定时器/计数器的功能
定时器/计数器具有定时和计数两种功能,应用范围如下。 1. 定时与延时控制方面 可产生定时中断信号,以设计出各种不同频率的信号源; 产生定时扫描信号,对键盘进行扫描以获得控制信号,对 显示器进行扫描以不间断地显示数据。 2. 测量外部脉冲方面 对外部脉冲信号进行计数可测量脉冲信号的宽度、周期, 也可实现自动计数。 3. 监控系统工作方面 对系统进行定时扫描,当系统工作异常时,使系统自动复 位,重新启动以恢复正常工作。
振荡器 12 分频
TC/ =0 C/T TC/ =1 C/T
&
TH0 (8 位)
TL0 (5 位)
TF0
中断
T0(P3.4) TR0 GATE INT0(P3.2)
1
≥1
定时器/计数器0方式0逻辑结构
17
3.1 定时器/计数器的初始化
【例1】 用定时器0方式0,定时5ms,以中断方式工作,进行 程序初始化设计,晶振频率为6MHz。 解:用定时器0方式0时,定时器/计数器方式寄存器TMOD低4 位中的M1M0应取00;可设定为软件启动定时器,故 GATE取0;因用定时功能,C/T取0;定时器方式寄存器 TMOD高4位为无关位,一般都取0,所以TMOD应为00H。 晶振频率为6MHz,T机=12/fosc=12/(6106)=2s 定时初值X=213-T/T机=213-51000/2=8192-2500=5692 =163CH=1011000111100B 因TL0的高3位未用,对计算出的定时初值X要进行修正, 即在低5位前插入3个0,修正后的定时初值 X=1011000100011100B=B11CH
005DH
0060H 0062H 0065H 0068H
51单片机12M和11.0592M晶振定时器初值TL0和TH0的计算
51单片机12M和11.0592M晶振定时器初值TL0和TH0的计算#include<stdio.h>#include<reg51.h>void timer0_init(){TMOD=0x01;//方式1TL0=0xb0;TH0=0x3c;TR0=1;ET0=1;}void timer0_ISR(void) interrupt 1{TL0=0xb0;TH0=0x3c;//50ms中断一次single++;if(single==20){ kk++;single=0;}}void main(){int kk=0;//计数器int single=0;timer0_init();}TL0=0xb0;TH0=0x3c;这两个是怎么算出来得,如果晶振不是12Mhz ,是11.0592 MHz 怎么算12M的晶振每秒可产生1M个机器周期,50ms就需要50000个机器周期,定时器在方式1工作,是16位计数器,最大值为65536,所以需设置初值15536,即3CB0H(10进制15536转换成16进制数3CB0),所以TH0=0x3c,TL0=0xb0。
(65536-50000周期=初值15536)高位就是TH0的值,低位为TL0的值11.0592M的晶振每秒可产生0.9216M个机器周期,50ms就需要46080个机器周期,定时器在方式1工作,是16位计数器,最大值为65536,所以需设置初值19456,即4C00H,所以TH0=0x4c,TL0=0x00。
其实很简单,不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期机器周期=12/n(n指晶振频率),假设你要定时的时间为M那么定时的初值为:M/机器周期=初值;TH0=(65536-初值)%256;TL0=(65536-初值)/256;将(65536-初值)所得的值化成16进制,其高位就是TH0的值,低位为TL0的值例如用12M晶振做1ms定时计算如下:机器周期=12/12*10^6=1us(微秒)定时初值=(1*10^-3)/(1*10^-6)=1000;所以:TH0=(65536-1000)%256;TL0=(65536-1000)/256;将65536-1000=64536化为16进制为:0xFC18 TH0=0xFC;TL0=0X18;。