|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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写控制字程序主函数结束**********// |
|