;如果要读信号,先选中该片,然后发出读信号,开关也切换到相应的位置上,数据就被送出去了;另外读和写信号还同时受到译码器的控制,由于选端的不同,所以虽有读或写信号,但没有片选信号,所以另一个存储器就不会“误会”而开门,造成冲突,那么会不会同时选中两个存储器呢?只要是设计好的系统就不会,因为它是由计算机来控制的,如果真的出现同时选中两个存储器的话,那就是电路出故障了。
如此看来,存储器要想写入或者读出数据还真是不简单,不过好在这些都是由计算机自动完成的,不需要我们去操心。
从上面的介绍中我们已经看到,用来传递数据的 8 根线(51 单片机是 8 根)并不是专用的,而是很多器件大家共用的,所以我们把它们称之为数据总线(总线英文名为 BUS),即公交道,谁都可以走;而 16 根地址线(51 单片机共有 16 根地址线,这些以后会讲解,这里不必死记硬背)也是连在一起的,我们把它们称之为地址总线,5.半导体存储器的分类第一课中我们提到过,89C51 是一种带 Flash ROM 的单片机,什么是 Flash ROM?它到底是一种什么东西呢?ROM 我们已经知道,是只读存储器,所谓只读,从字面上理解那就是只可以从里面读出数据,而不能写进去,它类似于我们的书本,发到我们手里之后,我们只能读里面的内容,不可以随意更改书本上的内容。
ROM 就是单片机中用来存放程序的地方,前面我们下载到单片机的指令就放在这个地方。
讲到这里大家也许会感到困惑,既然 ROM 是只读存储器,那么指令又是如何进入其中的呢?其实所谓的只读只是针对正常工作情况下而言,也就是在使用这块存储器的时候,而不是指制造这块芯片的时候,只要让存储器满足一定的条件就能把数据预先写进去,这个道理也很好理解,书本拿到我们手里是不能改了,但当它还是原材料--白纸的时候,我们完全可以由印刷厂把内容印上去嘛。
前面的编程就是这么回事!Flash ROM 是一种快速存储式只读存储器,这种程序存储器的特点就是既可以电擦写,而且掉电后程序还能保存,编程寿命可以达到几千至几万次,所以我们的实验系统是可以反复烧写的,您尽管使用。
目前新型的单片机都采用这种程序存储器;当然,除了这种程序存储器外,还有两种早期的程序存储器产品,简单介绍一下:PROM EPROM 和 EEPROM,PROM 称之为可编程只读存储器,就象我们的练习本,买来的时候是空白的,可以写东西上去,可一旦写上去,就擦不掉了,所以它只能写一次,要是写错了,就报废了,习惯上我们把带这种程序存储器的单片机称为 OTP 型单片机,如果您的产品批量生产,又要求价格比较低的话,带这种程序存储器的单片机是非常合适的;EPROM,称之为紫外线擦除的可编程只读存储器,它里面的内容写上去之后,如果觉得不满意,可以用一种特殊的方法去掉后重写,就是用紫外线照射,紫外线就象“消字灵”,可以把字去掉,然后再重写,当然消的次数多了,也就不灵光了,所以这种芯片可以擦除的次数也是有限的——几百次吧,电脑上的 BIOS 芯片采用的就是这种结构的存储器;EEPROM,前一种存储器的擦写要用紫外线,而这种存储器可以直接用电擦写,比较方便数据的改写,它有点类似于 FLASH 存储器,但比 FLASH 存储器速度要慢,现在新型的外部扩展存储器都是都是这种结构。
了解了 ROM,让我们再来简单讲讲另一种存储器,叫随机存取存储器,也叫内存,英文缩写为 RAM(Random
Access Memory),它是一种既可以随时改写,也可以随时读出里面数据的存储器,类似于我们上课用的黑板,可以随时写东西上去,也可以用黑板擦随时擦掉重写,它也是单片机中重要的组成部分,单片机中有很多的功能寄存器都与它有关。
二.本课总结本课主要讲述了单片机的两种半导体存储器—只读存储器 ROM 和随机存储器 RAM 的工作原理,它们是单片机的重要组成部分,了解它的内部结构对我们学习单片机是很有帮助的。
不过如果您一时对本课的内容还无法搞得很明白,也没有关系,随着学习的深入,我们还会慢慢地讲解相应的基础知识,可千万不要放弃哟?我在没有学会单片机之前也是如此囫囵吞枣的。
一. LED 灯闪烁的实验程序 我们要让 LED1 不断的闪烁,就象大海中用的航标灯。
怎样才能让 LED1 不断的闪烁呢?实际上就 是让它亮几秒,再灭几秒,也就是让 P1.0 交替地输出高电平或低电平,按照前面所学的知识,我 们写出下面的程序:CLR P1.0; SETB P1.0;编译后下载到单片机? 这里有两个问题:首先计算机执行指令的速度很快,执行完第 1 条指令后 LED1 是灭了,但在极 短的时间内又去执行第 2 条指令,LED1 又亮了,我们根本无法看到灯曾经灭过;第二个问题是当 执行完第 2 条指令后,不会再去执行第 1 条指令了,因为单片机执行指令的过程是一条一条地顺 序执行的。
如何解决这两个问题呢?我们可以作如下的设想:第一,执行完第 1 条指令后让单片机延时一段 时间(几秒或零点几秒),然后再去执行第 2 条指令,这样就可以看到 LED1 曾经灭过了;第二, 让单片机执行完全部指令后再返回去执行第 1 条指令,如此不断的循环就可以达到我们的要求了。
实验程序如下: 主程序 MAIN:SETB P1.0 (1) LCALL DELAY (2) CLR P1.0 (3) LCALL DELAY (4) LJMP MAIN (5) 子程序 DELAY:MOV R7250 (6) D1:MOV R6250 (7) D2:DJNZ R6D2 (8) DJNZ R7D1 (9) RET (10) END . (11) 还记得软件的使用方法吗?调试,写入源代码,编译,下载到单片机,看看是不是我们想要的结果在分析这段程序之前,先来说明几个标点符号的意义:1.分号在这里起一个分隔符的作用,表示这条指令到此为止;2.括号内的数字在这里是为了解释程序用的,实际的编译过程中是没有意义的,也就是说没有也是一样的,只是为了程序的可读性更强,我们一般.
上一篇:
【精品】软件技术吴秀尧实习手册
下一篇:
月入5000,你有什么资格谈生活