51单片机的基本端口操作
STC51单片机IO口模式快速设置
S T C51单片机I O口模式快速设置-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIANSTC51单片机IO口模式的快速设置新型51单片机STC系列,较传统51单片机在性能和速度上有根本性的提高。
速度提高8—12倍;片上RAM大量增加;片上外围模块大量增加,等等。
其中IO口的模式增加为4种(传统51只有1中),以P0口为例:这里,每个端口新增两个寄存器PxM0, PxM1(x=0,1,2,3)。
在设置每一个IO端的模式时都需要对这两个寄存器进行操作。
比如:要将设为推挽输出,设为准双向口,设为高阻输入;设为开路模式,都设为准双向口,那么需要如下的代码:IO_Init(){P0M0=0x30;//0011 0000P0M1=0x90;//1001 0000}这样的设置不便于记忆,很容易写错,且写好的代码可读性差,为此,我们可以通过一个宏定义来解决,具体如下:#define PORT0 0#define PORT1 1#define PORT2 2#define PORT3 3#define BIT0 0#define BIT1 1#define BIT2 2#define BIT3 3#define BIT4 4#define BIT5 5#define BIT6 6#define BIT7 7#define STANDARD 0#define PP_OUT 1#define Z_IN 2#define OD 3#define IOMODE(Port,bit_n,mode) { \switch(Port)\{\case 0:\switch(mode) { \case STANDARD: P0M0&=~(1<<bit_n); P0M1&=~(1<<bit_n); break; \case PP_OUT: P0M0&=~(1<<bit_n); P0M1|= (1<<bit_n); break; \case Z_IN: P0M0|=(1<<bit_n); P0M1&=~(1<<bit_n); break; \case OD: P0M0|=(1<<bit_n); P0M1|=(1<<bit_n); break; \} \break;\case 1:\switch(mode) { \case STANDARD: P1M0&=~(1<<bit_n); P1M1&=~(1<<bit_n); break; \case PP_OUT: P1M0&=~(1<<bit_n); P1M1|= (1<<bit_n); break; \case Z_IN: P1M0|=(1<<bit_n); P1M1&=~(1<<bit_n); break; \case OD: P1M0|=(1<<bit_n); P1M1|=(1<<bit_n); break; \} \break;\case 2:\switch(mode) { \case STANDARD: P2M0&=~(1<<bit_n); P2M1&=~(1<<bit_n); break; \case PP_OUT: P2M0&=~(1<<bit_n); P2M1|= (1<<bit_n); break; \case Z_IN: P2M0|=(1<<bit_n); P2M1&=~(1<<bit_n); break; \case OD: P2M0|=(1<<bit_n); P2M1|=(1<<bit_n); break; \} \break;\case 3:\switch(mode) { \case STANDARD: P3M0&=~(1<<bit_n); P3M1&=~(1<<bit_n); break; \case PP_OUT: P3M0&=~(1<<bit_n); P3M1|= (1<<bit_n); break; \case Z_IN: P3M0|=(1<<bit_n); P3M1&=~(1<<bit_n); break; \case OD: P3M0|=(1<<bit_n); P3M1|=(1<<bit_n); break; \} \break;\}\}有了上面的宏定义,在初始化程序中可以直接这样写IO_Init(){IOMODE(PORT0,BIT7,PP_OUT)IOMODE(PORT0,BIT6, STANDARD)IOMODE(PORT0,BIT5, Z_IN)IOMODE(PORT0,BIT4, OD)IOMODE(PORT0,BIT3, STANDARD)IOMODE(PORT0,BIT2, STANDARD)IOMODE(PORT0,BIT1, STANDARD)IOMODE(PORT0,BIT0, STANDARD)}。
MCS-51单片机并行口的结构与操作
华中科技大学光学与电子信息学院单片机( 2015 -- 2016学年度第一学期)题目:MCS-51单片机并行端口结构与操作院系:光学与电子信息学院班级:学号:学生姓名:指导教师:成绩:日期: 2015年 9月 21日MCS—51单片机并行口的结构与操作一、MCS—51单片机简介MCS—51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MCS—51单片机作为代表进行理论基础学习.MCS-51系列单片机主要包括8031、8051和8751等通用产品,其主要功能如下:8位CPU、4kbytes 程序存储器(ROM)、128bytes的数据存储器(RAM)、32条I/O口线、111条指令,大部分为单字节指令、21个专用寄存器、2个可编程定时/计数器、5个中断源,2个优先级、一个全双工串行通信口、外部数据存储器寻址空间为64kB、外部程序存储器寻址空间为64kB、逻辑操作位寻址功能、双列直插40PinDIP封装、单一+5V电源供电。
如图所示:1。
结构(1)中央处理单元(8位)数据处理、测试位,置位,复位位操作(2)只读存储器(4KB或8KB)永久性存储应用程序,掩模ROM、EPROM、EEPROM(3)随机存取内存(128B、128B SFR)在程序运行时存储工作变量和资料(4)并行输入/输出口(I / O)(32条)作系统总线、扩展外存、I / O接口芯片(5)串行输入/输出口(2条)串行通信、扩展I / O接口芯片(6)定时/计数器(16位、加1计数)计满溢出、中断标志置位、向CPU提出中断请求,与CPU之间独立工作(7)时钟电路内振、外振。
(8)中断系统五个中断源、2级优先。
51单片机主要引脚功能
51单片机主要引脚功能XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。
RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V 电源的正负端。
P0~P3 为可编程通用I/O 脚,其功能用途由软件定义P0 口:P0 口是一组8 位漏极开路型双向I/O 口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8 个TTL 逻辑门电路,对端口P0 写1 时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1 口:P1 是一个带内部上拉电阻的8 位双向I/O 口,P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。
对端口写1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。
对端口P2 写1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/O 口。
P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。
对P3 口写入1 时,它。
MSC-51单片机基本结构——第3讲
当选择第二输出功能时,该位的锁存器需要置“1”, 使“与非门”为开启状态。当第二输出为1时,场效应管截 止,P3.x引脚输出为1;当第二输出为0时,场效应管导通, P3.x引脚输出为0。
当选择第二输入功能时,该位的锁存器和第二输出功能 端均应置1,保证场效应管截止,P3.x引脚的信息由输入缓 冲器BUF3的输出获得。
1.5 并行I/O端口
※ 有4个8位并行I/O口,共32条端线: P0、P1、P2和P3口。 每一个I/O口都能用作输入或输出。
※ 用作输入时,均须先写入“1”; 用作输出时,P0口应外接上拉电阻。
※ P0口的负载能力为8个LSTTL门电路; P1~P3口的负载能力为4个LSTTL门电路。
※ 在并行扩展外存储器或I/O口情况下, P0口用于低8位地址总线和数据总线(分时传送) P2口用于高8位地址总线, P3口常用于第二功能, 用户能使用的I/O口只有P1口和未用作第二功能 的部分P3口端线。
当P3口实现第一功能通用输入时,也可以执行“读锁 存器”操作,此时Q端信息经过缓冲器BUF1进入内部总线。
3.P3口的特点 P3口内部有上拉电阻,不存在高阻抗输入状态,为准双向口。 P3口作为第二功能的输出/输入,或第一功能通用输入,均须
将相应位的锁存器置1。实际应用中,由于复位后P3口锁 存器自动置1,满足第二功能条件,所以不需要任何设置 工作,就可以进入第二功能操作。 当某位不作为第二功能使用时,可作为第一功能通用I/O使用。 引脚输入部分有两个缓冲器,第二功能的输入信号取自缓冲 器BUF3的输出端,第一功能的输入信号取自缓冲器BUF2的 输出端。 P3口的第二功能定义(表2-1),读者应熟记。
51系列单片机P0端口具体讲解
有关单片机P0口具体讲解图1(一)在我们讲解P0端口之前我们首先梳理一下各个端口有什么不同之处:P0口有三个功能:1、外部扩展存储器时,当做数据(Data)总线(如图1中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址(Address)总线(如图1中的A0~A7为地址总线接口)3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻(后面将详细介绍)。
P1口只做I/O口使用:其内部有上拉电阻。
P2口有两个功能:1、扩展外部存储器时,当作地址总线使用(如图1中的A8~A15为地址总线接口)2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。
图2(注:该图只是P0口的一位,也就是说P0口有8个相同的这样的结构)图3(二)由图2可以看出每个P0口都有这些元件:一个锁存器,两个三态输入缓冲器和一个输出驱动电路组成在访问外部存储器时,P0是一个真正的双向口,当P0输出地址/数据信息时,CPU内部法控制电平“1”来打开上面的与门,又使模拟开关MUX把地址/数据信息经过反相器和T1接通(我们称上面的场效应晶体管FET为T1,下面的场效应管FET为T2);输出的地址/数据信息既通过与门去驱动T1,又通过反相器去驱动T2,是两个FET构成推拉输出电路;1.当P0口作为外部扩展存储器的数据地址总线时:●若地址数据信息为“0”,那么这个信号就使得T1截止,使T2导通(经过反反相器作用使得T2接收到的信号为“1”,根据场效应晶体管的特性,T2导通),若T2导通,那么T2的上下两个N极就导通,而发射极(下面的N极)接地信号则为“0”,这样P0口就相当于接收到了“0”信号;●若地址数据信息输入“1”,则该信号使T2截止,使T1导通,在T1导通情况下,T1的上下N极导通,使得VCC与P0相同,从而输出高电平,即“1”信号;●若从P0口输入信号,信号从引脚通过输入缓冲器进入内部总线;2.当P0口作为一般I/O口使用时:●CPU内部发布控制信号“0”,封锁与门,使得T1截止,同时使模拟开关MUX把锁存器的非Q端与T2端的栅极接通;●在P0口作为输出时,由于非Q端和T2的倒相作用,那么内部总线上的信息与到达P0口上的信息是同相的,只要写脉冲加到锁存器的CL端,内部总线上的信息就会P0的引脚上;●但是由于此时T2为漏极开路输出,所以要外接上拉电阻。
51单片机IO端口的四种输入输出模式
51单片机IO端口的四种输入输出模式(by wuleisly)单片机I O口的使用对所有单片机玩家来说都是“家常便饭”,但是你真的了解I O 口吗?你真的能按你的需要配置I O口吗?一、准双向口输出准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。
这是因为当口线输出为1时驱动能力很弱,允许外部装置将其拉低。
当引脚输出为低时,它的驱动能力很强,可吸收相当大的电流。
(准双向口有3个上拉晶体管适应不同的需要)准双向口读外部状态前,要先锁存为…1‟,才可读到外部正确的状态.二、强推挽输出推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,但当锁存器为1时提供持续的强上拉。
推挽模式一般用于需要更大驱动电流的情况。
三、仅为输入(高阻)输入口带有一个施密特触发输入以及一个干扰抑制电路。
四、开漏输出配置(若外加上拉电阻,也可读)当口线锁存器为0时,开漏输出关闭所有上拉晶体管。
当作为一个逻辑输出时,这种配置方式必须有外部上拉,一般通过电阻外接到V c c。
如果外部有上拉电阻,开漏的I/O口还可读外部状态,即此时被配置为开漏模式的I/O口还可作为输入I/O口。
这种方式的下拉与准双向口相同。
开漏端口带有一个施密特触发输入以及一个干扰抑制电路。
关于I/O口应用注意事项:1.有些是I/O口由低变高读外部状态时,读不对,实际没有损坏,软件处理一下即可。
因为1T的8051单片机速度太快了,软件执行由低变高指令后立即读外部状态,此时由于实际输出还没有变高,就有可能读不对,正确的方法是在软件设置由低变高后加1到2个空操作指令延时,再读就对了.有些实际没有损坏,加上拉电阻就OK了有些是外围接的是NP N三极管,没有加上拉电阻,其实基极串多大电阻,I/O口就应该上拉多大的电阻,或者将该I/O口设置为强推挽输出.2.驱动L E D发光二极管没有加限流电阻,建议加1K以上的限流电阻,至少也要加470欧姆以上做行列矩阵按键扫描电路时,实际工作时没有加限流电阻,实际工作时可能出现2个I/O口均输出为低,并且在按键按下时,短接在一起,我们知道一个C MOS电路的2个输出脚不应该直接短接在一起,按键扫描电路中,此时一个口为了读另外一个口的状态,必须先置高才能读另外一个口的状态,而8051单?片机的弱上拉口在由0变为1时,会有2时钟的强推挽高输出电流输出到另外一个输出为低的I/O口,就有可能造成I/O口损坏.建议在其中的一侧加1K限流电阻,或者在软件处理上,不要出现按键两端的I/O口同时为低.一种典型三极管控制电路:如果用弱上拉控制,建议加上拉电阻R1(3.3K~10K),如果不加上拉电阻R1(3. 3K~10K),建议R2的值在15K以上,或用强推挽输出。
第4章 80C51单片机IO端口及应用最终
24
参考程序:
#include <reg51.h> void main(void) { unsigned char i; P2=0xff; for(;;) { i=P2; P1=i; } }
25
4.6单片机I/O口控制电磁继电器
在控制系统中,常常存在电子电路与电气电路的互 相连接问题,需要电子电路控制电气电路的执行元件, 例如电动机、电磁铁、电灯等,同时实现电子线路与电 气电路的电隔离,以保护电子电路和人身的安全,继电 器在其中起了重要的桥梁作用。
控制
T1
内部总线 写锁存器 读引脚
D P0.x Q 锁存器 Q
BUF2
MUX
P0.x引脚 T2
图4-1 P0口的位电路结构
4
2.P0口工作原理 (1)P0口作为地址/数据总线分时复用口
当80C51单片机外部扩展存储器或者I/O接口芯片,需要 P0口作为地址/数据总线分时使用时,“控制”信号输出高 电平;转换开关MUX 将T2与反相器输出端接通,同时“与 门”开锁,“地址或数据”信号通过与门驱动T1管,并通过 反相器驱动T2管,使得P0.x引脚的输出状态随“地址/数据” 状态的变化而变化。具体输出过程如下。
注意,当P0口作输出口使用时,输出级属开漏电路,在 P0.x引脚应外接上拉电阻。
6
② P0口作为I/O口输入时,端口中的两个三态缓冲器用于读 操作。有2种读操作:读锁存器和读引脚。
“读引脚”:当执行一般的端口输入指令时,引脚上的外部 信号既加在三态缓冲器BUF2的输入端,又加在场效应管T2 漏极上,若此时T2导通,则引脚上的电位被钳在0电平上。 为使读引脚能正确地读入,在输入数据时,要先向锁存器置 “1”,使其Q反端为0,使输出级T1和T2两个管子均被截止, 引脚处于悬浮状态;作高阻抗输入。“读引脚”脉冲把三态 缓冲器打开,于是引脚上的数据经缓冲器到内部总线;
51单片机的P1、P2、P3口的工作原理
基于proteus的51单片机仿真实例五十、51单片机的P1、P2、P 3口的工作原理1、P1口某一位的内部电路结构如下图所示,在51单片机的P0,P1,P2,P3口中,P1口的结构最简单,用途也最单一。
仅仅只作为普通的数据输入/输出(I/O)端口使用。
从图中可以看出,P0口与P1口的主要差别在于:P1端口用内部上拉电阻代替了P0端口的场效应管,并且输出的信息只有内部总线的信息,没有了数据/地址总线的复用。
1)P1口用作输入端口如果P1口用作输入端口,即Q=0,/Q=1;则场效应管导通,引脚被直接连到电源的地GND上,即使引脚输入的是高电平,被直接拉低为“0“,所以,与P0端口一样,在将数据输入P1端口之前,先要通过内部总线向锁存器写”1“,这样/Q=0,场效应管截止,P1端口输入的“1”才可以送到三态缓冲器的输入端,此时再给三态门的读引脚送一个读控制信号,引脚上的“1”就可以通过三态缓冲器送到内部总线。
具有这种操作特点的输入/输出端口,一般称之为准双向I/O口,51单片机的P1,P2,P3口都是准双向口。
而P0端口由于输出具有三态功能(输出端口的三态是指:高电平,低电平,高阻态这三态),所以在作为输入端口时,无需先写“1”然后再进行读操作。
2)P1口用作输出端口如果P1口用作输出端口,应给锁存器的写锁存CP端输入写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q和/Q端输出,如果D端输入“1”,则/Q=0,场效应管截止,由于上拉电阻的作用,在P1.X引脚输出高电平“1”,反之,如果D端输入“0”,则/Q =1,场效应管导通, P1.X引脚连到地线上,从而在引脚输出“0”。
2、P2口的内部电路结构如下图所示,可以看出P2口既有片内上拉电阻,又有切换开关MUX,所以P2口在功能上兼有P0和P1端口的特点,这主要体现在输出功能上,当切换开关向下接通时,从内部总线输出的一位数据经反相器和场效应管反相后,输出在端口引脚线上;当多路开关向上时,输出的一位地址信号也经反相器和场效应管反相后,输出在端口引脚线上。
51单片机的基本端口
51单片机的基本端口单片机是一种集成电路芯片,具有微处理器核心、存储器、I/O端口和各种外设接口等功能。
其中,基本端口是单片机最常用的功能之一,用于与外部设备进行数据交互和信号传输。
本文将介绍51单片机的基本端口及其使用方法。
一、引脚功能51单片机的引脚一共有40个,其中包括了多个基本端口引脚。
这些引脚的功能可以根据实际需要进行配置,比如作为输入端口、输出端口、中断源等。
以下是常用的几个基本端口引脚和其功能描述:1. P0口:P0.0~P0.7分别对应引脚号32~39,可用作通用I/O端口。
默认情况下,P0口是上拉输入模式,需要通过对应的寄存器设置为输出模式。
2. P1口:P1.0~P1.7分别对应引脚号1~7和40,同样可用作通用I/O端口。
在默认情况下,P1口是上拉输入模式,也需要通过寄存器进行配置。
3. P2口:P2.0~P2.7分别对应引脚号21~28,是可编程的8位I/O端口。
与P0和P1不同,P2口默认是输出模式,不需要进行配置。
二、使用方法在使用51单片机的基本端口之前,需要理解相关的寄存器和位控制。
以下是基本的使用方法:1. 配置端口模式:通过相应的寄存器设置,将需要使用的引脚设置为输入模式或输出模式。
2. 引脚输入:通过读取相应端口的寄存器,可以获取引脚的输入状态。
3. 引脚输出:通过写入相应端口的寄存器,可以控制引脚的输出状态。
4. 端口中断:通过对应的中断使能设置,可以使端口引脚成为一个中断源,触发中断服务程序。
需要注意的是,在编写代码时,应根据实际需要选择合适的端口和引脚进行配置和操作,以达到所需的功能。
三、示例代码下面是一个简单的示例代码,演示了如何使用51单片机的基本端口来控制LED灯的亮灭:```c#include <reg52.h>sbit LED = P1^0; // 将P1.0引脚定义为LEDvoid delay(unsigned int count){unsigned int i, j;for(i = 0; i < count; i++)for(j = 0; j < 1000; j++);}void main(){while(1){LED = 0; // LED亮delay(1000); // 延时LED = 1; // LED灭delay(1000); // 延时}}```通过以上示例代码,可以看到将P1.0引脚定义为LED,并通过改变LED引脚的输出状态来控制LED的亮灭。
有关51单片机读端口、读引脚的问题
有关51单⽚机读端⼝、读引脚的问题
80C51单⽚机有P0-P3四个P⼝,以P0为例说明:
要搞清这个问题,就要明⽩p0⼝的内部结构。
P0⼝是由锁存器经两个驱动场效应管和外部引脚相连的。
读引脚的意思就是直接读P0外部引脚的电位,⽽读端⼝(锁存器)读的是内部与数据总线链接的锁存器的电位。
两者不同。
⼀般来说,读取P0的数据,都是读引脚,⽬的是获取与P0相连的外部电路的状态。
⽽读端⼝是在执⾏下述语句时由CPU⾃⾏完成的:
inc P0;给p0加1
执⾏这个语句时,采⽤“读-改-写”的过程,先读取p0的端⼝数据,再加1,然后送到p0锁存器⾥。
注意这个端⼝数据跟p0的引脚状态不⼀样,⽐如你事先给p0写进69H,p0⾥数据就是69H,⽽引脚上的状态因为你没有执⾏MOV A,p0之类的指令,它是不会进到p0的锁存器⾥去的。
由此可见,所谓的读端⼝,不是读取p0的状态,⽽是在执⾏inc之类的指令时由CPU⾃⾏完成的,
读引脚就是读取p0⼝状态了。
读引脚时要注意:先要给p0写FFH,使它的场效应管T2和地断开。
因为p0⼝的场效应管T2⼀端接地,⼀端与外部引脚相连,由P0的锁存器控制,当给锁存器写1时,它和地断开,写0时和地相连,所以写零时读到的总是低电平。
试想你现在要读P0引脚,按理说P0与外部电路相连,外部电路的是什么状态,就应该读到什么,但如果p0⼝的场效应管T2⼀端接地的话,它会把p0⼝电位拉低,你读到的总是低电平0,所以要先给p0写FFH,把p0的场效应管T2和地断开,再读数时就是真实状态了。
当外部电路断开,再读时读到的就是p0端⼝(锁存器)的真实状态了。
zz()。
51单片机各引脚及端口详解
51单片机各引脚及端口详解51单片机引脚功能:MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照----单片机引脚图:l ~ P0口8位双向口线(在引脚的39~32号端子)。
l ~ P1口8位双向口线(在引脚的1~8号端子)。
l ~ P2口8位双向口线(在引脚的21~28号端子)。
l ~ P2口8位双向口线(在引脚的10~17号端子)。
这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,对于初学者来说很难理解的,我这里都是按我自已的表达方式来写的,相信你也能够理解的。
P0口有三个功能:1、外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。
P1口只做I/O口使用:其内部有上拉电阻。
P2口有两个功能:1、扩展外部存储器时,当作地址总线使用2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。
有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的,即:编程脉冲:30脚(ALE/PROG)编程电压(25V):31脚(EA/Vpp)接触过工业设备的兄弟可能会看到有些印刷线路板上会有一个电池,这个电池是干什么用的呢这就是单片机的备用电源,当外接电源下降到下限值时,备用电源就会经第二功能的方式由第9脚(即RST/VPD)引入,以保护内部RAM中的信息不会丢失。
在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢他起什么作用呢都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。
第六章mcs-51单片机IO端口(1)
准双向口:从图中结构看,引脚上的外部信号既加在三态缓 冲器的输入端上,又加在输出级FET2的漏极上,若此FET2 是导通的(相当于曾输出锁存过数据0),则引脚上的电位始 终被钳位在0电平上(除非外部信号源有极大的负载能力), 输入数据不可能正确地读入。因此P0口是一个准双向口,即 在输入数据时,应先把口置1,也就是锁存器的~Q为0,这样 使输出级的2个FET都截止,引脚处于悬浮状态,可作高阻抗 输入。这就是所谓的准双向口。
下图为P0口的某位P0.n(n=0~7)结电路和一个输出控 制电路组成。输出驱动电路由一对FET(场效应管)组成,其 工作状态受输出控制电路的控制,后者包括:1个与门、1个反 相器和1个模拟转换开关(MUX)。
读锁存器
内部总线 写锁存器
地址/数据 VCC 控制
第六章 MCS-51的I/0
第六章mcs-51单片机IO端口(1)
单片机I/O口的使用
对单片机的控制,其实就是对I/O口的控制,无论单片机 对外界进行何种控制,或接受外部的控制,都是通过I/O 口进行的。51单片机总共有P0、P1、P2、P3四个8位双 向输入输出端口,每个端口都有锁存器、输出驱动器和输 入缓冲器。4个I/O端口都能作输入输出口用,其中P0和 P2通常用于对外部存储器的访问。
读锁存器
地址/数据 VCC 控制
内部总线 写锁存器
DQ CLK Q
T1
P0.n P0口
T2
引脚
MUX
读引脚
第六章mcs-51单片机IO端口(1)
2、P0作为地址/数据总线
当P0口作为地址/数据总线使用时,可以分为两种情况。一种情况 是从P0输出地址或数据,这时CPU发出的控制信号应为高电平1, 转换开关把反相器输出端与下拉FET接通,同时与门开锁。输出的 地址或数据信号即通过与门去驱动上拉FET,又通过反相器去驱动 下拉FET。另一种情况是从P0输入数据,这时信号仍应从输入缓冲 器进入内部总线。
单片机IO口介绍
P0口和P2的结构 口和P2 4.1.1 P0口和P2的结构
一、P0口的结构
下图为P0口的某位P0.n(n=0~7)结构图,它由一个 输出锁存器、两个三态输入缓冲器和输出驱动电路 及控制电路组成。从图中可以看出,P0口既可以作 为I/O用,也可以作为地址/数据线用。
地址/数据 地址/ 控制 读锁存器
地址/数据 地址/ 控制 读锁存器
T1 P0.n D Q MUX
VCC
内部总线 写锁存器
T2:如果此时该端口的负载恰是一个晶体管基极,且原端 口输出值为1,那么导通了的PN结会把端口引脚高电平拉低;若 此时直接读端口引脚信号,将会把原输出的“1”电平误读为“0” 电平。现采用读输出锁存器代替读引脚,图中,上面的三态缓 冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能 发生的错误。** 地址/数据 地址/ 控制 读锁存器
二、P3 P3第二功能(Q=1) P3 此时引脚部分输入(Q=1、W=1) ,部分输出(Q=1、W输出)
第二输出功能 第二输出功能 读锁存器 VCC
。
W
R P3.n P3口
D Q
内部总线 写锁存器
T
CLK Q
引脚
读引脚 第二输入功能 第二输入功能
P3第二功能各引脚功能定义: P3
P3.0:RXD串行口输入 P3.1:TXD串行口输出 P3.2:INT0外部中断0输入 P3.3:INT1外部中断1输入 P3.4:T0定时器0外部输入 P3.5:T1定时器1外部输入 P3.6:WR外部写控制 P3.7:RD外部读控制
地址/数据 地址/ 控制 读锁存器
T1 P0.n D Q MUX
VCC
内部总线 写锁存器
T2
P0口 P0口 引脚
51单片机的基本端口操作
第一章51单片机的基本端口操作主要对单片机最简系统在实际应用中的使用方法,从简单到复杂地实现单片机最简系统的基本功能。
“点亮最简单的单片机系统”从单片机原理上介绍单片机的基本组成和最简单系统的典型电路,以及有关单片机C51编程方法和例程。
“更加明亮的小灯”从功能上介绍如何使LED发光稳定,从原理上介绍单片机I/O口的电气特性和使用方法。
“定时亮灭的小灯”介绍如何使LED灯定时亮、灭,从单片机原理上介绍定时器的使用和编程方法。
“小灯亮灭的人工控制”从功能上介绍如何通过按键控制LED灯的亮灭,从单片机原理上介绍单片机中断的使用和编程方法。
先复习下Keil 51的操作。
1.1点亮最简单的单片机系统常用MCS-51系列单片机引脚功能说明引脚定义引脚功能功能说明Vcc +5V电源电源电压Vss 地电路接地端P0.0-P0.7 通道0 8位漏极开路的双向I/O通道P1.0-P1.7 通道1 8位拟双向I/O通道P2.0-P2.7 通道2 8位拟双向I/O通道P3.0 RXD 串行输入口P3.1 TXD 串行输出口P3.2 INT0 外部中断0输入口P3.3 INT1 外部中断1输入口P3.4 T0 定时器/计数器0外部时间脉冲输入端P3.5 T1 定时器/计数器1外部时间脉冲输入端P3.6 WR 外部数据存储器写脉冲P3.7 RD 外部数据存储器读脉冲RST/VPD 复位输入信号该引脚上有2个机器周期的高电平可以实现复位操作,在掉电情况下将只给片内RAM供电ALE/PROG 地址锁存有效信号主要作用是提供一个适当的定时信号PSEN 程序选通有效信号低电平时,指令寄存器的内容读到数据总线上EA/Vpp 片选使能当保持TTL高电平时,8051执行内部ROM的指令;当使TTL为低电平时,从外部程序存储器取出所有指令XTAL1 晶振输入端 内部振荡器外接晶振的一个输入端XTAL2 晶振输入端 内部振荡器外接晶振的另一个输入端提问:什么是单片机系统、提问:单片机中晶振有什么作用?回答:单片机访问一次存储器的时间,称之为一个及其周期,是一个时间基准。
51单片机IO口应用详解
51单片机IO口应用详解MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照单片机引脚图:这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,对于初学者来说很难理解的,我这里都是按我自已的表达方式来写的,相信你也能够理解的。
P0口有三个功能:1、外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。
P1口只做I/O口使用:其内部有上拉电阻。
P2口有两个功能:1、扩展外部存储器时,当作地址总线使用2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。
有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的,即:编程脉冲:30脚(ALE/PROG)编程电压(25V):31脚(EA/Vpp)在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。
ALE 地址锁存控制信号:在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。
参见图2(8051扩展2KB EEPROM电路,在图中ALE与4LS373锁存器的G相连接,当CPU对外部进行存取时,用以锁住地址的低位地址,即P0口输出。
由于ALE是以晶振六分之一的固定频率输出的正脉冲,当系统中未使用外部存储器时,ALE脚也会有六分之一的固定频率输出,因此可作为外部时钟或外部定时脉冲使用。
51单片机SD卡SPI模式操作_1568
【51单片机SD卡SPI模式操作】摘要:sd卡有两种接口模式,一种是sd模式,另一种是spi模式。
在spi模式下,有六根接口线与主机相连,5V电平的51单片机通过电平转换可与3.3V电平的sd卡相连接。
51单片机没有专门的spi总线,可以用51单片机的IO口来模拟spi总结时序。
主机与sd卡的数据交换主要通过命令来实现,通过发送cmd0命令对sd卡进行复位,发送命令cmd1实现sd卡的spi模式初始化。
cmd17、cmd18命令是sd卡的读写扇区命令,对sd卡的操作是严格按照时序进行的。
关键词:sd卡;spi接口;时序sd卡以其大容量、低成本、携带方便、存储数据简单和安全可靠性高被大量应用于数码电子设备中,比如数码相机、数码摄像机、mp3、pda、电子学习机、电子图书等。
对sd卡的操作有复位、初始化、读写等,下面以本人掌握的材料对sd卡的操作进行分析。
一、sd卡的结构sd卡的外形与接口如图1,它有9个接点与主机相连,其接口端定义如表1所示。
sd卡有两种操作模式,一种是sd模式,另一种是spi模式,不同模式下端口的定义不同。
SD模式有一个时钟线、一个命令/反馈线、四根输入/输出信号线、两个电源地和一个电源,所有九根线都有定义,数据传输速率较快。
SPI模式只用到CS片选、数据输入、数据输出、时钟、电源地及电源六根线。
SPI模式较SD模式速度较慢,但很多单片机都有专用的SPI总线,可与sd卡直接相连,使用方便。
SD卡的内部结构如图2所示,主要有四部分组成,一是接口电路,共有九个接口电路,定义如表1所示。
二是接口控制电路,所有操作都由该控制电路具体去执行。
三是内部寄存器组OCR、CID、RCA等。
四是存储数据的存储单元。
接口电路通过控制电路与内部寄存器组成存储单元交换数据,其主要操作有写命令、读数据、写数据、读状态等。
二、sd卡的命令格式sd卡的命令格式固定为6个字节48个位,其格式如图3所示。
开始位固定为0,第二位固定为1,表示主机给sd卡的命令,然后是6位命令索引号,索引号的大小与索引号数字相同,比如cmd0的索引号为000000,索引号41为101001。
51单片机_片内外设
MOV A,#0FFH;0FFH送累加器A
MOV P0,A MOV A,P0 ;向P0口“写1” ;从P0口输入数据到A
结构图
片内外设
2)P0口的总线方式(系统使用外存储器时)
控制电路的“控制”=1,此时与门打开,MUX接 向“地址/数据”信号。在这种情况下,输出极的 两个FET都处于正常的工作状态 。 访问外部存储器的指令movx、movc ,就是使用 P0口来输出外部存储器的低八位地址和输入、输 出存储器的数据。 在进行单片机的硬件系统的设计中,如果使用了外 部存储器(或使用movx指令来访问外部接口电路) 时,P0口成为整个系统的地址/数据复用总线。换 句话说,P0口不能再作为通用的I/O端口的形式直 接与外部连接。
通用io端口多用途端口p3x引脚替代输出功能读引脚内部总线vcc替代输入功能片内外设并行端口在使用时应注意的几个问题并行端口在使用时应注意的几个问题拉电流拉电流还是还是灌电流灌电流与大电流负载的连与大电流负载的连接接我们以美国我们以美国atmelatmel公司生产的公司生产的at89c51at89c51为例使用灌电流的方式使用灌电流的方式与电流较大的负载直接与电流较大的负载直接连接时连接时端口可以吸收约端口可以吸收约20ma20ma的电流而保证端的电流而保证端口电平不高于口电平不高于045v045v见右上图
ES
中断请求 寄存器
中断矢量
返回
片内外设
2.1中断允许寄存器IE(0A8H)
EA X X ES ET1 EX1 ET0 EX0
EA:总允许位。EA=0:禁止一切中断;EA=1中断开放。 ES: 串行口中断允许位。ES=1:允许RI、TI引发中断; ES=0:禁止中断。 ET1、ET0:定时器T1、T0允许位。ET=1允许,=0禁止。 EX1、EX0:外中断 int1、int0允许位。EX =1允许,=0 禁止。
单片机 51系列单片机的功能
4.1.3.1 P2口某位的结构
P2的位结构比P1口多了一个转换控制部分。
4.1.3.2 P2口的功能特性
8位准双向口I/O口。在访问外部存储器, 可以作为扩展高8位地址总线输出高8位地址。 在对EPROM编程和程序验证期间,它接收 高8位地址。P2口可以驱动4个LSTTL负载。
4.1.5 并行口的应用
BEEP:MOV R7,#5
BEEPL:CLR P1.0
LCALL DEL5
SETB P1.0
DEL10
LCALL
R7,BEEPL
DJNZ
RET
此子程序中,DEL5和DEL10分 别为延时0.5s和1s的子程序。
4.1.5 并行口的应用
4.1.5 并行口的应用
分析下述程序的功能
P1.4-P1.7的状态值不变。
RET 错误指令:MOV P1.3,P1.7 ;位变量的传送必须经过
4.1.2.1 P3口某位的结构
与P1.n口相比,多了一个“与非门”和一个三态输 入缓冲器。
4.1.2.2 P3口的功能特性
8位准双向I/O口,在MCS-51系列单片机中, 这8个引脚以及P1.0和P1.1口还用于专门功 能,是复用双功能口。P3口能驱动4个 LSTTL负载。
第4章 51系列单片机的功能模块及其应用
本章学习目标: 掌握89C52的并行口结构及其应用。 了解定时器/计数器的一般结构并熟练掌
握其应用。 掌握串行口的工作原理及应用。
4.1 并行口及其应用
MCS-51系列单片机有四个8位准双向的并行 I/O口,共占32根引脚。每个端口都包含一个锁 存器、一个输出驱动器和两个三态输入缓冲器。 我们把这四个端口称为P0~P3,它们在特殊功 能寄存器SFR中占四个单元。这四个端口的功能 各不相同:在无片外扩展存储器的系统中,这四 个端口的每一位都可以作为双向I/O端口使用; 在具有片外扩展存储器的系统中,由P2送出高8 位地址,P0分时工作,先送出低8位地址,然后 可用作数据双向总线;P1只能作为通用并行I/O 口;P3是双功能口,除作为I/O口使用外,每位 还独立定义了第二I/O功能。
51单片机各引脚及端口详解
51单片机各引脚及端口详解51单片机引脚功能:MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照----单片机引脚图:l ~ P0口8位双向口线(在引脚的39~32号端子)。
l ~ P1口8位双向口线(在引脚的1~8号端子)。
l ~ P2口8位双向口线(在引脚的21~28号端子)。
l ~ P2口8位双向口线(在引脚的10~17号端子)。
这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,对于初学者来说很难理解的,我这里都是按我自已的表达方式来写的,相信你也能够理解的。
P0口有三个功能:1、外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。
P1口只做I/O口使用:其内部有上拉电阻。
P2口有两个功能:1、扩展外部存储器时,当作地址总线使用2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。
有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的,即:编程脉冲:30脚(ALE/PROG)编程电压(25V):31脚(EA/Vpp)接触过工业设备的兄弟可能会看到有些印刷线路板上会有一个电池,这个电池是干什么用的呢这就是单片机的备用电源,当外接电源下降到下限值时,备用电源就会经第二功能的方式由第9脚(即RST/VPD)引入,以保护内部RAM中的信息不会丢失。
在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢他起什么作用呢都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章51单片机的基本端口操作主要对单片机最简系统在实际应用中的使用方法,从简单到复杂地实现单片机最简系统的基本功能。
“点亮最简单的单片机系统”从单片机原理上介绍单片机的基本组成和最简单系统的典型电路,以及有关单片机C51编程方法和例程。
“更加明亮的小灯”从功能上介绍如何使LED发光稳定,从原理上介绍单片机I/O口的电气特性和使用方法。
“定时亮灭的小灯”介绍如何使LED灯定时亮、灭,从单片机原理上介绍定时器的使用和编程方法。
“小灯亮灭的人工控制”从功能上介绍如何通过按键控制LED灯的亮灭,从单片机原理上介绍单片机中断的使用和编程方法。
先复习下Keil 51的操作。
1.1点亮最简单的单片机系统常用MCS-51系列单片机引脚功能说明引脚定义引脚功能功能说明Vcc +5V电源电源电压Vss 地电路接地端P0.0-P0.7 通道0 8位漏极开路的双向I/O通道P1.0-P1.7 通道1 8位拟双向I/O通道P2.0-P2.7 通道2 8位拟双向I/O通道P3.0 RXD 串行输入口P3.1 TXD 串行输出口P3.2 INT0 外部中断0输入口P3.3 INT1 外部中断1输入口P3.4 T0 定时器/计数器0外部时间脉冲输入端P3.5 T1 定时器/计数器1外部时间脉冲输入端P3.6 WR 外部数据存储器写脉冲P3.7 RD 外部数据存储器读脉冲RST/VPD 复位输入信号该引脚上有2个机器周期的高电平可以实现复位操作,在掉电情况下将只给片内RAM供电ALE/PROG 地址锁存有效信号主要作用是提供一个适当的定时信号PSEN 程序选通有效信号低电平时,指令寄存器的内容读到数据总线上EA/Vpp 片选使能当保持TTL高电平时,8051执行内部ROM的指令;当使TTL为低电平时,从外部程序存储器取出所有指令XTAL1 晶振输入端 内部振荡器外接晶振的一个输入端XTAL2 晶振输入端 内部振荡器外接晶振的另一个输入端提问:什么是单片机系统、提问:单片机中晶振有什么作用?回答:单片机访问一次存储器的时间,称之为一个及其周期,是一个时间基准。
一个机器周期包括12个时钟周期。
如果一个单片机选择了12MHz 晶振,它的时钟周期是1/12us ,它的一个机器周期是12X (1/12us ),也就是1us 。
若是12MHz 的晶振,当单片机中定时/计数器的数值加1时,实际经过的时间就是1us 。
提示:晶振电路,复位电路单片机输入控制 输出显示晶振、复位电路外围功能器件基本电路图:发光二极管导通压降通常为1.7V-1.9V;为什么要接电阻?电路原理及器件选择?89C51:单片机,控制发光二极管亮灭OSC:晶振,在本例中选择12MHz的立式晶振C3,C2:晶振电路的起振电容,容值为22pFL1:发光二极管R1:限流电阻,阻值为1k欧地址分配和连接?P1.0:与发光二极管电路相连,控制LED发光二极管阴极的电平高低RESET:复位引脚X1,X2:单片机的晶振引脚程序设计:延时程序:我们先不使用单片机的定时器,而是直接采用软件的延时程序定时控制发光二极管的亮灭。
在12M晶振时,一个指令周期为1us,那么1M次就是1s。
程序代码:#include<reg51.h>sbit gate=P1^0; //位定义void main(void){unsigned int i,j;while(1){for(i=1000;i>0;i--) //双重循环,延时约1sfor(j=1000;j>0;j--);gate=!gate; //对P10取反,控制小灯}}补充:结合第五代开发板电路图可以看到…1.2更加明亮的小灯外加与非门做驱动电路,增大电流,当然也有相应的电子驱动芯片。
1.3定时亮灭的小灯下面我们进入单片机最重要的内容之一,定时和中断。
1.什么是单片机的定时器?MSC-51单片机一般有两个内部的16位定时器/计数器,分别成为T0和T1.分别有两个8位的RAM单元组成,即每个计数器都是16位的计数器,最大计数量为2的16次方等于65536.而定时和计数的关系是什么呢?找个同学告诉我吧。
定时器每完成一个时间的定时,计数器就加1.2.一定要计满65536个数吗?3.如何使用MCS-51单片机的定时器呢?定时器有两个特定的寄存器TMOD和TCON,就象定时器的操作界面。
首先介绍定时器/计数器的方式寄存器TMOD。
TMOD的控制字TMOD.7 TMOD.6 TMOD.5 TMOD.4 TMOD.3 TMOD.2 TMOD.1 TMOD.0 GATE C/T M1 M0 GATE C/T M1 M0可以看到,高四位和第四位分别代表两个定时器/计数器,所以我们可以以TMOD第四位来说明各位的定义与功能。
GATE:分为两种情况,GATE=0时,定时器的起停和INT1无关,在这种情况下,定时器的起停只取决与TR0.GATE=1时,在此种情况下定时器/计数器的开关不仅要由TR0来控制,而且还要受到INT1引脚的控制,只有TR1为1时,且INT1引脚也是高电平,定时器才能开始工作。
C/T:定时/计数器功能选择。
如果C/T为0就做定时器,如果C/T为1就做计数器。
当然只能二选一。
M1,M0:用M1,M0来控制定时器/计数器4种工作方式的选择。
工作方式0:M1=0,M0=0.13位定时.计数方式。
它由TL(1/0)的低五位和TH(0/1)的8位构成13位的计数器,此时TL(1/0) 的高3位未用。
工作方式1:M1=0,M0=1.是16位定时/计数方式,其他特性与工作方式0相同。
工作方式2:M1=1,M0=0.自动重装初值的8位定时/计数器。
初值放在T(0/1)的高8位。
在工作方式2,只有低8位参与计算,而高8位不参与计算,用作预置数存放,技术范围256。
每当计数溢出,就会打开T(0/1)的高、低8位之间的开关,计预置数进入低8位。
这是由硬件自动完成的。
通常这种方式用于波特率发生器(我们将在串行接口中讲解)工作方式3:M1=1,M0=1.这种工作方式下,定时/计数器被拆成2个独立的定时/计数器来用。
其中,TL0可以构成8位的定时器或计数器的工作方式,儿TH0则只能作为定时器来用。
只有在T1以工作方式2运行时,才让T0以工作方式3运行。
然后,我们介绍控制寄存器TCONTCON控制寄存器TCON.7 TCON.6TCON.5TCON.4TCON.3TCON.2TCON.1TCON.0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TR0: T0的运行控制位。
启动定时器T0没有专门的指令,而是通过TR0进行控制。
当GATE=0时,T0的运行只取决于TR0的0和1;当门控位GATE=1时,仅当TR0=1,并且外中断0引脚上的输入值为高电平时,T0才开始计数,这两个条件缺一不可TF0: T0的溢出和中断申请标志位。
当T0溢出时,硬件置位TF0,表示提出了中断申请。
该标志位可以通过软件查询,也可以用软件清零和置位,在单片机响应中断申请后,硬件自动清零。
TR1:TF1:接下来我们来看一个典型的定时器程序。
要求:定时10ms,P1.0反相。
//定义头文件和位定义#include<reg51.h>#include<stdio.h>sbit P00=P0^0;sbit P13=P1^3;void main(void){//初始化端口P0=0xFF;P13=0;//初始化定时器TMOD=0x01;TH0=0xD8;TL0=0xF0;//启动定时器,开中断TR0=1;ET0=1;EA=1;//等待循环while(1);}//定时器0中断服务子程序void timer0_ISR(void) interrupt 1 using 1 {//定时器初始重载TH0=0xD8;TL0=0xF0;//操作P00=!P00;}到这里,大家肯定就会有疑惑,什么叫做中断服务子程序,什么又叫做中断。
我们稍后解释。
这里需要提醒大家的是单片机定时/计数器各种工作方式下的最大计数量。
工作方式0:13位,2的13次方等于8192次;工作方式1:16位,2的16次方等于65536次;工作方式2和3:都是8位的,2的8次方等于256次那么就出现了一个问题,如果我想定时1s的话,该怎么做呢?大家思考一下,然后我请个同学来回答。
下面我们一起来看看如何实现1s的定时亮灭。
#include<reg51.h>#include<stdio.h>#define unit unsigned int#define uchar unsigned charsbit P00=P0^0;sbit P13=P1^3;uint overflow_count=0;void main(void){P0=0xFF;P13=0;TMOD=0x01;TH0=0xD8;TL0=0xF0;TR0=1;ET0=1;EA=1;while(1){If(overflow_count==100) { P00=!P00;Overflow_count=0; };}void timer0_ISR(void) interrupt 1 using 1{TH0=0xD8;TL0=0xF0;Overflow_count++;}完成了小灯定时亮灭,我们就基本学会了如何使用单片机定时器/计数器的使用方法。
下面,就让我们来看看前面留下的问题----“中断”。
定义:中断属于一种对事件的实时处理过程,中断源可能随时停止CPU当前的工作,转而去处理中断服务程序,待中断服务程序完成后,再返回原来工作的断点处,继续原来的工作。
再者,我们需要知道,单片机内部有多个中断,分别是定时/计数器0中断----T0中断定时/计数器1中断----T1中断外中断0----INT0中断外中断1----INT1中断串口中断----串口中断那么,当不同的中断同时发出终端申请,自然就会有一个中断优先级的问题。
优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已经产生而未结束,又有一个中断产生的情况。
最后,就是中断的响应过程。
具体来说可以分为以下几个步骤。
保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈;寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址;执行中断服务程序,用中断服务程序处理需要改变的变量或者事件;中断返回,执行完中断服务程序后,从中断断点处返回主程序,继续执行主程序。
上面分什么是中断,中断优先级,中断的响应三个部分简单介绍了中断,下面我们来看看单片机中断系统有何作用。
简单的说,单片机在自动控制中所起到的作用就两个,一个是定时/计数,另一个就是中断的使用。