PICC位变量定义

转帖转帖转帖转帖转帖转帖转帖转帖转帖转帖转帖转帖

PICC菜鸟玩PICC位变量潇洒走一回 作者:hotpower 发表时间:2004-10-31 17:50:29

 /*-------------------------------------------------------------------------------------

 PICC菜鸟玩PICC位变量潇洒走一回 HotPower@126.com 2004.10.31 于西安大雁塔村队部

 --------------------------------------------------------------------------------------*/

转帖转帖转帖转帖转帖转帖转帖转帖转帖转帖转帖转帖 

 

//START:

#include <pic.h>

typedef struct

{

   unsigned BIT0: 1;

   unsigned BIT1: 1;

   unsigned BIT2: 1;

   unsigned BIT3: 1;

   unsigned BIT4: 1;

   unsigned BIT5: 1;

   unsigned BIT6: 1;

   unsigned BIT7: 1;

}PICCBIT;//定义一个只能按位域寻址的新变量类型

 

typedef union

{

   PICCBIT BIT;//可以按位域寻址

   unsigned char BYTE;//可以按字节寻址

}PICCBITBYTE;//定义一个既能按位域寻址也可按字节寻址的新变量类型

 

 

    //定义特殊寄存器位类型:

PICCBITBYTE SystemGPIO @((unsigned)&PORTA);

    //重新说明PORTA为新变量类型PICCBITBYTE名称为SystemGPIO

PICCBITBYTE SystemTRISIO @((unsigned)&TRISA);

    //重新说明TRISA为新变量类型PICCBITBYTE名称为SystemTRISIO

 

 

    //定义绝对定位寄存器位类型

PICCBITBYTE myvars @(unsigned)0x25;

    //申请新变量类型PICCBITBYTE名为myvars,并绝对定位在bank0的0x25处

PICCBIT myvar @((unsigned bank1) 0x80+0x25);

    //申请新变量类型PICCBIT名为myvar,并绝对定位在bank1的0x25处

 

    //定义任意寄存器位类型

PICCBIT myvarbit;

    //申请一个新变量类型PICCBIT名称为myvarbit,地址由PICC自动定位

PICCBITBYTE myvarbyte;

    //申请一个新变量类型PICCBITBYTE名称为myvarbyte,地址由PICC自动定位

 

#define GPIO0 SystemGPIO.BIT.BIT0 //同PORTA0

#define GPIO1 SystemGPIO.BIT.BIT1 //同PORTA1

#define GPIO2 SystemGPIO.BIT.BIT2 //同PORTA2

#define GPIO3 SystemGPIO.BIT.BIT3 //同PORTA3

#define GPIO4 SystemGPIO.BIT.BIT4 //同PORTA4

#define GPIO5 SystemGPIO.BIT.BIT5 //同PORTA5

#define GPIO6 SystemGPIO.BIT.BIT6 //同PORTA6

#define GPIO7 SystemGPIO.BIT.BIT7 //同PORTA7

#define TRISIO0 SystemTRISIO.BIT.BIT0 //同TRISA0

#define TRISIO1 SystemTRISIO.BIT.BIT1 //同TRISA1

#define TRISIO2 SystemTRISIO.BIT.BIT2 //同TRISA2

#define TRISIO3 SystemTRISIO.BIT.BIT3 //同TRISA3

#define TRISIO4 SystemTRISIO.BIT.BIT4 //同TRISA4

#define TRISIO5 SystemTRISIO.BIT.BIT5 //同TRISA5

#define TRISIO6 SystemTRISIO.BIT.BIT6 //同TRISA6

#define TRISIO7 SystemTRISIO.BIT.BIT7 //同TRISA7

#define myvars0 myvars.BIT.BIT0 //myvars.0

#define myvars1 myvars.BIT.BIT1 //myvars.1

#define myvars2 myvars.BIT.BIT2 //myvars.2

#define myvars3 myvars.BIT.BIT3 //myvars.3

#define myvars4 myvars.BIT.BIT4 //myvars.4

#define myvars5 myvars.BIT.BIT5 //myvars.5

#define myvars6 myvars.BIT.BIT6 //myvars.6

#define myvars7 myvars.BIT.BIT7 //myvars.7

#define myvar0 myvar.BIT0 //myvar.0

#define myvar1 myvar.BIT1 //myvar.1

#define myvar2 myvar.BIT2 //myvar.2

#define myvar3 myvar.BIT3 //myvar.3

#define myvar4 myvar.BIT4 //myvar.4

#define myvar5 myvar.BIT5 //myvar.5

#define myvar6 myvar.BIT6 //myvar.6

#define myvar7 myvar.BIT7 //myvar.7

#define myvarbit0 myvarbit.BIT0 //myvarbit.0

#define myvarbit1 myvarbit.BIT1 //myvarbit.1

#define myvarbit2 myvarbit.BIT2 //myvarbit.2

#define myvarbit3 myvarbit.BIT3 //myvarbit.3

#define myvarbit4 myvarbit.BIT4 //myvarbit.4

#define myvarbit5 myvarbit.BIT5 //myvarbit.5

#define myvarbit6 myvarbit.BIT6 //myvarbit.6

#define myvarbit7 myvarbit.BIT7 //myvarbit.7

#define myvarbyte0 myvarbyte.BIT.BIT0 //myvarbyte.0

#define myvarbyte1 myvarbyte.BIT.BIT1 //myvarbyte.1

#define myvarbyte2 myvarbyte.BIT.BIT2 //myvarbyte.2

#define myvarbyte3 myvarbyte.BIT.BIT3 //myvarbyte.3

#define myvarbyte4 myvarbyte.BIT.BIT4 //myvarbyte.4

#define myvarbyte5 myvarbyte.BIT.BIT5 //myvarbyte.5

#define myvarbyte6 myvarbyte.BIT.BIT6 //myvarbyte.6

#define myvarbyte7 myvarbyte.BIT.BIT7 //myvarbyte.7

void main(void)

{

   //PICCBITBYTE的新变量类型可以按字节寻址,故myvarbyte可以用myvarbyte.BYTE赋值

   myvarbyte.BYTE = 0x55;

   //myvarbit = 0;//PICCBIT新变量类型只能按位域寻址,所以myvarbit不能清零!

   //myvar = 0;//PICCBIT新变量类型只能按位域寻址,所以myvar不能清零!

   GPIO0 = 0;

   TRISA0 = 1;

   GPIO1 = 0;

   TRISIO0 = 1;

   myvar0 = 1;

   myvars0 = 1;

   myvarbyte.BIT.BIT0 = 1;

   myvarbyte0 = 0;

   myvarbit.BIT0 = 0;

   myvarbit0 = 0;

   SystemGPIO.BYTE = 0xaa;//以用SystemGPIO.BYTE赋值

   SystemTRISIO.BYTE = 0x55;//以用SSystemTRISIO.BYTE赋值

   while(1);

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PICC编译器9.8.3是一款由美国微芯片技术公司推出的集成电路编译器。该编译器可用于编译PIC(Peripherally Integrated Circuit)系列微控制器的汇编语言源代码,将其转化为可执行的机器码。PICC编译器是一种高级语言编译器,可以将使用C语言等高级语言编写的代码转换为机器指令,以实现对PIC芯片的程序控制。 PICC编译器9.8.3具有以下特点和功能: 1. 高效性能:该编译器经过优化和改进,具有快速、高效的编译和优化能力,能够生成高效的机器码,使程序在PIC芯片上运行更加稳定和高效。 2. 高兼容性:该编译器对多种PIC系列芯片提供支持,包括PIC10/12/16/18/24/30/33以及dsPICPIC32系列等,使开发者可以根据具体需求选择适合的芯片进行开发。 3. 强大的调试功能:PICC编译器9.8.3提供了丰富的调试功能,如单步执行、断点调试等,方便开发者进行代码的调试和错误排查,提高开发效率。 4.友好的开发环境:该编译器配套的开发环境友好易用,提供了直观的用户界面和丰富的开发工具,如语法高亮显示、自动补全、代码片段等,方便开发者进行代码编写和管理。 PICC编译器9.8.3是一款成熟和稳定的编译器工具,被广泛应用于电子产品开发、嵌入式系统等领域。它将高级语言与PIC芯片结合,为开发者提供了便捷、高效的开发方式,帮助开发者更好地实现对PIC芯片的控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值