/*** PTAD - Port A Data Register; 0x00000000 ***/
typedef union {
byte Byte;
struct {
byte PTAD0 :1; /* Port A Data Register Bit 0 */
byte PTAD1 :1; /* Port A Data Register Bit 1 */
byte PTAD2 :1; /* Port A Data Register Bit 2 */
byte PTAD3 :1; /* Port A Data Register Bit 3 */
byte PTAD4 :1; /* Port A Data Register Bit 4 */
byte PTAD5 :1; /* Port A Data Register Bit 5 */
byte PTAD6 :1; /* Port A Data Register Bit 6 */
byte PTAD7 :1; /* Port A Data Register Bit 7 */
} Bits;
} PTADSTR;
extern volatile PTADSTR _PTAD @0x00000000;
#define PTAD _PTAD.Byte
#define PTAD_PTAD0 _PTAD.Bits.PTAD0
#define PTAD_PTAD1 _PTAD.Bits.PTAD1
#define PTAD_PTAD2 _PTAD.Bits.PTAD2
#define PTAD_PTAD3 _PTAD.Bits.PTAD3
#define PTAD_PTAD4 _PTAD.Bits.PTAD4
#define PTAD_PTAD5 _PTAD.Bits.PTAD5
#define PTAD_PTAD6 _PTAD.Bits.PTAD6
#define PTAD_PTAD7 _PTAD.Bits.PTAD7
#define PTAD_PTAD0_MASK 1
#define PTAD_PTAD1_MASK 2
#define PTAD_PTAD2_MASK 4
#define PTAD_PTAD3_MASK 8
#define PTAD_PTAD4_MASK 16
#define PTAD_PTAD5_MASK 32
#define PTAD_PTAD6_MASK 64
#define PTAD_PTAD7_MASK 128
/*** PTADD - Port A Data Direction Register; 0x00000001 ***/
PTADD:Port A数据方向寄存器
这个主要用来设置IO的方向,0位输出,1位输入。
typedef union {
byte Byte;
struct {
byte PTADD0 :1; /* Data Direction for Port A Bit 0 */
byte PTADD1 :1; /* Data Direction for Port A Bit 1 */
byte PTADD2 :1; /* Data Direction for Port A Bit 2 */
byte PTADD3 :1; /* Data Direction for Port A Bit 3 */
byte PTADD4 :1; /* Data Direction for Port A Bit 4 */
byte PTADD5 :1; /* Data Direction for Port A Bit 5 */
byte PTADD6 :1; /* Data Direction for Port A Bit 6 */
byte PTADD7 :1; /* Data Direction for Port A Bit 7 */
} Bits;
} PTADDSTR;
extern volatile PTADDSTR _PTADD @0x00000001;
#define PTADD _PTADD.Byte
#define PTADD_PTADD0 _PTADD.Bits.PTADD0
#define PTADD_PTADD1 _PTADD.Bits.PTADD1
#define PTADD_PTADD2 _PTADD.Bits.PTADD2
#define PTADD_PTADD3 _PTADD.Bits.PTADD3
#define PTADD_PTADD4 _PTADD.Bits.PTADD4
#define PTADD_PTADD5 _PTADD.Bits.PTADD5
#define PTADD_PTADD6 _PTADD.Bits.PTADD6
#define PTADD_PTADD7 _PTADD.Bits.PTADD7
#define PTADD_PTADD0_MASK 1
#define PTADD_PTADD1_MASK 2
#define PTADD_PTADD2_MASK 4
#define PTADD_PTADD3_MASK 8
#define PTADD_PTADD4_MASK 16
#define PTADD_PTADD5_MASK 32
#define PTADD_PTADD6_MASK 64
#define PTADD_PTADD7_MASK 128
8位系列的芯片,IO口的操作是类似的,所以这里以LL16为例说明。在使用IO的时候,必须要先设置方向,再设置和读取IO口电平。
例如:
void IO_INI(void)
{
PTADD_PTADD0=0;//设置PTAD0的0脚为输出
PTADD_PTADD1=1;//设置PTAD0的1脚为输入
//或者设置PTADD=0X02;
}
void main()
{
EnableInterrupts;
IO_INI();
for(;;)
{
PTADD_PTADD0= ~PTADD_PTADD0;
}
}