文章目录
9 矩阵键盘
初始化时为11111110 即0xfe(从高位开始算):
当S1被按下是,变成了0xee:
经过一段时间检测,如果还是0xee,则代表按键按下,同理可以得到其他按键的状态。
例如:当2被按下时:
10 定时器与计数器基础开发
1s亮灭一次,亮0.5s,灭0.5s。
LED电路原理图:
T1CTL设置:
标记频率/128,自由运行从0x0000至0xffff。
系统默认时钟是2分频,即32MHZ/2=16MHZ,标记频率/128,即16M/128=0.125M(定时器频率)
1/.125M=8us,每次8us,自由运行0XFFFF=65535,65535*8=524280us=524.28ms,大约是0.5s。
T1STAT设置:
选择0通道:
示例代码:
#include <ioCC2540.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define LED1 P1_0
void ledinit(void)
{
P1DIR |= 0x01; //00000001
LED1 = 0;
}
void T1init(void)
{
T1CTL = 0x0d;//128分频,自由运行从0x0000至0xffff
T1STAT = 0x21;//0010 0001 溢出复位Timer 1 counter-overflow interrupt flag选择0通道
}
/***************************
//主函数
***************************/
void main(void)
{
uchar count = 0;
ledinit();
T1init();
while(1)
{
if(IRCON > 0) //有中断进入
{
IRCON = 0; //清除中断(必要)
if(count++ >=1) //记录1s
{
count = 0; //清除计数
LED1=~LED1;
}
}
}
}