xxf第6章 mcs-51单片机内部资源及编程

上传人:bin****86 文档编号:58340678 上传时间:2018-10-29 格式:PPT 页数:106 大小:1.94MB
返回 下载 相关 举报
xxf第6章 mcs-51单片机内部资源及编程_第1页
第1页 / 共106页
xxf第6章 mcs-51单片机内部资源及编程_第2页
第2页 / 共106页
xxf第6章 mcs-51单片机内部资源及编程_第3页
第3页 / 共106页
xxf第6章 mcs-51单片机内部资源及编程_第4页
第4页 / 共106页
xxf第6章 mcs-51单片机内部资源及编程_第5页
第5页 / 共106页
点击查看更多>>
资源描述

《xxf第6章 mcs-51单片机内部资源及编程》由会员分享,可在线阅读,更多相关《xxf第6章 mcs-51单片机内部资源及编程(106页珍藏版)》请在金锄头文库上搜索。

1、第6章 MCS-51单片机内部资源及编程,6.1 并行输入/输出接口,6.1.1 并行口应用与编程,汇编程序:ORG 0100HMOV P0,#0FFH LOOP:MOV A,P0 MOV P1,A SJMP LOOP,【例6-1】 利用单片机的P1口接8个发光二极管,P0口接8个开关,编程实现,当开关动作时,对应的发光二极管亮或灭,C51语言程序: #include void main(void) unsigned char i;P0=0xff;for(;) i=P0;P1=i; ,6.2 定时/计数器(重点),6.2.1 定时/计数器的主要特性,1MCS-51系列中51子系列有两个16位的

2、可编程定时/计数器:定时/计数器T0和定时/计数器T1,52子系列有三个,还有一个定时/计数器T2。 2每个定时/计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过编程设定来实现。 3每个定时/计数器都有多种工作方式,其中T0有四种工作方式;T1有三种工作方式,T2有三种工作方式。通过编程可设定工作于某种方式。 4每一个定时/计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断方式处理。,6.2.1 定时/计数器T0、T1的结构及工作原理,单片机实现计数的基本原理:计数脉冲:单片机的某个I/O引脚可以识别脉冲信号单片机CPU:单片机CPU内部集成这样

3、的硬件功能,即I/O引脚每来一个脉冲,寄存器的值增加1,计数一次。计数容量:计数容量和寄存器的位数有关,如果利用8位寄存器则只能计数到255,超过255则必须告诉CPU已经溢出,停止计数,单片机完成定时功能的基本原理:定时基准(脉冲):若单片机进行计数的脉冲是精确的、规整的、周期均匀。则通过计数就可以实现定时。比如,计数脉冲的周期为1us,则计数200次,定时时间为200us。 单片机的晶振能提供一个精确的定时基准。单片机若完成定时功能,采用内部的机器周期作为定时基准,如果晶振为12M,则定时基准为1us。计数功能:与计数功能相同,单片机CPU内部集成这样的硬件功能,即每一个机器周期,寄存器的

4、值增加1,计数一次。计数容量:当达到用户定义的时间后,则申请中断,在中断程序中实现报警功能。,结论:定时和计数,都基于单片机内部的加法计数器,加法计数器在使用时注意三个方面,1、由全1加到全0时计满溢出,因而,如果要计N个单位,则首先应向计数器置初值为X,且有:初值X=最大计数值(满值)M计数值N在不同的计数方式下,最大计数值(满值)不一样,当定时器/计数器工作于R位计数方式时,它的最大计数值(满值)为2的R次幂。,2、当定时/计数器工作于计数方式时,对芯片引脚T0(P3.4)或T1(P3.5)上的输入脉冲计数,计数过程如下:在每一个机器周期的S5P2时刻对T0(P3.4)或T1(P3.5)上

5、信号采样一次,如果上一个机器周期采样到高电平,下一个机器周期采样到低电平,则计数器在下一个机器周期的S3P2时刻加1计数一次。因而需要两个机器周期才能识别一个计数脉冲,所以外部计数脉冲的周期应大于2倍机器周期。,加法计数器在使用时注意三个方面,3、当定时/计数器工作于定时方式时,不对输入脉冲计数,计数器采用的基准脉冲来自单片机内部的机器周期。,6.2.2 定时/计数器的方式和控制寄存器,一定时/计数器的方式寄存器TMOD,M1、M0为工作方式选择位,GATE门控位。GATE=0,只要用软件使TR0(或TR1)置1就可以启动定时器,而不管INT0(或INT1)的电平是高还是低。GATE=1,只有

6、INT0(或INT1)引脚为高电平且由软件使TR0(或TR1)置1时,才能启动定时器工作。,二定时/计数器的控制寄存器TCON,TR1:定时/计数器T1的启动位,可由软件置位或清零,当TR1=1时启动;TR1=0时停止。,TF1:定时/计数器T1的溢出标志位,当定时/计数器T1计满时,由硬件使它置位,如中断允许则触发T1中断。进入中断处理后由内部硬件电路自动清除。,TF0:定时/计数器T0的溢出标志位,当定时/计数器T0计满时,由硬件使它置位,如中断允许则触发T0中断。进入中断处理后由内部硬件电路自动清除。,TR0:定时/计数器T0的启动位,可由软件置位或清零,当TR0=1时启动;TR0=0时

7、停止。,6.2.3 定时/计数器的工作方式,一方式0 (13位的定时/计数方式),例:设置T1为工作模式0,计数器工作方式,启动和外部中断信号无关,试设置TOMD和TCON的值,解:TMOD40H 故: MOV TMOD, #40HSETB TR1,方式0是13位的定时/计数方式,因而最大计数值(满值)为2的13次幂,等于8192。如计数值为N,则置入的初值X为:X=8192-N如定时/计数器T0的计数值为1000,则初值为7192,转换成二进制数为1110000011000B,则TH0=11100000B,TL0=00011000B。,定时/计数器 初值的设置,计数器初值TC定时器初值,设需

8、要计数的数值为C,无论何种工作方式,计数器计数的最大值总是:2n(n为计数器工作的位数),设初值为TC,则定时的时间T为:,T(2nTC)定时脉冲的周期,例:设单片机采用12MHz晶振,定时计数器T0想实现1ms的延时,试设置TH0和TL0的初始值,0001 1100 0001 1000,1 1 1 0 0 0 0 0 1 1 0 0 0,故:THE0H;TL18H,用T0定时,选择工作模式0,由单片机P1.0输出占空比为50、周期为2ms的方波,晶振频率为12M。,源程序如下: ORG 0000HLJMP MAINORG 000BHLJMP INT_TIME0ORG 0030H MAIN:

9、MOV TMOD, #00H ;设置工作方式MOV TH0, #0E0H ;设初始值MOV TL0, #18HSETB TR0 ;启动定时器SETB EA ;开放定时器中断SETB ET0SETB P1.0LJMP $ INT_TIME0: MOV TH0, #0E0H ;对定时器重新赋值MOV TL0, #18HCPL P1.0RETI,工作模式0应用,二方式1(16位定时/计数方式),例:设置T0为工作模式1,定时工作方式,启动和外部中断信号无关,试设置TOMD和TCON的值,解:TMOD01H,故:MOV TMOD, #01H;SETB TR0,2 控制寄存器的设置,3 定时器初值的设置

10、,例:单片机采用12MHz晶振,定时T0想实现10ms的延时,试设置TH0和TH1的初始值,故:TH0D8H;TL0F0H,例 用T1定时,选择工作模式1,由单片机P1.0输出50Hz的方波,晶振频率12M。,源程序如下:ORG 0000HLJMP MAINORG 0030H MAIN: MOV TMOD,#10H ;设置T1为模式1 SETB TR1 ;启动定时 LOOP: MOV TL1,#0D8H ;送初值MOV TH1,#0F0HJNB TF1,$ ;查询定时时间到否CLR TF1 ;产生溢出,清标志位 CPL P1.1 ;取反 SJMP LOOP ;重复循环,三方式2(8位自动重装初

11、值的定时/计数方式),16位的计数器只用了8位来计数,用的是TL0(或TL1)的8位来进行计数,而TH0(或TH1)用于保存初值。当TL0(或TL1)计满时则溢出,一方面使TF0(或TF1)置位,另一方面溢出信号又会触发图上的三态门,使三态门导通,TH0(或TH1)的值就自动装入TL0(或TL1)。,8位的定时/计数方式,因而最大计数值(满值)为2的8次幂,等于256。如计数值为N,则置入的初值X为:X=256-N例1:定时/计数器T0的计数值为100,则初值为256-100=156,转换成二进制数为10011100B,则TH0= TL0=10011100B。,注意:由于方式2计满后,溢出信号

12、会触发三态门自动地把TH0(或TH1)的值装入TL0(或TL1)中,因而如果要重新实现N个单位的计数,不用重新置入初值。,计数初值的设置:,例:单片机采用12MHz晶振,定时器T0想实现100us的延时,试设置TH0和TH1的初始值,故:TH9CH;TL9CH,定时初值的设置,模式 2 的应用举例,例 :利用定时器T1的模式2对外部信号计数。要求每计满100次,将 P1.0引脚取反。 源程序: ORG 0000HLJMP MAINORG 001BHLJMP INT_TIME1ORG 0030H MAIN: MOV TMOD,#60H ;设置T1为模式2,外部计数方式MOV TL1,#9CH ;

13、T1计数器初值MOV TH1,#9CHSETB EA ;开放定时器中断SETB ET1SETB TR1 ;启动T1计数 HERE: SJMP HERE ;等待中断 INT_TIME1: CPL P1.0RETI,【例】 P1.1输出脉冲宽度信号,即脉冲频率为1kHz、占空比为25的矩形波,晶振频率为6MHz。,对P1.1取反时,由于高、低电平的时间不同,可找出一个时间基准,如100s、200s。本例设定时间基准200s,即定时时间为200s。 高电平的软件计数为2,低电平的软件计数为3。,定时初值,定时器0中断服务程序:,方式3只有定时/计数器T0才有方式3下,定时/计数器T0被分为两个独立的

14、8位定时器/计数器TL0和TH0,其中,TL0可作为定时/计数器使用,占用T0的全部控制位:GATE、C/T、TR0和TF0;而TH0固定只能作定时器使用,对机器周期进行计数,这时它占用定时/计数器T1的TR1位、TF1位和T1的中断资源。,四方式3,TH0只能用于简单的内部定时功能,它占用了原T1的控制位TR1和TF1,同时占用了T1中断源。,2. T0方式3下T1的结构特点T1不能工作在方式3下,因为在T0工作在方式3下时, T1的控制位TR1、TF1和中断源被T0占用。T1可工作在方式0、方式1、方式2下,但不能产生中断T1通常用作串行口波特率发生器,以方式2工作会使程序简单一些。,80

15、51单片机共有两个可编程的定时器/计数器,分别称为定时器0和定时器1,它们都是16位加1计数器。定时器/计数器的工作方式、定时时间、计数值和启停控制由程序来确定。 定时器/计数器有四种工作方式,工作方式由定时器方式寄存器TMOD中的M1、M0位确定。方式0是13位计数器,方式1是16位计数器,方式2是自动重装初值8位计数器;方式3时,定时器0被分为两个独立的8位计数器,定时器1是无中断的计数器。 定时器/计数器有定时和计数两种功能,由定时器方式寄存器TMOD中的C/T位确定。当定时器/计数器工作在定时功能时,通过对单片机内部的时钟脉冲计数来实现可编程定时;当定时器/计数器工作在计数功能时,通过对单片机外部的脉冲计数来实现可编程计数。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号