盗墓笔记吴夫人:TMOD TCON SCON
来源:百度文库 编辑:中财网 时间:2024/04/27 16:45:12
TMOD
TMOD:定时器/计数器T0¦T1的方式寄存器 方式寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址的寄存器,字节地址为89H。 其格式为:
TMOD结构图
================================================================================= 其中低四位定义定时器/计数器T0,高四位定义定时器/计数器T1,各位的说明: Ⅰ,GATE——门控制。 ●GATE=1时,由外部中断引脚INT0、INT1和控制寄存器的TR0,TR1来启动定时器。 当INT0引脚为高电平时TR0置位,启动定时器T0; 当INT1引脚为高电平时TR1置位,启动定时器T1。 ●GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。 Ⅱ,C/T——功能选择位 置位时选择计数功能,清零时选择定时功能。 Ⅲ,M0、M1——方式选择功能 由于有2位,因此有4种工作方式 ================================================================ M1M0 工作方式 计数器模式 TMOD(设置定时器模式) 0 0 方式0 13位计数器 TMOD=0x00 0 1 方式1 16位计数器 TMOD=0x01 1 0 方式2 自动重装8位计数器 TMOD=0x02 1 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器 TMOD=0x03 ================================================================TCON
TCON(Timer Control Register)定时器/计数器控制寄存器 TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH,由于有位地址,十分便于进行位操作。 TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。 TCON的格式如下图所示。其中,TFl,TRl,TF0和TR0位用于定时器/计数器;IEl,ITl,IE0和IT0位用于中断系统。 各位定义如下: TF1:定时器1溢出标志位。当字时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。 TR1:定时器1运行控制位。由软件清“0”关闭定时器1。当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。 TF0:定时器0溢出标志。其功能及操作情况同TF1。 TR0:定时器0运行控制位。其功能及操作情况同TR1。 IE1:外部中断1请求标志。 IT1:外部中断1触发方式选择位。 IE0:外部中断0请求标志。 IT0:外部中断0触发方式选择位。 TCON中低4位与中断有关,我们将在下节课讲中断时再给予讲解。由于TCON是可以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。例如:执行“CLR TF0”后则清定时器0的溢出;执行“SETB TR1”后可启动定时器1开始工作(当然前面还要设置方式定)。 定时器/计数器的初始化 由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始货的步骤一般如下: 1、确定工作方式(即对TMOD赋值); 2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1); 3、根据需要开放定时器/计数器的中断(直接对IE位赋值); 4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。 下面介绍一下确定时时/计数器初值的具体方法。 因为在不同工作方式下计数器位数不同,因而最大计数值也不同。 现假设最大计数值为M,那么各方式下的 最大值M值如下: 方式0:M=213=8 192 方式1:M=216=65 536 方式2:M=28=256 方式3:定时器0分成两个8位计数器,所以两个M均为256。 因为定时器/计数器是作“加1”计数,并在计数满溢出时产生中断,因此初值X可以这样计算: X=M-计数值 SCON (Serial Port Control Register) 在51单片机中代表这是串口控制寄存器 scon控制寄存器 scon控制寄存器,它是一个可寻址的专用寄存器,用于串行数据的通信控制,单元地址是98h,其结构格式如下: 表1 scon寄存器结构 scon d7 d6 d5 d4 d3 d2 d1 d0 sm0 sm1 sm2 ren tb8 rb8 ti ri 位地址 9fh 9eh 8dh 9ch 9bh 9ah 99h 98h 各控制位功能介绍如下: (1).sm0、sm1:串行口工作方式控制位。 sm0,sm1 工作方式 00 方式0 01 方式1 10 方式2 11 方式3 (2).sm2:多机通信控制位。 多机通信是工作于方式2和方式3,sm2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及sm2=1时,只有当接收到第9位数据(rb8)为1时,才把接收到的前8位数据送入sbuf,且置位ri发出中断申请,否则会将接受到的数据放弃。当sm2=0时,就不管第位数据是0还是1,都得将数据送入sbuf,并发出中断申请。即此时ri是否置位由sm2和rb8共同决定。 工作于方式0时,sm2必须为0。 (3).ren:允许接收位。 ren用于控制数据接收的允许和禁止,ren=1时,允许接收,ren=0时,禁止接收。 (4).tb8:发送接收数据位8。 在方式2和方式3中,tb8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,tb8=0为数据,tb8=1时为地址。 (5).rb8:接收数据位8。 在方式2和方式3中,rb8存放接收到的第9位数据,用以识别接收到的数据特征。 (6).ti:发送中断标志位。 可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,ti=1表示帧发送结束,ti可由软件清“0”。 (7).ri:接收中断标志位。 可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,ri=1表示帧接收完成。 在串口中断处理时,ti,ri都需要软件清"0",硬件置位后不可能自动清0,此外,在进行缓冲区操作时,需要es=0,以防止中断出现。