1、第五章 MCS-51单片机内部资源及编程 第五章 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: M
2、OV A, P0MOV P1, ASJMP LOOP第五章 MCS-51单片机内部资源及编程 C51语言程序:#include void main(void)unsigned char i;P0=0xff;for(;) i=P0;P1=i; 第五章 MCS-51单片机内部资源及编程 5.2 定时 /计数器接口5.2.1 定时 /计数器的主要特性1 MCS-51系列中 51子系列有两个 16位的可编程定时 /计数器:定时 /计数器 T0和定时 /计数器 T1, 52子系列有三个,还有一个定时 /计数器 T2。2每个定时 /计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过
3、编程设定来实现。3每个定时 /计数器都有多种工作方式,其中 T0有四种工作方式; T1有三种工作方式, T2有三种工作方式。通过编程可设定工作于某种方式。4每一个定时 /计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。第五章 MCS-51单片机内部资源及编程 5.2.1 定时 /计数器 T0、 T1的结构及工作原理TH1 TL1 TH0 TL0TCON TMOD启动启动溢出溢出 工作方式工作方式中断请求内部总线Tcy T1 T0第五章 MCS-51单片机内部资源及编程 加法计数器在使用时注意两个方面。第一,由于它是加法计数器,每来一个计数脉冲,加法器中的内容加
4、 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时
5、刻加 1计数一次。因而需要两个机器周期才能识别一个计数脉冲,所以外部计数脉冲的频率应小于振荡频率的 1/24。第五章 MCS-51单片机内部资源及编程 5.2.2 定时 /计数器的方式和控制寄存器一定时 /计数器的方式寄存器 TMODTMOD D7D6D5D4D3D2D1D0(89H)GATEC/TM1M0GATEC/TM1M0定 时器 1 定 时器 0 其中:M1、 M0为工作方式选择位 ,用于对 T0的四种工作方式, T1的三种工作方式进行选择,选择情况如下 M1 M0 工作方式 方式 说 明0 0 0 13位定 时 /计 数器0 1 1 16位定 时 /计 数器1 0 2 8位自 动 重
6、置定 时 /计 数器1 1 3 两个 8位定 时 /计 数器(只有 T0有)第五章 MCS-51单片机内部资源及编程 C/T:定时或计数方式选择位,当 C/T=1时工作于计数方式;当 C/T=0时工作于定时方式。 GATE: 门 控位,用于控制定 时 /计 数器的启 动 是否受外部中断 请 求信号的影响。二定时 /计数器的控制寄存器 TCONTCON D7 D6 D5 D4 D3 D2 D1 D0(88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0其中:TF1:定时 /计数器 T1的溢出标志位,当定时 /计数器 T1计满时,由硬件使它置位,如中断允许则触发 T1中断。进入
7、中断处理后由内部硬件电路自动清除。TR1:定时 /计数器 T1的启动位,可由软件置位或清零,当 TR1=1时启动; TR1=0时停止。第五章 MCS-51单片机内部资源及编程 TF0:定时 /计数器 T0的溢出标志位,当定时 /计数器 T0计满时,由硬件使它置位,如中断允许则触发 T0中断。进入中断处理后由内部硬件电路自动清除。TR0:定时 /计数器 T0的启动位,可由软件置位或清零,当 TR0=1时启动; TR0=0时停止。5.2.3 定时 /计数器的工作方式一方式 0振荡器 12TLx(低 5位 )THx(高 8位 ) TFx与或TxTRxGATEINTxS2S1C/TTcy中断请求第五章
8、 MCS-51单片机内部资源及编程 方式 1是 13位的定时 /计数方式,因而最大计数值(满值)为 2的 13次幂,等于 8192。如计数值为 N,则置入的初值 X为:X=8192-N如定时 /计数器 T0的计数值为 1000,则初值为 7192,转换成二进制数为 1110000011000B,则 TH0=11100000B, TL0=00011000B。二方式 1方式 1的结构与方式 0结构相同,只是把 13位变成 16位, 16位的加法计数器被全部用上。由于是 16位的定时 /计数方式,因而最大计数值(满值)为 2的 16次幂,等于 65536。如计数值为 N,则置入的初值 X为:X=65
9、536-N如定时 /计数器 T0的计数值为 1000,则初值为 65536-1000=64536,转换成二进制数为 1111110000011000B,则TH0=11111100B, TL0=00011000B。第五章 MCS-51单片机内部资源及编程 三方式 2振荡器 12TLx( 8位)THx( 8位)TFx与或TxTRxGATEINTxS2S1C/TTcy中断请求重装初值8方式 2下, 16位的计数器只用了 8位来计数,用的是 TL0(或 TL1)的 8位来进行计数,而 TH0(或 TH1)用于保存初值。当 TL0(或 TL1)计满时则溢出,一方面使 TF0(或 TF1)置位,另一方面溢出信号又会触发图 5.5上的三态门,使三态门导通, TH0(或 TH1)的值就自动装入 TL0(或 TL1)。