9 매트릭스 키보드
초기화 중에는 11111110이며 이는 0xfe(높은 비트부터 계산)입니다.
S1을 누르면 0xee가 됩니다.
감지 기간이 지난 후에도 여전히 0xee이면 버튼이 눌려진 것이므로 다른 버튼의 상태도 같은 방식으로 얻을 수 있습니다.
예: 2를 눌렀을 때:
10 타이머 및 카운터의 기본 개발
1초에 한 번씩 켜고 끄고, 0.5초 동안 켜고, 0.5초 동안 끕니다.
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.5초입니다.
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;
}
}
}
}