1  /  1  页   1 跳转 查看:7960

烧写程序时出错?求助

烧写程序时出错?求助

如题,哪位朋友有的话,麻烦发一个到532366819@qq.com。我用c语言编程,用那个pic16f877a.h的头文件,结果很多指令它都不认识。
最后编辑blackheart 最后编辑于 2009-04-20 21:37:56
 

回复:求一个pic的通用头文件

什么指令,C 编译器不认识?
 

回复 2F suyunxia 的帖子

我们先写了个小程序,想试验一下:
#include<16F877A.h>
#use delay (clock=20000000)
void main()
{
TRISC=0;
TRISD5=0;
TRISD6=0;
PIN_D5=0;
PIN_D6=0;
PORTC=0X01H;
delay_ms(5);
//清屏
PORTC=0X30H;
delay_ms(5);
//功能设置  设置8为操作2行显示5*7点阵
PORTC=0X0EH;
delay_ms(5);
//显示开关 光标开闪耀光
PORTC=0X03H;
delay_ms(5);
//设置开AC为增时方式显示不移动
PIN_D5=1;
PIN_D6=0;
PORTC=0X54H;
delay_ms(5);
PORTC=0X4DH;
//写数据“T”“M”
PIN_D5=0;
PIN_D6=0;
PROTC=0X02H;
while(1);
}
调用ccs c编译,结果在TRISC处它说undefined identifier,我就不知道为什么了.....我看有些示例程序里直接写#include<pic.h> 后面直接写程序,就啥问题也没有。
 

回复 2F suyunxia 的帖子

原先那个问题解决掉了,是我自己用错了编译器,我应该用PICC.EXE而不是ccs c。现在程序如下,通过编译:
#include<pic.h>
void main()
{
TRISC=0;
TRISD5=0;
TRISD6=0;
RD5=0;
RD6=0;
PORTC=0x01;
//delay_ms(5);
//清屏
PORTC=0x30;
//delay_ms(5);
//功能设置  设置8为操作2行显示5*7点阵
PORTC=0x0E;
//delay_ms(5);
//显示开关 光标开闪耀光
PORTC=0x03;
//delay_ms(5);
//设置开AC为增时方式显示不移动
RD5=1;
RD6=0;
PORTC=0x54;
//delay_ms(5);
PORTC=0x4D;
//写数据“T”“M”
RD5=0;
RD6=0;
PORTC=0x02;
while(1);
}
但是烧写编程的时候出现以下问题:
Programming Target...
...Erasing Part
...Programming Program Memory (0x0 - 0x1EFF)
...Loading DebugExecutive
...Programming DebugExecutive
...Programming Debug Vector
Verifying...
...Program Memory
ICD0161: Verify failed (MemType = Program, Address = 0x0, Expected Val = 0x183, Val Read = 0x0)
ICD0275:  Programming failed.
MPLAB ICD 2 Ready
那些芯片的CONFIG字设置都与资料上的一样了,不知道会是什么原因?谢谢帮忙~
 

回复:烧写程序时出错?求助

出现此情况,一般是由于用户烧写电流不足导致烧写失败,常见动作是选择了从ICD2向目标板供电导致,请在软件上选择从目标板供电。
注意:某些特殊的芯片(例如PIC16F627A),在同时使用了内部振荡和内部复位的情况下,烧写成功后也将会提示CONFIG区校验失败的信息。这是正常的表现:由于同时使用了内部振荡和内部复位,一旦烧写成功,芯片将直接运行用户程序,此时由于无法进入烧写模式,校验必然是不正确的。详情请参看相关的帮助文件。
贝能国际智能电子产品解决方案专家
 

回复 5F zengsy 的帖子

那是不是说增加一下电源电压就有可能解决?
 

回复:烧写程序时出错?求助

你要看下,到底是哪种情况,不过烧写电流不足的可能性比较大,ICD0161的原因很多种
贝能国际智能电子产品解决方案专家
 

回复 7F zengsy 的帖子

我尝试着换到了v8.30版本的mplab,结果就行了,不知道为什么....
不过又有新的问题,(碰到的问题真多啊.....)
Programming Configuration Bits
.. Config Memory
Verifying configuration memory...
...Verify Succeeded
Connecting to debug executive
ICD0083: Debug:  Unable to enter debug mode.  Please double click this message for more information.
MPLAB ICD 2 ready for next operation
我也查了好多,引起该问题的原因也有多种,希望自己能够解决,不过也请版主提供提供意见,谢了
最后编辑blackheart 最后编辑于 2009-04-21 16:20:13
 

回复:烧写程序时出错?求助

而且我发现一个问题,不接icd的时候mclr端还有3.7v左右的电压,一接上icd,mclr端的电压直接被拉成低电平,那就相当于单片机一直处于复位状态,不知道怎么回事........???
 

回复:烧写程序时出错?求助

你的上电复位脚怎么接?ICD0083说明进不了调试模式,你可以从下面找原因。
1)0083一般是晶振电路出问题。或者是晶振未起振,或者是软件上选择的晶体类型与实际目标板的不符合。请采用如下方法判断目标板晶振是否起振:写一个简单的测试代码,如单个IO驱动LED周期性亮暗变化,烧写到芯片,看LED是否可以亮暗变化或者用示波器测量IO引脚的输出波形。请不要用示波器测量MCU振荡脚来判断晶振是否起振,某些情况下,有可能因示波器本身电容导致振荡电路匹配电容改变而改变振荡状态。
2)复位电路不按调试规范连接,比如有二级管,电容过大,也会早成此原因。出问题时请注意复位管脚只保留一个10K上拉电阻。
3)另外,管脚小与等于20PIN的芯片,如果没有使用调试头,也会有此提示。请参考《PIC少管脚MCU调试注意》。
4)作为调试器,很多功能是受到限制的,如WDT,LVP,BOR,能DISABLE的都要DISABLE。
5)汇编第一行没有加NOP指令。
6)C语言,PICC/PICC18等,编译选项中没有将COMPILE FOR ICD的钩打上。
7)目标板VDD对地有等效大电容。
8)没有断开PGD/PGC的电路。
9)程序代码过大,与ICD2保留的程序空间冲突。ICD2会保留最后256条指令空间。
10)RAM用到了ICD2保留空间。
11)编译之后没有下载(请认真看说明书)。
贝能国际智能电子产品解决方案专家
 
1  /  1  页   1 跳转

版权所有 贝能国际  Burnon国际  Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2012 Comsenz Inc.
Processed in 0.0156248 second(s) , 5 queries. 闽ICP备05003850号
返顶部