大学单片机实验报告普通I_O口操作.docx
《大学单片机实验报告普通I_O口操作.docx》由会员分享,可在线阅读,更多相关《大学单片机实验报告普通I_O口操作.docx(22页珍藏版)》请在沃文网上搜索。
1、实验名称 普通I/O口操作一、实验目的1掌握IAR的配置、程序代码的编写,以及编译及调试的过程; 2学会如何运用 IAR 编写并在线调试程序LED灯闪烁实验;3. 学会按键的基本原理。 二、实验内容在IAR开发环境中建设LED灯闪烁、按键轮询实验工程项目,并完成程序编写和调试。三、主要仪器和设备1.中软国际ETC-WSN物联网实验平台一套;2. 装有IAR8.10软件的PC机一台; 3. CC2530仿真器一台。 四、操作方法和实验步骤1 IAR的配置 IAR是一个强大的嵌入式开发平台,支持非常多种类的芯片。IAR中的每一个Project,都可以拥有自己的配置,具体包括Device类型、堆/栈
2、、Linker、Debugger等。1.1新建 Workspace 和 Project 首先新建文件夹 ledtest。打开IAR,选择主菜单File - New - Workspace建立新的工作区域。 选择Project - Create New Project - Empty Project,点击OK,把此工程文件保存到文件夹 ledtest 中,命名为:ledtest.ewp。 1.2配置General Options Target设置:Device:CC2530F256; Data model:Large; Calling convention:XDATA stack reetran
3、t1.3 Debugger设置 Driver:Texas Instruments2程序代码的编写 2.1新建程序文件:选择File-New-File,新建文件main.c。 2.2引入头文件:基于CC2530的程序,必须包含对ioCC2530.h的引用,此文件定义了CC2530的各类特殊功能寄存器(SFR)的地址映射。 #include /引入CC2530所对应的头文件(包含各SFR的定义) 2.3定义LED引脚 查看开发板电路图,如下所示:可知led12分别受引脚P1_0P1_1的控制,因此可以定义 led1、led2 为引脚 P1_0、P1_1。#define led1 P1_0 LED1
4、 /定义LED1为P1_0口控制#define led2 P1_1 LED2 /定义LED2为P1_1口控制2.4 main函数 接下来,开始编写main函数。 首先,在使用P1_0P1_1端口前,需对其工作方式以及输入/输出方向进行设置,其中涉及到两个SFR:P1SEL、P1DIR。P1SEL = 0x00; /设置P1为普通 I/O 口 P1DIR |= 0x03; /设置P1_0、P1_1 为输出 CC2530具有 P0_0 P0_7 , P1_0P1_7 , P2_0P2_7 共21个I/O口。它们可作为通用数字I/O,也可用于连接ADC、定时/计数器或USART等外设IO。 CC25
5、30的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;
6、 /led2闪烁 Delay(10); led2 = 1; Delay(10); 其中涉及到一个延时子函数Delay(unsigned char n): void Delay(unsigned char n) unsigned char i; unsigned int j; for(i = 0; i n; i+) for(j = 1; j; j+); 2.5实验源码 将上述代码合并为一个整体。本实验主要用到的寄存器:3. 按键轮询将CPU处在循环的状态中,当按下按键后,会使与按键相关的I/O口的电平拉低,此时我们检测 I/O 的电压高低来控制相应的小灯亮灭。3.1程序流程图3.2代码分析(1)
7、获取按键的值 uchar KeyScan(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)主函数功能 主函数实现了
8、一按键被按下后,使相应的小灯点亮,同时清除标志位。本实验主要用到的寄存器:五、实验结果2.6实验现象LED1灯先闪烁隔一会熄灭,一会儿LED2灯闪烁,隔一会也熄灭。3.3实验现象 按下K1键,LED1灯亮,按下K2键,LED2灯亮六、讨论、心得通过本实验,我们掌握了IAR的配置、程序代码的编写,以及编译及调试的过程;学会了如何运用 IAR 编写并在线调试程序LED灯闪烁实验;学会了按键的基本原理。在代码编写过程中,对于按键的接口不是很清楚,最后请教同学解决了。两个按钮分别是P0_1和P0_0。实验名称 外部中断一、实验目的1学会如何运用 IAR 编写并在线调试程序外部中断实验; 2掌握外部中断
9、原理。二、实验内容理解中断的概念、熟悉中断的基本流程和中断处理函数的书写格式。 三、主要仪器和设备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灯。 再来配置外部中断
10、的相关 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初始化函数入下: void Init_IO_AND_LED(void) P1DIR = 0x03; /0 为输入(默认),1 为输入 led1 = 1; led2 = 1; P0IEN |= 0x02; /
11、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)中断的触发方式 中断的触发方式不外乎这样两种,高低电平触发和边沿触发。这里我们通过设置 P
12、ICTL设置了P0_1为下降沿触发,也即当 P0_1引脚由高电平到低电平变化时即产生了一次中断。 (3)打开中断总开关和使能 P0_1口中断EA = 1;这个是总开关,18 个中断源对应着有 18 个独自的中断开关,只有将总开关打开,然后再打开相应的小开关,这样你想要允许的总开关才能奏效。 (4)清除中断标志位 P0IFG &= 0x00;P0IFG是中断标志位,当该位为 1 时说明已产生过一次中断,为 0 还未产生中断。所以初始化我们将它清零,要不然我们怎么知道是否来了中断了呢?以后我们要想知道是否来了中断我们就可以来查它。 2)中断服务程序 函数代码如下: #pragma vector =
13、 P0INT_VECTOR _interrupt void P0_ISR(void) if(P0IFG & 0x02) /按键中断 P0IFG = 0; led1 = !led1; P0IFG = 0; /清中断标志 (1) 中断服务程序 什么意思呢? 简单来说中断来了,你想要干什么。 (2) CC2530中断格式 格式如下: #pragma vector = P0INT_VECTOR _interrupt void P0_ISR(void) a)P0INT_VECTOR设定 的中断向量名本实验主要用到的寄存器: 五、实验结果实验现象:按键S1可以控制LED1灯亮灭六、讨论、心得通过本实验,学
14、会了如何运用 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 位定
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 单片机 实验 报告 普通 I_O 操作
