第6章 AT89C51的定时器计数器
第6章AT89C51定时器计数器
所示 , 图中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单片机的基本结构和工作原理
AT89C51单片机的基本结构和工作原理AT89C51是一种低功耗、高性能的8位单片机,由美国公司Intel (现已被英特尔收购)开发。
它采用CMOS技术制造,在各种工业、汽车和家用电器等领域广泛应用。
AT89C51的基本结构和工作原理如下:一、基本结构:1.中央处理单元(CPU):中央处理单元是AT89C51单片机的控制中心,负责执行程序指令、算术运算和逻辑操作等。
它包括一个8位的累加寄存器ACC、一个8位的指令寄存器IR和一个8位的程序计数器PC。
2.存储器:AT89C51单片机包括4KB的内部闪存ROM用于存储程序代码,并具有可擦写和可编程的特性。
此外,还有128字节的RAM用于存储各种变量和中间结果。
3.输入输出端口(IO):AT89C51单片机有四个8位的IO口(P0、P1、P2和P3),可分别用作输入和输出。
每个IO口都可以设置为输入或输出模式,并且可以具有内部上拉电阻。
4. 定时器/计数器:AT89C51单片机包含两个定时器/计数器(Timer 0和Timer 1),用于产生定时和延时功能。
这两个定时器/计数器都可以工作在8位或16位模式下,并可以设置为定时、计数和波形发生器等不同功能。
5.串行数据通信接口(控制模式):AT89C51单片机具有一个可编程的串行数据通信接口,支持全双工和半双工模式。
它可以与其他外部设备如传感器、LCD显示器和电脑等进行通信。
二、工作原理:1.程序执行过程:首先,AT89C51单片机将程序代码从ROM存储器中读取到指令寄存器IR中。
然后,指令寄存器将指令传输给中央处理单元CPU。
CPU根据指令类型执行不同的操作,如算术运算、逻辑判断、数据读写等。
执行完一条指令后,程序计数器PC将自动递增,指向下一条指令的地址,继续执行。
2.IO交互:AT89C51单片机的IO口可以用作输入和输出。
在输入模式下,IO口可以接收来自外部设备的信号,并传输给中央处理单元CPU。
AT89C51定时计数器T0作定时应用技术
15.定时计数器T0作定时应用技术(一)1.实验任务用A T89S51单片机的定时/计数器T0产生一秒的定时时间,作为秒计数时间,当一秒产生时,秒计数加1,秒计数到60时,自动从0开始。
硬件电路如下图所示2.电路原理图图4.15.13.系统板上硬件连线(1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。
(2.把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应着h。
4.程序设计内容A T89S51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。
只要通过设置特殊功能寄存器TMOD,即可完成。
定时/计数器何时工作也是通过软件来设定TCON 特殊功能寄存器来完成的。
现在我们选择16位定时工作方式,对于T0来说,最大定时也只有65536us,即65.536ms,无法达到我们所需要的1秒的定时,因此,我们必须通过软件来处理这个问题,假设我们取T0的最大定时为50ms,即要定时1秒需要经过20次的50ms的定时。
对于这20次我们就可以采用软件的方法来统计了。
因此,我们设定TMOD=00000001B,即TMOD=01H下面我们要给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算出TH0=(216-50000)/256TL0=(216-50000)MOD256当T0在工作的时候,我们如何得知50ms的定时时间已到,这回我们通过检测TCON特殊功能寄存器中的TF0标志位,如果TF0=1表示定时时间已到。
89C51定时器和计数器
AT89C51定时器/计数器1.定时和计数功能:AT89C51有两个可编程的定时器和计数器:T0和T1。
它们可以工作在定时状态也可以工作在计数状态。
做定时器时不能用作计数,反之亦然。
2.计数器:当定时器/计数器作“计数器”用时,可对接到14引脚(T0/P3.4)或15引脚(T1/P3.5)的脉冲信号数进行计数,每当引脚发生从“1”到“0”的负跳变时,计数器加1.3.定时器:当定时器/计数器作“定时器”用时,定时信号来自内部的时钟发生电路,每个机器周期等于十二个震荡周期,每过一个机器周期,计数器加1.当晶振频率为12MHz时,则机器周期为1微秒;在此情况下,若计数器为100,则所定时的时间为:100x1=100微秒。
4.与定时器/计数器有关的特殊功能寄存器5.定时器/计数器的控制AT89C51单片机定时器/计数器的工作由两个特殊的寄存器TMOD和TCON的相关位来控制,TMOD用于设置它的工作方式,TCON用于控制其启动和中断的请求。
1).TMOD用于设置定时器/计数器的工作方式,其字节地址为89H。
低四位用于T0,高四位用于T1。
虽有位名称,但无位地址,不可进行位操作。
TMOD中的结构和各位名称○1M1,M0:工作方式选择位。
M1、M0为两位二进制数,可表示四种工作方式,见下表:○2C/T:计数/定时方式选择位。
C/T = 1,为计数工作方式,对输入到单片机T0、T1引用的外部信号脉冲计数,负跳变脉冲有效,用作计数器。
C/T = 0,为定时工作方式,对片内机器周期(1个机器周期等于12晶振周期)信号计数,用作定时器。
○3GATE:门控位。
GATE = 0,定时器/计数器的运行只受TCON中的运行控制位TR0/TR1的控制。
GATE = 1,定时器/计数器的运行同时受TR0/TR1和外中断输入信号(INT0和INT1)的双重控制。
GATE对TR0/TR1的制约2).控制寄存器TCONTCON是可位寻址的特殊功能寄存器,其字节地址为88H,位地址由低到高顺序分别为88H~8FH,TCON的低四位只与外中断有关,其高四位与定时器/计数器有关。
单片机习题答案
第1章单片机概述1.除了单片机这一名称之外,单片机还可称为和 ;答:微控制器,嵌入式控制器;2.单片机与普通微型计算机的不同之处在于其将、、和 3部分集成于一块芯片上;答:CPU、存储器、I/O口;3.8051与8751的区别是 ;A.内部数据存储单元数目不同B.内部数据存储器的类型不同C.内部程序存储器的类型不同D.内部寄存器的数目不同答:C;4.在家用电器中使用单片机应属于微计算机的 ;A.辅助设计应用;B.测量、控制应用;C.数值计算应用;D.数据处理应用答:B;5.微处理器、微计算机、微处理机、CPU、单片机它们之间有何区别答:微处理器、微处理机和CPU都是中央处理器的不同称谓;而微计算机、单片机都是一个完整的计算机系统,单片机特指集成在一个芯片上的用于测控目的的单片微计算机; 6.MCS-51系列单片机的基本型芯片分别为哪几种它们的差别是什么答:MCS-51系列单片机的基本型芯片分别是8031、8051和8751;它们的差别是在片内程序存储器上;8031无片内程序存储器,8051片内有4KB的程序存储器ROM,而8751片内集成有4KB的程序存储器EPROM;7.为什么不应当把51系列单片机称为MCS-51系列单片机答:因为MCS-51系列单片机中的“MCS”是Intel公司生产的单片机的系列符号,而51系列单片机是指世界各个厂家生产的所有与8051的内核结构、指令系统兼容的单片机; 8.AT89C51单片机相当于MCS-51系列单片机中的哪一种型号的产品答:相当于MCS-51系列中的87C51,只不过是AT89C51芯片内的4KB Flash存储器取代了87C51片内的4KB的EPROM;第2章 AT89C51单片机片内硬件结构1.在AT89C51单片机中,如果采用6MHz晶振,一个机器周期为 ;答:2μs2.AT89C51单片机的机器周期等于个时钟振荡周期;答:12;3.内部RAM中,位地址为40H、88H的位,该位所在字节的字节地址分别为和 ;答:28H;88H;4.片内字节地址为2AH单元的最低位的位地址是;片内字节地址为88H单元的最低位的位地址是 ;答:50H;88H;5.若A中的内容为63H,那么,P标志位的值为 ;答:P标志位的值为0;6.AT89C51单片机复位后,R4所对应的存储单元的地址为,因上电时PSW= ;这时当前的工作寄存器区是组工作寄存器区;答:04H;00H;0;7.内部RAM中,可作为工作寄存器区的单元地址为 H~ H;答:00H;1FH;8.通过堆栈操作实现子程序调用,首先要把的内容入栈,以进行断点保护;调用返回时,再进行出栈保护,把保护的断点送回到 ;答:PC;PC;9.AT89C51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为AT89C51单片机的PC是16位的,因此其寻址的范围为 KB;答:64KB;10.判断下列项说法是正确的;A.AT89C51单片机的CPU是由RAM和EPROM组成的B.区分片外程序存储器和片外数据存储器的最可靠的方法是看其位于地址范围的低端还是高端C.在AT89C51单片机中,为使准双向的I/O口工作在输入方式,必须保证它被事先预置为1D.PC可以看成是程序存储器的地址指针答: A. 错; B. 错;C. 对;D. 对;11.判断以下有关PC和DPTR的结论是正确的;A.DPTR是可以访问的,而PC不能访问B.它们都是16位寄存器C.在单片机运行时,它们都具有自动加“1”的功能D.DPTR可以分为2个8位的寄存器使用,但PC不能答:A. 对; B. 对;C. 错;D. 对;12.判断下列说法项是正确的;A.程序计数器PC不能为用户编程时直接访问,因为它没有地址B.内部RAM的位寻址区,只能供位寻址使用,而不能供字节寻址使用C.AT89C51单片机共有21个特殊功能寄存器,它们的位都是可用软件设置的,因此,是可以进行位寻址的;答:A. 对; B. 错;C. 错;13.PC的值是 ;A.当前正在执行指令的前一条指令的地址B.当前正在执行指令的地址C.当前正在执行指令的下一条指令的地址D.控制器中指令寄存器的地址答:A. 错;B. 错;C. 对;D. 错;14.判断下列说法项是正确的;A.PC是一个不可寻址的特殊功能寄存器B.单片机的主频越高,其运算速度越快C.在AT89C51单片机中,一个机器周期等于1sD.特殊功能寄存器内存放的是栈顶首地址单元的内容答:A. 对;B. 对;C. 错;D.错;15.AT89C51单片机的片内都集成了哪些功能部件各个功能部件的最主要的功能是什么11个微处理器CPU;2128个数据存储器RAM单元;34KB Flash程序存储器;44个8位可编程并行I/O口P0口、P1口、P2口、P3口;51个全双工串行口;62个16位定时器/计数器;7一个中断系统,5个中断源,2个优先级;821个特殊功能寄存器SFR;16.说明AT89C51单片机的引脚EA的作用,该引脚接高电平和低电平时各有何种功能答:当EA脚为高电平时,单片机读片内程序存储器4KB Flash,但在PC值超过0FFFH即超出4KB地址范围时,将自动转向读外部程序存储器内的程序;当EA脚为低电平时,对程序存储器的读操作只限定在外部程序存储器,地址为0000H~FFFFH,片内的4KB Flash程序存储器不起作用;17.64KB程序存储器空间有5个单元地址对应AT89C51单片机5个中断源的中断入口地址,请写出这些单元的入口地址及对应的中断源;答:64KB程序存储器空间中有5个特殊单元分别对应于5个中断源的中断服务程序的入口地址,见下表;18.当AT89C51答:按下复位按钮;第3章 AT89C51单片机的指令系统1.在基址加变址寻址方式中,以作为变址寄存器,以或作为基址寄存器;答:A,PC,DPTR;2.指令格式是由和组成,也可仅由组成;答:操作码,操作数,操作码;3.假定累加器A中的内容为30H,执行指令1000H:MOVC A,A+PC后,把程序存储器单元的内容送入累加器A中;答:1031H;4.在AT89C51单片机中,PC和DPTR都用于提供地址,但PC是为访问存储器提供地址,而DPTR是为访问存储器提供地址;答:程序,数据;5.在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的 ;答:地址;6.已知程序执行前有A=02H,SP=52H,51H=FFH,52H=FFH;下述程序执行后,A= ,SP= ,51H= ,52H= ,PC= ;POP DPHPOP DPLMOV DPTR,4000HRL AMOV B,AMOVC A,A+DPTRPUSH AccMOV A,BINC AMOVC A,A+DPTRPUSH AccRETORG 4000HDB 10H,80H,30H,50H,30H,50H答:A=50H,SP=50H,51H=30H,52H=50H,PC=5030H;7.假定A=83H,R0=17H,17H=34H,执行以下指令后,A= ;ANL A,17HORL 17H,AXRL A,R0CPL A答:A=0CBH;8.假设A=55H,R3=0AAH,在执行指令“ANL A,R5”后,A= ,R3= ;答:A=00H,R3=0AAH;9.如果DPTR=507BH,SP=32H,30H=50H,31H=5FH,32H=3CH,则执行下列指令后,DPH= ,DPL= ,SP= ;POP DPHPOP DPLPOP SP答:DPH=3CH,DPL=5FH,SP=50H;10.假定,SP=60H,A=30H,B=70H,执行下列指令后,SP的内容为 ,61H单元的内容为 ,62H单元的内容为 ;PUSH AccPUSH B答:SP=62H,61H=30H,62H=70H;11.判断下列说法项是正确的;A.立即寻址方式是被操作的数据本身就在指令中,而不是它的地址在指令中B.指令周期是执行一条指令的时间C.指令中直接给出的操作数称为直接寻址答:A.对;B.对; C.错;12.判断以下指令的正误;1MOV 28H,R2 2DEC DPTR 3INC DPTR 4CLR R05CPL R5 6MOV R0,R1 7PHSH DPTR 8MOV F0,C9MOV F0, 10MOVX A,R1 11MOV C,30H 12RLC R0答:1错2错3对4错5错6错7错8对9错10对11对12错;13.访问SFR,可使用哪些寻址方式答:只能使用直接寻址方式;14.下列程序段的功能是什么PUSH AccPUSH BPOP AccPOP B答:A的内容与B的内容互换;15.写出完成如下要求的指令,但是不能改变未涉及位的内容;1把,,和清“0”;2把累加器A的中间4位清“0”;3使和置“1”;答:1ANL A,87H2ANL A,0C3H3ORL A,0CH16.借助本书中的表3-2指令表,对如下指令代码十六进制进行手工反汇编;FF C0 E0 E5 F0 F0答:MOV R7,APUSH AMOV A ,BMOVX DPTR,A第4章 AT89C51单片机汇编语言程序设计1.已知程序执行前有A=02H,SP=42H,41H=FFH,42H=FFH;下述程序执行后,A= ;SP= ;41H= ;42H= ;PC= ;POP DPHPOP DPLMOV DPTR,3000HRL AMOV B,AMOVC A,A+DPTRPUSH AccMOV A,BINC AMOVC A,A+DPTRPUSH AccRETORG 3000HDB 10H,80H,30H,80H,50H,80H答: A=80H,SP=40H,51H=50H,52H=80H ,PC=8050H;2.说明伪指令的作用;“伪”的含义是什么常用伪指令的功能如何答:伪指令不属于指令系统中的汇编语言指令,它是程序员发给汇编程序的控制命令;只有在汇编前的源程序中才有伪指令;所以“伪”体现在汇编后,伪指令没有相应的机器代码产生;3.解释手工汇编、机器汇编、交叉汇编、反汇编术语概念;答:1手工汇编:手工编程,首先把程序用助记符指令写出,然后通过查指令的机器代码表,逐个把助记符指令“翻译”成机器代码,这种人工查表“翻译”指令的方法称为手工汇编;2机器汇编:是借助于微型计算机上的软件汇编程序来代替手工汇编,完成把助记符指令“翻译”成机器代码的工作;3交叉汇编:使用微型计算机来完成汇编,而汇编后得到的机器代码却是在另一台计算机这里是单片机上运行,称这种机器汇编为交叉汇编;4反汇编:将二进制的机器代码语言程序翻译成汇编语言源程序的过程;4.下列程序段经汇编后,从1000H开始的各有关存储单元的内容是什么ORG 1000HTAB1 EQU 1234HTAB2 EQU 3000HDB "MAIN"DW TAB1,TAB2,70H答:4D 41 49 4E 12 34 30 00 00 705.设计子程序时应注意哪些问题答:在编写子程序时应注意以下问题;1子程序的第一条指令前必须有标号;2使用子程序调用指令时,有两条调用指令可供使用;①使用绝对调用指令ACALL addr11要注意,被调用的子程序的首地址与本绝对调用指令的下一条指令的高5位地址相同,即只能在同一2KB程序存储区内;②使用长调用指令LCALL addr16时,addr16为直接调用的子程序的目标地址,也就是说,被调用的子程序可放置在64KB程序存储器区的任意位置;3子程序结构中必须用到堆栈,堆栈通常用来保护断点和现场保护;4子程序返回主程序时,最后一条指令必须是RET指令;5子程序可以嵌套,即主程序可以调用子程序,子程序又可以调用另外的子程序;6.试编写一个程序,将内部RAM中45H单元的高4位清“0”,低4位置“1”;答:参考程序如下:MOV A,45HANL A,0FHORL A,0FHMOV 45H,A7.试编写程序,查找在内部RAM的30H~50H单元中是否有0AAH这一数据;若有,则将51H 单元置为“01H”;若未找到,则将51H单元置为“00H”;答:参考程序如下:START: MOV R0,30HMOV R2,20HLOOP: MOV A,R0CJNE A,0AAH,NEXTMOV 51H,01HLJMP EXITNEXT: INC R0DJNZ R2,LOOPMOV 51H,00HEXIT: RET8.试编写程序,查找在内部RAM的20H~40H单元中出现“00H”这一数据的次数,并将查找到的结果存入41H单元;答:参考程序如下:START: MOV 41H,0MOV R0,20HMOV R2,20HLOOP: MOV A,R0JNZ NEXTINC 41HNEXT: INC R0DJNZ R2,LOOPRET9.在内部RAM的21H单元开始存有一组单字节无符号数,数据长度为20H,编写程序,要求找出最大数存入MAX单元;答:略:10.若SP=60H,标号LABEL所在的地址为3456H;LCALL指令的地址为2000H,执行如下指令2000H LCALL LABEL后,堆栈指针SP和堆栈内容发生了哪些变化PC的值等于什么如果将指令LCALL直接换成ACALL是否可以如果换成ACALL指令,可调用的地址范围是什么答: 1SP=SP+1=61H 61H=PC的低字节=03HSP=SP+1=62H 62H=PC的高字节=20H2PC=3456H3可以42KB=2048 Byte第5章 AT89C51单片机的中断系统1.外部中断1的中断入口地址为 ;定时器1的中断入口地址为 ;答:0013H;001BH;2.若IP=00010100B,则优先级最高者为 ,最低者为 ;答:外部中断1;定时器T1;3.AT89C51单片机响应中断后,产生长调用指令LCALL,执行该指令的过程包括:首先把的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送 ,使程序执行转向中的中断地址区;答:PC、PC、程序存储器;4.判断AT89C51单片机对外中断请求源响应的最快响应时间为3个机器周期 ; 答:对;5.下列说法正确的是 ;A.各中断源发出的中断请求信号,都会标记在AT89C51单片机的IE寄存器中B.各中断源发出的中断请求信号,都会标记在AT89C51单片机的TMOD寄存器中C.各中断源发出的中断请求信号,都会标记在AT89C51单片机的IP寄存器中D.各中断源发出的中断请求信号,都会标记在AT89C51单片机的TCON与SCON寄存器中答:D;6.中断查询确认后,在下列各种AT89C51单片机运行情况下,能立即进行响应的是 ;A.当前正在进行高优先级中断处理B.当前正在执行RETI指令C.当前指令是DIV指令,且正处于取指令的机器周期D.当前指令是MOV A,R3答:D;7.在AT89C51单片机的中断请求源中,需要外加电路实现中断撤销的是 ; A.电平方式的外部中断B.脉冲方式的外部中断C.外部串行中断D.定时中断答:A;8.下列说法正确的是 ;A.同一级别的中断请求按时间的先后顺序响应B.同一时间同一级别的多中断请求将形成阻塞,系统无法响应C.低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求D.同级中断不能嵌套答:A、C、D;9.中断服务子程序与普通子程序有哪些相同和不同之处答:RETI指令在返回时,同时清除中断系统中相应的优先级触发器,以允许下次中断,而RET指令则没有这个操作;除了这一点两条指令不同外,其他操作都相同;10.AT89C51单片机响应外部中断的典型时间是多少在哪些情况下,CPU将推迟对外部中断请求的响应答:略;11.编写外部中断1为跳沿触发的中断初始化程序段;答:SETB IT1SETB EX1SETB EA12.中断响应的条件是什么答:略;13.某系统有3个外部中断源1、2、3,当某一中断源发出的中断请求使INT1引脚变为低电平时见图5-10,便要求CPU进行处理,它们的优先处理次序由高到低为3、2、1,中断处理程序的入口地址分别为1000H、1100H、1200H;试编写主程序及中断服务子程序转至相应的中断处理程序的入口即可;答:参见电路如图5-10所示,参考程序如下:ORG 0000HLJMP MAINORG 0013HLJMP INT_EX1ORG 0030HMAIN: CLR IT0 ;采用电平触发,低电平有效中断SETB EX1 ;允许外部中断1SETB EAWAIT: LJMP WAIT ;用原地跳转代替一段用户程序;以下为外部中断1服务子程序INT_EX1: JNB ,NEXT1 ;=0,不是3号中断,跳转NEXT1LJMP INT_IR3 ;是3号中断,跳转到对应的中断处理程序NEXT1: JNB ,NEXT2 ;=0,不是2号中断,跳转NEXT2LJMP INT_IR2 ;跳转到2号中断处理程序NEXT2: LJMP INT_IR1 ;跳转到1号中断处理程序ORG 1000HINT_IR3: 插入相应中断处理程序RETI ;中断返回ORG 1100HINT_IR2: 插入相应中断处理程序RETI ;中断返回ORG 1200HINT_IR1: 插入相应中断处理程序RETI ;中断返回第6章 AT89C51单片机的定时器/计数器1.下列项说法是正确的;A.特殊功能寄存器SCON,与定时器/计数器的控制无关B.特殊功能寄存器TCON,与定时器/计数器的控制无关C.特殊功能寄存器IE,与定时器/计数器的控制无关D.特殊功能寄存器TMOD,与定时器/计数器的控制无关答:A.对;B.;错C.错;D.错;2.如果采用的晶振的频率为3MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少答:因为机器周期所以定时器/计数器工作方式0下,其最大定时时间为同样可以求得,方式1下的最大定时时间为;方式2下的最大定时时间为1024ms; 3.定时器/计数器用作定时器模式时,其计数脉冲由谁提供定时时间与哪些因素有关答:定时器/计数器用作定时器时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供;定时时间与时钟频率和定时初值有关;4.定时器/计数器用作计数器模式时,对外界计数频率有何限制答:由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24;5.采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式;定时1ms后,又转为计数工作方式,如此循环不止;假定AT89C51单片机的晶体振荡器的频率为6MHz,请使用方式1实现,要求编写程序;答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作;除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式;参考程序如下:ORG 0000HLJMP MAINORG 000BHLJMP IT0PMAIN: MOV TMOD,06H ;定时器/计数器T0为计数方式2MOV TL0,156 ;计数100个脉冲的初值赋值MOV TH0,156SETB GATE ;打开计数门SETB TR0 ;启动T0,开始计数SETB ET0 ;允许T0中断SETB EA ;CPU开中断CLR F0 ;设置下一轮定时方式的标志位WAIT: AJMP WAITIT0P: CLR EA ;CPU关中断JB F0,COUNT ;F0=1,转计数方式设置MOV TMOD,00H ;定时器/计数器T0为定时方式0MOV TH0,0FEH ;定时1ms初值赋值MOV TL0,0CHSETB EARETICOUNT: MOV TMOD,06HMOV TL0,156SETB EARETI6.定时器/计数器的工作方式2有什么特点适用于哪些应用场合答:定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,如波特率的产生;7.编写程序,要求使用T0,采用方式2定时,在输出周期为400μs,占空比为10∶1的矩形脉冲;答:根据题意,从输出的矩形脉冲的高低电平的时间为10∶1,则高低电平的时间分别为μs和μs;如果系统采用6MHz晶振,Tcy=2μs,因此高低电平输出取整,则约为364μs 和36μs;参考程序如下:ORG 0000HLJMP MAINORG 000BHLJMP IT0PMAIN: MOV TMOD,02H ;定时器/计数器T0为定时方式2MOV TL0,4AH ;定时364s初值赋值SETB TR0 ;启动T0,开始计数SETB ET0 ;允许T0中断SETB EA ;CPU开中断SETBWAIT: AJMP WAITIT0P: CLR EACLR ;关中断MOV R0,9DLY: DJNZ R0,DLY ;延时36sMOV TL0,4AH ;定时364s初值赋值SETBSETB EARETI8.一个定时器的定时时间有限,如何用两个定时器的串行定时来实现较长时间的定时答:方法1,在第一个定时器的中断程序里关闭本定时器的中断程序,设置和打开另一个定时器;在另一个定时器的中断程序中关闭本定时中断,设置和打开另一个定时器;这种方式的定时时间为两个定时器定时时间的和;方法2,一个作为定时器,在定时中断后产生一个外部计数脉冲比如由接INT0产生,另一个定时器工作在计数方式;这样两个定时器的定时时间为一个定时器的定时时间乘以另一个定时器的计数值;9.当定时器T0用于方式3时,应该如何控制定时器T1的启动和关闭答:由T1口控制定时器T1的启动和关闭;10.定时器/计数器测量某正单脉冲的宽度,采用何种方式可得到最大量程若时钟频率为6MHz,求允许测量的最大脉冲宽度是多少答:采用方式1定时工作方式;最大脉冲宽度为;11.编写一段程序,功能要求:当引脚的电平正跳变时,对的输入脉冲进行计数;当引脚的电平负跳变时,停止计数,并将计数值写入R0、R1高位存R1,低位存R0;答:将的输入脉冲接入INT0,即使用T0计数器完成对口的脉冲计数;参考程序如下:ORG 0000HLJMP MAINORG 000BHLJMP IT0PMAIN: JNB ,MAINMOV TMOD,05H ;定时器/计数器T0为计数方式1SETB TR0 ;启动T0,开始计数SETB ET0 ;允许T0中断SETB EA ;CPU开中断WAIT: JB ,WAITCLR EACLR TR0MOV R1,TH0MOV R0,TL0AJMP $IT0P: INC R2RETI12.TH x与TL xx=0,1是普通寄存器还是计数器其内容可以随时用指令更改吗更改后的新值是立即刷新还是等当前计数器计满后才能刷新答:THx与TLxx=0,1是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更改后的新值立即刷新;但在读THx、TLx值时,应该先读THx值,后读TLx,再读THx值;若两次读得THx值相同,则可确定读得的内容正确;若前后两次读得的THx值有变化,再重复上述过程;第7章 AT89C51单片机的串行口1.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式 ; 答:1;2.在串行通信中,收发双方对波特率的设定应该是的;答:相等;3.下列选项中, 是正确的;A.串行口通信的第9数据位的功能可由用户定义B.发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的C.串行通信帧发送时,指令把TB8位的状态送入发送SBUF中D.串行通信接收到的第9位数据送SCON寄存器的RB8中保存E.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定答:A对B对C错D对E对;4.通过串行口发送或接收数据时,在程序中应使用 ;A.MOVC指令 B.MOVX指令C.MOV指令D.XCHD指令答:CMOV指令;5.串行口工作方式1的波特率是 ;A.固定的,为f osc/32 B.固定的,为f osc/16C.可变的,通过定时器/计数器T1的溢出率设定D.固定的,为f osc/64答:C;6.在异步串行通信中,接收方是如何知道发送方开始发送数据的答:当接收方检测到RXD引脚上的有效的负跳变时,即可知道发送方开始发送数据; 7.串行口有几种工作方式有几种帧格式各种工作方式的波特率如何确定答:串行口有4种工作方式:方式0、方式1、方式2、方式3;有3种帧格式,方式2和3具有相同的帧格式;方式0的发送和接收都以fosc/12为固定波特率;方式1的波特率=2SMOD/32×定时器T1的溢出率;方式2的波特率=2SMOD/64×fosc;方式3的波特率=2SMOD/32×定时器T1的溢出率;8.假定串行口串行发送的字符格式为1个起始位、8个数据位、1个奇校验位、1个停止位,请画出传送字符“B”42H的帧格式;答:传送的字符“B”的帧格式如图所示先低位后高位;起始位 0 1 0 0 0 0 1 0 校验位停止位图9.为什么定时器/计数器T1用作串行口波特率发生器时,常采用方式2若已知时钟频率、通信波特率,如何计算其初值答:1因为定时器/计数器在方式2下,初值可以自动重装,这样在进行串口波特率发生器设置时,就避免了重装参数的操作,且减少了重装参数的误差;2已知时钟频率、通信波特率,根据公式7-3,即可计算出初值;10.若晶体振荡器为,串行口工作于方式1,波特率为4 800bit/s,写出用T1作为波特率发生器的方式控制字和计数初值;答:经计算,初值为FAH;控制字: ANL TMOD,0F0HORL MOD,20HMOV TH1,0FAHMOV TL1,0FAHMOV SCON,40H11.简述利用串行口进行多机通信的原理;答:以方式1为例;发送过程:数据位由TXD端输出,发送1帧信息为10位,当CPU执行1条数据写发送缓冲器SBUF的指令,就启动发送;发送开始时,内部发送控制信号SEND变为有效,将起始位向TXD输出,此后,每经过1个TX时钟周期,便产生1个移位脉冲,并由TXD输出1个数据位;8位数据位全部输出完毕后,置1中断标志位TI,然后SEND信号失效;接收过程:当检测到起始位的负跳变时,则开始接收;接收时,定时控制信号有2种;其中一种是位检测器采样脉冲,它的频率是RX时钟的16倍;也就是在1位数据期间,有16个采样脉冲,以波特率的16倍速率采样RXD引脚状态,当采样到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样,取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消除干扰引起的影响,以保证可靠无误地开始接收数据;12.使用AT89C51的串行口按工作方式1进行串行数据通信,假定波特率为2 400bit/s,以中断方式传送数据,请编写全双工通信程序;答:请参考教材的P115-P117程序,并作适当改动;13.某AT89C51单片机串行口,传送数据的帧格式由1个起始位0、7个数据位、1个偶校验和1个停止位1组成;当该串行口每分钟传送1800个字符时,试计算出它的波特率; 答:串口每秒钟传送的字符为1800/60=30个字符/秒,所以波特率为30个字符/秒×10位1个字符=300b/s;14.为什么AT89C51单片机串行口的方式0帧格式没有起始位0和停止位1答:串行口的方式0为同步移位寄存器输入/输出方式,常用于外接移位寄存器,以扩展并行I/O口,一般不用于两个89C51之间的串行通信;该方式以fosc/12的固定波特率从低位到高位发送或接收数据;15.直接以TTL电平串行传输数据的方式有什么缺点答:优点是连线简单,缺点是抗干扰性能差,传输距离短;第8章 AT89C51单片机扩展存储器的接口设计1.单片机存储器的主要功能是存储和 ;答:程序,数据;2.假设外部数据存储器2000H单元的内容为80H,执行下列指令后累加器A中的内容为 ;MOV P2,20HMOV R0,00HMOVX A,R0答:80H;3.在存储器扩展中,无论是线选法还是译码法最终都是为扩展芯片的片选端提供控制信号;答:片选;4.起止范围为0000H~3FFFH的存储器的容量是 KB;答:16KB5.在AT89C51单片机中,PC和DPTR都用于提供地址,但PC是为访问存储器提供地址,而DPTR是为访问存储器提供地址;答:程序,数据;6.11条地址线可选个存储单元,16KB存储单元需要条地址线;答:2KB,14;7.4KB RAM存储器的首地址若为0000H,则末地址为 H;答:0FFFH;8.区分AT89C51单片机片外程序存储器和片外数据存储器的最可靠方法是 ; A.看其位于地址范围的低端还是高端B.看其离AT89C51单片机芯片的远近C.看其芯片的型号是ROM还是RAMD.看其是与RD信号连接还是与PSEN信号连接答:D;9.试编写一个程序如将05H和06H拼为56H,设原始数据放在片外数据区2001H单元和2002H单元中,按顺序拼装后的单字节数放入2002H;答:本题主要考察对外部存储器的读、写操作的编程,只要正确使用MOVX指令就可以了;编程思路:首先读取2001H的值,保存在寄存器A中,将寄存器A的高4位和低4位互换,再屏蔽掉低4位然后将寄存器A的值保存到30H中,然后再读取2002H的值,保存在寄存器A中,屏蔽掉高4位,然后将寄存器A的值与30H进行“或运算”,将运算后的结果保存在2002H中;ORG 0000HMAIN: MOV DPTR,2001H ;设置数据指针的初值MOVX A,DPTR ;读取2001H的值SWAP AANL A,0F0H ;屏蔽掉低4位MOV 30H,A ;保存AINC DPTR ;指针指向下一个片外RAM单元MOVX A,DPTR ;读取2002H的值ANL A,0FH ;屏蔽掉高4位ORL A,30H ;进行拼装MOVX DPTR,A ;保存到2002H片外RAM单元END10.编写程序,将外部数据存储器中的4000H~40FFH单元全部清“0”;答:本题主要考察对外部数据块的写操作;编程时只要注意循环次数和MOVX指令的使用就可以了;ORG 0000HMAIN: MOV A,0 ;0给AMOV 0,0FFH ;设置循环次数MOV DPTR,4000H ;设置数据指针的初值LOOP: MOVX DPTR,A ;当前单元清“0”INC DPTR ;指向下一个单元DJNZ R0,LOOP ;是否结束END11.在AT89C51单片机系统中,外接程序存储器和数据存储器共16位地址线和8位数据线,为何不会发生冲突答:因为控制信号线的不同;外扩的RAM芯片既能读出又能写入,所以通常都有读、写控制引脚,记为OE和WE,它们分别与89C51的RD和WR引脚相连;外扩的EPROM在正常使用中只能读出,不能写入,故EPROM芯片没有写入控制引脚,只有读出引脚,记为OE,该引脚与89C51单片机的PSEN相连;12.请写出图8-14中4片程序存储器27128各自所占的地址空间;答:图中采用了译码法;4片地址分别为0000H~3FFFH、4000H~7FFFH、8000H~BFFFH、C000H~FFFFH;。
89C51定时器和计数器精编版
AT89C51定时器/计数器1.定时和计数功能:AT89C51有两个可编程的定时器和计数器:T0和T1。
它们可以工作在定时状态也可以工作在计数状态。
做定时器时不能用作计数,反之亦然。
2.计数器:当定时器/计数器作“计数器”用时,可对接到14引脚(T0/P3.4)或15引脚(T1/P3.5)的脉冲信号数进行计数,每当引脚发生从“1”到“0”的负跳变时,计数器加1.3.定时器:当定时器/计数器作“定时器”用时,定时信号来自内部的时钟发生电路,每个机器周期等于十二个震荡周期,每过一个机器周期,计数器加1.当晶振频率为12MHz时,则机器周期为1微秒;在此情况下,若计数器为100,则所定时的时间为:100 x 1 =100微秒。
14.与定时器/计数器有关的特殊功能寄存器5.定时器/计数器的控制AT89C51单片机定时器/计数器的工作由两个特殊的寄存器TMOD和TCON的相关位来控制,TMOD用于设置它的工作方式,TCON用于控制其启动和中断的请求。
1).TMOD用于设置定时器/计数器的工作方式,其字节地址为89H。
低四位用于T0,高四位用于T1。
虽有位名称,2但无位地址,不可进行位操作。
TMOD中的结构和各位名称○1M1,M0:工作方式选择位。
M1、M0为两位二进制数,可表示四种工作方式,见下表:○2C/T:计数/定时方式选择位。
C/T = 1,为计数工作方式,对输入到单片机T0、T1引用的外部信号脉冲计数,负跳变脉冲有效,用作计数器。
C/T = 0,为定时工作方式,对片内机器周期(1个机器周期等于12晶振周期)信号计数,用作定时器。
3○3GATE:门控位。
GATE = 0,定时器/计数器的运行只受TCON中的运行控制位TR0/TR1的控制。
GATE = 1,定时器/计数器的运行同时受TR0/TR1和外中断输入信号(INT0和INT1)的双重控制。
GATE对TR0/TR1的制约2).控制寄存器TCONTCON是可位寻址的特殊功能寄存器,其字节地址为88H,位地址由低到高顺序分别为88H~8FH,4TCON的低四位只与外中断有关,其高四位与定时器/计数器有关。
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
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。
89C51的定时器、计数器解析
TH
TL
所以(TH)=FCH,(TL)=18H。
19
【例】已知晶振频率fosc=12MHz,使用定时器0以工作方式1,在P1.0输 出周期为2ms的连续正方波脉冲。试编写相关程序。
解:计算初值:TH0=FC H,TL0=18 H。
ORG 0000H
LJMP MAIN
;跳转到主程序
ORG 000BH
5
定时器/计数器的定时功能。 计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周
期,计数器加1,直至计满溢出。 定时器的定时时间与系统的时钟频率有关。因一个机器周期等于12
个时钟周期,所以计数频率应为系统时钟频率的十二分之一。如果 晶振频率为12MHz,则机器周期为1s。通过改变定时器的定时初 值,并适当选择定时器的长度(8位、13位或16位),可以调整定时 时间。
8
GATE:门控制位,用于控制定时器的启动是否受外 部中断源信号的影响。 GATE=0时,与外部中断无关, 由TCON寄存器中的 TRx位控制启动。
GATE=1时,由控制位TRx和引脚INTx共同控制启动,只
有在没有外部中断请求信号的情况下(即外部中断引
脚 IN=T1x时),才允许定时器启动。
9
2、定时控制寄存器(TCON)
(1)工作方式选择 T0为方式1计数,初值 0FFFFH,即外部计数输入端T0(P3.4)发生 一次负跳变时,T0加1且溢出,溢出标志TF0置“1”,发中断请求。 在进入T0中断程序后,启动T1。 T1定义为方式2定时。在T0脚发生一次负跳变后,启动T1每500s产 生一次中断,在中断服务程序中对P1.0求反,使P1.0产生周期1ms的 方波。
6
定时器/计数器的计数功能。 通过外部计数输入引脚T0(P3.4)和T1(P3.5)对外部信号计数,外
89C51的定时PPT课件
1)功能选择位C/T: C/T =0,定时功能,计数内部机器周期脉冲; 2021/3/7C/T =1,计数功能,计数CH引EN脚LI T0(T1)输入的负脉冲。 3
5.1 89C51的定时与计数
2)方式选择位M1、M0: M1 M0 方式 4种工作方式: 0 0 0
01 1
功能描述 13 位 16 位
2021/3/7
CHENLI
8
5.1 89C51的定时与计数
4.方式3
方式3时,定时器0被分解成两个独立的8位计数 器TL0和TH0。
其中,TL0占用原定时器0的控制位、引脚和中断 源,即GATE、TR0、TF0和T0(P3.4)引脚、INT0 (P3.2)引脚。除计数位数不同于方式0、方式1外, 其功能、操作与方式0、方式1完全相同,可定时亦可 计数。定时时间为:
定时时间计算公式为:
( 256 TH 0初值 时) 钟1 周 2 期
2021/3/7
CHENLI
10
5.1 89C51的定时与计数
4.方式3
方式3时,定时器1仍可设置为方式0、方式1或方 式2。但由于TR1、TF1及T1的中断源已被定时器0占 用,此时,定时器1仅由控制位切换其定时或计数功 能,当计数器计满溢出时,只能将输出送往串行口。 在这种情况下,定时器1一般用作串行口波特率发生 器或不需要中断的场合。
确定定时器工作方式指令:
MOV TMOD,#方式字
例:设T0用方式2非门控定时,T1用方式1门控计数。
2021/3/7
MOV TMODC,HE#N0LID2H ; 1101 0010 B
4
5.1 89C51的定时与计数
定时/计数器的4种工作方式
定时器计数器实验
一、AT89C51实验目的:
1.有两个定时/计数器,本试验中,将T1作为定时器用,定时50ms,T0作为计数器用,被计数的外部输入脉冲信号从单片机的P3.4接入,最大计数值为0ffffh。
单片机将在每50ms内对脉冲计数并送数码管实时显示,并利用T1定时从P3.7口输出周期为200ms占空比50%的方波。
2.用PROTEUS设计、仿真基于AT89C51单片机的脉冲计数与定时。
3.学会使用VSM虚拟示波器和计数/定时器
二、PROTEUS电路设计
本设计的电路原理图如图所示,这个设计都在ISIS平台中进行。
1.从PROTEUS库中选取元器件
①at89c51.bus:单片机
②7SEG-BCD-GRN:七段带译码BCD绿色数码管,
③button:按键
2.虚拟测试仪器
①vsm虚拟计数/定时器
单击工具栏,再在对象选择器中选中COUNTER TIMER(计数/计时器),打开其属性编辑况,单击运行模式下的下拉菜单如图,可以选择计数、频率、计时模式。
当前设置为计数模式。
②vsm虚拟示波器
单击工具栏,再在对象选择器中选中OSCILLOSCOPE,将P3.7与C信道连接。
三、原程序设计、生成目标代码文件
1.流程图
主程序流程
2.程序代码设计
四、proteus仿真
五、思考题
修改程序实现1S内对脉冲计数并送四位数码管实时显示,最大计数值为0ffffh,将COUNTER TIMER 属性设为频率,利用工具栏中的激励源DCLOCK作为脉冲输入源与p3.4口相连。
单片机原理及应用(第6章 ) 89C51的定时器、计数器.
• 方式2
M1、M0=10\计数满后自动装入计数初值 , 等效框图如下:
4 方式3 1) 工作方式3下的T0 T0分为两个独立的8位计数器:TL0、TH0
2)工作在方式3下的T1
T0为方式3时 T1可定为方式0、方式1和方式2 用作串行口的波特率发生器(Baud rate generator ),即作为串
X= 28– 100 = 156
= 9CH
0000H ① AJMP MAIN ORG 001BH 分配存储空间 ② AJMP IT1P 主程序 ③ ORG 0100H
(2)程序设计ORG
④启动计数
• • • 中断服务程序
IT1P: SETB P1.0 等待中断请求
NOP NOP CLR RETI END
(2)方式1的初值X
X = 216 – 10ms÷(12÷6Mhz) = 216 -5000 =60536D = 0EC78
2)、最大定时时间的计算
假设系统时钟频率采用6MHz,试分别计算定 时器在方式0、1、2时的最大定时时间。 [分析] X=M(模值)-定时时间 /定时脉冲周期 ,式中 X=0.即:定时时间max =M×定时脉冲周期 ,故: (1)方式0的最大定时时间: T= 213 × 12÷6Mhz=16.384ms (2)方式1的最大定时时间: T= 216 × 12÷6Mhz=131.027ms (3)方式2的最大定时时间: T= 28 × 12÷6Mhz= 512us
4)、初始化编程举例 、编程步骤: 例5-1 1 T1 、方式1、定时50ms,软件启动、允许中断(设 fosc=12MHZ), 编写初始化程序段 (1)设置工作方式
(2)装入计数初值
P3.2 (3)开中断(位编 INT0
at89c51 工作原理
at89c51 工作原理AT89C51是一种单片机型号,下面将详细介绍其工作原理。
AT89C51是一款基于MCS-51体系结构的8位单片机。
它由一个中央处理器单元(CPU)、存储器、输入/输出端口以及定时/计数器等组成。
其工作原理如下:1. 程序存储器:AT89C51内部集成了4KB的闪存程序存储器,用于存储控制程序。
闪存存储器的内容可以通过编程来更改,使单片机适应不同的应用需求。
2. 数据存储器:AT89C51内部包含RAM和SFR特殊功能寄存器。
RAM用于存储变量和临时数据,SFR寄存器用于存储控制和状态信息。
3. I/O端口:AT89C51具有4个I/O端口(P0、P1、P2、P3),可用于连接外部设备。
每个端口都有8个引脚,每个引脚都可以配置为输入或输出,并具有上下拉电阻等功能。
4. 定时/计数器:AT89C51内部包含两个16位定时/计数器(Timer 0和Timer 1)。
它们可以用于测量时间间隔、生成延时、产生脉冲信号等。
定时/计数器可以配置为定时模式或计数模式,并可以通过软件或硬件触发启动。
5. 中断系统:AT89C51支持外部和内部中断。
它具有6个可屏蔽的外部中断源,可以连接到外部设备的引脚上。
同时,它还具有两个内部定时器中断(Timer 0和Timer 1的溢出中断)。
6. 控制单元:AT89C51的控制单元负责将程序存储器中的指令读取到指令缓冲器中,并执行这些指令。
控制单元还包含指令译码器,用于识别和执行各种指令操作。
AT89C51的工作原理是通过控制单元按照存储在程序存储器中的指令序列来实现的。
它可以实现多种功能,如数据处理、输入/输出控制、定时/计数、中断处理等。
在特定的应用场景中,可以通过编程来配置和控制AT89C51的工作方式,从而实现所需的功能。
基于AT89C51单片机的计数器设计
基于AT89C51单片机的计数器设计一、引言计数器是数字电路中常用的一种电子仪器,用于计算和记录某一事件的频率、周期和脉冲等。
在数字系统中,计数器可以用来实现频率测量、计时器、分频器和脉冲发生器等功能。
本文将基于AT89C51单片机设计一款简单的计数器,用于演示单片机的基本应用和原理。
二、AT89C51单片机简介AT89C51是由Atmel公司生产的一款8位单片机,采用CMOS工艺制造,具有4KB Flash 存储器、128B RAM和32个I/O端口。
其主要特点包括:8位CPU,时钟经过12个时钟脉冲产生1个机器周期,最大工作频率为24MHz,具有2个16位定时/计数器。
三、设计方案基于AT89C51单片机的计数器设计,我们选用其中的一个16位定时/计数器,并通过编程实现计数功能。
设计方案如下:1.使用定时/计数器模块,设置计数器的初始值为0;2.定时/计数器开始计数,每经过一个时钟周期,计数值加1;3.设计好显示模块,将计数器的值通过数码管或LCD显示出来。
四、硬件设计1.单片机选用AT89C51;2.外部晶振选用11.0592MHz,供单片机工作使用;3.数码管模块,用于显示计数器的值;4.按键模块,用于控制计数器的启停及清零操作。
1.初始化程序,设置好定时/计数器和I/O口的工作状态;2.编写中断服务程序,用于定时/计数器溢出时的处理;3.编写计数器启动、停止及清零的控制程序;4.编写主循环程序,实现计数器的实时显示。
六、程序框图七、程序设计八、实验结果经过硬件和软件的设计与开发,成功实现了基于AT89C51单片机的计数器。
在实验中,通过外部晶振驱动单片机,定时/计数器得到了准确的计数值,并通过数码管显示模块实时显示出来。
按键模块可以实现计数器的启停及清零操作。
实验结果符合设计要求,可以满足基本的计数功能。
九、总结本文基于AT89C51单片机设计了一款简单的计数器,通过硬件和软件的设计和开发,实现了对定时/计数器的使用及控制。
AT89C51指令系统及定时中断总结
计数器/定时器选择 1,计数器;0定时器
模式选择,共四种定时/计数模式。00:13位 上限值8192;01:16位上限值65536;10:8位上 限值256,自动重装;11时T0分成两个定时/计
数器,高8为状态字使用T1的
TF1 T1控制端。1,T1 才能工作;0,T1无
效
计数器/定时器/中断状态寄存器 TCON(88H)
功能描述 2KB 范围内绝对调用 2KB 范围内绝对转移 64KB 范围内长调用 64KB 范围内长转移 相对短转移 相对长转移 子程序返回 中断返回 累加器为零转移 累加器非零转移 累加器与立即数不等转移 累加器与直接寻址单元不等转移 寄存器与立即数不等转移 RAM 单元与立即数不等转移 寄存器减1 不为零转移 直接寻址单元减1 不为零转移 空操作 栈顶弹出指令直接寻址单元 直接寻址单元压入栈顶
制 RET1Βιβλιοθήκη 转 移 JZ rel指 令
JNZ rel
CJNE A ,#data ,rel
CJNE A ,direct ,rel
CJNE Rn,#data ,rel
CJNE @Ri ,#data ,rel
DJNZ Rn ,rel
DJNZ direct ,rel
NOP
POP direct
PUSH direct
ADDC A, #data
ADDC A, direct
INC A
算 术
INC Rn
操 INC direct
作 指
INC @Ri
令 INC DPTR
DA A
SUBB A, Rn
SUBB A, @Ri
SUBB A, #data
SUBB A, direct
AT89C51单片机的基本结构和工作原理
AT89C51单片机的基本结构和工作原理AT89C51单片机是一种经典的8位微控制器,由美国公司Intel开发,现在由Atmel公司继续生产和推广。
它被广泛应用于嵌入式系统、自动控制、工业控制和通信等领域。
AT89C51单片机的基本结构和工作原理如下:基本结构:1.中央处理器单元(CPU):AT89C51单片机采用MCS-51体系结构,内置一个8位的中央处理器,工作频率可达到12MHz。
其指令集包括大约100多种指令,支持各种数据操作和控制指令。
2. 存储器:AT89C51单片机集成了4KB的Flash程序存储器、128B的RAM数据存储器和128B的EEPROM数据存储器。
Flash存储器用于存储用户程序,RAM用于临时数据存储,EEPROM用于非易失性数据存储。
3.I/O端口:AT89C51单片机具有32个I/O端口,可以实现与外部设备的数据交换和控制。
这些端口可以配置为输入端口或输出端口,用于连接外部器件。
4. 定时器/计数器:AT89C51单片机集成了2个16位的定时器/计数器(Timer/Counter),用于生成精确的时序信号和计数功能。
它们可以配置为定时器模式或计数器模式,支持各种定时操作。
6.中断系统:AT89C51单片机具有强大的中断系统,支持外部中断和定时器中断等多种中断源。
中断可以在程序执行过程中插入,用于实现实时响应和多任务处理。
7.电源管理:AT89C51单片机需要外部供电,工作电压一般为5V。
它可以通过内部的低功耗模式和掉电模式实现电源管理,在不需要工作时降低功耗。
工作原理:1.启动系统:当AT89C51单片机上电后,系统会初始化各个部件,包括设置定时器、I/O端口、中断系统等,并执行一段启动程序。
3.处理中断:当有外部中断或定时器中断发生时,CPU会暂停当前任务,保存现场状态,跳转到中断程序执行,处理完中断后再返回主程序继续执行。
4.数据交换:AT89C51单片机可以通过I/O端口与外部设备进行数据交换和控制,包括输入数据和输出数据。
实验四 AT89C51单片机定时器
实验四 AT89C51单片机定时器/计数器实验实例二----航标灯控制器一、实验目的1.掌握AT89C51单片机定时器/计数器工作方式的设定;2.掌握AT89C51单片机定时器/计数器程序的编写方法;3.熟知单片机在航标灯控制器中的应用;4.进一步练习单片机仿真器的使用.二、实验设备1.PC机(WINDOWS操作系统);2.HF-MC01实验实训开发综合装置3、伟福6000软件模拟器。
4. 伟福硬件仿真器三、实验内容1.认识整个航标灯控制系统的组成及组成系统的器件;2.编程程序:具体要求是:AT89C51的P0口作为输出(P0.0--P0.7),连接8路发光二极管L0--L7;编写软件使L0--L7亮50ms, 灭1s;周而复始。
4.仿真运行四、实验方法步骤1.电路设计系统原理图参见图4-1.整个系统由24个器件组成,单片机的型号为ATMEL公司生产的AT89C51,其片内集成有FLASE型程序存储器,完全兼容51系列单片机;系统使用12M晶振;复位电路采用常规的上电.手动复位电路.由于只使用片内程序存储器,/EA接+5V;P0口作为输出(P0.0--P0.7),连接8路发光二极管L0--L7,低电平驱动.2.运行WAVE方法可参见实验一内容3.仿真器设置方法可参见实验一内容4.编写程序自己按本实验要求编写程序,并完成程序的录入(SY4.ASM)。
(注意:录入源程序必须使用西文输入法, 保存文件时必须加上扩展名“.ASM”,并记录保存的文件夹路径。
)5.对录入的源程序SY4.ASM进行编译编译步骤为:点击“项目———全部编译”若编译完成,在左下角的“信息窗口”将显示生成两个文件SY4.HEX和SY4.BIN。
若源程序在格式上有错误,则在“信息窗口”中出现错误提示,请检查源程序,修改后再进行编译,直至编译成功。
6. 硬件仿真运行接线方法(1).将仿真器的仿真插头插入A单元的AT89C51插座;(2).将仿真器通过串行电缆与计算机相连;(3).将A单元的+5V.GND分别与Z单元的+5V.GND相连;(4).将仿真器电源接入并打开.7.硬件仿真运行点击“仿真器——仿真器设置”仿真器设置:①点击“仿真器——仿真器设置——语言”,选择“伟福汇编器”“混合十、十六进制”;②点击仿真器设置下的“仿真器”,选择 S51/S、 POD8X5X、8751(或AT89C51);将“使用伟福软件模拟器”选项上的“√”去掉;③并将“通信设置”下的“使用伟福软件模拟器”选项上的“√”去掉,在通讯设置中选择正确的串行端口;④按“好”确认如果仿真器和仿真头设置正确,并且硬件连接没有错误,就会出现“硬件仿真”的对话框,并显示仿真器、仿真头的型号及仿真器的序列号。
at89c51的工作原理
at89c51的工作原理AT89C51是一款基于8位单片机的芯片,它采用CMOS技术,具有51系列特有的功能和特点。
它由中央处理器单元(CPU)、存储器、计时器/计数器、输入/输出(I/O)端口等组成。
AT89C51的工作原理如下:1. 程序存储器(FLASH):AT89C51具有4KB的程序存储器,用于存储程序指令和数据。
CPU从程序存储器中读取指令,并按照指令进行相应的操作。
2. 数据存储器(RAM):AT89C51具有128字节的数据存储器,用于存储程序运行中的数据和临时变量。
3. 输入/输出(I/O)端口:AT89C51具有4个I/O端口(P0、P1、P2、P3),可连接外部设备,如LED灯、按键、传感器等。
CPU通过I/O端口与这些外部设备进行数据的输入和输出。
4. 中央处理器单元(CPU):AT89C51的CPU包括ALU(算术逻辑单元)、寄存器、控制单元等。
ALU用于执行算术和逻辑运算,寄存器用于存储运算结果和中间数据,控制单元用于控制和协调各个部件的工作。
5. 计时器/计数器:AT89C51具有两个16位定时器/计数器(T0、T1),用于产生精确的时间延迟或进行计数。
它们可以用来测量时间、控制外设的工作等。
6. 时钟源:AT89C51需要外部提供时钟信号,以确定指令的执行速度。
它支持多种时钟源,如晶体振荡器、RC振荡器等。
在工作时,AT89C51首先从程序存储器中读取指令,然后根据指令执行相应的操作,如进行算术运算、逻辑判断、数据存储与读取等。
同时,它还可以通过I/O端口与外部设备进行数据交互,实现各种功能。
整个工作过程由时钟信号驱动,时钟信号的频率决定了指令的执行速度。
第六章 AT89C51中断系统与定时
1 0 1 0
T1 TX RX
PS ES EA
1 0
自 然 优 先 级
中断 矢量地址 硬件查询 源允许
低 级 中 断 请 求
各中断 总允许 源允许
优先级
PC
1.中断源(5个) 向CPU发出中断请求的来源,或引起中断的原因称为中断源。 (1). 外部中断类 外部中断是由外部原因(如打印机、键盘、控制开关、外部故障)引起的, 可以通过两个固定引脚来输入到单片机内的信号,即外部中0(INT0)和外 部中断1(INT1)。 外部中断0(INT0)请求信号输入引脚为P3.2。当CPU检测到P3.2引脚上 出现有效的中断信号时,向CPU申请中断。 外部中断1(INT1)请求信号输入引脚为P3.3 。当CPU 检测到P3.3 引脚上出现有效的中断信号时,向CPU申请中断。 (2). 定时中断类 定时中断是由内部定时(或计数)溢出或外部定时(或计数)溢出引起的, 即定时器0(T0)中断和定时器1(T1)中断。 当定时器对单片机内部定时脉冲进行计数而发生计数溢出时,即表明定 时时间到,申请中断;或者当定时器对单片机外部计数脉冲进行计数而 发生计数溢出时,即表明计数次数到,申请中断。 片内定时/计数器T0溢出中断(TF0):当定时/计数器T0发生溢出时, 置位TF0,并向CPU申请中断。 片内定时/计数器T1溢出中断(TF1):当定时/计数器T1发生溢出时, 置位TF1,并向CPU申请中断。 (3). 串行口中断类 串行口中断是为接收或发送串行数据而设置的。 串行接口中断,包括RI 或TI。当发送或接收完一帧数据时,向CPU 申请中断。
D7 EA
D6 -
D5 -
D4 ES
D3 ET1
D2 EX1
D1 D0 ET0 EX0
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MOV
MOV SETB
TL0,#9CH
TH0,#9CH TR1
;T0置初值
;启动T1
HERE:
6.4.3
AJMP
HERE
方式3的应用
T0 方式3时,TL0和TH0被分成两个独立的8位定时器/计数器。 其中, TL0:8位定时器/计数器;
TH0:8位定时器。
当T1作串行口波特率发生器时,T0才设置为方式3。 例6-5 假设某89C51应用系统的两个外中断源已被占用,设置 T1工作在方式2,作波特率发生器用。现要求增加一个外部中 断源,并控制P1.0引脚输出一个5kHz的方波。设系统时钟为 6MHz。
在T1定时中断服务程序IT1P中,省去了T1中断服务程序中重新 装入初值06H的指令。 例6-4 利用T1的方式2对外部信号计数,要求每计满100个数, 将P1.0取反。
本例是方式2计数模式的应用。
(1)选择工作方式
外部信号由T1(P3.5) 脚输入,每发生一次负跳变计数器加1, 每输入100个脉冲,计数器产生溢出中断,在中断服务程序 中将P1.0取反一次。 T1 方式2的控制字为TMOD=60H。不使用T0时,TMOD的低4位可 任取,但不能使T0进入方式3,这里取全0。 (2)计算T1的初值
第6章
6.1
AT89C51的定时器/计数器
定时器/计数器的结构
两个可编程的定时器/计数器T1、T0。结构如图6-1所示 2种工作模式: (1)计数器工作模式
(2)定时器工作模式
4种工作方式(方式0-方式3)。 TMOD:选择定时器/计数器T0、T1的工作模式和工作 方式。 TCON:控制T0、T1的启动和停止计数,同时包含了 T0、T1的状态。
LJMP
ORG MAIN: MOV
IT0P
1000H SP,#60H
;转T0中断处理程序IT0P
;设堆栈指针
MOV
MOV MOV MOV SETB SETB
B,#0AH
TMOD,#01H TL0,#0B0H TH0,#3CH TR0 ET0
;设循环次数10次
;设T0工作在方式1 ;给T0设初值 ;启动T0 ;允许T0中断
图6-7 省去用户软件中重装初值的程序,来精确定时。
6.2.4 器。
方式3
增加一个附加的8位定时器/计数器,从而具有3个定时器/计数
只适用于定时器/计数器T0。T1不能工作在方式3。 T1方式3时相当于TR1=0,停止计数(此时T1可用来作串行口 波特率产生器)。
1.工作方式3下的T0 T0分为两个独立的8位计数器:TL0和TH0 。TL0使用T0的状态 控制位C/T*、GATE、TR0、,而TH0被固定为一个8位定时器 (不能作外部计数模式),并使用定时器T1的状态控制位
6.2 定时器/计数器的4种工作方式 6.2.1 方式0 M1、M0为00 ,定时器/计数器的框图:
图6-4
为13位的计数器 ,C/T* 位决定工作模式: 0:开关打在上面,为定时器工作模式; 1:开关打在下面,为计数器工作模式,计数脉冲为P3.4、 P3.5引脚上的外部输入脉冲,当引脚上发生负跳变时,计数 器加1。 GATE位:决定定时器/计数器的运行取决于TRx一个条件还是 TRx和INTx*引脚两个条件。 (1)0:A点(见图6-2)是否计数,仅取决于TRx的状态。
TR0 ET0
MOV
MOV CLR SETB RET IT0P: CLR
TL1,#06H
TH1,#06H F0 EA TR0
;T1置初值
;把T0已发生中断标志F0清0
;T0中断服务程序,停止T0计数
SETB RETI IT1P: CPL
F0
;建立产生中断标志
P1.0
;T1中断服务,P1.0位取反
RETI
6.3
计数器模式对输入信号的要求
外部计数脉冲的最高频率为系统振荡器频率的1/24,例如选 用12MHz频率的晶体,则可输入500KHz的外部脉冲。
输入信号的高、低电平至少要保持一个机器周期。如图6-12
所示,图中Tcy为机器周期。
图6-12
6.4 定时器/计数器的编程和应用
4种工作方式中,方式0与方式1基本相同,由于方式0是为兼容
图6-9
(2) T1工作在方式1
图6-10 (3) T1工作在方式2
图6-11
(4)T1工作在方式3。
T1的控制字中M1、M0 = 11时,T1停止计数。 在T0为方式3时,T1运行的控制条件只有两个,即C/T*和M1、M0。 C/T*选择定时器模式或计数器模式,M1、M0选择T1运行的工 作方式。
000BH
IT0P ;转T0中断服务程序
ORG LJMP ORG MAIN: LOOP: MOV ACALL MOV JNC
001BH IT1P 0100H SP,#60H PT0M2 C,F0 LOOP ; ;调用对T0,T1初始化子程序 ;T0产生过中断了吗,产生过 ;转T1中断服务程序
;中断,则F0=1 ;T0没有产生过中断,则跳到
;接通T0 ;T0置初值 ;查询TF0标志 ;T0溢出,关闭T0 ;P1.0的状态求反
例6-2 假设系统时钟为 6MHz,编写定时器 T0 产生1 秒定时的程 序。 (1)T0工作方式的确定 定时时间较长,采用哪一种工作方式? 由各种工作方式的特性,可计算出: 方式0最长可定时16.384ms;
方式1最长可定时131.072ms; 方式2最长可定时512s。 选方式1,每隔100ms中断一次,中断10次为1s。 (2)计算计数初值
( 2 ) 1 : B 点电位由 INTX* 的输入电平和 TRX 的状态这两个条件
来确定。是否计数是由TRx和INTx*二个条件来控制的。
6.2.2 方式1 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)。
X=28-100=156=9CH
因此,TL1的初值为9CH,重装初值寄存器TH1=9CH (3)程序设计 ORG LJMP 0000H MAIN
ORG
001BH ;T1中断服务程序入口
CPL RETI ORG MAIN: MOV
P1.0 0100H TMOD,#60H
;P1.0位取反
;设T1为方式2计数
ACALL PT0M0 HERE: AJMP HERE PT0M0: MOV TL0,#0CH MOV TH0,#0FEH SETB TR0 SETB ET0 SETB EA RET ITOP: MOV TL0,#0CH MOV TH0,#0FEH CPL P1.0 RETI 查询方式的参考程序: MOV TMOD,#01H
图6-14 (1)工作方式选择
T0为方式1计数,初值 0FFFFH,即外部计数输入端T0(P3.4)
发生一次负跳变时,T0加1且溢出,溢出标志TF0置“1”, 发中断请求。在进入T0中断程序后,把F0标志置“1”,说 明T0脚已接收了负跳变信号。
T1定义为方式2定时。在T0脚发生一次负跳变后,启动T1每
500s产生一次中断,在中断服务程序中对P1.0求反,使P1.0 产生周期1ms的方波。
(2)计算T1初值
设T1的初值为X: 则 (28-X)×2×10-6=5×10-4 X=28-250=6=06H (3)程序设计 ORG RESET: LJMP 0000H MAIN ;复位入口转主程序
ORG
JMP
(1)计算初值X
设初值为X,则有: (216-X)×2×10-6=1×10-3 216-X=500 X=65036
X化为16进制,即X=FE0CH=1111111000001100B。 所以,T0的初值为: TH0=0FEH TL0=0CH
(2)初始化程序设计
对寄存器IP、IE、TCON、TMOD的相应位进行正确设置,将计数 初值送入定时器中。 (3)程序设计 中断服务程序除产生方波外,还要注意将计数初值重新装入定 时器中,为下一次中断作准备。 参考程序: ORG 0000H RESET: AJMP MAIN ;转主程序 ORG 000BH ;T0的中断入口 AJMP IT0P ;转T0中断处理程序IT0P ORG 0100H MAIN: MOV SP,#60H ;设堆栈指针 MOV TMOD,#01H ;设置T0为方式1
;调用子程序PT0M0 ;自身跳转 ;T0中断服务程序,T0重新置初值
;启动T0 ;允许T0中断 ;CPU开中断
;T0中断服务子程序,T0置初值
;P1.0的状态取反
;设置T0为方式1
SETB LOOP: MOV MOV LOOP1:JNB CLR CPL SJMP
TR0 TH0,#0FEH TL0,# 0CH TF0,LOOP1 TR0 P1.0 LOOP
因为:(216-X)×2×10-6 = 10-1
所以:X=15536=3CB0H 因此:TH0=3CH,TL0=B0H (3)10次计数的实现 采用循环程序法。 (4)程序设计
参考程序 :
ORG RESET: LJMP ORG
0000H MAIN 000BH ;上电,转主程序入口MAIN ;T0的中断入口
SETB
EA
;CPU开放中断
HERE: SJMP
ITOP: MOV MOV DJNZ CLR
HERE
;等待中断
TL0,#0B0H ;T0中断子程序,重装初值 TH0,#3CH B,LOOP TR0 ;1s定时时间到,停止T0工作 ;