⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ledutl.c

📁 一个瑞萨单片机的程序。。。供大家学习用。。。。。。。。。。。。。。。。。。
💻 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 + -