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

📄 80c196kd.h

📁 基于80196KB开发的C程序,在伟福和星研环境中编译通过,用于学习8096系列单片机的中断编程技术.并成功地用于某地机动车检测业务.
💻 H
字号:
/*
 *  Copyright (c) 1995, Intel Corporation
 *
 *  $Workfile:   80c196kd.h  $
 *  $Revision:   1.1  $
 *  $Modtime:   Mar 22 1995 16:59:32  $
 *
 *  Purpose:
 *
 *
 *
 *
 *
 *  Compiler:       
 *
 *  Ext Packages:   
 *
 * 
 *
 */
/************************************************************************
; 80C196.INC - DEFINITION OF SYMBOLIC NAMES FOR THE I/O REGISTERS OF THE
;              80C196
;***********************************************************************/
#ifndef _HOLDEN
#define _HOLDEN  0x00  /*Set to 0x80 if HOLD/HOLDA used, 0 otherwise */
#endif

/* Register Naming used by the Intel iC-96 compiler */

extern volatile register unsigned short r0;         /* at 0x00 */
extern volatile register unsigned char ad_command;  /* at 0x02 */
extern volatile register unsigned short ad_result;  /* at 0x02 */
extern volatile register unsigned char ad_result_lo;/* at 0x02 */
extern volatile register unsigned char ad_result_hi;/* at 0x03 */
extern volatile register unsigned char  ad_time;    /* at 0x03 */
extern volatile register unsigned char hsi_mode;    /* at 0x03 */
extern volatile register unsigned short hso_time;   /* at 0x04 */
extern volatile register unsigned short hsi_time;   /* at 0x04 */
extern volatile register unsigned short ptssel;     /* at 0x04 */
extern volatile register unsigned char hso_command; /* at 0x06 */
extern volatile register unsigned char hsi_status;  /* at 0x06 */
extern volatile register unsigned short ptssrv;     /* at 0x06 */
extern volatile register unsigned char sbuf;        /* at 0x07 */
extern volatile register unsigned char int_mask;    /* at 0x08 */
extern volatile register unsigned char int_pending; /* at 0x09 */
extern volatile register unsigned char watchdog;    /* at 0x0a */
extern volatile register unsigned short timer1;     /* at 0x0a */
extern volatile register unsigned char ioc2;        /* at 0x0b */
extern volatile register unsigned short timer2;     /* at 0x0c */
extern volatile register unsigned short t2capture;  /* at 0x0c */
extern volatile register unsigned char  t2control;   /* at 0x0c */
extern volatile register unsigned char baud_rate;   /* at 0x0e */
extern volatile register unsigned char ioport0;     /* at 0x0e */
extern volatile register unsigned char ioport1;     /* at 0x0f */
extern volatile register unsigned char ioport2;     /* at 0x10 */
extern volatile register unsigned char sp_con;      /* at 0x11 */
extern volatile register unsigned char sp_stat;     /* at 0x11 */
extern volatile register unsigned char ipend1;      /* at 0x12 */
extern volatile register unsigned char imask1;      /* at 0x13 */
extern volatile register unsigned char wsr;         /* at 0x14 */
extern volatile register unsigned char ioc0;        /* at 0x15 */
extern volatile register unsigned char ios0;        /* at 0x15 */
extern volatile register unsigned char ioc1;        /* at 0x16 */
extern volatile register unsigned char ios1;        /* at 0x16 */
extern volatile register unsigned char pwm1_control;/* at 0x16 */
extern volatile register unsigned char pwm2_control;/* at 0x17 */
extern volatile register unsigned char pwm_control; /* at 0x17 */
extern volatile register unsigned char ios2;        /* at 0x17 */

/* Added for naming conflicts */

#define    int_pend          int_pending
#define    ioc3              t2control
#define    zero_reg          r0
#define    int_pend1         ipend1
#define    int_mask1         imask1
#define    pwm0_control      pwm_control

/* These defines are used to assign the read/write windows to each register */

#define    WIN0              0x0
#define    WR_WIN_MASK       0x0f
#define    RD_WIN_MASK       0x4
#define    READ_WIN0         0x00
#define    READ_WIN1         0x10
#define    READ_WIN15        0xf0
#define    WRITE_WIN0        0x00
#define    WRITE_WIN1        0x01
#define    WRITE_WIN15       0x0f 
#define    READ_WRITE_ANY    0x55
#define    RD_WR_ANY         READ_WRITE_ANY

#define    zero_reg_w        READ_WRITE_ANY
#define    ad_command_w      READ_WIN15 + WRITE_WIN0
#define    ad_result_w       READ_WIN0 + WRITE_WIN15
#define    hsi_mode_w        READ_WIN15 + WRITE_WIN0
#define    hso_time_w        READ_WIN15 + WRITE_WIN0
#define    hsi_time_w        READ_WIN0 + WRITE_WIN15
#define    hso_command_w     READ_WIN15 + WRITE_WIN0
#define    hsi_status_w      READ_WIN0 + WRITE_WIN15
#define    sbuf_w            READ_WIN0 + WRITE_WIN15
#define    int_mask_w        READ_WRITE_ANY
#define    int_pend_w        READ_WRITE_ANY
#define    timer1_w          READ_WIN0 + WRITE_WIN15
#define    timer2_w          READ_WIN0 + WRITE_WIN15
#define    baud_rate_w       WRITE_WIN0
#define    ioport0_w         READ_WIN0
#define    ioport1_w         READ_WIN0 + WRITE_WIN0
#define    ioport2_w         READ_WIN0 + WRITE_WIN0
#define    sp_con_w          READ_WIN15 + WRITE_WIN0
#define    sp_stat_w         READ_WIN0 + WRITE_WIN15
#define    ioc0_w            READ_WIN15 + WRITE_WIN0
#define    ios0_w            READ_WIN0 + WRITE_WIN15
#define    ioc1_w            READ_WIN15 + WRITE_WIN0
#define    ios1_w            READ_WIN0 + WRITE_WIN15
#define    pwm0_control_w    READ_WIN15 + WRITE_WIN0
#define    ioc2_w            READ_WIN15 + WRITE_WIN0
#define    ioc3_w            READ_WIN1 + WRITE_WIN1
#define    t2capture_w       READ_WIN15 + WRITE_WIN15
#define    int_pend1_w       READ_WRITE_ANY
#define    int_mask1_w       READ_WRITE_ANY
#define    wsr_w             READ_WRITE_ANY
#define    ios2_w            READ_WIN0 + WRITE_WIN15
#define    ad_time_w         READ_WIN1 + WRITE_WIN1
#define    ptssel_w          READ_WIN1 + WRITE_WIN1
#define    ptssrv_w          READ_WIN1 + WRITE_WIN1
#define    pwm1_control_w    READ_WIN1 + WRITE_WIN1
#define    pwm2_control_w    READ_WIN1 + WRITE_WIN1

/* Added to account for naming conflicts */

#define    int_pending_w     int_pend_w
#define    t2control_w       ioc3_w
#define    ad_result_lo_w    ad_result_w
#define    r0_w              zero_reg_w
#define    ipend1_w          int_pend1_w
#define    imask1_w          int_mask1_w
#define    pwm_control_w     pwm0_control_w

/* Used by the macros */

extern register unsigned int tmpreg;
#define Concat(a,b)  a ## b

/*------------------------------------------------------------------*/

#define _ReadSFR(Destination, SFR) \
     if (Concat(SFR,_w) != RD_WR_ANY)\
     {\
     wsr = ((Concat(SFR,_w) >> RD_WIN_MASK) & 0xf) + _HOLDEN;   \
     }\
     Destination = SFR;  
/*------------------------------------------------------------------*/

#define _WriteSFR(SFR, Value) \
     if (Concat(SFR,_w) != RD_WR_ANY)\
     {\
     wsr = (Concat(SFR,_w) & WR_WIN_MASK) + _HOLDEN;   \
     }\
     SFR = Value;  

/*------------------------------------------------------------------*/

#define _SetSFR_bit(SFR, BitNumber) \
     if (Concat(SFR,_w) != RD_WR_ANY)\
     {\
     wsr = ((Concat(SFR,_w) >> RD_WIN_MASK) & 0xf) + _HOLDEN;   \
     }\
     tmpreg = SFR | (1 << BitNumber); \
     if ((Concat(SFR,_w) != RD_WR_ANY) || (Concat(SFR,_w) != Concat(SFR,_w)))\
     {\
     wsr = (Concat(SFR,_w) & WR_WIN_MASK) + _HOLDEN;   \
     }\
     SFR = tmpreg;

/*------------------------------------------------------------------*/

#define _ClrSFR_bit(SFR, BitNumber) \
     if (Concat(SFR,_w) != RD_WR_ANY)\
     {\
     wsr = ((Concat(SFR,_w) >> RD_WIN_MASK) & 0xf) + _HOLDEN;   \
     }\
     tmpreg = SFR & (~(1 << BitNumber)); \
     if ((Concat(SFR,_w) != RD_WR_ANY) || (Concat(SFR,_w) != Concat(SFR,_w)))\
     {\
     wsr = (Concat(SFR,_w) & WR_WIN_MASK) + _HOLDEN;   \
     }\
     SFR = tmpreg;

/*------------------------------------------------------------------*/

#define _OrSFR(SFR, MaskValue) \
     if (Concat(SFR,_w) != RD_WR_ANY)\
     {\
     wsr = ((Concat(SFR,_w) >> RD_WIN_MASK) & 0xf) + _HOLDEN;   \
     }\
     tmpreg = SFR | MaskValue; \
     if ((Concat(SFR,_w) != RD_WR_ANY) || (Concat(SFR,_w) != Concat(SFR,_w)))\
     {\
     wsr = (Concat(SFR,_w) & WR_WIN_MASK) + _HOLDEN;   \
     }\
     SFR = tmpreg;

/*------------------------------------------------------------------*/

#define _AndSFR(SFR, MaskValue) \
     if (Concat(SFR,_w) != RD_WR_ANY)\
     {\
     wsr = ((Concat(SFR,_w) >> RD_WIN_MASK) & 0xf) + _HOLDEN;   \
     }\
     tmpreg = SFR & MaskValue; \
     if ((Concat(SFR,_w) != RD_WR_ANY) || (Concat(SFR,_w) != Concat(SFR,_w)))\
     {\
     wsr = (Concat(SFR,_w) & WR_WIN_MASK) + _HOLDEN;   \
     }\
     SFR = tmpreg;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -