<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 6.4, http://www.gnu.org/software/texinfo/ -->
<head>
<title>leds.c (Embed with GNU)</title>

<meta name="description" content="leds.c (Embed with GNU)">
<meta name="keywords" content="leds.c (Embed with GNU)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Code-Listings.html#Code-Listings" rel="up" title="Code Listings">
<link href="io_002ec.html#io_002ec" rel="prev" title="io.c">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en">
<a name="leds_002ec"></a>
<div class="header">
<p>
Previous: <a href="io_002ec.html#io_002ec" accesskey="p" rel="prev">io.c</a>, Up: <a href="Code-Listings.html#Code-Listings" accesskey="u" rel="up">Code Listings</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
</div>
<hr>
<a name="Led-control-sample"></a>
<h3 class="section">A.6 Led control sample</h3>

<div class="example">
<pre class="example">/*
 * leds.h -- control the led's on a Motorola mc68ec0x0 board.
 */

#ifndef __LEDS_H__
#define __LEDS_H__

#define LED_ADDR	0xd00003
#define LED_0           ~0x1
#define LED_1           ~0x2
#define LED_2           ~0x4
#define LED_3           ~0x8
#define LED_4           ~0x10
#define LED_5           ~0x20
#define LED_6           ~0x40
#define LED_7           ~0x80
#define LEDS_OFF	0xff
#define LEDS_ON		0x0

#define FUDGE(x) ((x &gt;= 0xa &amp;&amp; x &lt;= 0xf) ? (x + 'a') &amp; 0x7f : (x + '0') &amp; 0x7f)

extern void led_putnum( char );

#endif		/* __LEDS_H__ */

/*
 * leds.c -- control the led's on a Motorola mc68ec0x0 (IDP)board.
 */
#include &quot;leds.h&quot;

void zylons();
void led_putnum();

/*
 * led_putnum -- print a hex number on the LED. the value of num must be a char with
 *              the ascii value. ie... number 0 is '0', a is 'a', ' ' (null) clears
 *		the led display.
 *		Setting the bit to 0 turns it on, 1 turns it off.
 * 		the LED's are controlled by setting the right bit mask in the base
 * 		address. 
 *		The bits are:
 *			[d.p | g | f | e | d | c | b | a ] is the byte.
 *
 *		The locations are:
 *		
 *			 a
 *		       -----
 *		    f |     | b
 *		      |  g  |
 *		       -----
 *                    |     |
 *                  e |     | c
 *                     -----
 *                       d                . d.p (decimal point)
 */
void
led_putnum ( num )
char num;
{
    static unsigned char *leds = (unsigned char *)LED_ADDR;
    static unsigned char num_bits [18] = {
      0xff,						/* clear all */
      0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x98, /* numbers 0-9 */
      0x98, 0x20, 0x3, 0x27, 0x21, 0x4, 0xe 		/* letters a-f */
    };

    if (num &gt;= '0' &amp;&amp; num &lt;= '9')
      num = (num - '0') + 1;

    if (num &gt;= 'a' &amp;&amp; num &lt;= 'f')
      num = (num - 'a') + 12;

    if (num == ' ')
      num = 0;

    *leds = num_bits[num];
}

/*
 * zylons -- draw a rotating pattern. NOTE: this function never returns.
 */
void
zylons()
{
  unsigned char *leds 	= (unsigned char *)LED_ADDR;
  unsigned char curled = 0xfe;

  while (1)
    {
      *leds = curled;
      curled = (curled &gt;&gt; 1) | (curled &lt;&lt; 7);
      delay ( 200 );
    }
}
</pre></div>

<a name="SEC_Contents"></a>
<h2 class="contents-heading">Table of Contents</h2>

<div class="contents">

<ul class="no-bullet">
  <li><a name="toc-Libgloss-1" href="Libgloss.html#Libgloss">1 Libgloss</a>
  <ul class="no-bullet">
    <li><a name="toc-Supported-Targets" href="Supported-targets.html#Supported-targets">1.1 Supported Targets</a>
    <ul class="no-bullet">
      <li><a name="toc-Sparclite-Targets-Supported" href="Sparclite.html#Sparclite">1.1.1 Sparclite Targets Supported</a></li>
      <li><a name="toc-Motorola-CPU32-Targets-supported" href="CPU32.html#CPU32">1.1.2 Motorola CPU32 Targets supported</a></li>
      <li><a name="toc-Mips-core-Targets-Supported" href="Mips.html#Mips">1.1.3 Mips core Targets Supported</a></li>
      <li><a name="toc-PA_002dRISC-Targets-Supported" href="PA_002dRISC.html#PA_002dRISC">1.1.4 PA-RISC Targets Supported</a></li>
    </ul></li>
    <li><a name="toc-Configuring-and-building-libgloss_002e" href="Building-libgloss.html#Building-libgloss">1.2 Configuring and building libgloss.</a></li>
    <li><a name="toc-Adding-Support-for-a-New-Board" href="Board-support.html#Board-support">1.3 Adding Support for a New Board</a></li>
  </ul></li>
  <li><a name="toc-Porting-GCC" href="GCC.html#GCC">2 Porting GCC</a>
  <ul class="no-bullet">
    <li><a name="toc-Compilation-passes" href="Overview.html#Overview">2.1 Compilation passes</a></li>
  </ul></li>
  <li><a name="toc-Porting-newlib" href="Libraries.html#Libraries">3 Porting newlib</a>
  <ul class="no-bullet">
    <li><a name="toc-Crt0_002c-the-main-startup-file" href="Crt0.html#Crt0">3.1 Crt0, the main startup file</a></li>
    <li><a name="toc-Linker-scripts-for-memory-management" href="Linker-Scripts.html#Linker-Scripts">3.2 Linker scripts for memory management</a></li>
    <li><a name="toc-What-to-do-when-you-have-a-binary-image" href="What-to-do-now.html#What-to-do-now">3.3 What to do when you have a binary image</a></li>
    <li><a name="toc-Libraries-1" href="Libc.html#Libc">3.4 Libraries</a>
    <ul class="no-bullet">
      <li><a name="toc-Making-I_002fO-work" href="I_002fO-Support.html#I_002fO-Support">3.4.1 Making I/O work</a></li>
      <li><a name="toc-Routines-for-dynamic-memory-allocation" href="Memory-Support.html#Memory-Support">3.4.2 Routines for dynamic memory allocation</a></li>
      <li><a name="toc-Misc-support-routines" href="Misc-Support.html#Misc-Support">3.4.3 Misc support routines</a></li>
      <li><a name="toc-Useful-debugging-functions" href="Debugging.html#Debugging">3.4.4 Useful debugging functions</a></li>
    </ul></li>
  </ul></li>
  <li><a name="toc-Writing-a-new-GDB-backend" href="GDB.html#GDB">4 Writing a new GDB backend</a>
  <ul class="no-bullet">
    <li><a name="toc-The-standard-remote-protocol" href="GNU-remote-protocol.html#GNU-remote-protocol">4.1 The standard remote protocol</a></li>
    <li><a name="toc-A-linked-in-exception-handler" href="Exception-handler.html#Exception-handler">4.2 A linked in exception handler</a></li>
    <li><a name="toc-Using-a-ROM-monitor-as-a-backend" href="ROM-monitors.html#ROM-monitors">4.3 Using a ROM monitor as a backend</a></li>
    <li><a name="toc-Adding-support-for-new-protocols" href="Other-remote-protocols.html#Other-remote-protocols">4.4 Adding support for new protocols</a></li>
  </ul></li>
  <li><a name="toc-Code-Listings-1" href="Code-Listings.html#Code-Listings">Appendix A Code Listings</a>
  <ul class="no-bullet">
    <li><a name="toc-Linker-script-for-the-IDP-board" href="idp_002eld.html#idp_002eld">A.1 Linker script for the IDP board</a></li>
    <li><a name="toc-crt0_002eS-_002d-The-startup-file" href="crt0_002eS.html#crt0_002eS">A.2 crt0.S - The startup file</a></li>
    <li><a name="toc-C-based-_0022glue_0022-code_002e" href="glue_002ec.html#glue_002ec">A.3 C based &quot;glue&quot; code.</a></li>
    <li><a name="toc-I_002fO-assembler-code-sample" href="mvme_002eS.html#mvme_002eS">A.4 I/O assembler code sample</a></li>
    <li><a name="toc-I_002fO-code-sample" href="io_002ec.html#io_002ec">A.5 I/O code sample</a></li>
    <li><a name="toc-Led-control-sample" href="#leds_002ec">A.6 Led control sample</a></li>
  </ul></li>
</ul>
</div>

<hr>
<div class="header">
<p>
Previous: <a href="io_002ec.html#io_002ec" accesskey="p" rel="prev">io.c</a>, Up: <a href="Code-Listings.html#Code-Listings" accesskey="u" rel="up">Code Listings</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
</div>



</body>
</html>