文本描述
第五章 MCS-51单片机内部资源及编程
MCS-51单片机的内部资源主要有并行I/O口、定时器/计数器、串行接口以及中断系统,MCS-51单片机的大部分功能就是通过对这些资源的利用来实现的。下面分别对其介绍,并用汇编语言和C语言分别给出相应例子。
5.1 并行输入/输出接口
5.1.1 并行口应用与编程
【例5-1】 利用单片机的P0口接8个发光二极管,P1口接8个开关,编程实现,当开关动作时,对应的发光二极管亮或灭。只须把P0口的内容读出后,通过P1口输出即可。汇编程序:ORG 0100HMOV P0,#0FFHLOOP: MOV A,P0MOV P1,ASJMP LOOP
C51语言程序:#include <reg51.h>void main(void){unsigned char i;P0=0xff;for(;;) { i=P0;P1=i; }}
5.2 定时/计数器接口
5.2.1 定时/计数器的主要特性
1.MCS-51系列中51子系列有两个16位的可编程定时/计数器:定时/计数器T0和定时/计数器T1,52子系列有三个,还有一个定时/计数器T2。2.每个定时/计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过编程设定来实现。3.每个定时/计数器都有多种工作方式,其中T0有四种工作方式;T1有三种工作方式,T2有三种工作方式。通过编程可设定工作于某种方式。4.每一个定时/计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。
5.2.1 定时/计数器T0、T1的结构及工作原理
加法计数器在使用时注意两个方面。第一,由于它是加法计数器,每来一个计数脉冲,加法器中的内容加1个单位,当由全1加到全0时计满溢出,因而,如果要计N个单位,则首先应向计数器置初值为X,且有:初值X=最大计数值(满值)M-计数值N 在不同的计数方式下,最大计数值(满值)不一样,一般来说,当定时器/计数器工作于R位计数方式时,它的最大计数值(满值)为2的R次幂。第二,当定时/计数器工作于计数方式时,对芯片引脚T0(P3.4)或T1(P3.5)上的输入脉冲计数,计数过程如下:在每一个机器周期的S5P2时刻对T0(P3.4)或T1(P3.5)上信号采样一次,如果上一个机器周期采样到高电平,下一个机器周期采样到低电平,则计数器在下一个机器周期的S3P2时刻加1计数一次。因而需要两个机器周期才能识别一个计数脉冲,所以外部计数脉冲的频率应小于振荡频率的1/24。
5.2.2 定时/计数器的方式和控制寄存器
一.定时/计数器的方式寄存器TMOD
其中:M1、M0为工作方式选择位 ,用于对T0的四种工作方式,T1的三种工作方式进行选择,选择情况如下
C/T:定时或计数方式选择位,当C/T=1时工作于计数方式;当C/T=0时工作于定时方式。
GATE:门控位,用于控制定时/计数器的启动是否受外部中断请求信号的影响。
二.定时/计数器的控制寄存器TCON
其中:TF1:定时/计数器T1的溢出标志位,当定时/计数器T1计满时,由硬件使它置位,如中断允许则触发T1中断。进入中断处理后由内部硬件电路自动清除。TR1:定时/计数器T1的启动位,可由软件置位或清零,当TR1=1时启动;TR1=0时停止。