61 lines
1.2 KiB
C
61 lines
1.2 KiB
C
/*
|
|
PS/2 キーボードを SHARP X1 につなぐ
|
|
100[ms] のインターバルタイマー
|
|
|
|
PS/2 の受信タイムアウトで使っています。
|
|
|
|
|
|
2014年7月22日 作成
|
|
|
|
佐藤恭一 http://kyoutan.jpn.org/
|
|
|
|
無保証です。
|
|
佐藤恭一が作成した部分は用途に制限を設けません。商用・非商用にかかわらず自由に使用して頂いて構いません。
|
|
勝手に複製したり、改造したり、配布したり、売ったりしても良いということです。
|
|
連絡不要です。
|
|
*/
|
|
|
|
#include "sfr_r8m12a.h"
|
|
#include "timer.h"
|
|
#include "ps2.h"
|
|
#include "iodefine.h"
|
|
|
|
volatile unsigned short TIMER=0; // 100[ms]タイマー
|
|
|
|
void timer_init(void)
|
|
{
|
|
// TIMER RB2 初期化 100ms インターバルタイマー
|
|
msttrb=0; // スタンバイ解除
|
|
trbcr=0b00000100; // カウント停止
|
|
trbmr=0b01100100; // f64分周 16ビット タイマモード
|
|
/*
|
|
100[ms] = 100000[us] = 1843200
|
|
f2 921600
|
|
f4 460800
|
|
f8 230400
|
|
f16 115200
|
|
f32 57600
|
|
f64 28800 = 0x7080
|
|
*/
|
|
// 100[ms] = f64 0x7080
|
|
trbpre=0x80; // 下位8ビット
|
|
trbpr=0x70; // 上位8ビット
|
|
trbie_trbir=1; // 割り込み許可
|
|
}
|
|
|
|
/*
|
|
void timer_start(void)
|
|
{
|
|
tstart_trbcr=1; // TIMER RB2 カウント開始
|
|
}
|
|
*/
|
|
|
|
#pragma INTERRUPT INT_trb(vect=24)
|
|
void INT_trb(void)
|
|
{
|
|
TIMER++;
|
|
if(0xFF != PS2TIMER) PS2TIMER++; // タイムアウト処理用オーバーフローさせない
|
|
|
|
while(trbif_trbir==1) trbif_trbir=0; // 割り込みフラグクリア
|
|
}
|