第6章 MCS-51单片机内部资源及编程(ghl).ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:71 大小:380KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第6章 MCS-51单片机内部资源及编程(ghl).ppt

第6章MCS-51单片机内部资源及编程(ghl).ppt

预览

免费试读已结束,剩余 61 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第6章MCS-51单片机内部资源及编程MCS-51单片机的内部资源主要有并行I/O口、定时器/计数器、串行接口以及中断系统,MCS-51单片机的大部分功能就是通过对这些资源的利用来实现的。并行I/O口实现8位数字量的输入输出;定时器/计数器实现周期性动作或对外部事件计数;串行接口实现单片机与其他设备的数据通信;中断系统实现对外部事件的及时响应。#include<reg51.h>voidmain(void){unsignedchari;//定义局部变量P0=0xff;//P0口输出高电平for(;;)//无限循环{i=P0;//从P0读入数据到变量iP1=i;//将变量i输出给P1}}6.2定时/计数器接口6.2.2定时/计数器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。6.2.3定时/计数器的方式和控制寄存器C/T:定时或计数方式选择位,当C/T=1时工作于计数方式;当C/T=0时工作于定时方式。TF0:定时/计数器T0的溢出标志位,当定时/计数器T0计满时,由硬件使它置位,如中断允许则触发T0中断。进入中断处理后由内部硬件电路自动清除。TR0:定时/计数器T0的启动位,可由软件置位或清零,当TR0=1时启动;TR0=0时停止。方式0是13位的定时/计数方式,因而最大计数值(满值)为2的13次幂,等于8192。如计数值为N,则置入的初值X为:X=8192-N如定时/计数器T0的计数值为1000,则初值为7192,转换成二进制数为1110000011000B,则TH0=11100000B,TL0=00011000B。三.方式2由于是8位的定时/计数方式,因而最大计数值(满值)为2的8次幂,等于256。如计数值为N,则置入的初值X为:X=256-N如定时/计数器T0的计数值为100,则初值为256-100=156,转换成二进制数为10011100B,则TH0=TL0=10011100B。注意:由于方式2计满后,溢出信号会触发三态门自动地把TH0(或TH1)的值装入TL0(或TL1)中,因而如果要重新实现N个单位的计数,不用重新置入初值。振荡器6.2.5定时/计数器的初始化编程及应用二.定时/计数器的应用#include<reg51.h>//包含特殊功能寄存器库sbitP1_0=P1^0;voidmain(){TMOD=0x02;//T0工作于方式2TH0=0x06;TL0=0x06;//设定计数器初值EA=1;//使能中断系统ET0=1;//使能定时器T0中断功能TR0=1;//启动定时器T0,开始定时while(1);}voidtime0_int(void)interrupt1//中断服务程序{//方式2自动装入初值,TF标志位自动清零P1_0=!P1_0;//P1.0输出取反}(2)采用查询方式处理的程序如果定时时间大于65536μs,这时用一个定时/计数器直接处理不能实现,这时可用两个定时/计数器共同处理或一个定时/计数器配合软件计数方式处理。(1)用寄存器R2作计数器软件计数,中断处理方式。(2)用定时/计数器T1计数实现,定时/计数器T1工作于计数方式时,计数脉冲通过T1(P3.5)输入,设定时/计数器T0定时时间到对T1(P3.5)取反一次,则T1(P3.5)每20ms产生一个计数脉冲,那么定时500ms只须计数25次。设定时/计数器T1工作于方式2,初值X=256-25=231=11100111B=E7H,TH1=TL1=E7H。因为定时/计数器T0工作于方式1,定时,则这时方式控制字为01100001B(61H)。定时/计数器T0和T1都采用中断方式工作。C语言程序如下:#include<reg51.h>//包含特殊功能寄存器库sbitP1_1=P