T0作定时器汇编程序中断法
- 格式:docx
- 大小:17.74 KB
- 文档页数:4
第六章选择题(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。
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定时器是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位计数器。
//实例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。
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溢出标志。
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章 单片机定时计数器 习题解答一、 填空题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固定对应的中断入口地址为( )。
实验三、定时器/计数器实验报告一、实验内容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。