我在做一个小产品,用的是STC15F2K16S2,现在用IAP15F2K61S2仿真,正常,但是仅将程序下载到目标板后发现程序不运行。目标板用的是外部开关电源。程序源码如下:
/************************************************************************************
* 函数名称:LEDControl() *
************************************************************************************/
#define JH1002ControlMain_C
#include <JH1002Controlmain.h>
void LEDControl(bit_t state, uchar_t addr)
{
if(state == LEDOFF)
{
addr = addr | 0x08;
}
P0 = (P0 &0xf0) | addr;
p_259WR2 = 0;
_nop_();
p_259WR2 = 1;
}
/************************************************************************************
* 函数名称:TKHardwareInit() *
************************************************************************************/
void TKHardwareInit()
{
IE = 0;
IE2 = 0;
P0M1 = 0x00;
P0M0 = 0xff; //P0口为输出口,推挽输出
P0 = 0x0f;
P1M1 = 0x01;
P1M0 = 0xfe; //P1.0为串口2接收端,其他为输出口
P1 = 0xff;
P2M1 = 0x0f;
P2M0 = 0xf0; //P2.4~P2.7为输出口,其他为输入口
P2 = 0x0f;
P3M1 = 0x4d;
P3M0 = 0xb2; //P3.1\4\5\7为输出,其他为输入
P3 = P3 & 0x03 | 0xc0;
P4M1 = 0x3f;
P4M0 = 0xc0; //P4.6\7为输出,其他为输入
P4 = 0x3f;
P5M1 = 0x00;
P5M0 = 0x30; //P5.4\5为输出
P5 = 0x30;
CLK_DIV = 0x00; //主时钟不对外输出时钟,不分频,串口1工作于正常方式
IP = 0x10; //串口1中断拥有最高优先等级
PCON = 0x00; //波特率不加倍
TCON = 0x00; //外部中断0、1为边沿触发(上升、下降均触发)
TMOD = 0x00; //定时器0、1工作于16位自动重装载定时器方式
TH1 = (65536-200/(12000000/FOSC))/0x100; //
TL1 = (65536-200/(12000000/FOSC))%0x100; //200us定时器初值
TR1 = 1; //启动定时器1
TH0 = (65536-500/(12000000/FOSC))/0x100;
TL0 = (65536-500/(12000000/FOSC))%0x100; //500us定时器初值
TR0 = 1; //启动定时器0
ET1 = 1; //允许定时器1中断
EA = 1; //总中断允许
}
/************************************************************************************
* 函数名称:Init_259() *
************************************************************************************/
void Init_259()
{
uchar_t i;
for(i=0;i<8;i++)
{
P0 = P0 & 0xf0 | i;
p_259WR0 = 0;
_nop_();
p_259WR0 = 1;
}
for(i=0;i<6;i++)
{
P0 = P0 & 0xf0 | i;
p_259WR1 = 0;
_nop_();
p_259WR1 = 1;
}
for(i=6;i<8;i++)
{
P0 = P0 & 0xf0 | 0x80 |i ;
p_259WR1 = 0;
_nop_();
p_259WR1 = 1;
}
for(i=0;i<8;i++)
{
P0 = P0 & 0xf0 | 0x80 |i ;
p_259WR2 = 0;
_nop_();
p_259WR2 = 1;
}
}
/************************************************************************************
* 函数名称:main() *
************************************************************************************/
void main()
{
TKHardwareInit();
Init_259();
while(1)
{
WDT_CONTR=0x33; //清除看门狗
_nop_();
// if(szToneType[4]==SIGNULL)
// SetSignal(4,2,196);
}
}
/********************************************************************************
* 函数名称: timer1() *
* 定时器1中断服务程序 *
********************************************************************************/
void timer1() interrupt 3
{
ucT200usCount++;
if(ucT200usCount == 250)
{
ucT200usCount = 0;
ucT50msCount++;
if(ucT50msCount==10)
{
ucT50msCount = 0;
LEDControl(bLED,0);
LEDControl(bLED,1);
LEDControl(bLED,2);
LEDControl(~bLED,3);
LEDControl(~bLED,4);
bLED = ~bLED;
}
}
}
请高手帮忙解答,谢谢! |