PIC单片机的端口方向是由相应的TRISx寄存器决定的,其中x为A,B,C...
如果相应的TRISx的位为0表示为输出,这个很容易记住,Output的第一个字母O和数字0相象。
如果相应的TRISx的位为1表示为输入,这个很容易记住,Input的第一个字母I和数字1相象。
如:
TRISB=0b11001010;
则表示RB7,RB6,RB3,RB1为输入,其余(RB5,RB4,RB2,RB0)为输出。
至于数字的格式,你爱怎么写就怎么写,上面的例子还可以写为:
TRISB=0xCA;
TRISB=202;
以上的二句与TRISB=0b11001010;都是完全一样的结果,只是数字的格式不同罢了。
显然,虽然几种格式结果是一样的,但在这里,用二进制表示是最直观的。
顺便说一下,PIC默认时,引脚是输入的,即默认时,TRISx=0xFF.
下载之前,它会根据你的程序中设定的配置位来确定用哪个口进行烧写程序,这个你不用担心!
程序中的配置位设置当然是根据你的硬件线路进行的.所以电路设计好后不要改,要改的是你的配置位设置,比如你用以下的设置,就是选用3口(我的程序是dsPIC33的,与24的类似吧):
_FICD(JTAGEN_OFF
ICS_PGD3);
如果要用某个引脚控制一个东西,如让它高电平或低电平,则这个引脚就得设置为输出。如果你想知道某个引脚是高电平或低电平,则这个引脚就得设置为输入。还有如果作为AD转换,相应的引脚就得做为输入。设置引脚是输出或输入,就是把对应的TRISx的寄存器的位设为0为1,这个容易记住:0象OUTOUT的第一个字母,它就是输出;1象INPUT的第一个字母,它就是输入。
单片机,全称单片微型计算机(英语:Single-Chip Microcomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。
肯定是设置trisC,况且你trisa和b都好使,c就不好使了这也太奇怪了吧。它说不识别,那就是你头文件定义错了。请检查头文件是否和芯片型号匹配。有可能头文件里没有#define trisc吧。
bittest应该是一个函数,不是一个宏。不要用define来定义。要用函数的方法来定义。你这个算是编程的基础错误吧。
首先,你porta的0~3已经设置为analog了(在cmcon里)。设置成analog的话是没法读取digital信号的。这4个口永远都是读0的。所以你编的肯定不能用。
需要设置ADC。一般用默认设置就好了,额外的配置就是porta的那些端口需要对应到ADC上。然后配置ADC的开始方式。定义好之后,在程序里只要ADC_GO(不知道你那里是什么命令)就可以了。然后读取的数值自动存储到ADC的一个寄存器里。
具体的你要看对应芯片的datasheet了,每款芯片的adc都不一样。不过相差不多。
这些口主要差别是,A口有6个引脚,RA0-RA5除了RA4为漏极开路外,它只能是数字口,其他5个引脚都是可以作为模拟转换的输入口,还有RE口,它只有3个引脚,与RA口一样,这三个引脚也是可以作为模拟转换的输入口,这样一共有8个引脚可以作为模拟输入的引脚。
RB口有8个,RB0-RB7,RB0可作为INT中断,高4位RB4-RB7有电平变换中断功能。RB口还有内部弱上拉的功能。
RC口有8个,RC0-RC7,通信接口大都在RC口。
RD口有8个,RD0-RD7.
以上的所有引脚,除了我说的功能外,都可以作为普通的IO引脚。
1.使用哪个一个多可以只需要在MPLAD的 configure-configuration bit里面做对应的修改即可。请 见如红色框内所示。
2.应该是可以的,可以自己做一些实验摸索一下,我没有这样做过。可以参照PIC24FJ128GA108的datasheet。
pic单片机程序接口的介绍到此就结束了,感谢您耐心阅读,谢谢。
本文标签:pic单片机程序接口