低端口 P0~P3 只用于数字外设的配置,而不被诸如模拟输入口、外部数据存储器扩展接口占用,其优先权交叉开关译码表如图 3.7 所示,此时 ENIFLE=0,P1MDIN=0xFF。在优先权交叉开关译码表中,黑圆点(•)用来代表电子开关,各个(•)代表数字外设口线与端口引脚可能出现的配置[13]。
图4-5优先权交叉开关译码表[13]
4.3定时/计数器
定时器T1的工作方式2
对定时器 0 和定时器 1 的访问和控制是通过 SFR 实现的。每个计数器/定时器都是一个 16位的寄存器,在被访问时以两个字节的形式出现:一个低字节(TL0 或 TL1)和一个高字节(TH0或 TH1)。计数器/定时器控制寄存器(TCON)用于允许定时器 0 和定时器 1 以及指示它们的状态。这两个计数器/定时器都有四种工作方式,通过设置计数器/定时器方式寄存器(TMOD)中的方式选择位 M1-M0 来选择工作方式。每个定时器都可以被独立编程。下面对每种工作方式进行详细说明。
我们采用方式 2:8 位自动重装载的计数器/定时器[5][6]。
定时器0/1控制寄存器TCON 图4-6 TCON
位 7: TF1:定时器 1 溢出标志
当定时器 1 溢出时由硬件置位。该位可以用软件清 0,但当 CPU 转向定时器 1中断服务程序时该位被自动清 0。
0:未检测到定时器 1 溢出。
1:定时器 1 发生溢出。
位 6: TR1:定时器 1 运行控制
0:定时器 1 禁止。
1:定时器 1 允许。
位 5: TF0:定时器 0 溢出标志
当定时器 0 溢出时由硬件置位。该位可以用软件清 0,但当 CPU 转向定时器 0中断服务程序时该位被自动清 0。
0:未检测到定时器 0 溢出。
1:定时器 0 发生溢出。
位 4: TR0:定时器 0 运行控制
0:定时器 0 禁止
1:定时器 0 允许
位 3: IE1:外部中断 1
当检测到一个由 IT1 定义的边沿/电平时,该标志由硬件置位。该位可以用软件清 0,但当 CPU 转向外部中断 1 中断服务程序时该位被自动清 0(如果 IT1=1)。当 IT1=0 时,该标志是/INT1 输入信号的逻辑电平取反。
位 2: IT1:中断 1 类型选择
该位选择/INT1 信号检测下降沿中断还是检测低电平有效中断。
0:/INT1 为电平触发
1:/INT1 为边沿触发
位 1: IE0:外部中断 0
当检测到一个由 IT0 定义的边沿/电平时,该标志由硬件置位。该位可以用软件清 0,但当 CPU 转向外部中断 0 中断服务程序时该位被自动清 0(如果 IT0=1)。当 IT0=0 时,该标志是/INT0 输入信号的逻辑电平取反。
位 0: IT0:中断 0 类型选择
该位选择/INT0 信号检测下降沿中断还是检测低电平有效中断。0:/INT0 为电平触发1:/INT0 为边沿触发[5][6] 。
TMOD:定时器方式寄存器 图4-7 TMOD[9]
位 7: GATE1:定时器 1 门控位
0:当 TR1=1 时定时器 1 被允许,与/INT1 的逻辑电平无关。
1:只有当 TR1=1 并且/INT1=逻辑 1 时定时器 1 被允许。
位 6: C/T1:计数器/定时器 1 功能选择。
0:定时器功能:定时器 1 由 T1M 位(CKCON.4)定义的时钟加 1。
1:计数器功能:定时器 1 由外部输入引脚(T1)的负跳变加 1。
位 5-4: T1M1-T1M0:定时器 1 方式选择
这些位选择定时器 1 的工作方式[9]。 图4-8[9]
4.4UART0
对 UART0 的控制和访问是通过相关的特殊功能寄存器即串行控制寄存器(SCON0)和串行数据缓冲器(SBUF0)来实现的。一个 SBUF0 地址可以访问发送寄存器和接收寄存器。读操作将自动访问接收寄存器,而写操作自动访问发送寄存器。
UART0 可以工作在查询或中断方式。UART0 有两个中断源:一个发送中断标志 TI0(SCON0.1)(数据字节发送结束时置位)和一个接收中断标志 RI0(SCON0.0)(接收完一个数据字节后置位)。当 CPU 转向中断服务程序时硬件不清除 UART0 中断标志,中断标志必须用软件清除。这就允许软件查询 UART0 中断的原因(发送完成或接收完成)[3]。 C8051F020单片机开关阵列分布控制系统设计(5):http://www.751com.cn/tongxin/lunwen_6004.html