T0作定时器汇编程序中断法
单片机原理及应用第四版林立第六章选择题答案

第六章选择题(1)使80C51定时/计数器T0停止计数的C51命令为______。
A.IT0=0;B.TF0=0;C.IE0=0;D.TR0=0;(2)80C51单片机的定时器T1用作定时方式时是______。
A.由内部时钟频率定时,一个时钟周期加1 B.由内部时钟频率定时,一个机器周期加1C.由外部时钟频率定时,一个时钟周期加1 D.由外部时钟频率定时,一个机器周期加1(3)80C51单片机的定时器T0用作计数方式时是______。
A.由内部时钟频率定时,一个时钟周期加1 B.由内部时钟频率定时,一个机器周期加1C.由外部计数脉冲计数,一个脉冲加1D.由外部计数脉冲计数,一个机器周期加1(4)80C51的定时器T1用作计数方式时,______。
A.外部计数脉冲由T1(P3.5引脚)输入B.外部计数脉冲由内部时钟频率提供C.外部计数脉冲由T0(P3.4引脚)输入D.外部计数脉冲由P0口任意引脚输入(5)80C51的定时器T0用作定时方式时是______。
A.由内部时钟频率定时,一个时钟周期加1B.由外部计数脉冲计数,一个机器周期加1C.外部计数脉冲由T0(P3.4)输入定时D.由内部时钟频率定时,一个机器周期加1(6)设80C51晶振频率为12MHz,若用定时器T0的工作方式1产生1ms定时,则T0计数初值应为______。
A.0xfc18B.0xf830C.0xf448D.0xf060(7)80C51的定时器T1用作定时方式且选择模式1时,工作方式控制字为______。
A.TCON=0x01;B.TCON=0x0H;C.TMOD=0x10;D.TMOD=0x50; (8)80C51的定时器T1用作定时方式且选择模式2时,工作方式控制字为______。
A.TCON=0x60; B.TCON=0x02; C.TMOD=0x06; D.TMOD=0x20; (9)80C51的定时器T0用作定时方式且选择模式0时,C51初始化编程为______。
单片机原理与应用试题(含答案)

单片机原理与应用试题(含答案)一、单选题(共64题,每题1分,共64分)1.MCS-51单片机有( )个中断优先级别。
A、1B、2C、3D、4正确答案:B2.MCS-51单片机有中断源( )。
A、5个B、2个C、3个D、6个正确答案:A3.当外部中断1发出中断请求后,中断响应的条件是( )。
A、EX1=1B、IE=0x84C、ET1=1D、IE=0x81正确答案:B4.MCS-51单片机的4个并行I/O端口作为通用I/O端口使用,在输出数据时,必须外接上拉电阻的是( )。
A、P0口B、P1口C、P2口D、P3口正确答案:A5.MCS-51单片机指令系统中,求反指令是( )。
A、CPL AB、RLC AC、CLR AD、RRC A正确答案:A6."对两个数组a和b进行初始化Char a[ ]=" ABCDEF" Char b[ ]={ ´A´,´B´,´C´,´D´,´E´,´F´};则以下说法正确的是( )。
"A、a与b 数组完全相同B、a与b 数组长度相同C、a与b 数组中都存放字符串D、a比b 数组长度长正确答案:D7.定时/计数器0中断入口地址为( )。
A、0003HB、000BHC、0013HD、001BH正确答案:B8.定时器/计数器T0的中断服务程序入口地址是( )。
A、0003HB、000BHC、0023HD、001BH正确答案:B9.MCS-51单片机响应中断的过程是( )。
A、断点PC自动压栈,对应中断矢量地址装入PCB、关中断,程序转到中断服务程序C、断点压栈,PC指向中断服务程序地址D、断点PC自动压栈,对应中断矢量地址装入PC,程序转到该矢量地址,再转至中断服务程序首地址正确答案:D10.在MCS-51单片机系统中,若晶振频率为12MHz,一个机器周期等于( )μs。
微机原理与接口技术(单片机)试题答案

4)定时时间能完成100us和350us交替定时2分
(未采用中断法,但能实现波形输出的,扣3分)
七、综合设计题(每题10分,共10分)
得分
评阅人
1、设有一个8路模拟量输入的巡回监测系统,如下图所示,试求:
(1)、该系统中所扩展的芯片片选信号采用的方法是线选法,此外还有译码法;(2分)
5、当RS1=1,RS0=0,将寄存器R1中的内容压入堆栈,应使用(A)指令。
A、PUSH 11HB、PUSH @R1
C、PUSH 01HD、PUSH R1
6、定时/计数器T1的工作方式2为(A)位工作方式。
A、8B、10C、13D、16
7、当单片机的振荡频率为12MHz时,则定时器每计一个内部脉冲的时间为(A)。
EX0
SCON
98H
D7
D6
D5
D4
D3
D2
D1
D0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
得分
评阅人
1、内部RAM低128单元划分为哪3个主要部分?说明各部分的特点。
1)00H~1FH为通用工作寄存器区,共分为4组,每组由8个工作寄存器(R0~R7)组成。(2分)
由RS1、RS0决定当前组。工作时只有1组做当前组。(1分)
2)20H~2FH位地址区
分为128位,位地范围为00H~(2分)
3)30H~7FH用户数据区(2分)
2、指令MOV@Ri,A和指令MOVX@Ri,A的功能是否相同.如果不同区别是什么?
两条指令功能是有区别的。(2分)
1)MOV @Ri, A指令是对片内RAM 00H~7FH的访问(2分)
t0中断服务函数的书写方法

t0中断服务函数的书写方法t0中断服务函数是嵌入式系统中用来处理定时器中断的函数,也是一个操作系统内核中最基本的中断服务函数之一。
在实际开发过程中,编写t0中断服务函数是非常重要的,因为它可以保证系统的稳定性和可靠性。
本文将介绍t0中断服务函数的书写方法。
1. 定义中断服务函数在编写t0中断服务函数之前,我们需要定义中断服务函数。
中断服务函数的定义包括函数名、返回值类型、参数类型等。
在定义t0中断服务函数时,我们需要使用特殊的关键字"__interrupt",这个关键字告诉编译器,这个函数是一个中断服务函数。
例如:__interrupt void timer0_isr(void){// 主体代码}2. 中断向量表中断向量表是一个存储中断服务函数地址的表格,每个中断向量都对应一个中断服务函数。
在t0中断服务函数中,我们需要将中断向量表的t0位置为我们定义的中断服务函数的地址。
例如:#pragma vector=T0_VECTOR__interrupt void timer0_isr(void){// 主体代码}3. 主体代码t0中断服务函数的主要功能是处理定时器中断。
在t0中断服务函数中,我们可以编写一些针对定时器中断的处理代码,例如更新计数器、清除标志位等。
由于t0中断服务函数是在中断周期内执行的,因此我们需要尽量减少中断服务函数的执行时间,以提高系统的响应速度。
例如:#pragma vector=T0_VECTOR__interrupt void timer0_isr(void){T0IFG &= ~BIT0; // 清除标志位timer_count++; // 更新计数器}4. 中断服务函数的优化在编写t0中断服务函数时,我们需要注意一些优化技巧,以提高代码的执行效率和系统的响应速度。
这些优化技巧包括:a. 尽量避免在中断服务函数中使用延时函数或长时间的循环语句,以免影响系统的响应速度。
用T0定时器实现1秒定时

用T0定时器实现1秒定时
T0定时器是8051单片机中的一个定时/计数器,可以用来实现定时功能。
下面是使用T0定时器实现1秒定时的C代码:
```C
#include <reg52.h>
TH0=TIMER_VALUE/256;//设置定时器初值的高8位
TL0=TIMER_VALUE%256;//设置定时器初值的低8位
void main
TMOD=0x01;//设置T0为模式1,16位定时器
TH0=TIMER_VALUE/256;//设置定时器初值的高8位
TL0=TIMER_VALUE%256;//设置定时器初值的低8位
TR0=1;//启动定时器
EA=1;//允许中断
ET0=1;//允许T0中断
while (1)
//1秒到达,执行相应的操作
//这里可以添加你需要的代码
}
}
```
以上是一个简单的示例代码,使用T0定时器实现了每隔1秒触发一
个中断,并在中断处理函数中设置了一个标志位。
在主循环中检查标志位,如果标志位为1,则表示定时器已经到达1秒,执行相应的操作,并将标
志位重置为0。
请注意,上述代码使用的定时器初值是根据传输速率设置的。
如果你
需要更准确的1秒定时,需要根据你的实际系统时钟频率进行适当的调整。
定时器中断延时程序

定时器中断延时程序(1)该类型的delay()函数采用的延时是通过对变量进行递减或递增实现的,很难计算精确的延时时间。
(2)由于跑马灯的状态函数和延时函数是和主任务耦合到一起的,因此主任务的执行时间要对延时的时间产生影响。
如图6-12所示,假设一个跑马灯的延时函数的延时时间是1s,但是由于主函数可能存在不同的分支,因此当主函数执行不同分支程序时,实际的跑马灯延时时间是不一样的。
图6-12 程序分支对delay()函数的影响因此,对于某些对定时精度有要求的场合,例如某项工程需要跑马灯1s更换一个状态(最典型的例子就是时钟指示),就不能采用变量递减或递增的延时方法,而要采用更加精确的中断定时方法。
中断的概念在前面的章节已经有过详细讲解,这里不再赘述,与采用递增递减延时函数相比,采用中断来进行跑马灯的状态更换有以下几个优点。
(1)采用中断函数进行延时,可以精确保证延时的精度,即有效地保证跑马灯状态更换的频率;(2)采用中断函数进行跑马灯状态的更换,在进行延时期间,并不占用单片机资源,单片机可以执行其他的任务。
采用中断延时函数来进行跑马灯状态更换的软件结构如图6-13所示,主程序和跑马灯状态变换程序是独立分开的,当中断发生时,主程序被打断,进行跑马灯状态的变换。
AT89S51单片机里有两个独立的计时器T0和T1,为了得到精确的定时中断,在这里采用T0的模式0来产生定时中断。
如图6-14所示为T0工作于模式0时的结构图。
图6-13 采用时间中断函数的程序结构图6-14 计时器T0的工作模式0当T0工作于模式0时,相关需要配置的寄存器如下:(1)TMOD寄存器:TMOD寄存器是管理计时器T0和T1工作模式和相关配置的寄存器,寄存器内各位如图6-15所示,需要配置的功能位如下所示。
·M10-M00:M10-M00用于选择T0的工作模式,工作于模式0时,T0是一个13位的定时器/计数器,如图6-14所示,THx和TLx分别为8bits和5bits长度,共为13位计数器。
51单片机中断程序大全

//实例42:用定时器T0查询方式P2口8位控制LED闪烁#include<> // 包含51单片机寄存器定义的头文件void main(void){// EA=1; //开总中断// ET0=1; //定时器T0中断允许TMOD=0x01; //使用定时器T0的模式1TH0=(65536-46083)/256; //定时器T0的高8位赋初值TL0=(65536-46083)%256; //定时器T0的高8位赋初值TR0=1; //启动定时器T0@TF0=0;P2=0xff;while(1)//无限循环等待查询{while(TF0==0);TF0=0;P2=~P2;TH0=(65536-46083)/256; //定时器T0的高8位赋初值TL0=(65536-46083)%256; //定时器T0的高8位赋初值|//实例43:用定时器T1查询方式控制单片机发出1KHz音频#include<> // 包含51单片机寄存器定义的头文件sbit sound=P3^7; //将sound位定义为引脚void main(void){// EA=1; //开总中断// ET0=1; //定时器T0中断允许TMOD=0x10; //使用定时器T1的模式1TH1=(65536-921)/256; //定时器T1的高8位赋初值TL1=(65536-921)%256; //定时器T1的高8位赋初值TR1=1; //启动定时器T1—TF1=0;while(1)//无限循环等待查询{while(TF1==0);TF1=0;sound=~sound; //将引脚输出电平取反TH1=(65536-921)/256; //定时器T0的高8位赋初值TL1=(65536-921)%256; //定时器T0的高8位赋初值}}://实例44:将计数器T0计数的结果送P1口8位LED显示#include<> // 包含51单片机寄存器定义的头文件sbit S=P3^4; //将S位定义为引脚void main(void){// EA=1; //开总中断// ET0=1; //定时器T0中断允许TMOD=0x02; //使用定时器T0的模式2TH0=256-156; //定时器T0的高8位赋初值TL0=256-156; //定时器T0的高8位赋初值#TR0=1; //启动定时器T0while(1)//无限循环等待查询{while(TF0==0) //如果未计满就等待{if(S==0) //按键S按下接地,电平为0P1=TL0; //计数器TL0加1后送P1口显示}TF0=0; //计数器溢出后,将TF0清0}}//实例45:用定时器T0的中断控制1位LED闪烁)#include<> // 包含51单片机寄存器定义的头文件sbit D1=P2^0; //将D1位定义为引脚void main(void){EA=1; //开总中断ET0=1; //定时器T0中断允许TMOD=0x01; //使用定时器T0的模式2TH0=(65536-46083)/256; //定时器T0的高8位赋初值TL0=(65536-46083)%256; //定时器T0的高8位赋初值TR0=1; //启动定时器T0^while(1);}函数功能:定时器T0的中断服务程序**************************************************************/void Time0(void) interrupt 1 using 0寄存器{D1=~D1; //按位取反操作,将引脚输出电平取反TH0=(65536-46083)/256; //定时器T0的高8位重新赋初值TL0=(65536-46083)%256; //定时器T0的高8位重新赋初值}|//实例46:用定时器T0的中断实现长时间定时#include<> // 包含51单片机寄存器定义的头文件sbit D1=P2^0; //将D1位定义为引脚unsigned char Countor; //设置全局变量,储存定时器T0中断次数void main(void){EA=1; //开总中断ET0=1; //定时器T0中断允许TMOD=0x01; //使用定时器T0的模式2;TH0=(65536-46083)/256; //定时器T0的高8位赋初值TL0=(65536-46083)%256; //定时器T0的高8位赋初值TR0=1; //启动定时器T0Countor=0; //从0开始累计中断次数while(1);}/**************************************************************函数功能:定时器T0的中断服务程序**************************************************************/ void Time0(void) interrupt 1 using 0{@Countor++; //中断次数自加1if(Countor==20) //若累计满20次,即计时满1s{D1=~D1; //按位取反操作,将引脚输出电平取反Countor=0; //将Countor清0,重新从0开始计数}TH0=(65536-46083)/256; //定时器T0的高8位重新赋初值TL0=(65536-46083)%256; //定时器T0的高8位重新赋初值}//实例47:用定时器T1中断控制两个LED以不同周期闪烁#include<> // 包含51单片机寄存器定义的头文件)sbit D1=P2^0; //将D1位定义为引脚sbit D2=P2^1; //将D2位定义为引脚unsigned char Countor1; //设置全局变量,储存定时器T1中断次数unsigned char Countor2; //设置全局变量,储存定时器T1中断次数void main(void){EA=1; //开总中断ET1=1; //定时器T1中断允许TMOD=0x10; //使用定时器T1的模式1TH1=(65536-46083)/256; //定时器T1的高8位赋初值—TL1=(65536-46083)%256; //定时器T1的高8位赋初值TR1=1; //启动定时器T1Countor1=0; //从0开始累计中断次数Countor2=0; //从0开始累计中断次数while(1);}void Time1(void) interrupt 3 using 0{Countor1++; //Countor1自加1Countor2++; //Countor2自加1。
89c51单片机李朝青版第6章课后习题答案

SETB TR1 ;启动T1定时
LOOP2:JBC TF1,L1 ;查询10ms时间到?时间到,转L1
SJMP LOOP2 ;时间未到,转LOOP2,继续查询
9、一个定时器定时时间有限,如何实现两个定时器的串行定时以满足较长定时时间的要求?
答:当一个定时器溢出时,设置另一个定时器的初值为0开始定时。
SJMP LOOP2 ;时间未到,转LOOP2,继续查询
14、已知89C51单片机的fosc=12MHz,用T1定时。试编程由P1.0和P1.1引脚分别输出周期为2ms和500μs的方波。
解:采用模式0作定时初值:
所以
MOV R2,#04H ;R2为“250μs”计数器,置入初值4
CLR P1.0 ;P1.0输出低电平
第6章习题答案
1、定时器模式2有什么特点?适用于什么场合?
答:
(1)模式2把TL0(或TL1)配置成一个可以自动重装载的8位定时器/计数器。TL0计数溢出时不仅使溢出中断标志位TF0置1,而且还自动把TH0中的内容重新装载到TL0中。TL0用作8位计数器,TH0用以保存初值。
(2)用于定时工作方式时间(TF0溢出周期)为,用于计数工作方式时,最大计数长度(TH0初值=0)为28=256个外部脉冲。
模式0:
T0低5位11000B=18H
T0高8位:01100011B=63H
模式1:
模式2:在此情况下最长定时为512μs,无法一次实现定时10ms,可用0.1ms循环100次
16、89C51单片机的定时器在何种设置下可提供三个8位计数器定时器?这时,定时器1可作为串行口波特率发生器。若波特率按9600b/s,4800b/s,2400b/s,1200b/s,600b/s,100b/s来考虑,则此时可选用的波特率是多少(允许存在一定误差)?设fosc=12MHz。
中断定时计数器课件

例 5 编写一段程序,功能要求为:当P1.0引脚的电平正跳变时,对P1.1的输入脉冲 进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写入R0、R1(高位 存R1,低位存R0)。 解答:将P1.1的输入脉冲接入INT0,即使用T0计数器完成对P1.1口的脉冲计数。编写程 序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P MAIN: JNB P1.0,MAIN MOV TMOD,#05H ;定 时器/计数器T0为计数方式1 SETB TR0 ;启动T0,开 始计数 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 WAIT: JB CLR CLR MOV MOV AJMP INC RETI P1.2,WAIT EA TR0 R1,TH0 R0,TL0 $ R2
ORG 000BH CPL P1.0 MOV TL0, #9CH RETI ORG 001BH CPL P1.1 MOV TH0, #38H RETI ;TL0 中断服务程序 ;P1.0 取反 ;重新装入计数初值 ;中断返回 ;TH0 中断服务程序 ;P1.1取反 ;重新装入计数初值 ;中断返回
AJMP DEL REP:CPL P1.0 AJMP DEL ; ;若计数溢出,则输出取反
TINT0: JNB 20H.0,NEXT MOV TL0,#0B5H MOV TH0,#0FFH CLR P1.1 CPL 20H.0 SJMP LAST NEXT: MOV TL0,#0CEH MOV TH0,#0FFH SETB P1.1 CPL 20H.0 LAST:RETI
方法二: 采用方式2 定时器中断 加延时程序
ORG 0000H LJMP MAIN ORG 000BH LJMP IT0P MAIN: MOV TMOD,#02H;定时器/ 计数器T0为定时方式2 IT0P:CLR EA MOV TL0,#4AH;定时 CLR P1.0 ;关中断 364μs初值赋值 MOV R0,#9 ;延时26μs SETB TR0;启动T0,开始 DLY:DJNZ R0,DLY MOV TL0,#4AH ;定时364μs 计数 初值赋值 SETB ET0;允许T0中断 SETB P1.0 SETB EA;CPU开中断 SETB EA RETI SETB P1.0 WAIT: AJMP WAIT
定时计数器T0T1程序设计-2014讲解

89C51
C1 C2
C1 C2
89C51
图2 P1口某一I/O口线状态反转电路
图3 定时50ms轮流点亮电路
定时计数器T0/T1程序设计
4、硬件设计
P1口某一I/O口线状态反转设计电路如图2所示。将 51单片机第40脚Vcc接电源+5V,第20脚Vss接地,为单片 机工作提供能源。 将第19脚XTAL1与18脚XTAL2分别接外部晶体两个引 脚,由石英晶体组成振荡器,保证单片机内部各部分有 序地工作。对外部C1、C2的取值虽然没有严格的要求, 但电容的大小会影响到振荡器频率的高低、振荡器的稳 定性、起振的快速性。C1、C2通常取值C1=C2=30PF左右。 8051的晶振最高振荡频率为12M,AT89C51的外部晶振最 高频率可到24M。
定时计数器T0/T1程序设计
4、硬件设计
单片机可靠的复位是保证单片机正常运行的关键因素。 因此,在设计复位电路时,通常要使RST引脚保持10ms以上 的高电平。当RST从高电平变为低电平之后,单片机就从 0000H地址开始执行程序。本电路是上电自动复位。 将1个LED接在单片机P1端口的P1.5引脚上,注意LED有 长短两个引脚,分别表示正负极,其中较短的负极接单片 机,较长的为正极,通过限流电阻R与Vcc相连。 本实验只需将1个LED与P1口相连。单片机的P0、P1、 P2、P3端口都可以用来控制LED。(反过去再看设备)
单片机内部定时器/计数器实验
7、实验报告要求
1)实验报告要求有实验目的、要求、设备或仪器、硬件 软件设计、步骤、现象分析、应用分析。现象分析、应 用分析填在原始数据栏。 2)画出实验要求1)2)3)程序设计流程图和2)的硬件设计 电路图。 3)写出2)3)程序设计清单? 4)写出实验过程中所遇到的问题与解决的办法。
t0中断服务函数的书写方法

t0中断服务函数的书写方法在嵌入式系统中,中断是一种非常重要的机制,它可以让CPU在执行程序的同时,及时响应外部事件的发生。
而t0中断是一种定时器中断,它可以周期性地触发中断服务函数的执行。
在本文中,我们将介绍t0中断服务函数的书写方法。
1. 中断服务函数的定义中断服务函数是一种特殊的函数,它的执行是由中断触发的。
在t0中断中,中断服务函数的名称通常为“t0_isr”,它的定义如下:void t0_isr(void) interrupt 1{// 中断服务函数的代码}其中,void表示该函数没有返回值,interrupt 1表示该函数是由中断1触发的。
在8051单片机中,t0中断的中断号为1。
2. 中断服务函数的功能t0中断服务函数的主要功能是处理定时器中断。
在t0中断中,定时器的计数器会溢出,当计数器溢出时,就会触发中断。
中断服务函数需要在中断发生时,及时处理定时器中断,并清除中断标志位,以便下一次中断的触发。
下面是一个简单的t0中断服务函数的例子:void t0_isr(void) interrupt 1{// 处理定时器中断// 清除中断标志位TF0 = 0;}在这个例子中,我们只是简单地清除了中断标志位。
实际上,中断服务函数的功能可能会更加复杂,例如读取传感器数据、控制外设等。
3. 中断服务函数的注意事项在编写t0中断服务函数时,需要注意以下几点:(1)中断服务函数需要尽可能地短小精悍,以便尽快地完成中断处理,并返回到主程序中。
(2)中断服务函数中不应该使用延时函数或者阻塞函数,因为这些函数会占用CPU的时间,导致系统响应变慢。
(3)中断服务函数中不应该使用浮点运算,因为浮点运算需要较长的时间,会影响系统的响应速度。
(4)中断服务函数中不应该使用全局变量,因为全局变量可能会被主程序和中断服务函数同时访问,导致数据不一致。
(5)中断服务函数中可以使用局部变量,但是需要注意变量的生命周期,以免出现变量被销毁的情况。
单片机定时器 中断

定时/计数器1、定时/计数器的结构定时/计数器T0和T1分别是由两个8位的专用寄存器组成,即定时/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。
此外,其内部还有2个8位的特殊功能寄存器TMOD和TCON,TMOD负责控制和确定T0和T1的功能和工作模式,TCON用来控制T0和T1启动或停止计数,同时包含定时/计数器的状态。
2、定时/计数器的功能选择T0和T1都具有定时和计数两种功能。
在TMOD中,有一个控制位C/T,分别用于选择T0和T1是工作于定时器方式,还是计数器方式。
计数功能里,计数脉冲的频率不能高于振荡脉冲频率的1/24。
定时功能里,计数频率为振荡频率的1/12。
3、工作方式控制寄存器TMODTMOD不能位寻址,只能有用字节传送指令设置其内容。
TMOD的各位定义如下:D7D6D5D4D3D2D1D0 GATE C/T M1M0GATE C/T M1M0定时器1定时器0GATE位:门控位。
该位置位时只有在INTn引脚置高及TRn控制置位时才可打开定时器/计数器,这时可用于测量在INTn引脚出现的正脉冲的宽度。
该位清零时,置位TR1即可打开定时器/计数器。
C/T:计数/定时功能选择位。
控制定时器是用作定时器或计数器,该位清零则用作定时器(从内部系统时钟输入);该位置位则用作计数器(计数脉冲从Tn引脚输入)。
M1和M0:定时器模式选择位:M1M0定时器模式00模式0:TLn中低5位与THn中的8位构成13位计数器01模式1:16位定时器/计数器,无预分频器10模式2:8位自装载定时器,当溢出时将THn存放的值装入TLn11模式3:定时器0此时作为双8位定时/计数器。
TL0作为一个8位定时器/计数器,通过标准定时器0控制位控制。
TH0仅作为一个8位定时器,由定时器1控制位控制。
在这种模式下定时/计数器T1关闭。
4、定时器控制寄存器TCONTCON各位的定义如下:D7D6D5D4D3D2D1D0 TF1TR1TF0TR0IE1IT1IE0IT0 TF1:定时器1溢出标志。
哈尔滨工业大学2021年《单片机原理与应用技术》期末试题及答案

1选择题1.MCS-51汇编语言指令格式中,唯一不可缺少的部分是 B 。
A.标号 B.操作码 C.操作数 D.注释2.单片机中PUSH和POP指令常用来 C 。
A.保护断点 B.保护现场C.保护现场,恢复现场 D.保护断点,恢复断点3.MCS-51寻址方式中,操作数Ri加前缀“@”号的寻址方式是 A 。
A.寄存器间接寻址 B.寄存器寻址C.基址加变址寻址 D.立即寻址4.在MCS-51指令中,下列指令中 C 是无条件转移指令。
A.LCALL addr16 B.DJNZ direct, relC.SJMP rel D.ACALL addr115.在编程中使用伪指令的目的是 C 。
A.指示和引导如何进行手工汇编 B.指示和引导编译程序如何汇编C.指示和引导汇编程序进行汇编 D.指示和引导程序员进行汇编6. LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(D)A.2000H B.2001H C.2002H D.2003H7. 下面指令将MCS-51的工作寄存器置成3区(B)A.MOV PSW,#13H B.MOV PSW,#18HC.SETB PSW.4 CLR PSW.3 D. SETB PSW.3 CLR PSW.48.MCS-51寻址方式中,立即寻址的寻址空间是(C)。
A.工作寄存器R0~R7B.专用寄存器SFRC.程序存储器ROMD.片内RAM的20H~2FH字节中的所有位和部分专用寄存器SFR的位9.MCS-51寻址方式中,直接寻址的寻址空间是(D)。
A.工作寄存器R0~R7 B.专用寄存器SFRC.程序存储器ROM D.数据存储器256字节范围10. 是最简单的程序结构,它既无分支,又无循环,在执行时单片机是按程序中指令的顺序逐条进行的。
(A)A.顺序结构B.分支结构C.循环结构D.子程序2判断题。
(×)1.MCS-51的数据传送指令是把源操作数传送到目的操作数,指令执行后,源操作数改变,目的操作数修改为源操作数。
第05章单片机定时计数器习题解答.

第05章 单片机定时计数器 习题解答一、 填空题1.1. MCS-51单片机中有单片机中有 2 2 个 16 16 位的定时器位的定时器//计数器。
器。
2.2. 定时器定时器//计数器T0可以工作于方式可以工作于方式 0、1、2、3 3 。
3.3. 方式0为 13 位定时器位定时器//计数器。
计数器。
4.4. 若系统晶振频率为12MHz ,则T0工作于定时方式1时最多可以定时 65536 65536 µs。
µs。
5.5. 欲对300个外部事件计数,可以选用定时器个外部事件计数,可以选用定时器//计数器T1的模式的模式 0 0 或模或模式 1 。
6.6. TMOD 中的M1M0= 11时,定时器工作于方式时,定时器工作于方式 3 3。
7.7. 若系统晶振频率为6MHz 6MHz,则定时器可以实现的最小定时时间为,则定时器可以实现的最小定时时间为,则定时器可以实现的最小定时时间为 2 2 µs。
8.8. MCS-51单片机工作于定时状态时,计数脉冲来自单片机内部的机器周期 。
9.9. MCS-51单片机工作于计数状态时,计数脉冲来自单片机工作于计数状态时,计数脉冲来自 单片机外部事件单片机外部事件单片机外部事件 。
10.10. 当GATE=0时,时, 则当软件控制位则当软件控制位TR0TR0==1时 启动T0开始工作。
开始工作。
二、 简答题1.1.定时器定时器定时器//计数器T0和T1各有几种工作方式?简述每种工作方式的特点。
如何控制定时器/计数器的工作方式?计数器的工作方式?答:答:T0T0可以工作于方式0,1,2,3;T1可以工作于方式0,1,2方式0:是13位定时位定时//计数器,由TLX 的低5位(位(TLX TLX 的高3位未用)和THX 高8位组成。
成。
方式1:TLX 和THX 组成16位定时位定时//计数器。
计数器。
方式2:方式2为自动重装初值的8位定时位定时//计数器。
单片机原理与应用练习题库及答案

单片机原理与应用练习题库及答案一、单选题(共64题,每题1分,共64分)1.单片机8031的/EA引脚( )。
A、必须接地B、必须接+5V电源C、可悬空D、以上三种情况视需要而定正确答案:A2.MCS-51单片机向外扩展存储器时,片内4个I/O口中作为数据总线的是( )。
A、P0口和P2口B、P0口C、P2口和P3口D、P2口正确答案:B3.MCS-51单片机可分为两个优先级别,各中断源的优先级别设定是利用寄存器( )。
A、IEB、IPC、TCOND、SCON正确答案:B4.启动定时器/计数器T0开始计数是使TCON的( )。
A、TF0位置1B、TR0位置1C、TR0位置0D、TR1位置0正确答案:B5.执行指令MOVXA,@DPTR时,/WR、/RD脚的电平为( )。
A、/WR高电平,/RD高电平B、/WR低电平,/RD高电平C、/WR高电平,/RD低电平D、/WR低电平,/RD低电平正确答案:C6.访问外部存储器或其它接口芯片时,作数据线和低8位地址线的是( )。
A、P2口B、P1口C、P0口D、P0口和 P2口正确答案:C7.MCS-51单片机的复位信号是( )有效。
A、高电平B、低电平C、脉冲D、下降沿正确答案:A8.MCS-51单片机的两个定时器/计数器作定时器使用时,其TMOD的D6或D2位应分别为( )。
A、D6=0,D2=0B、D6=1,D2=0C、D6=0,D2=1D、D6=1,D2=1正确答案:A9.以下描述正确的是( )。
A、continue语句的作用是结束整个循环B、只能在循环体内和switch语句体内使用break 语句C、在循环体内使用break语句和continue语句的作用相同D、以上三种都不正确正确答案:B10.用定时器/计数器T1方式1计数,要求每计满10次产生溢出标志,则TH1、TL1的初始值是( )。
A、F6H、F6HB、FFH、F0HC、F0H、F0HD、FFH、F6H正确答案:D11.外部中断1固定对应的中断入口地址为( )。
51单片机定时器计数器汇编实验

实验三、定时器/计数器实验报告一、实验内容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数码管显示。
(计算机仿真)二、实验仿真图(1)脉冲计数实验程序ORG 0000HBEGIN:MOV TMOD,#51H MOV TL0,#0F0HMOV TH0,#0DBHMOV TH1,#00HMOV TL1,#00HMOV P1,#00HMOV P0,#00HMOV P2,#00HMOV R3,#00HMOV R4,#00HSETB TR0SETB TR1S1: MOV R1,#33HMOV A,R4MOV R5,TL1ADD A,R5MOV P1,AMOV R2,TL1CJNE R2,#10,S2MOV TH1,#00HMOV TL1,#00HINC R3MOV A,R3MOV DPTR,#TAB1MOVC A,@A+DPTRMOV P2,AMOV P0,#3FHMOV A,R3MOV B,#0AHMUL ABMOV R4,AMOV P1,R4AJMP NEXTS2: MOV R1,#33HMOV DPTR,#TAB1MOV A,TL1MOVC A,@A+DPTRMOV P0,AAJMP NEXT LOOP: JBC TF0,NEXT AJMP LOOPNEXT: MOV TL0,#0F0HMOV TH0,#0DBHDJNZ R1,LOOPCPL P3.6CPL P3.7AJMP S1TAB1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;(SW3,SW4为:00) END(2)60秒定时器实验程序ORG 0000HBEGIN:MOV TMOD,#51HTL0,#0F0HMOVMOVTH0,#0DBHTH1,#00HMOVTL1,#00HMOVR3,#00HMOVP0,#00HMOVP2,#00HMOVSETBTR0TR1SETBS1: MOV R1,#33HR2,TL1MOVR2,#10,S2CJNETH1,#00HMOVTL1,#00HMOVR3INCR3,#06H,S4CJNER3,#00HMOVS4: MOV A,R3DPTR,#TAB1MOVA,@A+DPTRMOVCP2,AMOVMOVP0,#3FHNEXTAJMPS2: MOV R1,#33HDPTR,#TAB1MOVA,TL1MOVA,@A+DPTRMOVCMOVP0,ANEXTAJMPLOOP: JBC TF0,NEXTLOOPAJMPNEXT: MOV TL0,#0F0HTH0,#0DBHMOVR1,LOOPDJNZP3.6CPLCPLP3.7S1AJMPTAB1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END。
第05章 单片机定时计数器 习题解答

DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,A
MOV TMOD,#02H;
SETB ET0
SETB EA
WT: JB SP1,WT;直接寻址位为1转移(按键按下时SP1为0)
MOV P0,A
MOV A,B
MOV DPTR,#TABLE;可以不要
MOVC A,@A+DPTR
MOV P2,A
MOV KEYCNT,#00H
DKN: JNB SP1,$;直接寻址为0转移
LJMP WT
DELY10MS:
MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
M1
M0
工作方式
方式说明
0
0
方式0
13位定时/计数器
0
1
方式1
16位定时/计数器
1
0
方式2
具有自动重装初值的8位定时/计数器
1
1
方式3
T0为两个独立的8位计数器,T1为波特率发生器
2.设MCS-51单片机的晶振频率fOSC=6MHz,分别讨论定时器/计数器0在各种工作方式下的最长定时时间。
答:由fosc =6MHz可知,一个机器周期T=2us,由于是加1计数,所以最长定时应是计数初值最小时(即为0时)的定时时间。
汇编语言参考程序如下:
ORG 0000H;在0000H单元存放转移指令
LJMPMAIN;转移到主程序
单片机汇编中断程序(定时器中断)

单片机汇编中断程序(定时器中断)
;首相,介绍一下51 单片机的定时计数器,51 有两个定时计数器,分别为
T0,T1,基本一样,
;有一点不同,下面我们介绍定时计数器T0
;了解8051 的timer0 中断的程序写法,用中断法产生定时
;上面显示的是proteus 仿真图,下面的是源程序
;说明:(源程序中的终端入口地址很重要(这个是固定的),程序中断时,
会在对应中断固定的
;入口地址进入,因为规定的相隔入口间的空进有限,只能用跳转指令跳转,最终用RETI 强制返回
;这个程序把所有的中断入口地址都写上了,没有用到的,用RETI 直接屏蔽)
;运行结果是使led 灯明一下,暗一下。
COUNT EQU9217;对于11.0592 的晶振来说,延时10ms
LEDEQUP1.1
ORG0000H
LJMP RESET;开始时跳转转到初始化程序中
ORG0003H;外部中断0
RETI
ORG000BH;定时器/计数器T0 入口地址
LJMP INT_TIMER0;跳转到定时器/计数器中断服务程序中去
ORG0013H;外部中断1。
T0作为外部中断使用的方法

1)将定时器设为计数方式,给T0或T1置初值为满(FFH) 2)将要扩展的外中断接到P3.4(T0)或P3.5(T1)引脚上 3)当引脚上发生负跳变,T0或T1加1计数,并产生溢出中断。这样就把 P3.4、பைடு நூலகம்3.5 当外中断的输入线,定时器的中断标志位及中断服务程序就为 外中断用了。
例:用T0扩展一个外中断。 T0设为计数方式,按方式2工作,TL0、TH0的初值送0FFH,T0允许 中断。
MOV TMOD,#06H ;T0计数,方式2, MOV TL0,#0FFH ;TL0赋初值 MOV TH0,#0FFH ;TH0赋初值 SETB EA ;开中断 SETB ET0 ;开T0中断 SETB TR0 ;启动T0工作 。。。。。。
在P3.4(T0)引脚上来一个下降沿信号,TL0加1溢出,将TF0置1,向 CPU申请中断,同时TH0中的值又自动装入TL0,下一次又来一个下降沿, 又置TF0为1,又发中断。T0作为一个边沿触发的外中断源。