福州大学至诚学院本科生毕业设计(论文)
平则从内部程序存储器读指令。
(4)可编程输入/输出引脚(32根)
STC89C52单片机有4组8位的可编程I/O,分别为P0、P1、P2、P3口,每个口有8位,共32位。
P0:P0口是一组8位双向I/O 口,也即地址/数据总线复用口。作为I/O口使用相当于一个真正的双相口:具有输出锁存和输入缓冲功能。但输入时需先将口置1,没根口线可以独立定义为输入或输出。作为输出口用时.每位能吸收电流的方式驱动8个TTL 逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用[10]。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在FLASH由编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P0口具有双向口一切特点。
与P1口及其他口的区别是,输出时对漏极开路输出,与NM0S的电路接口时要用上拉电阻;输入时为悬浮状态,为一个高阻抗的输入口。
P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻某个引脚被外部信号拉低时会输出一个电流IIL
P1.0 和P1.1还可分别作为定时/计数器2 的外部计数输入(P1.0/T2 )和输入(P1.1/T2EX) , FLASH编程和程序校验期间,Pl接收低8位地址,P1引脚的特殊功能如表3-1所示:
表3-1 P1 引脚的特殊功能
引脚号 P1.0 P1.1
功能特性
T2(定时/计数器2外部计数脉冲输入),时钟输出。 T2EX(定时/计数2捕获/重装载触发和方向控制)
P2口:P2 是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电路。对端口P2写“1\,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR 指令)时,P2送出高8 位地址数据。在访问8位地址的外部数据存储器、如执行MOVX@RI指令)时,P2口输出P2锁存器的内容[9]。
FLASH编程或校验时,P2亦接收高位地址和一些控制信号。
10
手持式示波器的设计(软件部分)
P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流。 P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,具体功能如表3-2[10]所示: 表3-2 P3口的第二功能 端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXD(串行口输入) TXD(串行口输出) INT0(外部中断0) INT1(外部中断1) T0(定时/计数0) T1(定时/计数1) WR(外部数据存储器写选通) RD(外部数据存储器读选通) 此外,P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。 中断:
STC89C52共有6个中断向量:2个串行中断,2个外部中断源,2个读写中端口线。这些中断源可通过分别设置专用寄存器IE的置位或清0来控制每一个中断的允许或禁止。IE也有一个总禁止位EA , 它能控制所有中断的允许或禁止[15]。
特殊功能寄存器:
在STC89C52片内存储器中,80H-FFH共128个单元为特殊功能寄存器(SFE ) , SFR的地址符号及复位。并非所有的地址都被定义,从80H-FFH共128 个字节只有一部分被定义,还有相当一部分没有定义。对没有定义的单元读写将是无效的,读出的数位将不确定,而写入的数据也将丢失。
不应将数据\写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。STC89C52特殊功能寄存器的符号及复位
11
福州大学至诚学院本科生毕业设计(论文)
状态如表3-3所示[11]:
表3-3 STC89C52 SFR 符号及复位状态 地址 80H 88H P0 11111111 SP 00000111 TCON TMOD TL0 符号及复位 DPL00000000 DPH 00000000 PCON0***0000 TL1 TH0 TH1 00000000 00000000 00000000 90H 98H 0A0H 0A8H 0B0H 0B8H 0C0H 0C8H P1 11111111 SCON 0000000 P2 11111111 IE 0*000000 P3 11111111 IP **000000 T2CON T2MOD RCAP2L SBUF ******** 000000000 00000000 00000000 RCAP2H TL2 00000000 TH2 00000000 00000000 **000000 00000000 00000000 0D0H 0D8H 0E0H 0E8H 0F0H 0F8H PSW 00000000 ACC 00000000 B 00000000
数据存储器:
STC89C52有256个字节的内部RAM , 80H-FFH高128个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高128字节的RAM和殊功能寄存器的地址是相同的,但物理上它们是分开的。
当一条指令访问7FH以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高128字节RAM还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功能寄存器.
12
手持式示波器的设计(软件部分)
例如,下面的直接寻址指令访问特殊功能寄存器0A0H(即P2口)地址单元。 MOV 0A0H ,#data[12]
间接寻址指令访问高128字节RAM ,例如下面的间接子址指令中,R0的内容为OAOH ,则访问数据字节地址为0A0H , 而不是P2口(0A0H )。
MOV @RO ,#data
堆栈操作也是间接寻址方式,所以,高128位数据RAM亦可作为堆栈区使用。 定时器O和定时器1
定时器0和计数器1各有一个16位的数据寄存器,它们都是由高8位寄存器和低8位寄存器所组成。
STC89C52的定时器O和定时器1的工作方式:
定时器2是一个16位定时计数器。它既可当定时器使用,也可作为外部事件计数器使用,其工作方式由特殊功能寄存器T2CON的C/T2位选择。定时器2有三种工作方式:捕获方式,自动重装载(向上或向下计数)方式和波特率发生器方式,工作方式由T2CON的控制位来选择,参见表3-4[10]:
表3-4 定时器2工作方式 RCLX+TCLK 0 0 1 X 0 1 X X CP/RL2 TR2 1 1 1 0 MODE 16-bit auto-reload 16-bit Capture Baud Rate Generator (off)
定时器2由两个8位寄存器TH2和TL2组成,在定时器工作方式中,每个机器周期TL2寄存器的值加1 ,由于一个机器周期由12个振荡时钟构成,因此,计数速率为振荡频率的1/l2 。
在计数工作方式时,当T2引脚上外部输入信号产生由1至O的下降沿时,寄存器的值加1,在这种工作方式下,每个机器周期的5SP2期间,对外部输入进行采样。若在第一个机器周期中采到的值为1,而在下一个机器周期中采到的值为0 , 则在紧跟着的下一个周期的S3P1期间寄存器加l 。由于识别1至0的跳变需要2个机器周期(24个振荡周期),因此,最高计数速率为振荡频率的1/24 ,为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。
AT89C52除有定时/计数器0和定时/计数器1 外,还有定时/计数和状态位参见表3-5:
表3-5 定时/计数器状态位
13
福州大学至诚学院本科生毕业设计(论文)
TF2 7 EXF2 6 RCK 5 TCLK 4 EXEN2 3 TR2 2 C/T2 1 CP/RL2 0
T2CON寄存器对定时器2在16 位捕获方式或16位自动重装载方式下的捕获/自动重装载寄存器。定时/计数器2控制存储器T2CON参见表3-6[8]:
表3-6定时/计数器2控制寄存器T2CON 符号 TF2 功能 定时器2溢出标志。定时器2溢出时,又由硬件置位,必须由软件 清0,当RCLK=1或TCLK=1时,定时器2溢出,不对TF2置位。 定时器2外部标志。当EXEN2=1,且当T2EX引脚上出现负跳变而出现捕获或重装载时,EXF2置位,申请中断.此时如果允许定时器2中断,CPU响应中断,执行定时器2中断服务程序,EXF2必须由软件清除。当定时器2工作在向上或向下计数工作方式时(DCEN=1) , ExF2不能激活中断。 接收时钟允许。RCLK=1时.用定时器2溢出脉冲作为串行口(工作于工作方式1或3时)的接收时钟,RCLK=0,用定时器l的溢出脉冲作为接收时钟 。 发送时钟允许。TCLK=1时,用定时器2溢出脉冲作为串行口(工作于工作方式1或3时)的发送时钟,RCLK=0 .用定时器l的溢出脉冲作为发送脉冲。 定时器2外部允许标志。当EXEN2=1时,如果定时器2未用于作串行口的波特率发生器,在T2EX端出现负跳变脉冲时,激活定时器2 捕获或重装载.EXEN2=0,T2EX端的外部信号无效. 定时器2启动/停止控制位。TR2=l时,启动定时器2 。 定时器2定时方式或计数方式控制位。C/T2=0,选择定时方式。C/T2=1时,选择对外部事件计数方式(下降沿触发)。 捕获/重装载选择。CP/RL2=l时,如EXEN2=l.且T2EN双端出现负跳变脉冲时发生捕获操作。CP/RL2=0时,若定时器2溢出或EXEN2=l条件下,T2EN双端出现负跳变脉冲,都会出现自动重装载操作。当RCLK=1或TCLK=1时,该位无效,在定时器2溢出时强制其自动重装载。 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2
3.2 信号采集系统
14