ble学习笔记二-----------------点亮led

本文介绍了如何使用IAR开发环境配置8051单片机工程,通过配置P1SEL和P1DIR寄存器来实现LED的点亮。详细步骤包括创建新项目、配置CPU和编译选项,并提供了相关的寄存器配置及代码示例。
摘要由CSDN通过智能技术生成

-----------------点亮led

创建iar工程

打开iar-->project--->creadtnew project--->创建空的8051工程(LED)--->添加LED.c文件

File--->save workspace as --->取名为LED

工程右击-->options配置界面

配置cpu:

 

 

配置编译输出的文件格式

 

 

 

 

 

首先看原理图

 

 

可认看到LED1和LED2分别接的是p1-0和p1-1

 

 

再查看用户手册

Register Name     SFR Address  Module        Description   

 P1SEL              0xF4      IOC       Port 1 function select

 

可以看出当p1有0-7位,当把某一位设为设为0时, 为输入输出功能

如果将p1-0和p1-1设为输入输出功能,即将最后两位设为0

 0xF4转换为二进制为     1111 0100

P1SEL &=~0x03;

0x03转换为二进制为0000 0011  取返为1111 1100

然后再与上1111 0100得到1111 0100

 

位运算的知识

按位与运算全1为1

按位或运算全0为0

异或运算相同为0,不同为1

取反运算

左移<< 相当于*2

右移>> 相当于/2

 

 

 

 

以上可以看出p1DIR是用来定义方向(0是输入,1是输出)

 

 

 

配置完成,编写代码:

/******************************************************************************

 

                  版权所有 (C), 2013-2020

 

 ******************************************************************************

  文 件 名  : LED.c

  版 本 号  : V1.0

  作   者   : retacn

  生成日期   : 2014年9月2日

  功能描述   : 点亮一个LED

  函数列表   :

              main

  修改历史   :

  1.日   期   : 2014年9月2日

    作   者   : retacn

    修改内容   : 创建文件

 

******************************************************************************/

 

/*----------------------------------------------*

 * 包含头文件                                   *

 *----------------------------------------------*/

#include <ioCC2540.h>

 

/*****************************************************************************

 函 数 名 : main

 功能描述 : 主函数,C程序入口

 输入参数 : void

 输出参数 : 无

 返 回 值 :

 

 修改历史      :

  1.日   期   : 2014年9月2日

    作   者   : retacn

    修改内容   : 创建

 

*****************************************************************************/

int main(void)

{

   P1SEL &= ~0X03;     // 将P1.1、0设置为IO功能

   P1DIR |= 0X03;      // 设置P1.1、0为输出功能

   P1 &= ~0X03;        // 清除原始值

   P1 |= 0X03;         // 设置P1.1、0输出高电平

   while(1);           // 无限等待

   return 0;

}

/*end file*/

编译下载到开发板

 

 

注:程序中导入的iocc2540.h位于以下目录中

C:\Program Files (x86)\IAR Systems\EmbeddedWorkbench 6.5\8051\inc

内容如下:

 

/**************************************************************************************************

 *                                        -ioCC2540.h -

 *

 * Header file with definitions for the TexasInstruments CC2540 low-power System-on-Chip:

 * an 8051-based MCU with 2.4 GHz Bluetooth lowenergy RF transceiver, and up to 256 kB FLASH.

 *

 * This file supports the IAR EmbeddedWorkbench for 8051.

 *

 **************************************************************************************************

 */

 

#ifndef IOCC2540_H

#define IOCC2540_H

 

/*------------------------------------------------------------------------------------------------

 *                                      CompilerAbstraction

 *------------------------------------------------------------------------------------------------

 */

#ifdef__IAR_SYSTEMS_ICC__

#pragmalanguage=save

#pragmalanguage=extended

#defineSFR(name,addr)   __sfr   __no_init volatile  unsigned char  name @ addr;

#defineSFRBIT(name, addr, bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0) \

__sfr __no_initvolatile union \

{                              \

  unsigned char name;          \

  struct {                     \

    unsigned char bit0 : 1;    \

    unsigned char bit1 : 1;    \

    unsigned char bit2 : 1;    \

    unsigned char bit3 : 1;    \

    unsigned char bit4 : 1;    \

    unsigned char bit5 : 1;    \

    unsigned char bit6 : 1;    \

    unsigned char bit7 : 1;    \

  };                           \

} @ addr;

#defineSBIT(name,addr) /* not in use for IAR C Compiler */

#defineXREG(addr)       ((unsigned char volatile__xdata *) 0)[addr]

#definePXREG(addr)      ((unsigned char volatile__xdata *) addr)

#defineVECT(num,addr)   addr

 

#elif defined__IAR_SYSTEMS_ASM__

#defineSFR(name,addr)   name  DEFINE addr

SFRBITMACRO MACROt, addr, bit7 , bit6, bit5, bit4, bit3, bit2, bit1, bit0

t    DEFINE addr

bit7 DEFINE addr.7

bit6 DEFINE addr.6

bit5 DEFINE addr.5

bit4 DEFINEaddr.4    ;; NB: do not modifyindentation of this macro

bit3 DEFINE addr.3

bit2 DEFINE addr.2

bit1 DEFINE addr.1

bit0 DEFINE addr.0

            ENDM

#defineSFRBIT(name, addr, bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0) \

    SFRBITMACRO <name>, <addr>,<bit7>, <bit6>, <bit5>, <bit4>, <bit3>,<bit2>, <bit1>, <bit0>

#defineSBIT(name,addr)  name  DEFINE addr

#defineXREG(addr)       addr

#definePXREG(addr)      addr

#defineVECT(num,addr)   addr

/* IAR assembleruses some predefined registers. The following prevents name collisions. */

#define SP   SPx

#define ACC  ACCx

#define B    Bx

#define PSW  PSWx

#define CY   CYx

#define AC   ACx

#define F0   F0x

#define RS1  RS1x

#define RS0  RS0x

#define OV   OVx

#define P    Px

 

#else

#error"Unrecognized compiler."

#endif

 

 

/*------------------------------------------------------------------------------------------------

 *                  中断导航                     Interrupt Vectors

 *------------------------------------------------------------------------------------------------

 */

#define  RFERR_VECTOR  VECT(  0, 0x03 )   /*  RFTX FIFO Underflow and RX FIFO Overflow  */

#define  ADC_VECTOR    VECT(  1, 0x0B )   /* ADC End of Conversion                       */

#define  URX0_VECTOR   VECT(  2, 0x13 )   /* USART0 RX Complete                          */

#define  URX1_VECTOR   VECT(  3, 0x1B )   /* USART1 RX Complete                          */

#define  ENC_VECTOR    VECT(  4, 0x23 )   /* AES Encryption/Decryption Comp

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值