本节通过对P3口地址的操作控制8位LED流水点亮来认识单片机的存储器。本节仍采用图3-11所示的电路原理图。
单片机中存储器(包括特殊功能寄存器)都有固定的地址,正是通过这些固定的地址,单片机才能准确地实现对各个存储器的操作。例如,P3口的固定地址是 B0H(这在单片机制造时已经分配好,我们只能根据这种分配来使用它,而不可能改变它),P3只不过是地址“B0H”的名字,我们对地址“B0H”的操作实际上就是对 P3的操作。例如,张三同学在教室的第2排第5列(相当于地址),老师可以说“请张三回答问题”,也可以说“请第2排第5列的同学回答问题”,两者是一回事,显然当不知道名字时,用地址就很方便。
要对特殊功能寄存器P3的地址“B0H”操作,可作如下定义:
sfr x=0xb0; // 通过关键字“sfr”将x定义为P3的地址“0xb0”
定义后,程序中对x的操作也就相当于对地址“0xb0”即P3的操作。
先建立文件夹“ex7”,然后建立“ex7”工程项目,最后建立源程序文件“ex7.c”。输入以下源程序:
经Keil软件编译通过后,可利用Proteus软件进行仿真。在Proteus ISIS工作环境中绘制好图3-11所示仿真原理图,或者打开配套光盘中的“仿真实例\第三章\ ex7”文件夹内的“ex7DSN”仿真原理图文件。将编译好的“ex7.hex”文件载入 AT89C51中。启动仿真,可看到P3口8位LED被流水点亮,表明对地址操作同样可达到预期功能。
程序仿真无误后,将“ex7”文件夹中的“ex7.hex”文件烧录入 AT89S51芯片中。再将烧录好的单片机插入实验板上,为实验板通电,可看到P3口所接的8位 LED被流水点亮。