チーム1528

課題名

高橋名人にCHALLENGE!!

研究者名

2-15-15 大槻隼也
2-15-19 小澤裕也

概要

ボタン連打ゲーム!!
10秒間にSWボタンを押した回数を表示する。

使用した器具

PSoC1台
ジャンパー線1本

ソースコード

#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#pragma interrupt_handler myISR
#include <stdio.h>
#include <stdlib.h>
#define SW 0b00100000 //スイッチPort1_5


int count = 0; //押した回数の記録
int flag = 0; //スイッチの状態
int TC=0;//タイマーカウント
char line[3];

void myISR(void){
TC += 1;
if(TC==0){
    LCD_1_Position(1,0);
     LCD_1_PrCString("10");
     }
 else if(TC==1){
     LCD_1_Position(1,0);
     LCD_1_PrCString("9");
     }
 else if(TC==2){
     LCD_1_Position(1,0);
     LCD_1_PrCString("8");
     }
 else if(TC==3){
     LCD_1_Position(1,0);
     LCD_1_PrCString("7");
     }
 else if(TC==4){
     LCD_1_Position(1,0);
     LCD_1_PrCString("6");
     }
 else if(TC==5){
     LCD_1_Position(1,0);
     LCD_1_PrCString("5");
     }
 else if(TC==6){
     LCD_1_Position(1,0);
     LCD_1_PrCString("4");
     }
 else if(TC==7){
     LCD_1_Position(1,0);
     LCD_1_PrCString("3");
     }
 else if(TC==8){
     LCD_1_Position(1,0);
     LCD_1_PrCString("2");
     }
 else if(TC==9){
     LCD_1_Position(1,0);
     LCD_1_PrCString("1");
     }
 else if(TC==10){
     LCD_1_Position(1,0);
     LCD_1_PrCString("0");
 }
 }

void main(void)
{
  M8C_EnableGInt ;
   LCD_1_Start();
    LCD_1_PrCString("START!");
   PRT0DR &= (~SW);
    Timer16_1_EnableInt();
   Timer16_1_Start();  
   while(1) {
     if(TC>=10){
         break;}
     if(PRT0DR & SW) {
      if(flag ==0) {
         flag = 1;
         count++;
         //LCD_1_Position(0,6);
         //LCD_1_PrCString("SW");
      }
     }
        else {
           flag = 0;
     }
   }
   LCD_1_Position(5,0);
   csprintf(line,"%d",count);
   LCD_1_PrString(line);

}

考察

タイマーを1秒ごとに進めるために、SysCLKの値からV3の周波数が何Hzか計算し、計算結果をもとにTimerのperiodの値を調節した。また、LCDにカウントダウンの表示をした。また、ボタンを押しっぱなしにしたときにカウントが進まないように、if文でスイッチの状態が0から1に変わったときにだけカウントを進めるようにした。さらに改良できそうな点としては、押した回数によっていろいろな音が鳴るようにしたら、もっとゲームとして面白いものができたと思う。また、PSoCを2台使用して赤外線通信し、対戦することもできるだろう。

  • 最終更新:2015-06-16 16:28:08

このWIKIを編集するにはパスワード入力が必要です

認証パスワード