📄 ledutl.c
字号:
/*""FILE COMMENT""*************************************************************
* System Name : 偙偺僾儘僌儔儉偼嫵堢梡偱偡丅(揮梡晄壜)
* File Name : LEDUTL.c
* Contents : LED偺惂屼
* Model : OAKS8-LCD Board懳墳
* CPU : R8C/Tiny僔儕乕僘
* Compiler : NC30WA(V.5.30 Release 1)
* OS : 巊梡偣偢
* Programer : 儖僱僒僗敿摫懱僩儗乕僯儞僌僙儞僞乕
* Note : OAKS8-R5F21114FP(R8C/11僌儖乕僾,20MHz)懳墳
*******************************************************************************
* COPYRIGHT(C) 2004 RENESAS TECHNOLOGY CORPORATION
* AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED
*******************************************************************************
* History : ---
*""FILE COMMENT END""*********************************************************/
/*===== 僀儞僋儖乕僪僼傽僀儖 =====*/
#include "defs.h" /* 嫟捠偺僔儞儃儖掕媊 */
#include "target.h" /* SFR椞堟掕媊僼傽僀儖 */
#include "ledutl.h" /* LED惂屼梡僿僢僟僼傽僀儖 */
/*===== 儅僋儘柤掕媊 =====*/
#define PERIOD 0x24 /* '.' */
#define SPACE 0x25 /* ' ' */
#define MINUS 0x26 /* '-' */
/*===== 娭悢尨宆(僾儘僩僞僀僾愰尵) =====*/
/*===== 曄悢愰尵 =====*/
static int init_hard; /* 僴乕僪僂僃傾弶婜壔娗棟曄悢 */
/* 0:枹弶婜壔丄1:弶婜壔嵪傒 */
static const unsigned char ptntable[] = { /* LED昞帵僷僞乕儞僥乕僽儖 */
/* '0', '1', '2', '3', '4', '5', '6', '7' */
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xf8,
/* '8', '9', 'A', 'b', 'c', 'd', 'E', 'F' */
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E,
/* 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N' */
0x7F, 0x89, 0xCF, 0xF1, 0x7F, 0xC7, 0x7F, 0xAB,
/* 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V' */
0xA3, 0x8C, 0x7F, 0xAF, 0x7F, 0x7F, 0xC1, 0x7F,
/* 'W', 'X', 'Y', 'Z', '.', ' ', '-' */
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xBF
};
static const unsigned char digtable[] = { /* LED揰摂寘巜掕僨乕僞僥乕僽儖 */
/* ALL-OFF, LED0 , LED1 , LED2 , LED3 */
0xFF , 0xFD , 0xFB , 0xF7 , 0xEF
};
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : void LED__initialize(void)
* 婡擻 : LED娭楢億乕僩偺弶婜壔
* 堷悢 : 側偟
* 曉媝抣 : 側偟
* 巊梡娭悢 : 側偟
* 拲堄帠崁 : 側偟
* History :
*""FUNC COMMENT END""*********************************************************/
void LED__initialize(void)
{
init_hard = TRUE; /* LED乽弶婜壔嵪傒乿 */
p0 = 0xFF; /* 億乕僩P0偵弶婜抣愝掕(徚摂僷僞乕儞) */
prc2 = 1; /* 億乕僩P0曽岦儗僕僗僞傊偺彂偒崬傒傪嫋壜 */
pd0 = 0x0F; /* 億乕僩P00乣P03傪弌椡億乕僩偵愝掕 */
p1 = 0xFF; /* 億乕僩P1偵弶婜抣愝掕(揰摂寘柍巜掕) */
pd1 = 0xFF; /* 億乕僩P10乣P17傪弌椡億乕僩偵愝掕 */
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : int LED__putchar(int led , int c)
* 婡擻 : 巜掕偝傟偨LED偵巜掕偝傟偨暥帤傪昞帵偡傞
* 堷悢 : int led :昞帵偡傞LED偺斣崋
* : int c :昞帵偡傞暥帤
* 曉媝抣 : int OK ; 惓忢廔椆
* : ERR ; 枹弶婜壔
* 巊梡娭悢 : 側偟
* 拲堄帠崁 : 側偟
* History :
*""FUNC COMMENT END""*********************************************************/
int LED__putchar(int led, int c)
{
int err = ERR; /* 僄儔乕僐乕僪 */
int index = 0; /* 僥乕僽儖専嶕梡僀儞僨僢僋僗 */
if(init_hard){ /* 弶婜壔嵪傒偱偁傞偐妋擣 */
/* 昞帵寘偺斖埻傪僠僃僢僋 */
if((0 <= led) && (led <= 3)){
if(c >= 'a'){ /* 巜掕偝傟偨暥帤偑彫暥帤偱偁傟偽 */
c = c - 0x20; /* 戝暥帤偵曄姺 */
}
switch(c){ /* 巜掕偝傟偨暥帤偑 */
case ' ' : /* 嬻敀暥帤(' ')偺帪 */
index = SPACE;
err = OK;
break;
case '-' : /* '-'偺帪 */
index = MINUS;
err = OK;
break;
default : /* 塸悢帤偺帪 */
c = c - '0'; /* ACCII僐乕僪偵曄姺 */
if(c < 10){ /* 悢帤偺帪 */
index = c;
err = OK;
} /* 塸帤偺帪 */
else if((c >= 0x11) && (c <= 0x2A)){
index = c - 0x07;
err = OK;
}
else{
index = PERIOD;
}
break;
}
}
else{
index = PERIOD;
led = 0;
}
p1 = ptntable[SPACE]; /* 偵偠傒杊巭 */
p0 = digtable[led + 1]; /* 億乕僩P0偵揰摂寘巜掕僨乕僞傪弌椡 */
p1 = ptntable[c]; /* 億乕僩P1偵昞帵僷僞乕儞傪弌椡 */
}
return err; /* 幚峴寢壥傪曉偡 */
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : int LED__puthex(int led , int hex)
* 婡擻 : 巜掕偝傟偨LED偵巜掕偝傟偨悢帤('0'乣'F')傪昞帵偡傞
* 堷悢 : int led :昞帵偡傞LED偺斣崋
* : int hex :昞帵偡傞悢帤('0'乣'F')
* 曉媝抣 : int OK ; 惓忢廔椆
* : ERR ; 枹弶婜壔
* 巊梡娭悢 : 側偟
* 拲堄帠崁 : 側偟
* History :
*""FUNC COMMENT END""*********************************************************/
int LED__puthex(int led, int hex)
{
int err = ERR; /* 僄儔乕僐乕僪 */
if(init_hard){ /* 弶婜壔嵪傒偱偁傞偐妋擣 */
/* 昞帵寘偺斖埻傪僠僃僢僋 */
if((0 <= led) && (led <= 3)){
/* 昞帵偡傞悢帤偺斖埻傪僠僃僢僋 */
if((0 <= hex) && (hex <= 0xf)){
err = OK;
}
else{ /* 昞帵偡傞悢帤偑斖埻奜偱偁傟偽 */
hex = PERIOD; /* '.'昞帵傪僙僢僩 */
}
}
else{ /* 昞帵寘偑斖埻奜偱偁傟偽 */
hex = PERIOD; /* LED0偵'.'昞帵 */
led = 0;
}
p1 = ptntable[SPACE]; /* 偵偠傒杊巭 */
p0 = digtable[led + 1]; /* 億乕僩P0偵揰摂寘巜掕僨乕僞傪弌椡 */
p1 = ptntable[hex]; /* 億乕僩P1偵昞帵僷僞乕儞傪弌椡 */
}
return err ; /* 幚峴寢壥傪曉偡 */
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : int LED__putdig(int led)
* 婡擻 : 巜掕偝傟偨LED偵昞帵偡傞
* 堷悢 : int led :昞帵偡傞LED偺斣崋
* 曉媝抣 : int OK ; 惓忢廔椆
* : ERR ; 枹弶婜壔
* 巊梡娭悢 : 側偟
* 拲堄帠崁 : 側偟
* History :
*""FUNC COMMENT END""*********************************************************/
int LED__putdig(int led)
{
int err = ERR; /* 僄儔乕僐乕僪 */
if(init_hard){ /* 弶婜壔嵪傒偱偁傞偐妋擣 */
if((0 <= led) && (led <= 3)){ /* 昞帵寘偺斖埻傪僠僃僢僋 */
p0 = digtable[led + 1] ; /* 億乕僩P0偵揰摂寘巜掕僨乕僞傪弌椡 */
err = OK;
}
}
return err; /* 幚峴寢壥傪曉偡 */
}
/*""FUNC COMMENT""*************************************************************
* ID : ---
* 娭悢柤 : int LED__putseg(int num)
* 婡擻 : 巜掕偝傟偨悢抣傪昞帵偡傞
* 堷悢 : num :昞帵偡傞悢抣
* 曉媝抣 : int OK ; 惓忢廔椆
* : ERR ; 枹弶婜壔
* 巊梡娭悢 : 側偟
* 拲堄帠崁 : 側偟
* History :
*""FUNC COMMENT END""*********************************************************/
int LED__putseg(int num)
{
int err = ERR; /* 僄儔乕僐乕僪 */
if(init_hard){ /* 弶婜壔嵪傒偱偁傞偐妋擣 */
/* 昞帵偡傞悢帤偺斖埻傪僠僃僢僋 */
if((0 <= num) && (num <= 0x0f)){
p1 = ptntable[num]; /* 億乕僩P1偵昞帵僷僞乕儞傪弌椡 */
err = OK;
}
}
return err; /* 幚峴寢壥傪曉偡 */
}
/* #############################################################################
* ### 岞奐偟側偄娭悢
*/
/******************************************************************************
end of file
******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -