《第4章MCS-51单片机功能模块及其应用》由会员分享,可在线阅读,更多相关《第4章MCS-51单片机功能模块及其应用(40页珍藏版)》请在金锄头文库上搜索。
1、,胡景春,单片机原理及应用,4.1 并行口及其应用4.2 定时器及其应用4.3 串行接口UART4.4 89C52FLASH程序存储器,第四章 MCS-51单片机功能模块及其应用,4.1 并行口及其应用,MCS51单片机中有个双向(位)并行I/O 端口(线),每线都配备独立的端口锁存器、输出驱动器和输入缓冲器,用于与外界设备之间交换信息4.1.1 P0口。,P0口一位结构图,P0口除了作普通的I/O口,直接和外部设备打交道外;还用作片外总线的地址总线AB0-AB7的低八位和数据总线。注:单片机复位后4个端口对外均呈现高电平,P2口除了作普通的I/O口,直接和外部设备打交道外;还用作片外总线的地
2、址总线的高八位地址线AB8-AB15, P2口 P0口在作输出入口使用时,由于它无内部上拉电阻,为了在口线上输出高电平并具有一定的驱动能力,必须外接上拉电阻。注意:作输入口使用时,为了防止口锁存器对输入口线的输入信号造成影响,必须先往口锁存器写1。同理,P2口作输入时,也必须先往口锁存器写1。,P2口一位结构图,P1口一位结构图,P1口只用作普通输入输出口, P1口 从单片机的使用角度来看,P1是一个真正的双向口,而其他三个端口都是准双向口。注意:和P0、P2口一样,为防止口锁存器对输入口线造成影响,P1口作输入时,也必须先往口锁存器写1。,P3口一位结构图,P3口除了作普通的I/O口(功能和
3、P1口一样)直接和外部设备打交道外;还具有第二功能。,P3.0 串行输入口(RXD) P3.1 串行输出口(TXD) P3.2 外中断0(INT0) P3.3 外中断1(INT1) P3.5 定时/计数器1的外部输入口(T1) P3.6 外部数据存储器写选通(WR) P3.4 定时/计数器0的外部输入口(T0) P3.7外部数据存储器读选通(RD),4.3 中断系统应用举例,【例1 .1】: 如图所示为电加热锅炉控制工作原理图和单片机控制系统:当压力报警信号发出时,要求排汽电磁阀通电,打开排汽电磁阀以减少锅炉内蒸汽压力;当低水位限位报警信号发出时,打开进水阀进水;当高水位限位报警信号发出时,关
4、闭进水阀停止进水;当温度达到100时,关闭电加热丝;当温度低于95时,接通电加热丝。请设计控制软件。,图4-3 电加热锅炉控制工作示意图,解:从示意图和控制系统电原理图中可以看出,该系统有5个中断源,而单片机只有2个外部中断请求,本系统中5个中断源通过或非门后接入外部中断1。 5个中断源中哪个发生中断请求还需要通过查询程序进行判断,查询顺序的先后决定了这5个中断源的优先级高低。参考程序如下:,ORG 0000H LJMP MAIN ORG 0013H LJMP INT1 ORG 0100H MAIN: SETB EX1 ;允许INT1中断 SETB EA ;开中断 HALT: SJMP HAL
5、T ;等待中断 ORG 1000H 中断服务程序:INT1: JB P1.0 PRESS ;P1.0=1转压力报警服务程序LOOP1: JB P1.1 HIGH ;P1.1=1转高水位服务程序 JB P1.2 LOW ;P1.2=1转低水位服务程序,LOOP2: JB P1.3 HEATOFF ; P1.3=1转100服务程序 JB P1.4 HEATON ; P1.4=1转95服务程序LOOP3: RETI PRESS: SRTB P1.5 ;压力报警服务程序 JB P1.0 PRESS CLR P1.5 SJMP LOOP1HIGH: CLR P1.6 ;高水位服务程序 SJMP LOOP
6、2LOW: SETB P1.6 ;低水位服务程序 SJMP LOOP2HEATOFF: CLR P1.7 ; 100服务程序 SJMP LOOP3HEATON: SETB P1.7 ; 95服务程序 SJMP LOOP3 END,5.1 定时/计数器的概述 5.2 定时/计数器的控制5.3 定时/计数器的工作方式5.4 定时/计数器的一般编程步骤5.5 定时/计数器的应用举例,第五章 MCS-51单片机的定时/计数器,5.1 定时/计数器概述,在单片机的内部结构中,有两个16位可编程的定时/计数器,它们具有四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便
7、地选择适当的工作方式。,5.2 定时/计数器的控制,1、 定时器控制寄存器 TCON (88H),TR0 :定时 / 计数器0运行控制位。=0 停止,=1 开始工作(与GATE位的状态有关),软件置位,软件复位。 TR1:定时 / 计数器1运行控制位。(用法与TR0类似) TF0、TF1 :分别是定时、计数器T0、T1的溢出标志位。,2、定时方式寄存器TMOD (89H ),GATE : 门控位. GATE = 0 启动不受 /INT0或 /INT1的控制;GATE = 1 启动受 /INT0 或 /INT1 的控制。C/T : 外部计数器 / 定时器方式选择位C/T = 0 定时方式;C /
8、T = 1 计数 方式M1M0 工作模式选择位(编程可决定四种工作模式)。,5.3 定时/计数器的工作方式,5.3.1 工作方式 0 13位定时/计数器,定时器/计数器方式0的计数器结构:,图5-2 方式0等效逻辑结构,在计数工作方式下,计数器的计数值范围是: 20213 18192在定时工作方式时,定时时间的计算公式为: 定时时间=( 8192 -计数初值)晶振周期12 =( 8192 -计数初值)机器周期 计数初值=8192- 定时时间 / 机器周器 =2n-定时时间 / 机器周期 如果单片机的晶振选为6.000MHz,则最长定时时间为:(81920)1/610-612=1638410-6
9、(s)=16384(us)。,定时器/计数器运行控制的情况:、由TR0控制的情况要运行控制位TR0能够控制定时器/计数器的运行,其或门的输出一定要为1,这就意味着GATE要设置为0或者INT0=1。 因此在单片机的定时或计数应用中,要注意定时器方式寄存器TMOD的GATE位一定要设置为0。、由INT0控制的情况 要能用INT0来控制定时器/计数器的运行,TR0和GATE均应设置为1。这种情况可用于测量外部信号的脉冲宽度。,例5.1设单片机晶振频率为6MHZ,使用定时器1以方式0 产生周期为500s的等宽正方波连续脉冲,并由P1.0输出。以查询方式完成。解:计算计数初值欲产生500s的等宽正方波
10、脉冲,只需在P1.0端以250s为周期交替输出高低电平即可实现,为此定时时间应为250s。使用6MHZ晶振,则一个机器周期为2s。方式0为13位计数结构。设待求的计数初值为X,则( 213X)210-6=25010-6求解得:X=8067。二进制数表示为0001111110000011B。十六进制(按方式0的13位11111100XXX00011)表示得:高8位为0FCH,低5位为03H,。,、相关控制寄存器的设定TMOD各位的设定。设定方式0:M1M0=00;实现定时:C/T=0;定时应用:GATE=0。TCON(地址:88H)是可以位寻址的,又因与该题有关的位只有TR1,故这里采用位寻址方
11、式,用设置TR1 =1来启动定时器T1,TR1 =0来停止定时器T1。IE 题目要求采用查询方式,当定时时间到定时器溢出标志位TF1置1时,不允许产生中断,故应禁止中断,即置IE=00H。,、参考程序:,ANL TMOD,#0FH ;设置T1为定时工作方式0 ORL TMOD,#00H ;且不影响T0的工作 MOV TH1,#0FCH ;置计数初值 MOV TL1,#03H MOV IE,#00H ;禁止中断LOOP:SETB TR1 ;启动定时器 JBC TF1,LOOP1 ;查询计数溢出 AJMP LOOP LOOP1:MOV TH1,#0FCH ;重新设置计数初值 MOV TL1,#03H CPL P1.0 ;输出取反 AJMP LOOP ;重复循环 END,5.3.2 工作方式 116位定时/计数器,图5-3 方式1等效逻辑结构,在计数工作方式下,计数器的计数值范围是: 20216 165536 在定时工作方式时,定时时间的计算公式为: 定时时间=( 65536 -计数初值)晶振周期12 =( 65536-计数初值)机器周期 计数初值=65536- 定时时间 / 机器周器 =2n-定时时间 / 机器周期如果单片机的晶振选为6.000MHz,则最长定时时间为: (655360)1/610-612=13107210-6(s)=131072(us)。,