单片机并行i o口应用

上传人:第*** 文档编号:53595226 上传时间:2018-09-03 格式:PPT 页数:43 大小:390KB
返回 下载 相关 举报
单片机并行i o口应用_第1页
第1页 / 共43页
单片机并行i o口应用_第2页
第2页 / 共43页
单片机并行i o口应用_第3页
第3页 / 共43页
单片机并行i o口应用_第4页
第4页 / 共43页
单片机并行i o口应用_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《单片机并行i o口应用》由会员分享,可在线阅读,更多相关《单片机并行i o口应用(43页珍藏版)》请在金锄头文库上搜索。

1、本章内容 并行I/O口电路结构 认识C语言 C语言的基本语句 C语言数据与运算 数组的概念,第3章 单片机并行I/O口应用,并行I/O口电路结构,MCS-51系列单片机共有四个8位并行I/O口,分别用P0、P1、P2、P3表示。每个I/O口既可以按位操作使用单个引脚,也可以按字节操作使用8个引脚。,P0口的结构,P0口逻辑电路,当P0口作为输出口使用时,内部总线将数据送入锁存器,内部的写脉冲加在锁存器时钟端CP上,锁存数据到Q、端。经过MUX,T2反相后正好是内部总线的数据,送到P0口引脚输出。当P0口作为输入口使用时,应区分读引脚和读端口两种情况,所谓读引脚,就是读芯片引脚的状态,这时使用下

2、方的数据缓冲器,由“读引脚”信号把缓冲器打开,把端口引脚上的数据从缓冲器通过内部总线读进来。读端口是指通过上面的缓冲器读锁存器Q端的状态。读端口是为了适应对I/O口进行“读-修改-写”操作语句的需要。例如下面的C51语句:P0=P0 /将P0口的低4位引脚清0输出,P0口的结构,除了I/O功能以外,在进行单片机系统扩展时,P0口是作为单片机系统的地址/数据线使用的,一般称为地址/数据分时复用引脚。当输出地址或数据时,由内部发出控制信号,使“控制”端为高电平,打开与门,并使多路开关MUX处于内部地址/数据线与驱动场效应管栅极反相接通状态。此时,输出驱动电路由于两个FET处于反相,形成推拉式电路结

3、构,使负载能力大为提高。输入数据时,数据信号直接从引脚通过输入缓冲器进入内部总线。,P0口的结构,P1口的结构,P1口逻辑电路,P1口是准双向口,只能作为通用I/O口使用。 P1口作为输出口使用时,无需再外接上拉电阻。 P1口作为输入口使用时,应区分读引脚和读端口。读引脚时,必须先向电路中的锁存器写入“1”,使输出级的FET截止。,P1口的结构,P2口的结构,P2口逻辑电路,单片机系统扩展时,P2口还可以用来作为高8位地址线使用,与P0口的低8位地址线共同组成16位地址总线,此时多路开关应接通“地址”端。 P2口是准双向口,在实际应用中,可以用于为系统提供高8位地址,也能作为通用I/O口使用。

4、 P2口作为通用I/O口的输出口使用时,与P1口一样无需再外接上拉电阻。 P2口作为通用I/O口的输入口使用时,应区分读引脚和读端口。读引脚时,必须先向锁存器写入“1”。,P2口的结构,P3口的结构,P3口逻辑电路,当P3口作为I/O端口使用时,“第二输出功能”端应保持高电平。 P3口是准双向口,可以作为通用I/O口使用,还可以作为第二功能使用。作为第二功能使用的端口,不能同时当作通用I/O口使用,但其他未被使用的端口仍可作为通用I/O口使用。 P3口作为通用I/O的输出口使用时,不用外接上拉电阻。,P3口的结构,认识C语言,C语言程序以函数形式组织程序结构,C程序中的函数与其他语言中所描述的

5、“子程序”或“过程”的概念是一样的。,C程序基本结构,认识C语言,一个C语言源程序是由一个或若干个函数组成,每一个函数完成相对独立的功能。每个C程序都必须有(且仅有)一个主函数main(),程序的执行总是从主函数开始,调用其他函数后返回主函数main(),不管函数的排列顺序如何,最后在主函数中结束整个程序。 C语言程序中可以有预处理命令,预处理命令通常放在源程序的最前面。 C语言程序使用“;”作为语句的结束符,一条语句可以多行书写,也可以一行书写多条语句。,认识C语言,结构化语言 丰富的数据类型 便于维护管理 与汇编语言相比,C语言的优点如下: 不要求编程者详细了解单片机的指令系统,但需了解单

6、片机的存储器结构; 寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理; 结构清晰,程序可读性强; 编译器提供了很多标准库函数,具有较强的数据处理能力。,C语言的基本语句,语言程序的执行部分由语句组成。C语言提供了丰富的程序控制语句,按照结构化程序设计的基本结构:顺序结构、选择结构和循环结构,组成各种复杂程序。这些语句主要包括表达式语句、复合语句、选择语句和循环语句等。,表达式语句和复合语句,表达式语句是最基本的C语言语句。表达式语句由表达式加上分号“;”组成,其一般形式如下:表达式; 执行表达式语句就是计算表达式的值。 在 C 语言中有一个特殊的表达式语句,称为空语句。空语句中只有一

7、个分号“;”,程序执行空语句时需要占用一条指令的执行时间,但是什么也不做。在C51程序中常常把空语句作为循环体,用于消耗CPU时间等待事件发生的场合。,表达式语句和复合语句,把多个语句用大括号括起来,组合在一起形成具有一定功能的模块,这种由若干条语句组合而成的语句块称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。 复合语句在程序运行时,中的各行单语句是依次顺序执行的。在C语言的函数中,函数体就是一个复合语句。,选择语句,基本if语句的格式如下: if (表达式)语句组; if语句执行过程:当“表达式”的结果为“真”时,执行其后的“语句组”,否则跳过该语句组,继续执行下面的语句

8、。,选择语句,if语句中的“表达式”通常为逻辑表达式或关系表达式,也可以是任何其他的表达式或类型数据,只要表达式的值非0即为“真”。以下语句都是合法的:if(3)if(x=8)if(P3_0) 在if语句中,“表达式”必须用括号括起来。 在if语句中,花括号“ ”里面的语句组如果只有一条语句,可以省略花括号。如“if (P3_0=0) P1_0=0;”语句,但是为了提高程序的可读性和防止程序书写错误,建议读者在任何情况下,都加上花括号。,选择语句,if-else语句的一般格式如下: if (表达式)语句组1;else语句组2; if-else语句执行过程:当“表达式”的结果为“真”时,执行其后

9、的“语句组1”,否则执行“语句组2”,选择语句,if-else-if语句是由 if else 语句组成的嵌套,用来实现多个条件分支的选择,其一般格式如下: if (表达式1)语句组1;else if (表达式2)语句组2;else if (表达式n)语句组n;else语句组n+1;,选择语句,选择语句,多分支选择的switch语句, 其一般形式如下:switch(表达式) case常量表达式1: 语句组1;break;case常量表达式2: 语句组2;break;case常量表达式n: 语句组n;break;default : 语句组n+1; 该语句的执行过程是:首先计算表达式的值,并逐个与c

10、ase后的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,则执行对应该常量表达式后的语句组,再执行break语句,跳出switch语句的执行,继续执行下一条语句。如果表达式的值与所有case后的常量表达式均不相同,则执行default后的语句组。,练习一:,1、按一下S1键LED全亮,按一下S2键LED全灭。(单分支选择语句) 2、按住S1键LED全亮,松开S1键LED全灭。 (双分支选择语句) 3、按下S1键点亮LED,按S2键熄灭LED,且S2优先,只要S2被按住LED就不能被点亮。 (if else if语句) 4、按S1键,D1亮;按S2键,D2亮;按S3键,D3亮;按S

11、4键,D4亮,每次只能亮一个LED灯。,while语句用来实现“当型”循环, 执行过程:首先判断表达式, 当表达式的值为真(非0)时, 反复执行循环体。为假(0)时 执行循环体外面的语句。,循环体,格式:while(循环继续的条件表达式) 语句组; ,花括号不能丢掉!,请问:下述程序实现了什么功能? main( ) int i,sum=0;while(i=10) sum=sum+i; i+; ,循环语句,do-while语句用来实现“直到型”循环 执行过程:先无条件执行一次循环体, 然后判断条件表达式,当表达式的值 为真(非0)时,返回执行循环体直 到条件表达式为假(0)为止。,绝对不能少分号

12、!,循环体,格式:do 循环体语句组; while(循环继续条件);,花括号不能丢掉!,请问:下述程序实现了什么功能? main( ) int i,sum=0;do sum=sum+i; i+; while(i=100); ,循环语句,总循环次数已确定的情况下,可采用for语句形式为: for语句的一般形式:for(循环变量赋初值;循环继续条件;循环变量增值 ) 循环体语句组;,分隔符为分号,请问:下述程序实现了什么功能? main( ) int i,y=0;for(i=1;i=,= !=,低,高,关系表达式,用关系运算符将两个表达式(可以是算术表达式、关系表达式、赋值表达式或逻辑表达式)连接

13、起来的式子,称为关系表达式。 关系表达式的值为逻辑值“真”或“假”,以1代表“真”,以0代表“假”。例如:(1)关系表达式“8=4”的值为 ,表达式的值为 。(2) 关系表达式“50”的值为 ,表达式的值为 。,逻辑运算符及其优先级,逻辑运算符 优先级! (逻辑非)& (逻辑与) | (逻辑或) 注意:逻辑运算符与位操作运算符的区别。,逻辑表达式,用逻辑运算符将一个或多个表达式连接起来,进行逻辑运算的式子。 逻辑量的真判断非0 逻辑量的假判断0,若a=1,b=2,c=3,x=4,y=3,写出下各个表达式的值: (1)a+bc&b=c (2)!ab&b!=c|x+yc),位运算,与操作 按位与操作符 :主要用途:取(或保留)1个数的某(些)位,其余各位置0。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号