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

📄 196npc.cod

📁 mcs51,2051,x86系列MCU
💻 COD
📖 第 1 页 / 共 4 页
字号:
    setbit(ptssel, 0x$%XPTS_VECTOR$);
$$end$
$$if$ (PTS_VECTOR > 7)
    setbit(int_mask1, 0x$%XPTS_VECTOR$ - 8);
$$end$
$$if$ (PTS_VECTOR < 8)
    setbit(int_mask, 0x$%XPTS_VECTOR$);
$$end$
$$if$  PSW.2
    enable_pts();
$$end$
$$if$  PSW.1
    enable();
$$end$
}


void main(void)
{
 Init_BlockTrans_PTS_$%dPTS_VECTOR$();
 while(1);
} 
 
/*
   When the PTS cycle is finished it will generate an end-of-pts
   interrupt.

   If the specific peripheral design screen is not used for the
   interrupt routine, then the following can be used for a template.

#pragma interrupt(End_of_PTS@@INT_VECTOR@=@@INT_VECTOR@)
void End_of_PTS@@INT_VECTOR@(void)
{
   User Code
}
*/
##80C196NP PTS_PWMR#
##80C196NU PTS_PWMR#
$$ifp$80c196np
#pragma model(NP)
#include <80c196np.h>
$$end$
$$ifp$80c196nu
#pragma model(NU)
#include <80c196nu.h>
$$end$

#define   PTS_BLOCK_BASE      0x0$%XPTS_VECTOR * 8 + 0x380$

/*
   Create typedef template for the PWM_REMAP Mode control
   block.
*/
typedef struct PWM_remap_ptscb_t {
                             unsigned char  unused;
                             unsigned char  ptscon;
                             void  *pts_ptr;
                             unsigned int constant;
                             int    :16;   /* Unused */
                         } PWM_remap_ptscb;

/*
   This locates the PTS Block mode control block in register
   ram.  This control block may be located at any quad-word
   boundary in register space.
*/
PWM_remap_ptscb PWM_remap_CB$%dPTS_VECTOR$_0;
#pragma locate(PWM_remap_CB$%dPTS_VECTOR$_0=PTS_BLOCK_BASE)

/*
   The PTS vector must contain the address of the PTS control
   block.
*/
#pragma pts(PWM_remap_CB$%dPTS_VECTOR$_0 = 0x$%XPTS_VECTOR$)


$$if$  (PTS_VECTOR > 6) && (PTS_VECTOR < 11)
     $$if$  (PTS_VECTOR == 7) || (PTS_VECTOR == 9)
#define   PTS_BLOCK_BASE2     0x$%XPTS_VECTOR * 8 + 0x380 + 8$
     $$end$
     $$if$  (PTS_VECTOR == 8) || (PTS_VECTOR == 10)
#define   PTS_BLOCK_BASE2     0x$%XPTS_VECTOR * 8 + 0x380 - 8$
     $$end$

/*  declaration of second block of the remapped epa channel */
register PWM_remap_ptscb PWM_remap_CB$%dPTS_VECTOR$_1;

#pragma locate(PWM_remap_CB$%dPTS_VECTOR$_1=PTS_BLOCK_BASE2)

     $$if$  (PTS_VECTOR == 7) || (PTS_VECTOR == 9)
#pragma pts(PWM_remap_CB$%dPTS_VECTOR$_1 = 0x$%XPTS_VECTOR+1$)
     $$end$
     $$if$  (PTS_VECTOR == 8) || (PTS_VECTOR == 10)
#pragma pts(PWM_remap_CB$%dPTS_VECTOR$_1 = 0x$%XPTS_VECTOR-1$)
     $$end$
$$end$
$$if$  (PTS_VECTOR < 7) || (PTS_VECTOR > 10)
/*
   The following code is an example of a PTS control block
   initialization sequence.
*/
void Init_PWM_remap_PTS$%dPTS_VECTOR$(void)
{
    disable();          /* Disable all Interrupts */
    disable_pts();      /* Disable the PTS Interrupts */

    PWM_remap_CB$%dPTS_VECTOR$_0.constant    = @@PTS_CONST1@;
    PWM_remap_CB$%dPTS_VECTOR$_0.pts_ptr    = (void *)@@PTS_PWMR_PTR@;
    PWM_remap_CB$%dPTS_VECTOR$_0.ptscon     = 0x$$PTSCON$;

     $$if$  (PTS_VECTOR > 7)
    setbit(int_mask1, 0x$%XPTS_VECTOR-8$);
     $$end$
     $$if$  (PTS_VECTOR < 8)
    setbit(int_mask, 0x$%XPTS_VECTOR$);
     $$end$
$$if$ PTSSEL_ENABLE
    setbit(ptssel, 0x$%XPTS_VECTOR$);
$$end$
     $$if$  PSW.2
    enable_pts();
     $$end$
     $$if$  PSW.1
    enable();
     $$end$
}
$$end$
$$if$  (PTS_VECTOR > 6) && (PTS_VECTOR < 11)
/*
   The following code is an example of a PTS control block
   initialization sequence to generate a pwm using the remap
   mode of the epa.
*/
void Init_PWM_remap_PTS$%dPTS_VECTOR$(void)
{
    disable();          /* Disable all Interrupts */
    disable_pts();      /* Disable the PTS Interrupts */

    PWM_remap_CB$%dPTS_VECTOR$_0.constant   = @@PTS_CONST1@;    
    PWM_remap_CB$%dPTS_VECTOR$_0.pts_ptr    = (void *)epa$%XPTS_VECTOR - 7$_time;
    PWM_remap_CB$%dPTS_VECTOR$_0.ptscon     = 0x$$PTSCON$;

/*   Template for the second PTS channel     */

    PWM_remap_CB$%dPTS_VECTOR$_1.constant   = @@PTS_CONST1@;
     $$if$  (PTS_VECTOR == 10)
    PWM_remap_CB$%dPTS_VECTOR$_1.pts_ptr    = (void *)epa2_time;
     $$end$
     $$if$  (PTS_VECTOR == 9)
    PWM_remap_CB$%dPTS_VECTOR$_1.pts_ptr    = (void *)epa3_time;
     $$end$
     $$if$  (PTS_VECTOR == 8)
    PWM_remap_CB$%dPTS_VECTOR$_1.pts_ptr    = (void *)epa0_time;
     $$end$
     $$if$  (PTS_VECTOR == 7)
    PWM_remap_CB$%dPTS_VECTOR$_1.pts_ptr    = (void *)epa1_time;
     $$end$
    PWM_remap_CB$%dPTS_VECTOR$_1.ptscon     = 0x$$PTSCON$;

     $$if$ (PTS_VECTOR > 8)
    setbit(p1_reg,3);    /*  init output  */
    clrbit(p1_dir,3);    /*  make output  */
    setbit(p1_mode,3);   /*  select epa special function  */

    int_mask1 |= 0x06;       /*  Unmask epa2 and epa3  */
          $$if$  ptssel.9-10
    ptssel |= 0x0600;      /*  Unmask pts epa2 and epa3  */
          $$end$
    $$end$
    $$if$ (PTS_VECTOR < 9)
    setbit(p1_reg,1);    /*  init output  */
    clrbit(p1_dir,1);    /*  make output  */
    setbit(p1_mode,1);   /*  select epa special function  */

    int_mask |= 0x80;       /*  Unmask epa0  */
    int_mask1 |= 0x01;       /*  Unmask epa0 and epa1  */
          $$if$  ptssel.7-8
    ptssel |= 0x0180;      /*  Unmask pts epa0 and epa1  */
          $$end$
    $$end$
    $$if$  PSW.2
    enable_pts();
    $$end$
     $$if$  PSW.1
    enable();
     $$end$
}


/*   If the epa0, epa1, or timers have not been initialized
     using a the design screens, then the following can be
     used as a template.
void main(void)
{
 Init_PWM_remap_PTS$%dPTS_VECTOR$();
    $$if$ (PTS_VECTOR > 8)
    epa2_con = 0x60;      timer1, compare, set output
    epa2_time = 0;
    epa3_con = 0x0150;    remap, timer1, compare, clear output
    epa3_time = @@PTS_CONST1@;
    $$end$
    $$if$ (PTS_VECTOR < 9)
    epa0_con = 0x60;      timer1, compare, set output
    epa0_time = 0;
    epa1_con = 0x0150;    remap, timer1, compare, clear output
    epa1_time = @@PTS_CONST1@;
    $$end$
    timer1 = 0xffff;    start at -1 to enable match at 0;
    t1control = 0xC2;         internal clock, 640ns @25Mhz, count up
    while(1);
}
*/
$$end$
##80C196NP PTS_PWMT#
##80C196NU PTS_PWMT#
$$ifp$80c196np
#pragma model(NP)
#include <80c196np.h>
$$end$
$$ifp$80c196nu
#pragma model(NU)
#include <80c196nu.h>
$$end$
#define   PTS_BLOCK_BASE      0x0$%XPTS_VECTOR * 8 + 0x380$

/*
   Create typedef template for the PWM_TOGGLE Mode control
   block.
*/
typedef struct PWM_toggle_ptscb_t {
                             unsigned char  unused;
                             unsigned char  ptscon;
                             void  *pts_ptr;
                             unsigned int constant1;
                             unsigned int constant2;
                         } PWM_toggle_ptscb;

/*
   This locates the PTS Block mode control block in register
   ram.  This control block may be located at any quad-word
   boundary in register space.
*/
PWM_toggle_ptscb PWM_toggle_CB_$%dPTS_VECTOR$;
#pragma locate(PWM_toggle_CB_$%dPTS_VECTOR$=PTS_BLOCK_BASE)

/*
   The PTS vector must contain the address of the PTS control
   block.
*/
#pragma pts(PWM_toggle_CB_$%dPTS_VECTOR$=0x$%XPTS_VECTOR$)

/*
   The following code is an example of a PTS control block
   initialization sequence.
*/
void Init_PWM_toggle_PTS$%dPTS_VECTOR$(void)
{
    disable();          /* Disable all Interrupts */
    disable_pts();      /* Disable the PTS Interrupts */

    PWM_toggle_CB_$%dPTS_VECTOR$.constant2  = @@PTS_CONST2@;
    PWM_toggle_CB_$%dPTS_VECTOR$.constant1  = @@PTS_CONST1@;
    PWM_toggle_CB_$%dPTS_VECTOR$.pts_ptr    = (void *)&@@PTS_PWMT_PTR@;
    PWM_toggle_CB_$%dPTS_VECTOR$.ptscon     = 0x$$PTSCON$;

$$if$ (PTS_VECTOR > 6) && (PTS_VECTOR < 11)
/*   The following is example code that could be used to generate
     a PWM using an epa channel.  */

    setbit(p1_reg, 0x$%XPTS_VECTOR - 7$);  /*  init output    */
    clrbit(p1_dir, 0x$%XPTS_VECTOR - 7$);  /*  set to output  */
    setbit(p1_mode, 0x$%XPTS_VECTOR - 7$); /*  set special function*/

$$end$
$$if$ PTSSEL_ENABLE
    setbit(ptssel, 0x$%XPTS_VECTOR$);
$$end$
$$if$  (PTS_VECTOR > 7)
    setbit(int_mask1, 0x$%XPTS_VECTOR-8$);
$$end$
$$if$  (PTS_VECTOR < 8)
    setbit(int_mask, 0x$%XPTS_VECTOR$);
$$end$
}

void main(void)
{
 Init_PWM_toggle_PTS$%dPTS_VECTOR$();
$$if$ (PTS_VECTOR > 6) && (PTS_VECTOR < 11)
 epa$%dPTS_VECTOR - 7$_con = 0x70; /*  toggle, timer1, compare */
 epa$%dPTS_VECTOR - 7$_time = @@PTS_CONST1@;
 t1control = 0xC2;   /*   enable timer, up 640ns @ 25Mhz  */
$$end$
$$if$  PSW.2
 enable_pts();
$$end$
$$if$  PSW.1
 enable();
$$end$
 while(1);
}
##80C196NP IO_P1#
##80C196NU IO_P1#
$$ifp$80c196np
#pragma model(NP)
#include <80c196np.h>
$$end$
$$ifp$80c196nu
#pragma model(NU)
#include <80c196nu.h>
$$end$

#define   IO_EPA0        0x01
#define   IO_EPA1        0x02
#define   IO_EPA2        0x04
#define   IO_EPA3        0x08
#define   IO_T1CLK       0x10
#define   IO_T1DIR       0x20
#define   IO_T2CLK       0x40
#define   IO_T2DIR       0x80

#define   LSIO_0         0x00
#define   LSIO_1         0x00
#define   LSIO_2         0x00
#define   LSIO_3         0x00
#define   LSIO_4         0x00
#define   LSIO_5         0x00
#define   LSIO_6         0x00
#define   LSIO_7         0x00

#define   IO_INPUT0      0x01
#define   IO_INPUT1      0x02
#define   IO_INPUT2      0x04
#define   IO_INPUT3      0x08
#define   IO_INPUT4      0x10
#define   IO_INPUT5      0x20
#define   IO_INPUT6      0x40
#define   IO_INPUT7      0x80
#define   IO_OUTPUT0     0x00
#define   IO_OUTPUT1     0x00
#define   IO_OUTPUT2     0x00
#define   IO_OUTPUT3     0x00
#define   IO_OUTPUT4     0x00
#define   IO_OUTPUT5     0x00
#define   IO_OUTPUT6     0x00
#define   IO_OUTPUT7     0x00

void init_port1(void)
{
 p1_reg = 0x$$P1_REG$;   /*  initial value in p1_reg  */
 p1_dir = $%TP1_DIR.0$IO_INPUT0$IO_OUTPUT0$ | $%TP1_DIR.1$IO_INPUT1$IO_OUTPUT1$  |
          $%TP1_DIR.2$IO_INPUT2$IO_OUTPUT2$ | $%TP1_DIR.3$IO_INPUT3$IO_OUTPUT3$  |
          $%TP1_DIR.4$IO_INPUT4$IO_OUTPUT4$ | $%TP1_DIR.5$IO_INPUT5$IO_OUTPUT5$  |
          $%TP1_DIR.6$IO_INPUT6$IO_OUTPUT6$ | $%TP1_DIR.7$IO_INPUT7$IO_OUTPUT7$;
 p1_mode = $%TP1_MODE.0$IO_EPA0$LSIO_0$ | $%TP1_MODE.1$IO_EPA1$LSIO_1$ |
           $%TP1_MODE.2$IO_EPA2$LSIO_2$ | $%TP1_MODE.3$IO_EPA3$LSIO_3$ |
           $%TP1_MODE.4$IO_T1CLK$LSIO_4$ | $%TP1_MODE.5$T1DIR$LSIO_5$ |
           $%TP1_MODE.6$IO_T2CLK$LSIO_6$ | $%TP1_MODE.7$IO_T2DIR$LSIO_7$;
}
##80C196NT IO_P2#
$$ifp$80c196np
#pragma model(NP)
#include <80c196np.h>
$$end$
$$ifp$80c196nu
#pragma model(NU)
#include <80c196nu.h>
$$end$

#define   IO_TXD         0x01
#define   IO_RXD         0x02
#define   IO_EXTINT0     0x04
#define   IO_BREQ        0x08
#define   IO_EXTINT1     0x10
#define   IO_HLD         0x20
#define   IO_HLDA        0x40
#define   IO_CLKOUT      0x80

#define   LSIO_0         0x00
#define   LSIO_1         0x00
#define   LSIO_2         0x00
#define   LSIO_3         0x00
#define   LSIO_4         0x00
#define   LSIO_5         0x00
#define   LSIO_6         0x00
#define   LSIO_7         0x00

#define   IO_INPUT0      0x01
#define   IO_INPUT1      0x02
#define   IO_INPUT2      0x04
#define   IO_INPUT3      0x08
#define   IO_INPUT4      0x10
#define   IO_INPUT5      0x20
#define   IO_INPUT6      0x40
#define   IO_INPUT7      0x80
#define   IO_OUTPUT0     0x00
#define   IO_OUTPUT1     0x00
#define   IO_OUTPUT2     0x00
#define   IO_OUTPUT3     0x00
#define   IO_OUTPUT4     0x00
#define   IO_OUTPUT5     0x00
#define   IO_OUTPUT6     0x00
#define   IO_OUTPUT7     0x00

void init_port2(void)
{
 p2_reg = 0x$$P2_REG$;   /*  initial value in p2_reg  */
 p2_dir = $%TP2_DIR.0$IO_INPUT0$IO_OUTPUT0$ | $%TP2_DIR.1$IO_INPUT1$IO_OUTPUT1$  |
          $%TP2_DIR.2$IO_INPUT2$IO_OUTPUT2$ | $%TP2_DIR.3$IO_INPUT3$IO_OUTPUT3$  |
          $%TP2_DIR.4$IO_INPUT4$IO_OUTPUT4$ | $%TP2_DIR.5$IO_INPUT5$IO_OUTPUT5$  |
          $%TP2_DIR.6$IO_INPUT6$IO_OUTPUT6$ | $%TP2_DIR.7$IO_INPUT7$IO_OUTPUT7$;
 p2_mode = $%TP2_MODE.0$IO_TXD$LSIO_0$ | $%TP2_MODE.1$IO_RXD$LSIO_1$ |
           $%TP2_MODE.2$IO_EXTINT0$LSIO_2$ | $%TP2_MODE.3$IO_BREQ$LSIO_3$ |
           $%TP2_MODE.4$IO_EXTINT1$LSIO_4$ | $%TP2_MODE.5$IO_HLD$LSIO_5$ |
           $%TP2_MODE.6$IO_HLDA$LSIO_6$ | $%TP2_MODE.7$IO_CLKOUT$LSIO_7$;
}
##80C196NP IO_P3#
##80C196NU IO_P3#
$$ifp$80c196np
#pragma model(NP)
#include <80c196np.h>
$$end$
$$ifp$80c196nu
#pragma model(NU)
#include <80c196nu.h>
$$end$

#define   IO_CS0         0x01
#define   IO_CS1         0x02
#define   IO_CS2         0x04
#define   IO_CS3         0x08
#define   IO_CS4         0x10
#define   IO_CS5         0x20
#define   IO_EXTINT2     0x40
#define   IO_EXTINT3     0x80

#define   LSIO_0         0x00
#define   LSIO_1         0x00
#define   LSIO_2         0x00
#define   LSIO_3         0x00
#define   LSIO_4         0x00
#define   LSIO_5         0x00
#define   LSIO_6         0x00
#define   LSIO_7         0x00

#define   IO_INPUT0      0x01
#define   IO_INPUT1      0x02
#define   IO_INPUT2      0x04
#define   IO_INPUT3      0x08
#define   IO_INPUT4      0x10
#define   IO_INPUT5      0x20
#define   IO_INPUT6      0x40
#define   IO_INPUT7      0x80
#define   IO_OUTPUT0     0x00
#define   IO_OUTPUT1     0x00
#define   IO_OUTPUT2     0x00
#define   IO_OUTPUT3     0x00
#define   IO_OUTPUT4     0x00
#define   IO_OUTPUT5     0x00
#define   IO_OUTPUT6     0x00
#define   IO_OUTPUT7     0x00

void init_port3(void)
{
 p3_reg = 0x$$P3_REG$;   /*  initial value in P3_reg  */
 p3_dir = $%TP3_DIR.0$IO_INPUT0$IO_OUTPUT0$ | $%TP3_DIR.1$IO_INPUT1$IO_OUTPUT1$  |
          $%TP3_DIR.2$IO_INPUT2$IO_OUTPUT2$ | $%TP3_DIR.3$IO_INPUT3$IO_OUTPUT3$  |
          $%TP3_DIR.4$IO_INPUT4$IO_OUTPUT4$ | $%TP3_DIR.5$IO_INPUT5$IO_OUTPUT5$  |
          $%TP3_DIR.6$IO_INPUT6$IO_OUTPUT6$ | $%TP3_DIR.7$IO_INPUT7$IO_OUTPUT7$;
 p3_mode = $%TP3_MODE.0$IO_CS0$LSIO_0$ | $%TP3_MODE.1$IO_CS1$LSIO_1$ |
           $%TP3_MODE.2$IO_CS2$LSIO_2$ | $%TP3_MODE.3$IO_CS3$LSIO_3$ |
           $%TP3_MODE.4$IO_CS4$LSIO_4$ | $%TP3_MODE.5$IO_CS5$LSIO_5$ |
           $%TP3_MODE.6$IO_EXTINT2$LSIO_6$ | $%TP3_MODE.7$IO_EXTINT3$LSIO_7$;
}
##80C196NP IO_P4#
##80C196NU IO_P4#
$$ifp$80c196np
#pragma model(NP)
#include <80c196np.h>
$$end$
$$ifp$80c196nu
#pragma model(NU)
#include <80c196nu.h>
$$end$

#define   IO_PWM0        0x01
#define   IO_PWM1        0x02
#define   IO_PWM2        0x04
#define   IO_LSIO        0x08
#define   IO_RESERVED    0xF0

#define   LSIO_0         0x00
#define   LSIO_1         0x00
#define   LSIO_2         0x00
#define   LSIO_3         0x00

#define   IO_INPUT0      0x01
#define   IO_INPUT1      0x02
#define   IO_INPUT2      0x04
#define   IO_INPUT3      0x08
#define   IO_OUTPUT0     0x00
#define   IO_OUTPUT1     0x00
#define   IO_OUTPUT2     0x00
#define   IO_OUTPUT3     0x00

void init_port4(void)
{
 p4_reg = 0x$$P4_REG$;   /*  initial value in p3_reg  */
 p4_dir = $%TP4_DIR.0$IO_INPUT0$IO_OUTPUT0$ | $%TP4_DIR.1$IO_INPUT1$IO_OUTPUT1$  |
          $%TP4_DIR.2$IO_INPUT2$IO_OUTPUT2$ | $%TP4_DIR.3$IO_INPUT3$IO_OUTPUT3$;
 p4_mode = $%TP4_MODE.0$IO_PWM0$LSIO_0$ | $%TP4_MODE.1$IO_PWM1$LSIO_1$ |
           $%TP4_MODE.2$IO_PWM2$LSIO_2$;
}

⌨️ 快捷键说明

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