任务:把实验板上的任意一盏灯点亮。
目的:了解单片机基本工作原理,对指令控制硬件有初步认识。
今天我们开始51单片机学习的第一课,我们先从最简单的学起,为了能更直观地了解到指令对硬件的控制,我们会采用汇编语言进行讲解,以便使初学者更容易理解,建议大家在看过课程后,都实际自己在实验板进行操作。 这里,我们先假定大家已经清楚KEIL的建立工程项目和进行程序编译的方法,如果有不明白的,可以下载KEIL使用教程,这里就不重复讲述如何使用KEIL。 另外,我们也先假定大家已经清楚如何将编译生成的HEX文件烧录到STC芯片里。这里讲课不按传统教科书方式进行,而是按实际需要,用到才学。所以一些基础的知识,以后会逐步在课程里讲述。首先,我们看看实验板的电路图。
由图中可以看出,单片机的P0口8个IO每个均接有一只LED发光二级管及串有一只电阻到电源正极,而我们的目的就是要把LED点亮,显而易见,只需要把我们的P0口相对应的IO口写成低电平,LED就可以通电工作。 在51单片机里,上电后,芯片复位后其所有引脚均是高电平,因此,正常状态下,通电后,LED是不发光的,因此,我们需要用一个指令,使这个引脚变为低电平,(知识点:数字电路里,只存在二种状态,0和1,一般用高电平表示1,低电平表示0。) 我们在KEIL里建一个项目,写入如下的语句:
好了,编译,生成HEX文件,下载到我们的实验,怎么样,灯亮了吧。 这里起作用的就是 CLR P0.0这一条语句,它的作用就是把P0.0端口写成低电平,相对应的语句是SETB P0.0,它的作用刚好相反,是把P0.0写成高电平,同理,我们可以很容易知道,如果要控制其它端口,只要更换P0.0为其它端口名即可。 ORG语句在汇编里作用只是用来告诉编译器,定位到某个地址放置跟着的代码。因为上电复位了,单片机总是从地址0000H开始执行的,所以,在开始地址,我们放上一跳转指令AJMP ,它是无条件跳转到指定的地址,为什么要跳转到100H?这个留在讲中断时再讲。 关于AJMP $,是指跳转到本行,也即是单片机执行到这里,会不停地在本行循环,不会再往下执行,一般放程序后面,使单片机执行到这里就停在这里。 好了,到这里,大家都应该明白怎么把一盏灯点亮了吧。看似神秘的单片机就是这么简单,它的引脚,要么是高电平,要么低电平(P0口有点特殊,这个留待以后再讲)。我们要做的,只不过是编个程序,控制引脚在适当的时候按我们的意愿去输出高电平或者低电平,仅此而已。大家尝试一下,把其它的灯也点亮。
第二课 闪动的灯
任务:使把实验板上的任意一盏灯闪动起来。
目的:学习延时程序,对MCU执行时间有个初步概念。
今天,我们来学习第二课——闪动的灯。上一课,我们已经把实验板上的灯点亮了,同时学习了CLR、SETB语句,同时,我们知道了,只要把端口电平写为低或高,即可使该端口上的LED亮或者灭。今天,我们就要让这个灯闪起来。我们在KEIL里建一个项目,写入如下的语句:
完整的Word格式文档51黑下载地址:
实验板教程2014.doc
(2.48 MB, 下载次数: 8)
|