太原理工大学单片机实验报告.docx

上传人:b****9 文档编号:93979 上传时间:2022-10-02 格式:DOCX 页数:22 大小:1.03MB
下载 相关 举报
太原理工大学单片机实验报告.docx_第1页
第1页 / 共22页
太原理工大学单片机实验报告.docx_第2页
第2页 / 共22页
太原理工大学单片机实验报告.docx_第3页
第3页 / 共22页
太原理工大学单片机实验报告.docx_第4页
第4页 / 共22页
太原理工大学单片机实验报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

太原理工大学单片机实验报告.docx

《太原理工大学单片机实验报告.docx》由会员分享,可在线阅读,更多相关《太原理工大学单片机实验报告.docx(22页珍藏版)》请在冰豆网上搜索。

太原理工大学单片机实验报告.docx

实验名称

普通I/O口操作

一、实验目的

1.掌握IAR的配置、程序代码的编写,以及编译及调试的过程;

2.学会如何运用IAR编写并在线调试程序LED灯闪烁实验;

3.学会按键的基本原理。

二、实验内容

在IAR开发环境中建设LED灯闪烁、按键轮询实验工程项目,并完成程序编写和调试。

三、主要仪器和设备

1.中软国际ETC-WSN物联网实验平台一套;2.装有IAR8.10软件的PC机一台;3.CC2530仿真器一台。

四、操作方法和实验步骤

1IAR的配置

IAR是一个强大的嵌入式开发平台,支持非常多种类的芯片。

IAR中的每一个Project,都可以拥有自己的配置,具体包括Device类型、堆/栈、Linker、Debugger等。

1.1新建Workspace和Project

首先新建文件夹ledtest。

打开IAR,选择主菜单File->New->Workspace建立新的工作区域。

选择Project->CreateNewProject->EmptyProject,点击OK,把此工程文件保存到文件夹ledtest中,命名为:

ledtest.ewp。

1.2配置GeneralOptions

Target设置:

Device:

CC2530F256;Datamodel:

Large;Callingconvention:

XDATAstackreetrant

1.3Debugger设置

Driver:

TexasInstruments

2程序代码的编写

2.1新建程序文件:

选择File->New->File,新建文件main.c。

2.2引入头文件:

基于CC2530的程序,必须包含对ioCC2530.h的引用,此文件定义了CC2530的各类特殊功能寄存器(SFR)的地址映射。

#include//引入CC2530所对应的头文件(包含各SFR的定义)

2.3定义LED引脚

查看开发板电路图,如下所示:

可知led1~2分别受引脚P1_0~P1_1的控制,因此可以定义led1、led2为引脚P1_0、P1_1。

#defineled1P1_0LED1//定义LED1为P1_0口控制

#defineled2P1_1LED2//定义LED2为P1_1口控制

2.4main函数

接下来,开始编写main函数。

首先,在使用P1_0~P1_1端口前,需对其工作方式以及输入/输出方向进行设置,其中涉及到两个SFR:

P1SEL、P1DIR。

P1SEL=0x00;//设置P1为普通I/O口

P1DIR|=0x03;//设置P1_0、P1_1为输出

CC2530具有P0_0~P0_7,P1_0~P1_7,P2_0~P2_7共21个I/O口。

它们可作为通用数字I/O,也可用于连接ADC、定时/计数器或USART等外设IO。

CC2530的SFR中有三类寄存器可用于配置这些IO口:

①PxSEL(x为0/1/2):

P0/P1/P2口功能选择0:

通用数字IO,1:

外设IO,缺省默认为0

②PxDIR(x为0/1/2):

P0/P1/P2口方向0:

输入,1:

输出,缺省默认为0

③PxINP(x为0/1):

P0/P1口输入模式0:

上拉/下拉,1:

三态,缺省默认为0

在使用IO口时需配置,若缺省,则取系统默认值。

然后初始化2个LED灯,设为全灭:

led1=1;led2=1;

最后,编写LED灯闪烁效果代码:

led1=0;//led1闪烁

Delay(10);

led1=1;

Delay(10);

led2=0;//led2闪烁

Delay(10);

led2=1;

Delay(10);

其中涉及到一个延时子函数Delay(unsignedcharn):

voidDelay(unsignedcharn)

{unsignedchari;unsignedintj;

for(i=0;i

for(j=1;j;j++);}

2.5实验源码

将上述代码合并为一个整体。

本实验主要用到的寄存器:

3.按键轮询

将CPU处在循环的状态中,当按下按键后,会使与按键相关的I/O口的电平拉低,此时我们检测I/O的电压高低来控制相应的小灯亮灭。

3.1程序流程图

3.2代码分析

(1)获取按键的值

ucharKeyScan(void)

{

if(K1==0)//低电平有效

{

Delay(100);//检测到按键

if(K1==0)

{while(!

K1);//直到松开按键

return

(1);}

}

if(K2==0)

{Delay(100);

if(K2==0)

{while(!

K2);

return

(2);}

}

return(0);}

该函数实现了识别到底是哪个按键被按下的功能,首先检测K1是否等于0,如果一旦检测到等于0,说明有相应的按键被按下,延时一段时间,又来判断(if(K1==0))这个判断

是为了防止按键抖动。

同理检测按键K2是否被按下。

(2)主函数功能

主函数实现了一按键被按下后,使相应的小灯点亮,同时清除标志位。

本实验主要用到的寄存器:

五、实验结果

2.6实验现象

LED1灯先闪烁隔一会熄灭,一会儿LED2灯闪烁,隔一会也熄灭。

3.3实验现象

按下K1键,LED1灯亮,按下K2键,LED2灯亮

六、讨论、心得

通过本实验,我们掌握了IAR的配置、程序代码的编写,以及编译及调试的过程;学会了如何运用IAR编写并在线调试程序LED灯闪烁实验;学会了按键的基本原理。

在代码编写过程中,对于按键的接口不是很清楚,最后请教同学解决了。

两个按钮分别是P0_1和P0_0。

实验名称

外部中断

一、实验目的

1.学会如何运用IAR编写并在线调试程序外部中断实验;

2.掌握外部中断原理。

二、实验内容

理解中断的概念、熟悉中断的基本流程和中断处理函数的书写格式。

三、主要仪器和设备

1.中软国际ETC-WSN物联网实验平台一套;

2.装有IAR8.10软件的PC机一台;

3.CC2530仿真器一台。

四、操作方法和实验步骤

1.实验内容:

外部中断发生,控制灯的亮灭。

开发板上已把S1按键与P0.1相连,本实验想要达到的效果就是,通过按键S1触发P0.1的中断,进而在中断服务子程序中控制LED1的亮/灭。

2.实验流程图

3.实验涉及的主要寄存器

初始化LED:

设置P1为通用I/O口,设置P1.0~P1.1方向为输出,然后关闭2个LED灯。

再来配置外部中断的相关SFR寄存器,开启各级中断使能,涉及3个SFR:

EA、IEN1、PICTL(各SFR详细介绍请查阅《CC2530中文手册》):

EA——总中断使能;

IEN1.5——P0中断使能;

PICTL.3——P0.1口中断使能;

PICTL.0——设置P0.1口输入下降沿引起中断触发。

然后在主函数中使用while

(1)等待中断即可。

4.代码分析

1)中断及I/O初始化

中断及I/O初始化函数入下:

voidInit_IO_AND_LED(void)

{

P1DIR=0x03;//0为输入(默认),1为输入

led1=1;

led2=1;

P0IEN|=0x02;//P01口中断使能

PICTL|=0x01;//P01下降沿

EA=1;

IEN1|=0X20;//P0口中断使能

P0IFG&=0x00;//P0口中断状态,如果有中断发生,相应位置1

}

(1)设置P0_1口中断使能

P0IEN|=0x02;

CC2530单片机共有18个中断源,每一个中断都有一个相应的中断使能特殊功能寄存器,当对应位设置为1,使能中断位,当设置为0屏蔽相应的中断位;这里我们使用的是P0_1,所以我们通过P0IEN|=0x02将p0_1置一。

(2)中断的触发方式

中断的触发方式不外乎这样两种,高低电平触发和边沿触发。

这里我们通过设置PICTL设置了P0_1为下降沿触发,也即当P0_1引脚由高电平到低电平变化时即产生了一次中断。

(3)打开中断总开关和使能P0_1口中断

EA=1;这个是总开关,18个中断源对应着有18个独自的中断开关,只有将总开关打开,然后再打开相应的小开关,这样你想要允许的总开关才能奏效。

(4)清除中断标志位

P0IFG&=0x00;P0IFG是中断标志位,当该位为1时说明已产生过一次中断,为0还未产生中断。

所以初始化我们将它清零,要不然我们怎么知道是否来了中断了呢?

以后我们要想知道是否来了中断我们就可以来查它。

2)中断服务程序

函数代码如下:

#pragmavector=P0INT_VECTOR

__interruptvoidP0_ISR(void)

{

if(P0IFG&0x02)//按键中断

{

P0IFG=0;

led1=!

led1;

}

P0IFG=0;//清中断标志

}

(1)中断服务程序

什么意思呢?

简单来说中断来了,你想要干什么。

(2)CC2530中断格式

格式如下:

#pragmavector=P0INT_VECTOR

__interruptvoidP0_ISR(void)

a)P0INT_VECTOR——设定的中断向量名

本实验主要用到的寄存器:

五、实验结果

实验现象:

按键S1可以控制LED1灯亮灭

六、讨论、心得

通过本实验,学会了如何运用IAR编写并在线调试程序外部中断实验;掌握了外部中断原理。

理解中断的概念、熟悉中断的基本流程和中断处理函数的书写格式。

通过中断来控制按钮的操作。

实验名称

定时器

一、实验目的

1.学会使用定时器;

2.运用IAR编写并在线调试程序定时器中断实验。

二、实验内容

掌握16位定时器基本使用方法。

三、主要仪器和设备

1.中软国际ETC-WSN物联网实验平台一套;

2.装有IAR8.10软件的PC机一台;

3.CC2530仿真器一台。

四、操作方法和实验步骤

1.实验内容:

CC2530共有4个定时器,可分3类:

定时器1、定时器2、定时器3/4(3与4的用法一致)。

定时器1是一个16位

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1