在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 16864|回复: 5

[求助] PIC程序MAPLAB编译生成HEX文件烧写

[复制链接]
发表于 2011-3-15 18:34:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
各位大侠大家好:
       小弟初学PIC单片机,用的是PIC12F508,编译软件:MAPAB V8.63,用PICC编译C程序,生成HEX文件,我没有用MAPAB专用的烧写器,而是用TOPwin烧写,可单片机总是无法工作,请问各位大侠是怎么回事?
  是MATPAB编译生成的HEX文件,必须要用其指定的烧写器才能烧写吗?各位大侠以前可遇到过类似情况?
以下是我写的程序,也请大家帮我看看,小弟在这先谢过了啊,呵呵
include <PIC.h>
__CONFIG(WDTDIS&XT&UNPROTECT);

//IntelHEX Intel style hex records(缺省)-INTEL.HEX
#define CLK GP0//PIN_B0
#define DAT GP1//PIN_B1
#define LE  GP2//PIN_B2

#define uchar unsigned char
#define uint  unsigned int

void PIC12F508_init();      //初始化PIC12F508
void wr_byte(uchar dat1);   //写控制字
void pll_initial_1400MHz(); //PLL控制字程序
void DelayMS(uint ms);

//**********以主程序函数开始*************//
void main()
{
PIC12F508_init();
DelayMS(14);
pll_initial_1400MHz();
DelayMS(14);
pll_initial_1400MHz();
}//end main
//**********主程序函数结束*************//

//****以下延时子程序****//
void DelayMS(uint ms)
{
uchar i;
while (ms--)for(i=0;i<120;i++);
}//end DelayMS
//****以上延时子程序****//

//******以下为PIC12F508初始化子函数******//
void PIC12F508_init()
{
OPTION=0x00;//设置所有I/O走做普通I/O口
GP0=0;GP1=0;GP2=0;GP4=0;GP5=0;
}//end init
//*****以下为PIC12F508初始化子函数*******//


//******写控制字程序子函数开始********//
void wr_byte(uchar dat)
{
  uchar i;
  for (i=0;i<8;i++)
  {
   CLK=0;//output_low (CLK);
   if((dat&0x80)==0x80)
     DAT=1;//output_high (DAT);
   else
    DAT=0;//output_low (DAT);
   CLK=1;//output_high (CLK);
   dat<<=1;
  }//end for
}//end wr_byte
//*******写控制字程序子函数结束********//

//*******PLL写控制字程序子函数开始******//
void pll_initial_1400MHz()
{
//PLL的初始化频率控制字  1400MHz
LE=0;//output_low (LE);//LE=0;
wr_byte(0x1F);
wr_byte(0x90);//向PLL F寄存器写入控制字1F  90  C2
wr_byte(0xC2);
LE=1;//output_high (LE);//LE=1;

LE=0;//output_low (LE);//
wr_byte(0x02);
wr_byte(0x00);//向PLL R寄存器写入控制字02  00  18
wr_byte(0x18);
LE=1;//output_high (LE);//

LE=0;//output_low (LE);//
wr_byte(0x00);
wr_byte(0x57);//向PLL N寄存器写入控制字00  57  11
wr_byte(0x11);
LE=1;//output_high (LE);//

}//end pll_initial_1400MHz
//**********PLL写控制字程序主函数结束**********//
发表于 2011-3-19 11:31:31 | 显示全部楼层
你这个程序即使有现象也看不到的,除非用示波器看波形,有一个概念要理解,就是我们的MCU一定要处在忙碌状态,如果没事情让他做,就让他等待,直到有事情来让他做(中断等触发条件),而你的程序跑一编就完事了,所以什么也看不到,
发表于 2011-3-20 02:29:39 | 显示全部楼层
想问一下:你是通过什么判断单片机无法工作的?
发表于 2011-3-20 11:16:12 | 显示全部楼层
回复 3# renliang


    要给MCU个死循环,有事就让它做事,没事就让它等待,
发表于 2011-3-20 11:53:00 | 显示全部楼层
thanks for sharing
发表于 2011-3-22 23:12:24 | 显示全部楼层
回复 4# xuanyuying


    谢谢指导~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 21:48 , Processed in 0.023739 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表