チーム1565
課題名
キータイマー
研究者名
Naoya Miyata
Singuu Kiichi
概要
PCのシリアルポートを用いて、キーボードで入力した数値から始まるタイマーを作成した。
使用器具
PSoC基盤 1個
PSoCMiniProg 1個
ストレート通信ケーブル 1個
ジャンパ線 2本
ソースコード
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#pragma interrupt_handler countISR
int TC = 0;
int sec = 0;
char* strPtr;
char *atoa( int val, char *a, int radix ){
char *p = a; unsigned int v = val; int n = 1; while(v >= radix){ v /= radix; n++; } p = a + n; v = val; *p = '\0'; do { --p; *p = v % radix + '0'; if(*p > '9') { *p = v % radix - 10 + 'A'; } v /= radix; } while ( p != a); return a;
}
void inputSec(void){
UART_1_CPutString("\r\nHow many second?\r\n"); while(1){ if(UART_1_bCmdCheck()){ strPtr = UART_1_szGetParam(); break; } } UART_1_PutString(strPtr); sec = atoi(strPtr);
}
void countISR(void){
TC++; if(TC == 6){ sec--; TC = 0; if(sec == 0){ UART_1_CPutString("\r\nFinish!\r\n"); sec--; } else if(sec > 0){ atoa(sec,strPtr,10); UART_1_CPutString("\r\n"); UART_1_PutString(strPtr); } }
}
void main(void){
M8C_EnableGInt; //Timer Timer16_1_EnableInt(); //UART UART_1_CmdReset(); UART_1_IntCntl(UART_1_ENABLE_RX_INT); UART_1_Start(UART_PARITY_NONE); //Counter Counter8_1_WritePeriod(155); Counter8_1_WriteCompareValue(77); Counter8_1_Start(); inputSec(); Timer16_1_Start(); while(1){ };
}
考察
入力した数値から始まるダウンカウンタをPC画面上で表示することが出来た。
入力した数値から約1秒間隔でカウントダウンを行い、最後には"Finish!"という単語を表示するようにした。
しかし、タイマーを途中で停止したり、LCDに文章の表示、光や音を利用するつもりであったが、時間がなく取り組むことが出来なかった。
結果的に、タイマーとしては完成したが、いまいち機能が物足りないものとなってしまった。
- 最終更新:2015-12-22 16:36:54