有几行PIC单片机的c语言程序代码看不懂,请教一下。
今天得到一个main文件,.h文件忘了考回来。main中这3行都看不懂意思,希望得到指点。__CONFIG(0x3fd4);//这一行完全不懂staticvolatile...
今天得到一个main文件,.h文件忘了考回来。main中 这3行都看不懂意思,希望得到指点。
__CONFIG(0x3fd4); //这一行完全不懂
static volatile unsigned TMR1 @ 0x0E; //这里@是什么意思?
if(PopQueue(&msg) == PopSuccess) //这行中的 PopQueue(&msg)看不明白,是个函数吗?是不是提取msg指针型变量的地址作为参数,函数返回值跟 PopSuccess对比?
__CONFIG(x) ;其中x是配置字,头文件中定义了相应的配置说明符
这行大概知道了。 展开
__CONFIG(0x3fd4); //这一行完全不懂
static volatile unsigned TMR1 @ 0x0E; //这里@是什么意思?
if(PopQueue(&msg) == PopSuccess) //这行中的 PopQueue(&msg)看不明白,是个函数吗?是不是提取msg指针型变量的地址作为参数,函数返回值跟 PopSuccess对比?
__CONFIG(x) ;其中x是配置字,头文件中定义了相应的配置说明符
这行大概知道了。 展开
3个回答
展开全部
1 static volatile unsigned TMR1 @ 0x0E;
0x0E 是寄存器地址。 表示这个TMR1是寄存器0x0E的值。 具体这个寄存器是做什么用的,需要看你芯片的datasheet,比如 16F874A 16F877A 这个都是计数寄存器的地址。
2 PopQueue应该是一个弹出队列的函数。
将队列首弹出到msg中,返回值为PopSuccess表示取数据成功,取到的数据会存在msg中。
一般用于中断传数据给主线程。这个在主线程中接收。
3 __CONFIG(x) 一般是配置寄存器的。
0x0E 是寄存器地址。 表示这个TMR1是寄存器0x0E的值。 具体这个寄存器是做什么用的,需要看你芯片的datasheet,比如 16F874A 16F877A 这个都是计数寄存器的地址。
2 PopQueue应该是一个弹出队列的函数。
将队列首弹出到msg中,返回值为PopSuccess表示取数据成功,取到的数据会存在msg中。
一般用于中断传数据给主线程。这个在主线程中接收。
3 __CONFIG(x) 一般是配置寄存器的。
展开全部
自己翻PIC单片机,看看什么叫配置位(熔丝位)
这个@相当于C51的_at_,用于给块进行绝对定位。这样TMR1这个对象将唯一地分配到0x0E地址。
是个函数,将msg地址作为参数传递,进行队列弹出。如果成功弹出则xxx
追问
请在帮我再指点一下 ,我只用过_nop_,一时想不起来像_at_;_nop_ 这些属于什么,请告诉我在哪里能找到它们的说明,另外,我记得C编译器都是自动分配地址的,@分配地址给TMR1起到什么作用?为了表示感谢我提高了50分。
追答
_at_、_nop_()这些都是Keil C51的保留关键字,这些都不是标准C的东东哦。关于它们的详细信息,你可以去翻阅Keil的C51编译器手册。
自动分配与手动分配的区别,明白么?如果不手动指定分配,那么有可能被分配到其它地址。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两种方法:
1、0-13位
CP1-CP0:代码保护位,说明如下:
11 = 代码保护关;
10 = 参见器件数据手册;
01 = 参见器件数据手册;
00 = 所有存储器均受代码保护。
注:有些器件使用较多或较少的位数来配置代码保护。目前就一些只使用一位(CP0) 的器件,保护位的说明如下:
1 = 代码保护关;
0 = 代码保护开。
DP:数据EEPROM 存储器的代码保护位,说明如下:
1 = 代码保护关;
0 = 数据EEPROM 存储器受代码保护。
注:对于具有数据EEPROM 存储器的ROM 程序存储器器件,使用该位。
BODEN:欠压复位(BOR) 使能位,说明如下:
1 = BOR 使能;
0 = BOR 禁止。
PWRTE:上电定时器(PWRT) 使能位,说明如下:
1 = PWRT 禁止;
0 = PWRT 使能。
注1:无论PWRTE 位的值为何,使能欠压复位即自动使能了上电定时器(PWRT)。请确保使能欠压复位时,也使能了上电定时器。
注2:在一些早期的PICmicro® 单片机中,该位的极性被保留。
MCLRE:MCLR 引脚功能选择位,说明如下:
1 = 引脚功能为MCLR;
0 = 引脚功能为数字I/O, MCLR 在内部连接到VDD 上。
WDTE:看门狗定时器(WDT) 使能位,说明如下:
1 = WDT 使能;
0 = WDT 禁止。
FOSC1-FOSC0:振荡器选择位,说明如下:
11 = RC 振荡器;
10 = HS 振荡器;
01 = XT 振荡器;
00 = LP 振荡器。
2 用maplab查看
1、0-13位
CP1-CP0:代码保护位,说明如下:
11 = 代码保护关;
10 = 参见器件数据手册;
01 = 参见器件数据手册;
00 = 所有存储器均受代码保护。
注:有些器件使用较多或较少的位数来配置代码保护。目前就一些只使用一位(CP0) 的器件,保护位的说明如下:
1 = 代码保护关;
0 = 代码保护开。
DP:数据EEPROM 存储器的代码保护位,说明如下:
1 = 代码保护关;
0 = 数据EEPROM 存储器受代码保护。
注:对于具有数据EEPROM 存储器的ROM 程序存储器器件,使用该位。
BODEN:欠压复位(BOR) 使能位,说明如下:
1 = BOR 使能;
0 = BOR 禁止。
PWRTE:上电定时器(PWRT) 使能位,说明如下:
1 = PWRT 禁止;
0 = PWRT 使能。
注1:无论PWRTE 位的值为何,使能欠压复位即自动使能了上电定时器(PWRT)。请确保使能欠压复位时,也使能了上电定时器。
注2:在一些早期的PICmicro® 单片机中,该位的极性被保留。
MCLRE:MCLR 引脚功能选择位,说明如下:
1 = 引脚功能为MCLR;
0 = 引脚功能为数字I/O, MCLR 在内部连接到VDD 上。
WDTE:看门狗定时器(WDT) 使能位,说明如下:
1 = WDT 使能;
0 = WDT 禁止。
FOSC1-FOSC0:振荡器选择位,说明如下:
11 = RC 振荡器;
10 = HS 振荡器;
01 = XT 振荡器;
00 = LP 振荡器。
2 用maplab查看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询