深圳市华胄科技有限公司 >> MCU专题 >> 单片机编程


单片机教程:单片机编程入门六



提交者 电子007  在  2007-9-12 14:52:54 

上一篇 下一篇
单片机教程26课
单片机编程入门六:单片机的内外部结构分析(六)


第三个实验


上两次我们做过两个实验,都是让P1.0这个引脚使灯亮,我们可以设想:既然P1.0可以让灯亮,那么其它的引脚可不可以呢?看一下图1,它是8031单片机引脚的说明,在P1.0旁边有P1.1,P1.2….P1.7,它们是否都可以让灯亮呢?除了以P1开头的外,还有以P0,P2,P3开头的,数一下,一共是32个引脚,前面我们以学过7个引脚,加上这32个这39个了。它们都以P字开头,只是后面的数字不一样,它们是否有什么联系呢?它们能不能都让灯亮呢?在我们的实验板上,除了P10之外,还有P11��P17都与LED相连,下面让我们来做一个实验,程序如下:


MAIN: MOV P1,#0FFH


LCALL DELAY


MOV P1,#00H


LCALL DELAY


LJMP MAIN


DELAY:MOV R7,#250


D1: MOV R6,#250


D2: DJNZ R6,D2


DJNZ R7,D1


RET


END


将这段程序转为机器码,用编程器写入芯片中,结果如何?通电以后我们可以看到8只LED全部在闪动。因此,P10��P17是全部可以点亮灯的。事实上,凡以P开头的这32个引脚都是可以点亮灯的,也就是说:这32个引脚都可以作为输出使用,如果不用来点亮LED,可以用来控制继电器,可以用来控制其它的执行机构。


程序分析:这段程序和前面做过的程序比较,只有两处不一样:第一句:原来是SETB P1.0,现在改为MOV P1,#0FFH,第三句:原来是CLR P1.0,现在改为MOV P1.0,#00H。从中可以看出,P1是P1.0��P1.7的全体的代表,一个P1就表示了所有的这八个管脚了。当然用的指令也不一样了,是用MOV指令。为什么用这条指令?看图2,我们把P1作为一个整体,就把它当作是一个存储器的单元,对一个单元送进一个数可以用MOV指令。


二、第四个实验


除了可以作为输出外,这32个引脚还可以做什么呢?下面再来做一个实验,程序如下:


MAIN: MOV P3,#0FFH


LOOP: MOV A,P3


MOV P1,A


LJMP LOOP


先看一下实验的结果:所有灯全部不亮,然后我按下一个按钮,第()个灯亮了,再按下另一个按钮,第()个灯亮了,松开按钮灯就灭了。从这个实验现象结合电路来分析一下程序。


从硬件电路的连线可以看出,有四个按钮被接入到P3口的P32,P33,P34,P35。第一条指令的用途我们可以猜到:使P3口全部为高电平。第二条指令是MOV A,P3,其中 MOV已经见,是送数的意思,这条指令的意思就是将P3口的数送到A中去,我们可以把A当成是一个中间单元(看图3),第三句话是将A中的数又送到P1口去,第四句话是循环,就是不断地重复这个过程,这我们已见过。当我们按下第一个按钮时,第(3)只灯亮了,所以P12口应当输出是低电平,为什么P12口会输出低电平呢?我们看一下有什么被送到了P1口,只有从P3口进来的数送到A,又被送到了P1口,所以,肯定是P3口进来的数使得P12位输出电平的。P3口的P32位的按钮被按下,使得P32位的电平为低,通过程序,又使P12口输出低电平,所以P3口起来了一个输入的作用。验证:按第二、三、四个按钮,同时按下2个、3个、4个按钮都可以得到同样的结论,所以P3口确实起到了输入作用,这样,我们可以看到,以P字开头的管脚,不仅可以用作输出,还可以用作输入,其它的管脚是否可以呢?是的,都可以。这32个引脚就称之为并行口,下面我们就对并行口的结构作一个分析,看一下它是怎样实现输入和输出的。


并行口结构分析:


1、输出结构


先看P1口的一位的结构示意图(只画出了输出部份):从图中可以看出,开关的打开和合上代表了引脚输出的高和低,如果开关合上了,则引脚输出就是低,如果开关打开了,则输出高电平,这个开关是由一根线来控制的,这根数据总线是出自于CPU,让我们回想一下,数据总线是一根大家公用的线,很多的器件和它连在一起,在不同的时候,不同的器件当然需要不同的信号,如某一时刻我们让这个引脚输出高电平,并要求保持若干时间,在这段时间里,计算机当然在忙个不停,在与其它器件进行联络,这根控制线上的电平未必能保持原来的值不变,输出就会发生变化了。怎么解决这个问题呢?我们在存储器一节中学过,存储器中是可以存放电荷的,我们不妨也加一个小的存储器的单元,并在它的前面加一个开关,要让这一位输出时,就把开关打开,信号就进入存储器的单元,然后马上关闭开关,这样这一位的状态就被保存下来,直到下一次命令让它把开关再打开为止。这样就能使这一位的状态与别的器件无关了,这么一个小单元,我们给它一个很形象的名字,称之为“锁存器”。


2、输入结构


这是并行口的一位的输出结构示意图,再看,除了输出之外,还有两根线,一根从外部引脚接入,另一根从锁存器的输出接出,分别标明读引脚和读锁存器。这两根线是用于从外部接收信号的,为什么要两根呢?原来,在51单片机中输入有两种方式,分别称为'读引脚'和'读锁存器',第一种方式是将引脚作为输入,那是真正地从外部引脚读进输入的值,第二种方式是该引脚处于输出状态时,有时需要改变这一位的状态,则并不需要真正地读引脚状态,而只是读入锁存器的状态,然后作某种变换后再输出。


请注意输入结构图,如果将这一根引线作为输入口使用,我们并不能保证在任何时刻都能得到正确的结果(为什么?)参考图2输入示意图。接在外部的开关如果打开,则应当是输入1,而如果闭合开关,则输入0,但是,如果单片机内部的开关是闭合的,那么不管外部的开关是开还是闭,单片机接受到的数据都是0。可见,要让这一端口作为输入使用,要先做一个'准备工作',就是先让内部的开关断开,也就是让端口输出'1'才行。正因为要先做这么一个准备工作,所以我们称之为“准双向I/O口”。


以上是P1口的一位的结构,P1口其它各位的结构与之相同,而其它三个口:P0、P2、P3则除入作为输入输出口之外还有其它用途,所以结构要稍复杂一些,但其用于输入、输出的结构是相同的。看图()。对我们来说,这些附加的功能不必由我们来控制,所以我们就不去关心它了。


单片机机系列--单片机教程---单片机教程:单片机编程--单片机教程:单片机编程入门五


作者:技术资料



单片机教程,五系列(55讲)电子书全集下载

论坛精选:
■ 单片机c语言,10小时学会C 语言 (一)
第一章 C 语言简介与Turbo C 的使用
■ 单片机c语言,10小时学会C 语言 (二)
第二章 C 程序的结构
■ 单片机c语言,10小时学会C 语言 (三)
第三章 常数与变数
■ 单片机c语言,10小时学会C 语言 (四)
第四章 基本输出入函式
■ 单片机c语言,10小时学会C 语言 (五)
第五章 流程图与抉择指令
■ 单片机c语言,10小时学会C 语言 (六)
第六章 循环与自动重复
■ 单片机c语言,10小时学会C 语言 (七)
第七章 数组与指针
■ 单片机c语言,10小时学会C 语言 (八)
第八章 函数与呼叫
■ 单片机c语言,10小时学会C 语言 (九)
第九章 档案存取

1 楼  提交者:过路人 在 2007-9-15 9:27:55
这几个实验很实用,感激。。
2 楼  提交者:独孤九剑 在 2007-9-27 20:30:07
马克。
3 楼  提交者:306663570 在 2007-9-28 7:30:00
ok
4 楼  提交者:renjinguo 在 2007-9-28 12:44:13
gf
5 楼  提交者:实在不服 在 2007-9-28 16:14:45
6 楼  提交者:plcpic 在 2007-9-28 17:36:39
2
7 楼  提交者:id4huazhoucn 在 2007-9-28 22:45:00
懂了不少,继续
8 楼  提交者:Guest 在 2007-9-29 11:33:18
值得学习!感激
9 楼  提交者:黄生 在 2007-9-29 12:34:49
太有才了
10 楼  提交者: 在 2007-9-29 12:42:59
太有才了
11 楼  提交者:lyralos 在 2007-9-29 22:03:20
想问你一个问题
就是如何用PIC单片机实现发出警报
12 楼  提交者:luck1 在 2007-9-30 14:48:56
还好
13 楼  提交者:tisa 在 2007-9-30 15:14:35
hao
14 楼  提交者:ltianbin 在 2007-10-1 8:54:29
好啊
15 楼  提交者:笨人 在 2007-10-1 10:17:42
16 楼  提交者:zuowangcai 在 2007-10-1 19:58:14
17 楼  提交者:hnhblyc 在 2007-10-2 16:27:22
谢谢
18 楼  提交者:xiaobin418 在 2007-10-3 9:14:39
帖子不错
19 楼  提交者:sure365 在 2007-10-3 9:58:06
看看
20 楼  提交者:lizhugood 在 2007-10-3 19:42:18
谢谢~~
21 楼  提交者:拈花一笑 在 2007-10-4 1:59:54
啊啊
22 楼  提交者:浪子天涯 在 2007-10-4 16:10:52
hao
23 楼  提交者:郭志成 在 2007-10-4 16:19:16
谢谢!
24 楼  提交者:Guest 在 2007-10-4 16:44:37
无内容
25 楼  提交者:kingtoyo 在 2007-10-5 10:47:53
zz
26 楼  提交者:黄伟 在 2007-10-6 12:56:03
受教了,哈哈
27 楼  提交者:Guest 在 2007-10-6 13:05:03
看看
28 楼  提交者:XZX123 在 2007-10-6 16:02:42
http://user.qzone.qq.com/
29 楼  提交者:skyvirtual 在 2007-10-6 17:32:42
hao ren 
30 楼  提交者:弘毅 在 2007-10-6 22:57:03
xiexie
上一篇 下一篇
当前第〖1〗页 共有35页 转到第 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35