




已阅读5页,还剩101页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第 6章章 MCS-51单片机内部资源及编程单片机内部资源及编程 6.1 并行输入并行输入 /输出接口输出接口6.1.1 并行口应用与编程并行口应用与编程汇编程序:汇编程序:ORG 0100HMOV P0, #0FFHLOOP: MOV A, P0MOV P1, ASJMP 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 定时定时 /计数器的主要特性计数器的主要特性1 MCS-51系列中 51子系列有两个 16位的可编程定时 /计数器:定时 /计数器 T0和定时 /计数器 T1, 52子系列有三个,还有一个定时 /计数器 T2。2每个定时 /计数器既可以对系统时钟计数 实现定时实现定时 ,也可以 对外部信号计数实现计数对外部信号计数实现计数 功能,通过编程设定来实现。3每个定时 /计数器都有多种工作方式,其中 T0有四种工作方式; T1有三种工作方式, T2有三种工作方式。通过编程可设定工作于某种方式。4每一个定时 /计数器定时计数时间到时 产生溢出产生溢出 ,使相应的溢出位置位,溢出可通过查询或中断方式处理。6.2.1 定时定时 /计数器计数器 T0、 T1的结构及工作原理的结构及工作原理TH1 TL1 TH0 TL0TCON TMOD启动启动启动启动溢出溢出 工作工作方式方式工作工作方式方式中断请求内部总线Tcy T1 T0单片机实现计数的基本原理:单片机实现计数的基本原理:v 计数脉冲:计数脉冲: 单片机的某个单片机的某个 I/O引脚可以识别脉冲信号引脚可以识别脉冲信号v 单片机单片机 CPU: 单片机单片机 CPU内部集成这样的硬件功能,即内部集成这样的硬件功能,即 I/O引脚每来一个脉冲,寄存器的值增加引脚每来一个脉冲,寄存器的值增加 1,计数,计数一次。一次。v 计数容量:计数容量: 计数容量和寄存器的位数有关,如果利用计数容量和寄存器的位数有关,如果利用 8位寄存器则只能计数到位寄存器则只能计数到 255,超过,超过 255则必须告则必须告诉诉 CPU已经溢出,停止计数已经溢出,停止计数单片机完成定时功能的基本原理:单片机完成定时功能的基本原理:v 定时基准(脉冲):若定时基准(脉冲):若 单片机进行计数的脉冲是精确的、规整的、周期均匀。则通过计数就可以单片机进行计数的脉冲是精确的、规整的、周期均匀。则通过计数就可以实现定时。比如,计数脉冲的周期为实现定时。比如,计数脉冲的周期为 1us,则计数,则计数 200次,定时时间为次,定时时间为 200us。v单片机的晶振能提供一个精确的定时基准。单片机若完成定时功能,采用内部的机器周期作为定时单片机的晶振能提供一个精确的定时基准。单片机若完成定时功能,采用内部的机器周期作为定时基准,如果晶振为基准,如果晶振为 12M,则定时基准为,则定时基准为 1us。v 计数功能:计数功能: 与计数功能相同,单片机与计数功能相同,单片机 CPU内部集成这样的硬件功能,即每一个机器周期,寄存器内部集成这样的硬件功能,即每一个机器周期,寄存器的值增加的值增加 1,计数一次。,计数一次。v 计数容量:计数容量: 当达到用户定义的时间后,则申请中断,在中断程序中实现报警功能。当达到用户定义的时间后,则申请中断,在中断程序中实现报警功能。结论:定时和计数定时和计数 ,都基于单片机内部的加法计数器加法计数器在使用时注意三个方面加法计数器在使用时注意三个方面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)上信号采样一次, 如果上一个机器周如果上一个机器周期采样到高电平,下一个机器周期采样到低电平期采样到高电平,下一个机器周期采样到低电平 ,则计数器在下一个机器周期的 S3P2时刻加 1计数一次。因而需要两个机器周期才能识别一个计数脉冲,所以 外部计数脉冲的周期应大于外部计数脉冲的周期应大于 2倍机器周期倍机器周期 。加法计数器在使用时注意三个方面加法计数器在使用时注意三个方面3、当定时 /计数器工作于 定时方式定时方式 时,不对输入脉冲计数,计数器 采用的基准脉冲采用的基准脉冲 来自单片机内部 的的机器周期机器周期 。6.2.2 定时定时 /计数器的方式和控制寄存器计数器的方式和控制寄存器一定时一定时 /计数器的方式寄存器计数器的方式寄存器 TMODTMOD D7 D6 D5 D4 D3 D2 D1 D0(89H) GATE C/T M1 M0 GATE C/T M1 M0 定 时 器 1 定 时 器 0 M1、 M0为工作方式选择位为工作方式选择位 M1 M0 工作方式 方式说明0 0 0 13位定时位定时 /计数器计数器0 1 1 16位定时位定时 /计数器计数器1 0 2 8位自动重置定时位自动重置定时 /计数器计数器1 1 3 两个两个 8位定时位定时 /计数器(只有计数器(只有 T0有)有) 计数器计数器 /定时器方式选择位定时器方式选择位设置为定时方式。定时器计数设置为定时方式。定时器计数 8051片内脉冲,即对机器周期计数片内脉冲,即对机器周期计数设置为计数方式。计数器的输入来自设置为计数方式。计数器的输入来自 T0( P3.4) 或或 T1( P3.5) 端的外部脉冲端的外部脉冲GATE 门控位。GATE=0,只要用软件使 TR0(或(或 TR1)置)置 1就可以启动定时器,而不管 INT0(或 INT1)的电平是高还是低 。GATE=1,只有 INT0(或(或 INT1)引脚)引脚 为高电平 且且 由软件使 TR0(或 TR1)置 1时,才能启动定时器工作。TL1 TH1晶振晶振 1 / 12(8位位 ) (8位位 )TF1 中断中断控制控制每周期采样一次每周期采样一次TR1GATEINT1C/T=0C/T=1二定时二定时 /计数器的控制寄存器计数器的控制寄存器 TCONTCON D7 D6 D5 D4 D3 D2 D1 D0(88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TR1:定时 /计数器 T1的 启动位启动位 ,可由软件置位或清零,当 TR1=1时启动; TR1=0时停止。TF1:定时 /计数器 T1的 溢出标志位溢出标志位 ,当定时 /计数器 T1计满时,由硬件使它置位,如中断允许则 触发触发 T1中断中断 。进入中断处理后由内部硬件电路自动清除。TF0:定时 /计数器 T0的溢出标志位,当定时 /计数器 T0计满时,由硬件使它置位,如中断允许则触发 T0中断。进入中断处理后由内部硬件电路自动清除。TR0:定时 /计数器 T0的启动位,可由软件置位或清零,当 TR0=1时启动; TR0=0时停止。6.2.3 定时定时 /计数器的工作方式计数器的工作方式一方式一方式 0 ( 13位的定时位的定时 /计数方式)计数方式)TH0 TL0 T1T2T3T4T5T6T7T8T9T10T11T12T13例:设置例:设置 T1为工作模式为工作模式 0,计数器工作方式,启动和外部中断信号无关,试设置,计数器工作方式,启动和外部中断信号无关,试设置 TOMD和和 TCON的值的值GATE C/ T M1 M0 GATE M1C/ T M0TMODD7 D6 D5 D4 D3 D2 D1 D0解: TMOD 40H故: MOV TMOD, #40HSETB TR1方式 0是 13位的定时 /计数方式,因而最大计数值(满值)为 2的 13次幂,等于 8192。如计数值为 N,则置入的初值 X为:X=8192-N如定时 /计数器 T0的计数值为 1000,则初值为 7192,转换成二进制数为 1110000011000B,则 TH0=11100000B, TL0=00011000B。定时定时 /计数器计数器 初值的设置初值的设置计数器初值计数器初值 TC定时器初值定时器初值 设需要计数的数值为 C,无论何种工作方式,计数器计数的最大值总是: 2n( n为计数器工作的位数)设初值为 TC,则定时的时间 T为:T( 2n TC) 定时脉冲的周期定时脉冲的周期例:设单片机采用例:设单片机采用 12MHz晶振,定时计数器晶振,定时计数器 T0想实现想实现 1ms的延时,试设置的延时,试设置 TH0和和 TL0的初始值的初始值TH0 TL0 T1T2T3T4T5T6T7T8T9T10T11T12T130001 1100 0001 10001 1 1 0 0 0 0 0 1 1 0 0 0故:故: TH E0H; TL 18H用用 T0定时,选择工作模式定时,选择工作模式 0,由单片机,由单片机 P1.0输出占空比为输出占空比为 50、周期为、周期为 2ms的方波,晶振频率为的方波,晶振频率为 12M。源程序如下:源程序如下: ORG 0000HLJMP MAINORG 000BHLJMP INT_TIME0ORG 0030HMAIN: 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应用应用TH0 TL0T1T2T3T4T5T6T7T8T9T10T11T12T13T14T15T16二方式二方式 1( 16位定时位定时 /计数方式)计数方式)例:设置例:设置 T0为工作模式为工作模式 1,定时工作方式,启动和外部中断信号无关,试设置,定时工作方式,启动和外部中断信号无关,试设置 TOMD和和 TCON的值的值GATE C/ T M1 M0 GATE M1C/ T M0TMODD7 D6 D5 D4 D3 D2 D1 D0解: TMOD 01H,故: MOV TMOD, #01H; SETB TR02 控制寄存器的设置控制寄存器的设置3 定时器初值的设置定时器初值的设置例:单片机采用例:单片机采用 12MHz晶振,定时晶振,定时 T0想实现想实现 10ms的延时,试设置的延时,试设置 TH0和和 TH1的初始值的初始值故:故: TH 0D8H; TL 0F0H例 用 T1定时,选择工作模式 1,由单片机 P1.0输出 50Hz的方波,晶振频率 12M。源程序如下:源程序如下:ORG 0000HLJMP MAINORG 0030HMAIN: MOV TMOD,#10H ;设置;设置 T1为模式为模式 1 SETB TR1 ;启动定时;启动定时LOOP: MOV TL1,#0D8H ;送初值;送初值MOV TH1,#0F0HJNB TF1, $ ;查询定时时间到否;查询定时时间到否CLR TF1 ;产生溢出,清标志位;产生溢出,清标志位 CPL P1.1 ;取反;取反 SJMP LOOP ;重复循环;重复循环三方式三方式 2( 8位自动重装初值的定时位自动重装初值的定时 /计数方式)计数方式)振荡器 12TLx( 8位)THx( 8位)TFx与或TxTRxGATEINTxS2S1C/TTcy中断请求重装初值816位的计数器只用了 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计满后,溢出信号会触发三态门自动地把 TH0(或 TH1)的值装入 TL0(或 TL1)中,因而如果要重新实现 N个单位的计数,不用重新置入初值。计数初值的设置:计数初值的设置:例:单片机采用例:单片机采用 12MHz晶振,定时器晶振,定时器 T0想实现想实现 100us的延时,试设置的延时,试设置 TH0和和 TH1的初始值的初始值故:故: TH 9CH; TL 9CH定时初值的设置定时初值的设置模式 2 的应用举例例例 :利用定时器利用定时器 T1的模式的模式 2对外部信号计数。要求每计满对外部信号计数。要求每计满 100次,将次,将 P1.0引脚取反。引脚取反。源程序:源程序: ORG 0000HLJMP MAINORG 001BHLJMP INT_TIME1ORG 0030HMAIN: MOV TMOD,#60H ;设置;设置 T1为模式为模式 2,外部计数方式外部计数方式MOV TL1,#9CH ; T1计数器初值计数器初值MOV TH1,#9CHSETB EA ;开放定时器中断;开放定时器中断SETB ET1SETB TR1 ;启动;启动 T1计数计数HERE: SJMP HERE ;等待中断;等待中断INT_TIME1: CPL P1.0RETI【 例例 】 P1.1输出脉冲宽度信号,即脉冲频率为输出脉冲宽度信号,即脉冲频率为 1kHz、占空比为、占空比为 25 的矩形波,晶振频率为的矩形波,晶振频率为 6MHz。对对 P1.1取反时,由于高、低电平的时间不同,可找出一个时取反时,由于高、低电平的时间不同,可找出一个时间基准,如间基准,如 100 s、 200 s。本例设定时间基准本例设定时间基准 200 s,即定时时间为,即定时时间为 200 s。 高电平的软件计数为高电平的软件计数为 2,低电平的软件计数为,低电平的软件计数为 3。定时初值ORG 0000H0000H 02 00 30 LJMP MAINORG 000BH ;定时器定时器 0的中断入口地址的中断入口地址000BH 02 00 50 LJMP INT0ORG 0030H0030H D2 91 MAIN: SETB P1.1 ;设置设置 P1.1初始状态初始状态0032H 7A 02 MOV R2, #02H ;给给 R2赋高电平计数值赋高电平计数值0034H 75 89 02 MOV TMOD, #02H;定时器定时器 0工作方式工作方式 20037H 75 8C 9C MOV TH0, #9CH ;置置 200s定时初值定时初值003AH 75 8A 9C MOV TL0, #9CH003DH D2 AF SETB EA003FH D2 A9 SETB ET00041H D2 8C SETB TR00043H 80 FE SJMP $ ;动态暂停动态暂停ORG 0050H0050H DA 0B INT0: DJNZ R2,EXIT0052H B2 91 CPL P1.1 ;P1.1取反取反0054H 30 91 04 JNB P1.1,L1 ;判断判断 P1.1电平高低电平高低0057H 7A 02 MOV R2, #02H ;若若 P1.1=1,给给 R2赋高电赋高电平计数值平计数值0059H 80 02 SJMP EXIT005BH 7A 04 L1: MOV R2, #03H ;若若 P1.1=0,给给 R2赋低电赋低电平计数值平计数值005DH 32 EXIT: RETIEND定时器 0中断服务程序:方式 3只有定时 /计数器 T0才有方式 3下,定时 /计数器 T0被分为两个独立的 8位定时器 /计数器 TL0和 TH0,其中, TL0可作为 定定时时 /计数器计数器 使用,占用 T0的全部控制位: GATE、 C/T、 TR0和 TF0;而 TH0固定只能作 定时器定时器 使用,对机器周期进行计数,这时它占用定时 /计数器 T1的 TR1位、 TF1位和 T1的中断资源。 四方式四方式 3振荡器 12TL0( 8位) TF0与或T0TR0GATEINT0S2S1C/TTcy中断请求TH0( 8位) TF1S2中断请求T1TR1n TH0只能用于简单的内部定时功能,它占用了原只能用于简单的内部定时功能,它占用了原 T1的控制位的控制位 TR1和和 TF1,同时占用了,同时占用了 T1中断源。中断源。 2. T0方式方式 3下下 T1的结构特点的结构特点n T1不能工作在方式不能工作在方式 3下下 , 因为在因为在 T0工作在方式工作在方式 3下时,下时, T1的控制位的控制位 TR1、 TF1和中断源被和中断源被 T0占用占用 。T1可工作在方式可工作在方式 0、方式、方式 1、方式、方式 2下下 ,但不能产生中断,但不能产生中断n T1通常用作串行口波特率发生器通常用作串行口波特率发生器 ,以方式,以方式 2工作会使程序简单一些。工作会使程序简单一些。 v 8051单片机共有两个可编程的定时器单片机共有两个可编程的定时器 /计数器,分别称为定时器计数器,分别称为定时器 0和定时器和定时器 1,它们都是,它们都是 16位加位加 1计数器。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论