文章目录:
实验要求
代码实现
#include "ioCC2530.h"
#define D4 P1_1
#define D6 P1_4
#define SW1 P1_2
unsigned int count = 0;
unsigned char K_Press = 0;
//延迟函数
void Delay(unsigned int t)
{
while(t--);
}
//端口初始化函数
void Init_Prot()
{
//配置4个LED灯的引擎
//选择端口的功能
P1SEL &=~0x1B;//设置通用io端口
//配置端口的方向
P1DIR |=0x1B;
//关闭LED灯
P1 &=~0x1B;
//按键
P1SEL &=~0x04;//输入
P1DIR &=0x04;
P1INP &=0x04;//上拉模式
P2INP &=0x40;
}
//定时器的初始化
void Init_Timer1()
{
//1.设置最大计数值
T1CCOL = 0xD4;//先低8位
T1CCOH = 0x30;//再高8位
//2.开启通道0的比较模式
T1CCTL0 |=0x04;
//3.使能定时器1的中断
T1IE=1;
//4.打开使能总中断
EA=1;
//5.设置定时器1的分频数和工作模式
T1CTL=0x0E;
}
//定时器的中断服务函数
#pragma vector = T1_VECTOR //起始语句
//中断服务函数
__interrupt void Service_Timer1()
{
if(K_Press==1)
{
count++;
}
}
//按键扫描函数
void Scan_Keys()
{
//按键1
if(SW1 == 0)//可能有按键按下,那么进行去抖动操作
{
Delay(200);
if(SW1 == 0)//那么就是按键触发的信号
{
K_Press==1;
//按键处理程序
while(SW1 == 0);
//低电平、按下状态
K_Press==0;
if(count>5)
{
D4=~D4;
}
else
{
D6=~D6;
}
count=0;
}
}
}
void main(void)
{
//端口初始化
Init_Prot();
Init_Timer1();
while(1)
{
Scan_Keys();
}
}