/* ========================================================================= */
/* The information contained herein is the exclusive property of */
/* Sunplus Technology Co. And shall not be distributed, reproduced, */
/* or disclosed in whole in part without prior written permission. */
/* (C) COPYRIGHT 2004 SUNPLUS TECHNOLOGY CO. */
/* ALL RIGHTS RESERVED */
/* The entire notice above must be reproduced on all authorized copies. */
/* ========================================================================= */
/* */
/* ========================================================================= */
/* Project Name : AN_SPMC75_0202 */
/* File Name : main.c */
/* Description : Easy-to-Use Byte and Bit mode operation using C data */
/* structure */
/* Processor : SPMC75F2413A */
/* Tools : u'nSP IDE tools v1.18.1A or later version */
/* ========================================================================= */
/* Revision */
/* ========================================================================= */
/* Version : 1.00 */
/* Date : 9.2 */
/* Modified by : 更换正规的文件头和最新的头文件 */
/* Description : */
/* ========================================================================= */
#include "AN_SPMC75_0202.H"
//===========================================================================
/*
.Note:
将UInt16型变量variable强制转换为GENBITSDEF类型的指针,
那么这样一个指针ptr就可以具有GENBITSDEF类型所定义的
属性和成员,对其操作就可以实现对ptr所指存储空间进行操作。
*/
#define ptr ((volatile GENTYPEDEF *)(&variable)) //普通变量强转换类型
main()
{
UInt16 variable = 0; //UInt16 变量定义
GENBITSDEF sBits; //自定义类型GENBITSDEF 变量定义
GENBYTEDEF sByte; //自定义类型GENBYTEDEF 变量定义
GENTYPEDEF sMixb; //自定义类型GENTYPEDEF 变量定义
P_IOD_Attrib->W = 0xFFFF; //IOD初始化
P_IOD_Dir->W = 0xFFFF;
P_IOD_Buffer->W = 0xFFFF;
P_IOD_Data->W = 0x0000;
sBits.W = 0xA5FF; //字(Word)操作
sBits.B.bit0 = 0; //位(Bit)操作
sBits.B.bit15 = 0; //位(Bit)操作
sByte.W = 0xA5FF; //字(Word)操作
sByte.B.byte0 = 0xA5; //字节(Byte)操作
sByte.B.byte1 = 0xFF; //字节(Byte)操作
sMixb.Word = 0xA5FF; //字(Word)操作
sMixb.Bits.bit14 = 1; //位(Bit)操作
sMixb.Bits.bit15 = 0; //位(Bit)操作
sMixb.Byte.byte0 = 0; //字节(Byte)操作
sMixb.Byte.byte1 = 0; //字节(Byte)操作
ptr->Word = 0x90Fe; //转型后变量的操作方式
ptr->Bits.bit0 = 1;
ptr->Bits.bit15 = 0;
ptr->Byte.byte0 = 0xFF;
ptr->Byte.byte1 = 0x00;
while(1)
{
LEDCHG->Byte.byte0 = 0xA5; //对硬件(IOD)的字节(Byte)操作
LEDCHG->Byte.byte0 = 0x5A;
LEDCHG->Byte.byte1 = 0xA5;
LEDCHG->Byte.byte1 = 0x5A;
LEDCHG->Byte.byte0 = 0x00;
LEDCHG->Byte.byte0 = 0xFF;
LEDCHG->Byte.byte1 = 0x00;
LEDCHG->Byte.byte1 = 0xFF;
LEDCHG->Word = 0x00; //对硬件(IOD)的字(Word)操作
LEDCHG->Bits.bit0 = 1; //对硬件(IOD)的位(Bit)操作
LEDCHG->Bits.bit0 = 0;
LEDCHG->Bits.bit5 = 1;
LEDCHG->Bits.bit5 = 0;
LEDCHG->Bits.bit10 = 1;
LEDCHG->Bits.bit10 = 0;
LEDCHG->Bits.bit15 = 1;
LEDCHG->Bits.bit15 = 0;
}
}