C - U-netSURF

C - U-netSURF C - U-netSURF

www2.u.netsurf.ne.jp
from www2.u.netsurf.ne.jp More from this publisher
24.01.2015 Views

* Copyright (C) 1998-2006 by Project HOS */ /* http://sourceforge.jp/projects/hos/ */ /* ------------------------------------------------------------------------ */ /* Copyright (C) 2009 by TOYO-LINX Co.,Ltd.*/ /* http://www2.u-netsurf.ne.jp/~toyolinx */ /* ------------------------------------------------------------------------ */ #include "kernel.h" //#include "h83664f.h" #include "iodefine.h" #include "h8t_sci.h" #include "binary.h" //Cで2 進 数 表 示 をを 使 う(00000000-11111111) #define RECV_BUFSIZE 32 /* 受 信 トッセネァのサキ゜ズ */ static unsigned char recv_buf[RECV_BUFSIZE]; static int head; static int tail; /* SCI3 初 期 化 */ void SCI3_Initialize(unsigned char rate) { volatile int i; /* SCI3 初 期 化 */ SCI3.SCR3.BYTE = 0x00; SCI3.SMR.BYTE = 0x00; SCI3.BRR = rate; for ( i = 0; i < 280; i++ ) ; // SCI3.SCR3.BYTE = 0x20; /* 送 信 可 */ SCI3.SCR3.BYTE = 0x70; /* 送 信 可 | 受 信 可 */ IO.PMR1.BIT.TXD = 1; } /* 1 文 字 出 力 */ void SCI3_PutChar(char c) { while ( !(SCI3.SSR.BYTE & 0x80) ) ; SCI3.TDR = c; /* SCI3.SSR.BYTE &= 0x7f; */ } /* 1 文 字 入 力 */ int SCI3_GetChar(void) { unsigned char c; if (head==tail){ return -1; } c = recv_buf[head++]; 141 TK-3687mini ユーザーズマニュアル C 言 語 版

if (head>=RECV_BUFSIZE){ head = 0; } } return c; /* SCI 受 信 割 り 込 み */ void SCI3_RxiHandler(VP_INT exinf) { unsigned char c; int next; /* 1 文 字 受 信 */ c = SCI3.RDR; /* 次 の 末 尾 位 置 をを 計 算 */ next = tail + 1; if ( next == RECV_BUFSIZE ) { next = 0; } /* オーヴトーヴネローヴスェッセク */ if ( next == head ) { return; } } /* 受 信 トッセネァに 格 納 */ recv_buf[tail] = c; tail = next; /* ------------------------------------------------------------------------ */ /* Copyright (C) 1998-2006 by Project HOS */ /* http://sourceforge.jp/projects/hos/ */ /* ------------------------------------------------------------------------ */ /* Copyright (C) 2009 by TOYO-LINX Co.,Ltd.*/ /* http://www2.u-netsurf.ne.jp/~toyolinx */ /* ------------------------------------------------------------------------ */ シリアル 制 御 用 プログラムのプロトタイプ 宣 言 と 定 義 ファイル「h8_sci.h」を 次 のように 改 造 します ( 一 部 分 抜 粋 , 黄 色 でマークしている 行 が 追 加 部 分 )。 /* SCI3 */ void SCI3_Initialize(unsigned char rate); /* SCI3 初 期 化 */ void SCI3_PutChar(char c); /* 1 文 字 出 力 */ int SCI3_GetChar(void); /* 1 文 字 入 力 */ void SCI3_RxiHandler(VP_INT exinf); /* 受 信 割 り 込 みデンルチラ */ /* assign SCI3 for SCI*/ #define Sci_Initialize SCI3_Initialize 142 TK-3687mini ユーザーズマニュアル C 言 語 版

* Copyright (C) 1998-2006 by Project HOS */<br />

/* http://sourceforge.jp/projects/hos/ */<br />

/* ------------------------------------------------------------------------ */<br />

/* Copyright (C) 2009 by TOYO-LINX Co.,Ltd.*/<br />

/* http://www2.u-netsurf.ne.jp/~toyolinx */<br />

/* ------------------------------------------------------------------------ */<br />

#include "kernel.h"<br />

//#include "h83664f.h"<br />

#include "iodefine.h"<br />

#include "h8t_sci.h"<br />

#include "binary.h"<br />

//Cで2 進 数 表 示 をを 使 う(00000000-11111111)<br />

#define RECV_BUFSIZE 32 /* 受 信 トッセネァのサキ゜ズ */<br />

static unsigned char recv_buf[RECV_BUFSIZE];<br />

static int head;<br />

static int tail;<br />

/* SCI3 初 期 化 */<br />

void SCI3_Initialize(unsigned char rate)<br />

{<br />

volatile int i;<br />

/* SCI3 初 期 化 */<br />

SCI3.SCR3.BYTE = 0x00;<br />

SCI3.SMR.BYTE = 0x00;<br />

SCI3.BRR = rate;<br />

for ( i = 0; i < 280; i++ )<br />

;<br />

// SCI3.SCR3.BYTE = 0x20; /* 送 信 可 */<br />

SCI3.SCR3.BYTE = 0x70; /* 送 信 可 | 受 信 可 */<br />

IO.PMR1.BIT.TXD = 1;<br />

}<br />

/* 1 文 字 出 力 */<br />

void SCI3_PutChar(char c)<br />

{<br />

while ( !(SCI3.SSR.BYTE & 0x80) )<br />

;<br />

SCI3.TDR = c;<br />

/* SCI3.SSR.BYTE &= 0x7f; */<br />

}<br />

/* 1 文 字 入 力 */<br />

int SCI3_GetChar(void)<br />

{<br />

unsigned char c;<br />

if (head==tail){<br />

return -1;<br />

}<br />

c = recv_buf[head++];<br />

141<br />

TK-3687mini ユーザーズマニュアル C 言 語 版

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!