FwLib_STC8/include/fw_reg_base.h

257 lines
8.1 KiB
C
Raw Normal View History

2021-12-30 16:09:36 +01:00
// Copyright 2021 IOsetting <iosetting(at)outlook.com>
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
2021-12-29 18:05:13 +01:00
#ifndef __IO_REG_BASE_H__
#define __IO_REG_BASE_H__
#if defined (SDCC) || defined (__SDCC)
2021-12-31 13:53:02 +01:00
#define __BIT __bit
2021-12-29 18:05:13 +01:00
#define __IDATA __idata
#define __XDATA __xdata
#define __CODE __code
#define SBIT(name, addr, bit) __sbit __at(addr+bit) name
#define SFR(name, addr) __sfr __at(addr) name
#define SFRX(addr) (*(unsigned char volatile __xdata *)(addr))
#define SFR16X(addr) (*(unsigned int volatile __xdata *)(addr))
#define INTERRUPT(name, vector) void name (void) __interrupt (vector)
#define INTERRUPT_USING(name, vector, regnum) void name (void) __interrupt (vector) __using (regnum)
#define NOP() __asm NOP __endasm
#elif defined __CX51__
2021-12-31 13:53:02 +01:00
#define __BIT bit
2021-12-29 18:05:13 +01:00
#define __IDATA idata
#define __XDATA xdata
#define __CODE code
#define SBIT(name, addr, bit) sbit name = addr^bit
#define SFR(name, addr) sfr name = addr
#define SFRX(addr) (*(unsigned char volatile xdata *)(addr))
#define SFR16X(addr) (*(unsigned int volatile xdata *)(addr))
#define INTERRUPT(name, vector) void name (void) interrupt vector
#define INTERRUPT_USING(name, vector, regnum) void name (void) interrupt vector using regnum
extern void _nop_ (void);
#define NOP() _nop_()
#else
#include <stdbool.h>
#include <lint.h>
# warning unrecognized compiler
2021-12-31 13:53:02 +01:00
#define __BIT bool
#define __IDATA
#define __XDATA
#define __CODE
#define SBIT(name, addr, bit) volatile bool name
#define SFR(name, addr) volatile unsigned char name
#define SFRX(addr) (*(unsigned char volatile *)(addr))
#define SFR16X(addr) (*(unsigned char volatile *)(addr))
2021-12-29 18:05:13 +01:00
#define INTERRUPT(name, vector) void name (void)
#define INTERRUPT_USING(name, vector, regnum) void name (void)
2021-12-30 05:19:02 +01:00
#define NOP()
2021-12-29 18:05:13 +01:00
#endif
#define _P0 0x80
SFR(P0, _P0);
SBIT(P00, _P0, 0);
SBIT(P01, _P0, 1);
SBIT(P02, _P0, 2);
SBIT(P03, _P0, 3);
SBIT(P04, _P0, 4);
SBIT(P05, _P0, 5);
SBIT(P06, _P0, 6);
SBIT(P07, _P0, 7);
SFR(SP, 0x81);
SFR(DPL, 0x82);
SFR(DPH, 0x83);
SFR(S4CON, 0x84);
SFR(S4BUF, 0x85);
SFR(PCON, 0x87);
#define _TCON 0x88
SFR(TCON, _TCON);
SBIT(TF1, _TCON, 7);
SBIT(TR1, _TCON, 6);
SBIT(TF0, _TCON, 5);
SBIT(TR0, _TCON, 4);
SBIT(IE1, _TCON, 3);
SBIT(IT1, _TCON, 2);
SBIT(IE0, _TCON, 1);
SBIT(IT0, _TCON, 0);
SFR(TMOD, 0x89);
SFR(TL0, 0x8A);
SFR(TL1, 0x8B);
SFR(TH0, 0x8C);
SFR(TH1, 0x8D);
SFR(AUXR, 0x8E);
SFR(INTCLKO, 0x8F);
#define _P1 0x90
SFR(P1, _P1);
SBIT(P10, _P1, 0);
SBIT(P11, _P1, 1);
SBIT(P12, _P1, 2);
SBIT(P13, _P1, 3);
SBIT(P14, _P1, 4);
SBIT(P15, _P1, 5);
SBIT(P16, _P1, 6);
SBIT(P17, _P1, 7);
SFR(P1M1, 0x91);
SFR(P1M0, 0x92);
SFR(P0M1, 0x93);
SFR(P0M0, 0x94);
SFR(P2M1, 0x95);
SFR(P2M0, 0x96);
#define _SCON 0x98
SFR(SCON, _SCON);
SBIT(SM0, _SCON, 7);
SBIT(SM1, _SCON, 6);
SBIT(SM2, _SCON, 5);
SBIT(REN, _SCON, 4);
SBIT(TB8, _SCON, 3);
SBIT(RB8, _SCON, 2);
SBIT(TI, _SCON, 1);
SBIT(RI, _SCON, 0);
SFR(SBUF, 0x99);
SFR(S2CON, 0x9A);
SFR(S2BUF, 0x9B);
SFR(IRCBAND, 0x9D);
SFR(LIRTRIM, 0x9E);
SFR(IRTRIM, 0x9F);
#define _P2 0xA0
SFR(P2, _P2);
SBIT(P20, _P2, 0);
SBIT(P21, _P2, 1);
SBIT(P22, _P2, 2);
SBIT(P23, _P2, 3);
SBIT(P24, _P2, 4);
SBIT(P25, _P2, 5);
SBIT(P26, _P2, 6);
SBIT(P27, _P2, 7);
SFR(P_SW1, 0xA2);
SFR(VRTRIM, 0xA6);
#define _IE 0xA8
SFR(IE, _IE);
SBIT(EA, _IE, 7);
SBIT(ELVD, _IE, 6);
SBIT(EADC, _IE, 5);
SBIT(ES, _IE, 4);
SBIT(ET1, _IE, 3);
SBIT(EX1, _IE, 2);
SBIT(ET0, _IE, 1);
SBIT(EX0, _IE, 0);
SFR(SADDR, 0xA9);
SFR(WKTCL, 0xAA);
SFR(WKTCH, 0xAB);
SFR(S3CON, 0xAC);
SFR(S3BUF, 0xAD);
SFR(TA, 0xAE);
SFR(IE2, 0xAF);
#define _P3 0xB0
SFR(P3, _P3);
SBIT(P30, _P3, 0);
SBIT(P31, _P3, 1);
SBIT(P32, _P3, 2);
SBIT(P33, _P3, 3);
SBIT(P34, _P3, 4);
SBIT(P35, _P3, 5);
SBIT(P36, _P3, 6);
SBIT(P37, _P3, 7);
SFR(P3M1, 0xB1);
SFR(P3M0, 0xB2);
SFR(P4M1, 0xB3);
SFR(P4M0, 0xB4);
SFR(IP2, 0xB5);
SFR(IP2H, 0xB6);
SFR(IPH, 0xB7);
#define _IP 0xB8
SFR(IP, _IP);
SBIT(PPCA, _IP, 7);
SBIT(PLVD, _IP, 6);
SBIT(PADC, _IP, 5);
SBIT(PS, _IP, 4);
SBIT(PT1, _IP, 3);
SBIT(PX1, _IP, 2);
SBIT(PT0, _IP, 1);
SBIT(PX0, _IP, 0);
SFR(SADEN, 0xB9);
SFR(P_SW2, 0xBA);
SFR(ADC_CONTR, 0xBC);
SFR(ADC_RES, 0xBD);
SFR(ADC_RESL, 0xBE);
#define _P4 0xC0
SFR(P4, _P4);
SBIT(P40, _P4, 0);
SBIT(P41, _P4, 1);
SBIT(P42, _P4, 2);
SBIT(P43, _P4, 3);
SBIT(P44, _P4, 4);
SBIT(P45, _P4, 5);
SBIT(P46, _P4, 6);
SBIT(P47, _P4, 7);
SFR(WDT_CONTR, 0xC1);
SFR(IAP_DATA, 0xC2);
SFR(IAP_ADDRH, 0xC3);
SFR(IAP_ADDRL, 0xC4);
SFR(IAP_CMD, 0xC5);
SFR(IAP_TRIG, 0xC6);
SFR(IAP_CONTR, 0xC7);
#define _P5 0xC8
SFR(P5, _P5);
SBIT(P50, _P5, 0);
SBIT(P51, _P5, 1);
SBIT(P52, _P5, 2);
SBIT(P53, _P5, 3);
SBIT(P54, _P5, 4);
SBIT(P55, _P5, 5);
SBIT(P56, _P5, 6);
SBIT(P57, _P5, 7);
SFR(P5M1, 0xC9);
SFR(P5M0, 0xCA);
SFR(P6M1, 0xCB);
SFR(P6M0, 0xCC);
SFR(SPSTAT, 0xCD);
SFR(SPCTL, 0xCE);
SFR(SPDAT, 0xCF);
#define _PSW 0xD0
SFR(PSW, _PSW);
SBIT(CY, _PSW, 7);
SBIT(AC, _PSW, 6);
SBIT(F0, _PSW, 5);
SBIT(RS1, _PSW, 4);
SBIT(RS0, _PSW, 3);
SBIT(OV, _PSW, 2);
SBIT(F1, _PSW, 1);
SBIT(P, _PSW, 0);
SFR(T4T3M, 0xD1);
SFR(T4H, 0xD2);
SFR(T4L, 0xD3);
SFR(T3H, 0xD4);
SFR(T3L, 0xD5);
SFR(T2H, 0xD6);
SFR(T2L, 0xD7);
#endif