/*--------------------------------------------------------------------------
P89LPC901.H
(English)
This header allows to use the microcontroler Philips P89LPC901
with the compiler SDCC.

Copyright (c) 2005 Omar Espinosa--e-mail: opiedrahita2003 AT yahoo.com.

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with this library; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA

(Spanish-Espaņol)
Archivo encabezador para el ucontrolador Philips P89LPC901.
Derechos de copy (DC) 2005.  OMAR ESPINOSA P.  E-mail: opiedrahita2003 AT yahoo.com
Uso libre
--------------------------------------------------------------------------*/

#ifndef __REG901_H__
#define __REG901_H__

/*  BYTE Registers  */
__sfr __at (0x80) P0       ;
__sfr __at (0x84) P0M1     ;
__sfr __at (0x85) P0M2     ;

__sfr __at (0x90) P1       ;
__sfr __at (0x91) P1M1     ;
__sfr __at (0x92) P1M2     ;

__sfr __at (0xB0) P3       ;
__sfr __at (0xB1) P3M1     ;
__sfr __at (0xB2) P3M2     ;
//------------------
__sfr __at (0xD0) PSW      ;
__sfr __at (0xE0) ACC      ;
__sfr __at (0xF0) B        ;
__sfr __at (0x81) SP       ;
__sfr __at (0x82) DPL      ;
__sfr __at (0x83) DPH      ;
//------------------
__sfr __at (0xA2) AUXR1    ;
__sfr __at (0xAC) CMP1     ;
__sfr __at (0x95) DIVM     ;

__sfr __at (0xE7) FMADRH   ;
__sfr __at (0xE6) FMADRL   ;
__sfr __at (0xE4) FMCON    ;
__sfr __at (0xE5) FMDATA   ;

__sfr __at (0xA8) IEN0     ;
__sfr __at (0xE8) IEN1     ;

__sfr __at (0xB8) IP0      ;
__sfr __at (0xB7) IP0H     ;
__sfr __at (0xF8) IP1      ;
__sfr __at (0xF7) IP1H     ;

__sfr __at (0x94) KBCON    ;
__sfr __at (0x86) KBMASK   ;
__sfr __at (0x93) KBPATN   ;

__sfr __at (0x87) PCON     ;
__sfr __at (0xB5) PCONA    ;
__sfr __at (0xB6) PCONB    ;

__sfr __at (0xF6) PT0AD    ;
__sfr __at (0xDF) RSTSRC   ;

__sfr __at (0xD1) RTCCON   ;
__sfr __at (0xD2) RTCH     ;
__sfr __at (0xD3) RTCL     ;

__sfr __at (0x8F) TAMOD    ;
__sfr __at (0x88) TCON     ;
__sfr __at (0x8A) TL0      ;
__sfr __at (0x8B) TL1      ;
__sfr __at (0x8C) TH0      ;
__sfr __at (0x8D) TH1      ;
__sfr __at (0x89) TMOD     ;
__sfr __at (0x96) TRIM     ;

__sfr __at (0xA7) WDCON    ;
__sfr __at (0xC1) WDL      ;
__sfr __at (0xC2) WFEED1   ;
__sfr __at (0xC3) WFEED2   ;


/*  BIT Registers  */
/*  PSW   */
__sbit __at (0xD7)    PSW_7;
__sbit __at (0xD6)    PSW_6;
__sbit __at (0xD5)    PSW_5;
__sbit __at (0xD4)    PSW_4;
__sbit __at (0xD3)    PSW_3;
__sbit __at (0xD2)    PSW_2;
__sbit __at (0xD1)    PSW_1;
__sbit __at (0xD0)    PSW_0;

#define  CY      PSW_7
#define  AC      PSW_6
#define  F0      PSW_5
#define  RS1     PSW_4
#define  RS0     PSW_3
#define  OV      PSW_2
#define  F1      PSW_1
#define  P       PSW_0

/*  TCON  */
__sbit __at (0x8F)    TCON_7;
__sbit __at (0x8E)    TCON_6;
__sbit __at (0x8D)    TCON_5;
__sbit __at (0x8C)    TCON_4;

#define TF1      TCON_7
#define TR1      TCON_6
#define TF0      TCON_5
#define TR0      TCON_4

/*  IEN0   */
__sbit __at (0xAF)    IEN0_7;
__sbit __at (0xAE)    IEN0_6;
__sbit __at (0xAD)    IEN0_5;
__sbit __at (0xAB)    IEN0_3;
__sbit __at (0xA9)    IEN0_1;

#define EA       IEN0_7
#define EWDRT    IEN0_6
#define EBO      IEN0_5
#define ET1      IEN0_3
#define ET0      IEN0_1

/*  IEN1   */
__sbit __at (0xEA)    IEN1_2;
__sbit __at (0xE9)    IEN1_1;

#define EC       IEN1_2
#define EKBI     IEN1_1

/*  IP0   */
__sbit __at (0xBE)    IP0_6;
__sbit __at (0xBD)    IP0_5;
__sbit __at (0xBB)    IP0_3;
__sbit __at (0xB9)    IP0_1;

#define PWDRT    IP0_6
#define PB0      IP0_5
#define PT1      IP0_3
#define PT0      IP0_1

/*  P0  */
__sbit __at (0x85)    P0_5;
__sbit __at (0x84)    P0_4;

#define KB5      P0_5
#define CMPREF   P0_5
#define KB4      P0_4
#define CIN1A    P0_4

/*  P1  */
__sbit __at (0x95)    P1_5;
__sbit __at (0x92)    P1_2;

#define RST      P1_5
#define T0       P1_2

/*  P3  */
__sbit __at (0xB1)    P3_1;
__sbit __at (0xB0)    P3_0;

#define XTAL1    P3_1
#define XTAL2    P3_0

#endif
