?? 196npc.cod
字號:
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 + -