一、问题要求:
选用一个蓝色的 ZigBee 节点盒进行开发。
实现功能:ZigBee 节点盒一上电,两只 LED 灯(连接灯和通讯灯)就
亮,当按下 SW1 键后,两只灯进入相互切换状态(其中一个灯亮,另一
个灯灭),如此循环效果显示。
二、逻辑代码实现:
#include
typedef unsigned char uchar;
typedef unsigned int uint;
#define LED1 P1_0
#define LED2 P1_1
#define SW1 P1_2
uchar ledState = 0;
void DelayMs(uint t)
{
uint j,k;
for(j=0;j
{
for(k=0;k<525;k++);
}
}
void InitLed(void)
{
P1SEL &= ~0x07; //把P1.0、P1.1、P1.2设为GPIO
P1DIR |= 0x03; //设置P1.0、P1.1为输出模式
LED1 = 1;
LED2 = 1; //设置为点亮状态
}
void InitSW1(void)
{
P1DIR &= ~0x04; //设置P1.2为输入模式
P1IEN |= 0x04; //使能P1.2中断模式
PICTL |= 0x02; //下降沿触发中断
IEN2 |= 0x10; //开启P1的中断
P1IFG = 0x00; //清除中断标志位
EA = 1; //开启所有中断
}
#pragma vector = P1INT_VECTOR
__interrupt void P1_ISR(void)
{
ledState = 1;
LED1 = 0;
P1IFG = 0;
P1IF = 0;
}
void main(void)
{
InitLed(); //初始化LED
InitSW1(); //初始化按键,并打开中断
while(1)
{
if(ledState == 1)
{
DelayMs(1000); //延时1s
LED2 = !LED2;
LED1 = !LED1;
}
}
}
以实现题目要求为目的,逐渐提高程序开发的效率。
一、问题要求:
选用一个蓝色的 ZigBee 节点盒进行开发。
实现功能:ZigBee 节点盒一上电,两只 LED 灯(连接灯和通讯灯)就
亮,当按下 SW1 键后,两只灯进入相互切换状态(其中一个灯亮,另一
个灯灭),如此循环效果显示。
二、逻辑代码实现:
#include
typedef unsigned char uchar;
typedef unsigned int uint;
#define LED1 P1_0
#define LED2 P1_1
#define SW1 P1_2
uchar ledState = 0;
void DelayMs(uint t)
{
uint j,k;
for(j=0;j
{
for(k=0;k<525;k++);
}
}
void InitLed(void)
{
P1SEL &= ~0x07; //把P1.0、P1.1、P1.2设为GPIO
P1DIR |= 0x03; //设置P1.0、P1.1为输出模式
LED1 = 1;
LED2 = 1; //设置为点亮状态
}
void InitSW1(void)
{
P1DIR &= ~0x04; //设置P1.2为输入模式
P1IEN |= 0x04; //使能P1.2中断模式
PICTL |= 0x02; //下降沿触发中断
IEN2 |= 0x10; //开启P1的中断
P1IFG = 0x00; //清除中断标志位
EA = 1; //开启所有中断
}
#pragma vector = P1INT_VECTOR
__interrupt void P1_ISR(void)
{
ledState = 1;
LED1 = 0;
P1IFG = 0;
P1IF = 0;
}
void main(void)
{
InitLed(); //初始化LED
InitSW1(); //初始化按键,并打开中断
while(1)
{
if(ledState == 1)
{
DelayMs(1000); //延时1s
LED2 = !LED2;
LED1 = !LED1;
}
}
}
以实现题目要求为目的,逐渐提高程序开发的效率。
举报