结构体在单片机c语言的用法,用单片机C语言的结构体实现字节、位操作

/* ========================================================================= */

/* 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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值