请教PIC12/16/18系列单片机io口位操作方法种类!
我看到网上很多人用不同的IO口位操作方法,但有的方法在其他型号上不能用,请教用什么样的位操作方法最可靠。比如RA0=**;PORTA=0x**PORTAbits.RA=*...
我看到网上很多人用不同的IO口位操作方法,但有的方法在其他型号上不能用,请教用什么样的位操作方法最可靠。比如RA0=** ; PORTA=0x** PORTAbits.RA=**; PORTA&=0x01
展开
1个回答
展开全部
PIC单片机因种类多,不同型号的芯片的对IO位操作也不完全相同。没有统一的操作方法。
也有各种编译器定义不同而有不同的编写方式,比如你说的RA0是因为所写程序所调用的头文件已经声明了RA0的作用:如PIC12/16系列的基本都有这个声明:
static bit RA0 @ (unsigned)&PORTA*8+0;
这表明RA0可以标识PORTA的最低位。
还有就是,PORT寄存器就不一定是对IO口的输出操作寄存器,比如PIC18系列的IO口操作多了一个LAT寄存器,TRIS依旧是方向配置寄存器,但PORT则变成了读IO状态的寄存器,如果对PORT写,只能写到IO口对应的锁存器里,但并不能输出到IO引脚上,只有用LAT寄存器才能输出到IO上,比如LATD=0X01,则 D口的最低位输出一个高电平(当然方向寄存器TRISD还是要设置的)
说了那么多,其实就是想告诉你,PIC单片机种类很多,虽然内部CPU架构和指令集差不太多,但在一些外设的配置上是变化很多的,这需要你写程序的时候,必须对照相应的数据手册来经行开发。
也有各种编译器定义不同而有不同的编写方式,比如你说的RA0是因为所写程序所调用的头文件已经声明了RA0的作用:如PIC12/16系列的基本都有这个声明:
static bit RA0 @ (unsigned)&PORTA*8+0;
这表明RA0可以标识PORTA的最低位。
还有就是,PORT寄存器就不一定是对IO口的输出操作寄存器,比如PIC18系列的IO口操作多了一个LAT寄存器,TRIS依旧是方向配置寄存器,但PORT则变成了读IO状态的寄存器,如果对PORT写,只能写到IO口对应的锁存器里,但并不能输出到IO引脚上,只有用LAT寄存器才能输出到IO上,比如LATD=0X01,则 D口的最低位输出一个高电平(当然方向寄存器TRISD还是要设置的)
说了那么多,其实就是想告诉你,PIC单片机种类很多,虽然内部CPU架构和指令集差不太多,但在一些外设的配置上是变化很多的,这需要你写程序的时候,必须对照相应的数据手册来经行开发。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询