




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第6章章 并行输入并行输入/输出口输出口I/O口)口)6.1 I/O口概述口概述6.2 MCS-51 I/O口结构和功能口结构和功能6.3 存储器和存储器和I/O口的扩展口的扩展6.4 I/O口的口的C51应用编程应用编程作业作业 6.1 I/O口概述口概述n接口的概念:接口的概念:CPUCPU与外设之间交换信息的连接部件有并行接口和串行与外设之间交换信息的连接部件有并行接口和串行接口两大类)。接口两大类)。n接口与端口接口与端口n接口电路可以包含多个端口接口电路可以包含多个端口( (控制、方式、状态等控制、方式、状态等) ),端口实际上是特,端口实际上是特殊的寄存器,不同端口编有不同的地址
2、。殊的寄存器,不同端口编有不同的地址。n口线与总线:口线实际上是口线与总线:口线实际上是I/OI/O端口寄存器各位电平的反映,而总线则端口寄存器各位电平的反映,而总线则是连接存储器和端口的公共通道。是连接存储器和端口的公共通道。nI/OI/O口编址技术:口编址技术:n1. I/O1. I/O端口与存储器统一编址;端口与存储器统一编址; 2. I/O 2. I/O端口独立编址端口独立编址. .nI/OI/O数据传送的控制方式:数据传送的控制方式:n1. 1. 无条件;无条件; 2. 2. 条件;条件; 3. 3. 中断;中断; 4. DMA. 4. DMA. n四个双向四个双向8 8位位I/OI
3、/O口,共口,共3232根根I/OI/O口线,每个口线,每个I/OI/O线均由锁线均由锁存器,输出电路和输入缓冲器组成。每个存器,输出电路和输入缓冲器组成。每个I/OI/O既可作输既可作输入又可作输出,每一条口线可独立用作输入又可用作输入又可作输出,每一条口线可独立用作输入又可用作输出,作输出时可锁存数据,作输入时可缓冲数据。出,作输出时可锁存数据,作输入时可缓冲数据。n特殊功能寄存器特殊功能寄存器P0P0P3P3:P0P0、P1P1、P2P2、P3P3等四个等四个8 8位位I/OI/O口分别由名为口分别由名为P0P0、P1P1、P2P2、P3P3四个四个SFRSFR代表,代表,SFRSFR地
4、址为地址为80H80H、90H90H、0A0H0A0H、0B0H0B0H。6.2 AT89S52 I/O口结构和功能口结构和功能 一、一、P0口口n1、位结构、位结构n锁存器,输入缓冲器,输出驱动器,多路开关锁存器,输入缓冲器,输出驱动器,多路开关n2、做输入、做输入/输出口输出口n输出输出n输出输出0n输出输出1n输入输入n读引脚读引脚n读锁存器:读读锁存器:读-修正修正-写操作写操作n3、做总线、做总线n输出输出n输入输入1、P0口位结构口位结构 n输出输出n输出输出0n输出输出1n输入输入n读引脚:只操作一次读引脚:只操作一次n读锁存器:读读锁存器:读-修正修正-写操作写操作2、P0口作
5、口作I/O口线口线P0口作口作I/O口线口线P0口作口作I/O口线:输出口线:输出分析输出分析输出0和和 输出输出1 两种情况两种情况P0口作口作I/O口线:输入口线:输入读引脚)读引脚)输入:读引脚输入:读引脚特征:只操作特征:只操作1次次留意:要保证口锁存器为留意:要保证口锁存器为1,否则无,否则无法读入高电平法读入高电平操作:可以先写操作:可以先写1再读,由于上拉电阻较大,再读,由于上拉电阻较大,写写1并不会使输入低电平变成高电平。并不会使输入低电平变成高电平。P0口作口作I/O口线:输入口线:输入读锁存器)读锁存器)输入:读锁存器输入:读锁存器特征:操作特征:操作2次读次读-修正修正-
6、写)写)操作:不可先写操作:不可先写1再读再读例:例:P0&=0 xf0;P0+;P00=!P00;3、P0口作总线口作总线P0口作总线:输出口作总线:输出P0口作总线:输入口作总线:输入由内部时序切换到读由内部时序切换到读引脚状态,并保证口引脚状态,并保证口锁存器内为锁存器内为1,以利,以利外部信号输入外部信号输入P0口作总线:输入口作总线:输入总线输入总线输入/输输出过程是自动出过程是自动的,按时序要的,按时序要求切换,输入求切换,输入时简化图为:时简化图为:结论:结论:1、P0口作总线时,不用加上拉电阻口作总线时,不用加上拉电阻2、由于不是上拉电阻驱动,因此高、由于不是上拉电阻驱
7、动,因此高低电平驱动能力相当,都很大低电平驱动能力相当,都很大 二、二、P1口口n1、位结构、位结构n锁存器,输入缓冲器,输出驱动器,等效上拉电阻锁存器,输入缓冲器,输出驱动器,等效上拉电阻n2、做输入、做输入/输出口输出口n输出输出n输出输出0n输出输出1n输入输入n读引脚读引脚n读锁存器:读读锁存器:读-修正修正-写操作写操作1、P1口位结构口位结构 阐明阐明nP1P3都是准双向口;都是准双向口;n双向口:可使引脚悬浮作高阻输入;双向口:可使引脚悬浮作高阻输入;n准双向口:其引脚具有内部拉高电阻,其特点:当外部准双向口:其引脚具有内部拉高电阻,其特点:当外部维持在低电平时,准双向口输入要能
8、提供源电流,而外维持在低电平时,准双向口输入要能提供源电流,而外部低电平消失时,又会自动地使自己拉向高电平。部低电平消失时,又会自动地使自己拉向高电平。 三、三、P2口口n1、位结构、位结构n锁存器,输入缓冲器,输出驱动器,多路开关锁存器,输入缓冲器,输出驱动器,多路开关n2、做输入、做输入/输出口输出口n输出输出n输出输出0n输出输出1n输入输入n读引脚读引脚n读锁存器:读读锁存器:读-修正修正-写操作写操作n3、做地址总线,输出高、做地址总线,输出高8位地址位地址 作作“通用数据通用数据I/O端口和端口和“高八位地址总线高八位地址总线”; P2口在系统使用外部存储器时,由于口在系统使用外部
9、存储器时,由于CPU不断取指令,所不断取指令,所以必须做高八位的地址总线;以必须做高八位的地址总线;仅使用外部数据存储器时,仅使用外部数据存储器时,P2口分两种情况:口分两种情况: 1. 使用使用MOVX A, R0指令分页访问外部指令分页访问外部RAM,此时用,此时用8位位的寄存器的寄存器R0或或R1作间址寄存器,这时作间址寄存器,这时P2口仍然可能全部或部口仍然可能全部或部分做通用分做通用I/O端口。(对应端口。(对应C51的的pdata存储类型)存储类型) 2.使用使用MOVX A, DPTR指令访问外部指令访问外部RAM, P2口必须作口必须作为外存储器的高八位地址总线,不可再作为外存
10、储器的高八位地址总线,不可再作I/O口。(对应口。(对应C51的的xdata存储类型)存储类型) P2口口 特点特点1、P2口位结构口位结构2、P2口做口做I/O口口3、P2口做总线口做总线 四、四、P3口口n1、位结构、位结构n锁存器,输入缓冲器,输出驱动器,多路开关锁存器,输入缓冲器,输出驱动器,多路开关n2、做输入、做输入/输出口输出口n输出输出n输出输出0n输出输出1n输入输入n读引脚读引脚n读锁存器:读读锁存器:读-修正修正-写操作写操作n3、做替代功能、做替代功能 P3.0RxD串行数据接收串行数据接收入入 P3.1TxD串行数据发送串行数据发送出出 P3.2INT0外部中断外部中
11、断0申请申请入入 P3.3INT1外部中断外部中断1申请申请入入 P3.4T0定时器定时器/计数器计数器0计数输入计数输入入入 P3.5T1定时器定时器/计数器计数器1计数输入计数输入入入 P3.6WR外部外部RAM写选通写选通出出 P3.7RD外部外部RAM读选通读选通出出P3口的第二功能口的第二功能P3口位结构口位结构 特点:通用特点:通用I/O端口、多用途端口端口、多用途端口 在多用途情况下,在多用途情况下,P3口分别作为串行口、外中断输入、口分别作为串行口、外中断输入、外部计数输入和系统扩展时使用的外部计数输入和系统扩展时使用的WR和和RD信号的端口。信号的端口。在这种情况下,锁存器在
12、这种情况下,锁存器Q端为端为“1电平以保证与门是打电平以保证与门是打开的。开的。 在通用在通用I/O模式下,模式下,“替代输出功能端为替代输出功能端为“1电平,电平,以保证与门打开。以保证与门打开。P3口位结构口位结构P3口位结构口位结构 I/O口小结口小结nP0:系统扩展;一般:系统扩展;一般I/O口输出时,需接上拉电口输出时,需接上拉电阻。)阻。)nP1:专供用户使用的:专供用户使用的I/O口口nP2:系统扩展;通用:系统扩展;通用I/O口口nP3:功能口,每位独立定义;通用:功能口,每位独立定义;通用I/O口。口。nP0作作AD0AD7驱动驱动8个个LSTTL负载负载nP1P3驱动驱动3
13、4个个LSTTL负载负载负载能力负载能力应用功能应用功能 I/O口小结:读入方式口小结:读入方式n每个每个I/O口均有两种读入方式用命令区分)口均有两种读入方式用命令区分)n读锁存器读锁存器n读引脚读引脚 nP1=0 xff; tmp=P1; /读引脚读引脚nP1&=0 xf0;/读锁存器读锁存器n留意:读引脚时,需先向锁存器写留意:读引脚时,需先向锁存器写“1”。系统复位时,。系统复位时,所有口锁存器均置所有口锁存器均置“1”。 6.3 存储器和存储器和I/O口的扩展口的扩展要点:要点:1、总线和、总线和I/O口线的应用特性口线的应用特性2、片外三总线结构、片外三总线结构3、外部程序
14、存储器和数据存储器、外部程序存储器和数据存储器4、外部、外部RAM地址空间分配和映射地址空间分配和映射 MCS-51单片机最小应用系统单片机最小应用系统 地址总线地址总线(AB):宽度:宽度16位,寻址范围位,寻址范围64KB(0000-FFFFH),低,低8位由位由P0经锁存器获得,高经锁存器获得,高8位由位由P2提供提供;数据总线数据总线(DB):宽度:宽度8位,由位,由P0提供,由于提供,由于D0D7总是总是伴随着伴随着/RD、/WR或或/PSEN出现,不用锁存器只在需要出现,不用锁存器只在需要的时候出现)的时候出现);控制总线控制总线(CB): /WR、/RD和和/PSEN等。等。片外
15、总线特性片外总线特性 外部程序存储器扩展外部程序存储器扩展 EPROM: 2764 27128 27256 27512等等锁存器:从锁存器:从AD0AD7中分离出中分离出A0A7 373:8D锁存器锁存器 374:8D触发器带三态)触发器带三态) 273:8D触发器带清除)触发器带清除)扩展芯片扩展芯片 373 273和和374 扩展扩展8K字节程序存储器的连线图字节程序存储器的连线图 访问外部访问外部ROM的时序的时序 外部数据存储器扩展外部数据存储器扩展 (64 K Address Space) (64 K Address Space) SRAM: 6264 62256 628128等等锁
16、存器:从锁存器:从AD0AD7中分离出中分离出A0A7 373:8D锁存器锁存器 374:8D触发器带三态)触发器带三态) 273:8D触发器带清除)触发器带清除)扩展芯片扩展芯片 扩展扩展2KB数据存储器的线路图数据存储器的线路图 访问外部访问外部RAM的时序的时序 扩展扩展16KB RAM和和16KB EPROM 简单简单I/O扩展扩展n简单简单I/O口的扩展主要由口的扩展主要由74系列的电路进行扩展;在许系列的电路进行扩展;在许多情况下,有些开关量或并行数据需直接输出或输入。多情况下,有些开关量或并行数据需直接输出或输入。经常用经常用8D锁存器和三态驱动门等进行扩展。(锁存器和三态驱动门
17、等进行扩展。(373、 374、377、273、244等)等) 地址译码方式地址译码方式片选地址线:用于选择芯片的地址线,是指全部地址总线中片选地址线:用于选择芯片的地址线,是指全部地址总线中去掉芯片内部地址线剩下的地址线。如去掉芯片内部地址线剩下的地址线。如6264,8KB, 芯片内芯片内部要部要13个地址线,剩下的个地址线,剩下的3个地址线就是片选地址线。个地址线就是片选地址线。 全译码方式:所有片选地址线全部参加译码;全译码方式:所有片选地址线全部参加译码; 部分译码方式:片选地址线部分参加译码,剩下部分悬空;部分译码方式:片选地址线部分参加译码,剩下部分悬空; 线选方式:片选地址线直接
18、接到芯片的片选端。线选方式:片选地址线直接接到芯片的片选端。 简单简单I/O接口扩展电路线译码)接口扩展电路线译码) 可编程可编程I/O芯片的扩展芯片的扩展 6.4 I/O口的口的C51应用编程应用编程要点:要点:用用#include加入对特殊功能寄存器加入对特殊功能寄存器P0,P1,P2,P3的定义的定义.根据需要用根据需要用sbit对口线进行定义对口线进行定义.定义后,按一般变量使用方法来使用。定义后,按一般变量使用方法来使用。 逐行扫描和线反转法逐行扫描和线反转法查询和中断方式查询和中断方式例例1: 用用P1口完成口完成4x4键盘的识别键盘的识别 逐行扫描法逐行扫描法VCC10Kx8P1
19、.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输出位输出4位输入位输入11111111初始状态初始状态 逐行扫描法逐行扫描法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输出位输出4位输入位输入11111110第第1行送出行送出0, 其余其余3行送出行送出1, 读入读入4列列, 若读入的若读入的4位均位均为为1, 则表示该行没有键按则表示该行没有键按下下 逐行扫描法逐行扫描法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输出位输出4位输入位输入01111
20、111第第2行送出行送出0, 其余其余3行送出行送出1, 读入读入4列列, 若读入的若读入的4位位均为均为1, 则表示该行没有键则表示该行没有键按下按下 逐行扫描法逐行扫描法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输出位输出4位输入位输入10111111第第3行送出行送出0,其余其余3行送出行送出1, 读入读入4列列, 若读入的若读入的4位位均为均为1, 则表示该行没有键则表示该行没有键按下按下 逐行扫描法逐行扫描法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输出位输出4位输入位
21、输入11011111第第4行送出行送出0, 其余其余3行送出行送出1, 读入读入4列列, 若读入的若读入的4位位均为均为1, 则表示该行没有键则表示该行没有键按下按下 逐行扫描法逐行扫描法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输出位输出4位输入位输入11111110循环回到第循环回到第1行送出行送出0, 其其余余3行送出行送出1, 读入读入4列列, 若若读入的读入的4位均为位均为1, 则表示则表示该行没有键按下该行没有键按下,由于循环由于循环很快很快,远远超过按键的速度远远超过按键的速度,可以识别出所有单个按键可以识别出所有单个按键
22、 逐行扫描法逐行扫描法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输出位输出4位输入位输入11101110第第1行送出行送出0, 其余其余3行送出行送出1, 读入读入4列列, 若读入的若读入的4位位为为0 xe, 则表示该行第则表示该行第1个个键按下键按下,行列值合成对应该行列值合成对应该按键的唯一扫描码按键的唯一扫描码: 0 xee, 这一行的这一行的4个扫描码分别是个扫描码分别是: 0 xee 0 xde 0 xbe 0 x7e 逐行扫描法逐行扫描法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC
23、10Kx84位输出位输出4位输入位输入01111111第第2行送出行送出0, 其余其余3行送行送出出1, 读入读入4列列, 若读入的若读入的4位不均为位不均为1,则表示有键则表示有键按下按下, 这一行的这一行的4个按键个按键对应的扫描码分别是对应的扫描码分别是: 0 xed 0 xdd 0 xbd 0 x7d 逐行扫描法逐行扫描法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输出位输出4位输入位输入10111111第第3行送出行送出0,其余其余3行送行送出出1, 读入读入4列列, 若读入的若读入的4位不均为位不均为1, 则表示有键则表示有键
24、按下按下, 这一行的这一行的4个按键个按键对应的扫描码分别是对应的扫描码分别是: 0 xeb 0 xdb 0 xbb 0 x7b 逐行扫描法逐行扫描法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输出位输出4位输入位输入11011111第第4行送出行送出0,其余其余3行送行送出出1, 读入读入4列列, 若读入的若读入的4位不均为位不均为1, 则表示有键则表示有键按下按下, 这一行的这一行的4个按键个按键对应的扫描码分别是对应的扫描码分别是: 0 xe7 0 xd7 0 xb7 0 x77 编程实现逐行扫描法编程实现逐行扫描法#include
25、 /要用到要用到sfr: P1#define uchar unsigned charvoid delay(void);/声明函数声明函数uchar tmp;main()while(1) /无限循环作为无限循环作为main的结束的结束 P1=0 xfe; tmp=P1&0 xf0; if(tmp!=0 xf0)line1_key();P1=0 xfd; tmp=P1&0 xf0; if(tmp!=0 xf0)line2_key();P1=0 xfb; tmp=P1&0 xf0; if(tmp!=0 xf0)line3_key();P1=0 xf7; tmp=P1&
26、0 xf0; if(tmp!=0 xf0)line4_key(); 编程实现逐行扫描法编程实现逐行扫描法void delay(void) int i,j ; for(i=0; i10; i+)for(j=0; j1000; j+);void line1_key(void) delay(); tmp=P1&0 xf0; if(tmp=0 xf0) return;/延时约延时约10ms去抖动去抖动 switch(tmp) case 0 xe0: key1(); break;/key1-16函数省略函数省略case 0 xd0: key2(); break;case 0 xb0: key3(
27、); break; case 0 x70: key4(); break;default: break; while(1)tmp=P1&0 xf0; if(tmp=0 xf0) break; /等键释放等键释放 线反转法线反转法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输出位输出4位输入位输入00011110平常状态平常状态, 不用扫描键盘不用扫描键盘, 若有键按下会产生中断若有键按下会产生中断 /INT0 线反转法线反转法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输出位输
28、出4位输入位输入00011010若有一键按下若有一键按下,进入中断服务程序进入中断服务程序, 读入高读入高4位为位为0 xb/INT0 线反转法线反转法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输入位输入4位输出位输出11111011输入输出倒置输入输出倒置, 并将读入的并将读入的0 xb原位送出原位送出, 即输出即输出0 xbf, 将高将高4位送出的同时位送出的同时,低低4位被置成输入位被置成输入/INT0 线反转法线反转法VCC10Kx8P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0VCC10Kx84位输入位输入4位输出位输出10111011读入低读入低4位位, 与高与高4位送出的数合成扫描码的位送出的数合成扫描码的0 xbb, 由此得知是那个按键按下了由此得知是那个按键按下了/INT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创新团队课题申报书
- 高质量发展课题申报书
- 民间音乐课题申报书
- 调研课题申报立项书格式
- 卤菜技术传授合同范本
- 课题申报书保障条件
- 员工缴纳公积金合同范本
- 个人承包私活合同范本
- 包销合同范本版
- 售房补充合同范本
- 股骨骨折的健康宣教
- 大学英语精读1-6册课文
- TFCC损伤的诊断及治疗
- 《西藏度亡经》及中阴解脱窍决(收藏)
- RFJ05-2009-DQ人民防空工程电气大样图集
- 危化品安全管理制度范文简短危化品安全管理制度和岗位安全操作规程(3篇)
- 平冈中学教师任职条件
- 小老鼠找朋友 演示文稿
- GB/T 14163-2009工时消耗分类、代号和标准工时构成
- 教科版科学五年级下册《生物与环境》单元教材解读及教学建议
- 英语四六级翻译技巧课件
评论
0/150
提交评论