pic单片机中在设置单片机引脚时总会有如下的定义?是什么意思啊?请高手帮忙指点下呀!!

/*单片机与LCD1602连接数据线定义*/
#define LCD_RS PORTAbits.RA2 /* PORT for RS */
#define TRIS_LCD_RS DDRAbits.RA2 /* TRIS for RS */
上面这两句话是什么意思啊,请高手指点啊。。。。
主要是见到好多程序中都有DDRAbits.RA2 DDRBbits.RA2 这样的定义 ,DDRAbits DDRBbits是什么样的寄存器啊???? 还有/* TRIS for RS * 中的tris 和rs是什么意思呀?

两句都是宏定义,你学过C语言的话你是知道的;
#define LCD_RS PORTAbits.RA2 /* PORT for RS */
#define TRIS_LCD_RS DDRAbits.RA2 /* TRIS for RS */

#define 是宏定义
LCD_RS 这个是谁便你取的标示符,一个代号,你自已取的,你更容易看懂
PORTAbits.RA2 这个是PIC单片机,PORTA端口RA2位,就是单片机上RA2这个引脚.这个在头文件中有定义,

/* */这里面的所有内容,与程序无关,只是一个备注;
这个定义起的作用就是,你要控制单片机RA2这个引脚电平的高低,可以使用LCD_RS=1,此时为高电平,LCD_RS=0,此时端口为低电平;
当然,如果你没有这个宏定义的话,要控制RA2这个引脚,就必须用PORTAbits.RA2=1;这样程序写长了,你看程序的时候,就不是很直观,只知道,这是一个RA2引脚,不知道这个引脚在你的成序里是接到那里的,还有,当你要改度端口时,你得一个一个去程序里去改PORTAbits.RA2;这句话,如果用了宏定义的话,你就可以直接在宏定义那改就全程序都改了.说C语言容易移植,这也是其中很大的一个功能.追问

#define TRIS_LCD_RS DDRAbits.RA2 /* TRIS for RS */
DDRAbits.RA2是什么样的寄存器呢?这个在头文件和宏定义中都找不到。。。。

追答

DDRAbits.RA2和TRISAbits.TRISA2是一样的,IO口输入输出方向控制的!

这两种写法都是控制TRIS这一个寄存器的,你可以看成是一个简写,没什么区别。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-27
第一句是一个位定义,你懂的,第二句也是位定义,
第一句是为了给RA2这个引进高低电平,第二句是定义这个引脚应该是输出或者是输入追问

主要是见到好多程序中都有DDRAbits.RA2 DDRBbits.RA2 这样的定义 ,DDRAbits DDRBbits是什么样的寄存器啊???? 还有/* TRIS for RS * 中的tris 和rs是什么意思呀?

追答

后面是注释啊 不用管的啊,那两个估计是有头文件定义好的 要不不能直接用的 你看看头文件吧

追问

头文件里找了 找不到 这会是怎么回事呢》?

本回答被提问者和网友采纳
第2个回答  2012-08-27
宏定义 还有位定义

PIC单片机C语言编程的高手来帮帮忙啊!
你好,对于你这个问题其实也不是太难,不要在乎片子有多复杂,也不要在乎问题有多难,关键是勇于挑战他,你弄永远不行,程序是调试出来的,别人给你写的你不一定可以用得上。AD985X系列的DDS芯片大同小异,基本也就是协议问题。仔细看一下,手册上的介绍对你很有帮助,还有就是关于你选择的PIC的那...

pic单片机编程器k149或者k150有人做过吗?我有几个问题希望高手帮忙...
3:为什么所有编程器的电路图都有个PIC单片机,在之前你问的问题上我已经说了,这种在线编程器需要一个监控用的单片机对你需要烧写程序的目标单片机做监控,所以这个编程器上必须有一个PIC单片机作为监控用(或者你也可以使用其他单片机,甚至使用ARM,它是这个东西上的核心:主控芯片)。ZIP40,,这个是插...

pic16f877a单片机12m晶振产生58K方波,哪位高手帮忙用编程给写个程序啊...
如果增大晶振频率,输出频率更容易实现。希望以上程序对你有所帮助。但编程好多东西还是要自己动手印象更深 一些。

相似回答