飞思卡尔单片机LED控制例程详解

  • 格式:docx
  • 大小:840.40 KB
  • 文档页数:10

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

我的第一个LED程序

准备工作:

硬件:Freescale MC9S08JM60型单片机一块;

软件:集成开发环境codewarrior IDE;

开发板上有两个LED灯,如下图所示:

实验步骤:

1.首先,确保单片机集成开发环境及USBDM驱动正确安装。其中USBDM的安装步骤如下:⏹假设之前安装过单片机的集成开发环境6.3版本:CW_MCU_V6_3_SE;

⏹运行USBDM_4_7_0i_Win,这个程序会在c盘的程序文件夹下增加一个目录C:\Program

Files\pgo\USBDM 4.7.0,在这个目录下:

1〉C:\ProgramFiles\pgo\USBDM 4.7.0\FlashImages\JMxx下的文件

USBDM_JMxxCLD_V4.sx是下载器的固件文件;

2〉C:\Program Files\pgo\USBDM 4.7.0\USBDM_Drivers\Drivers下有下载器的usb 驱动

所以在插入usb下载器,电脑提示发现新的usb硬件的时候,选择手动指定驱动

安装位置到以上目录即可。

⏹运行USBDM_4_7_0i_Win之后,还会在目录:

C:\Program Files\Freescale\CodeWarrior for Microcontrollers V6.3\prog\gdi 下增加一些文件,从修改时间上来看,增加了6个文件,这些文件是为了在codewarrior 集成开发环境下对usb下载器的调试、下载的支持。

2.新建一个工程,工程建立过程如下:

⏹运行单片机集成开发环境codewarrior IDE

⏹出现如下界面

●Create New Project :创建一个新项目工程

●Load Example Project :加载一个示例工程

●Load Previous Project :加载以前创建过的工程

●Run Getting started Tutorial:运行CodeWarrior软件帮助文档

●Start Using CodeWarrior:立刻使用CodeWarrior

⏹点击Create New project按钮,以创建一个新的工程,出现选择CPU的界面

如下,请选择HCS08/HCS08JM Family/MC9S08JM60,在右边的Connection窗口

可以选择最后一个开源下载器HCS08 Open Source BDM。

注:由于本书配套使用MC9S08JM60型单片机,因此选择CPU型号为MC9S08JM60,若使用其他型号的单片机,请选择其它型号单片机,新建一个工程;并且,由于单片机的驱动为USB接口,因此选择HCS08 Open Source BDM。若无硬件,选择Full Chip Simulation 进行仿真,也可进行实验;本实验仅讨论有硬件情况下的程序编写和烧录;

⏹下一步后出现编程语言选择和指定项目名称以及存放位置界面

⏹选择C语言,项目名称自己决定,该实验暂时命名“LED闪烁”,选择保存位置,

后面的选项暂时跳过,点击“完成”,文件展开如下:

⏹点击“make”快捷按钮正确编译后,左边的钩钩全部消失,同时在Code和Data

列出现了相关的代码和数据量。

至此,一个工程新建完毕,我们注意到左边的File下有Sources,Includes, Libs, Project Settings 等文件夹,这里我们需要了解前面两个文件夹即可。

⏹首先:源文件Sources下有一个main.c文件,这个C文件是我们将要写代码的位置,这

是程序编译的起点;

⏹其次:Includes下有两个头文件,这里对我们将编写的基本语句进行定义,使我们的语

言能够被计算机识别。就像我们在学C语言时,涉及到输入流cout和输出流cin如何被计算机识别时,需要包含头文件“iostream.h”的作用相同,这些头文件用于定义这些符号的作用,使计算机识别转换为二进制符号;

3.既然工程新建完毕,现在可以开始第一个程序的编写。但是在程序编写之前,我们需要了解硬件电路的连接方式,使自己的意愿通过软件正确的传达给硬件;

如上图所示,PTB0,PTB1是单片机的两个端口,外部电路分别接一个电阻和一个LED 灯,再接到5V电源上。由于单片机输出电平为数字电平0或1,即我们所说的5V高电平和地电平,根据所学电路基本知识,我们知道,要想使LED灯亮,我们的端口PTB0和PTB1只能为低电平,即输出为0。

注:尽管不同型号的单片机的端口数量不同,各自功能也不尽相同,但核心思想都是通过设置或者检测端口上的高低电平,达到测试和控制信号的目的。在这节中,我们介绍端口最基本也最重要的Input/Output输入/输出功能。

至此,我们现在还需要知道的事情是如何告知单片机输出地电平点亮LED灯,这将涉及到如何对单片机进行控制。我们需要了解两个概念:数据寄存器和数据方向寄存器;它们的关系如下图所示:

以B端口为例,其输入输出方向和数据高低电平由两个寄存器控制,PTBD(端口B数据寄存器PORT B DATA REGISTER)和PTBDD(端口B数据方向寄存器PORT B DATA DIRECTION REGISTER ),每个寄存器由8位组成,因此可以控制8个端口B0-B7,上图仅表示了一个端口B0的控制情况,其它7个端口相同。

若PTBDD的最低位设置为1,下方Output导通,而Input功能被屏蔽,再通过PTBD

的最低位设置为0或1决定PTB0输出电平状态,其它7位设置方式相同;

写成C语言为:PTBDD_PTBDD0=1; PTBD_PTBD0=1或者0;

这里表示对寄存器的某一位进行单独设置;

若同时设置8个端口为输出,低电平时:

PTBDD=0XFF;PTBD=0X00;

注:这里方向每位都设置为1,每位输出低电平;

⏹若PTBDD最低位设置为0,上方Input导通,Output被屏蔽,此时PTBD的值将由

端口接入电平决定,而此时我们只需读取PTBD的值,可知外部输入电平的状态;

4.经过上述对软件和硬件的分析,可以开始编写程序:

⏹双击main.c打开文件如图所示:

这些语句是系统自动生成的基本程序框架:

⏹开头包含两个头文件语句,我们简单知道它是对我们下面将要编写的基本语句

进行定义,帮助计算机识别的作用即可;

⏹从主函数void main(void )可知:第一个void表示该函数的返回值为空,main

函数标志计算机编译入口,一个工程文件里只允许有一个main函数,括号内

的void表示参数为空,可省略;

⏹第一句表示使能中断,这里我们忽略删掉,为避免不必要的麻烦,将其改为

DisableInterrupts;表示禁止中断。

⏹单片机函数有一个特点,最后必须以一个无限循环结尾,否则程序不能正确运

行,因此,这个for循环不可删除;里面那句喂狗语句暂时忽略不动;

⏹在main中输入如下语句: