单片机原理与应用技术实验指导书(V1.3)2

更新时间:2024-06-01 13:25:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机原理与应用技术

实验指导书 (Freescale)

机械工程学院机械电子工程教研室 王晓峰

第1页

实验一 飞思卡尔嵌入式实验系统入门—GPIO控制实验

一、实验目的:

熟悉CodeWarrior集成开发环境及飞思卡尔嵌入式实验开发系统 掌握AW60的GPIO结构及控制方法

掌握CodeWarrior工程结构及创建汇编工程 熟悉汇编指令及应用汇编语言编程方法

二、实验内容

1.运用CodeWarrior新建工程,进行工程程序编辑、编译、下载、调试; 2.利用飞思卡尔嵌入式实验开发系统根据实验需要进行硬件连接;

3. 观察示例工程项目,该工程功能为:根据连接在PTC0、PTC1口上的两个拨动开关的状态,控制接中PTB口上的八个LED处在以下二种不同状态:八个LED同时亮-灭循环;四个灯交替亮-灭;

4.设计一个比示例工程简单的工程项目,内容为控制PTB口上连接的八个LED灯同时亮-灭循环一次再四个灯交替亮-灭一次。

5.设计一个比示例工程更复杂一些的工程项目,根据连接在PTC口上的两个拨动开关的状态,控制接中PTB口上的八个LED处在以下四种不同状态:八个LED亮—灭循环;四个灯交替亮—灭;一个LED左移流水灯;两个LED右移流水灯。

三、实验步骤(注意:在调试过程中如需要进行连接线路时,要先将实验箱断电,待电路连接好后再接通电源!!!)

1.将飞思卡尔嵌入式实验开发系统实验箱接上电源,写入器BDM接头插接入核心卡BDM座,USB头接入PC机USB口。

2.PC机上启动CodeWarrior,新建工程LED.mcp(注意设置工程保存路径) 3.观察工程文件结构,查看相应文件。 4.在main.asm中编辑工程主文件 5.编辑相关子程序

6.编译,如果有错误修改,直至编译通过 7.链接、下载,调试观察LED灯现象

第2页

图1-1 LED及拨动开关原理图

导线接插点 Vcc 拨码开关

GN

四、参考程序

1.主汇编程序main.asm

该程序为根据PTD口的PTD0上接的拨动开关的状态控制连接在PTB口上的八个LED灯在四亮四暗状态或八个灯同时亮同时暗的状态

XDEF asm_main XREF MCUInit XREF DelayHX

INCLUDE 'derivative.inc' INCLUDE 'light.inc' INCLUDE 'switch.inc'

MyCode: SECTION

; this assembly routine is called the C/C++ application asm_main:

JSR MCUInit JSR Switch_Init JSR Light_Init M_Scan: JSR Switch_Read LDA $70 CMP #$01 BNE M01 LDA #0

JSR Light_On_Off LDHX #$0fff

第3页

JSR DelayHX LDA #1

JSR Light_On_Off LDHX #$0fff JSR DelayHX BRA M_Scan M01: CMP #$02 BNE M02

JSR Light_Half LDHX #$0fff JSR DelayHX M02: BRA M_Scan

RTS ; return to caller 2、LED灯构件程序light.asm

;[Light.asm]小灯驱动-----------------------------------------------------* ;本文件包含: * ; (1)Light_init:定义控制小灯的MCU的I/O引脚为输出 * ; (2)Light_On_Off:驱动小灯\亮\暗\ * ;--------------------------------------------------------------------------------*

;小灯驱动所需头文件

INCLUDE 'MC9S08AW60.inc' ;MCU映像寄存器名

;小灯控制引脚宏定义

Light_P: equ PTBD ;灯(Light)接在PTB口 Light_D: equ PTBDD ;相应的方向寄存器 Lon: equ $00 Loff: equ $ff Ldiff: equ $0f

;声明外部函数

XDEF Light_Init ;小灯初始化

XDEF Light_On_Off ;驱动小灯\亮\暗\ XDEF Light_Half ;驱动小灯\四亮\四灭\

;Lightinit:定义控制小灯的MCU引脚为输出---------------------------* ;功能:定义控制小灯的MCU引脚为输出,并使小灯初始为暗 * ;----------------------------------------------------------------------------------* Light_Init:

LDA #$FF

STA Light_P ;设置初始时八个LED灯全灭 LDA #$FF

STA Light_D ;设置LED所接PTB口为输出 RTS

第4页

;Light_On_Off:驱动小灯\亮\灭\;功能:根据A的值控制小灯的亮和暗 * ;---------------------------------------------------------------------------------* Light_On_Off: CMP #0

BNE Light_1 LDA #Lon STA Light_P BRA Light_Exit Light_1:

CMP #1

BNE Light_Exit ;入口非'L'/'A',程序无响应 LDA #Loff STA Light_P Light_Exit: RTS

;Light_Half:驱动小灯\四亮\四灭\;功能:根据A的值控制小灯的亮和暗 *

;---------------------------------------------------------------------------------*

Light_Half:

LDA Light_P CMP #Ldiff

BNE Light_half1 LDA #~Ldiff STA Light_P BRA L_exit Light_half1: LDA #Ldiff STA Light_P L_exit:

RTS

3、拨动开关控制程序Switch.asm

;[switch.asm]开关状态输入---------------------------------------------* ;本文件包含: * ; (1)Switch_init:定义连接开关的MCU的I/O引脚为输入 * ; (2)Switch_read:读取开关状态 * ; (3)RAM$70保存开关状态

;--------------------------------------------------------------------------------*

;小灯驱动所需头文件

INCLUDE 'MC9S08AW60.inc' ;MCU映像寄存器名 XDEF Switch_Init XDEF Switch_Read

第5页

本文来源:https://www.bwwdw.com/article/a6k6.html

Top