사물 인터넷|매트릭스 키보드|타이머 및 카운터의 기본 개발|Bluetooth 4.0 BLE 사물 인터넷의 기본-연구 노트(5)

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;
      }
    }
  }

}

매개변수 설정 요약:

여기에 이미지 설명 삽입

Supongo que te gusta

Origin blog.csdn.net/Medlar_CN/article/details/130624832
Recomendado
Clasificación