1.1 实验说明<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
使用CC2430的I/O来控制外设。以LED灯为外设,将I/O设置为输出,用CC2430控制LED闪烁。
实验中操作了的寄存器有P1、P1DIR,没有设置而是取默认值的寄存器有:P1SEL、P1INP。
位 名 | 位号 | 复位值 | 操作性 | 功能描述 |
P1 | 7:0 | 0x00 | R/W | P1端口普通功能寄存器,可位寻址 |
P1DIR(DIRP1_x) | 7:0 | 0 | R/W | P1端口方向:0-输入,1-输出 |
P1SEL(SELP1_x) | 7:0 | 0 | R/W | P1口功能选择:0-普通I/O,1-外设功能 |
P1INP(MDP1_x) | 7:2 | 0 | R/W | P1口I/O输入模式:0-上/下拉;1-三态 |
P1INP | 1:0 | 0x00 | R0 | 不使用 |
1.2 实验程序
#include <ioCC2430.h>
#define uint unsigned int
#define uchar unsigned char
//定义控制灯的端口
#define RLED P1_0
/* 根据原理图,LD1(黄)为P1_0口控制;主扩展板为RLED;JKS底板为D2(红) */
#define GLED P1_1
/* 根据原理图,LD2(红)为P1_1口控制;主扩展板为GLED;JKS底板为D3(黄) */
#define YLED P1_2 //根据原理图,主扩展板的YLED为P1_2口控制;
//函数声明
void Delay(uint); //延时函数
void Initial(void); //初始化函数
/****************************
//延时程序,延时时间约为5*n/32μs
*****************************/
void Delay(uint n)
{
uint tt;
for(tt = 0;tt<n;tt++);
for(tt = 0;tt<n;tt++);
for(tt = 0;tt<n;tt++);
for(tt = 0;tt<n;tt++);
for(tt = 0;tt<n;tt++);
}
/****************************
//初始化程序
*****************************/
void Initial(void)
{
P1DIR |= 0x07; //P1_0、P1_1、P1_2定义为输出
RLED = 1;
GLED = 1;
YLED = 1; //置高电平,LED灭
}
/***************************
//主函数
***************************/
void main(void)
{
Initial(); //调用初始化函数
RLED = 0;
GLED = 0;
YLED = 0; //置低电平,LED亮
while(1) //循环,实现LED闪烁
{
GLED = !GLED;
Delay(10000);
}
}
实验源程序来源于WXL的CC2430基础实验,我用的是C51RF-JKS-CC2430
,有些接口和我的板子不一样,所以做了一些改动。
文章评论(0条评论)
登录后参与讨论