打印

紧急求助关于合泰单片机仿真

[复制链接]
6618|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hanshun1986|  楼主 | 2012-5-4 10:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对旧程序作了修改,用在一个延伸机型上面,芯片是HT46R48A,编译无误,但是在用合泰HT-ICE仿真的时候总是会出现以下错误:Error(L1038):ROM(区块*)对段落[email=]'@KeySub'[/email]配置存储器空间(大小为09FH)失败,此段位于'C:\Documents and Settings\Administrator\桌面\复件 md-1011c10模式减少修改中1\1011D.OBJ'文件
错误总数:1  警告总数:0
'1011d' - Total 1 error(s), 0 warning(s)

以下是源程序:
/*
PA_WAKE-UP =0X00   0:NO WAKE-UP
PA-PULL-HIGH=0XC0  0:NO PULL-HIGH
PB-PULL-HIGH=0X07     0:NO PULL-HIGH
PC-PULL-HIGH=0X00
PD-PULL-HIGH=0
PWM=DISABLE
PA3-PFD=ENABEL
LVR=ENABEL
WDT=ENABEL
CLRWDT=ONE CLEAR INSTRUCTION
WDT CL=T1
*/
#include "HT46C48A.H"
//#include "HT46F48E.h"
#define uchar unsigned char
#define ushort unsigned long
#pragma vector timer0 @ 0x08
#pragma vector intr0  @ 0x04                 
//=========IO 定义
#define  P_MOTO1   _pa6
#define     P_MOTO2   _pa7
//#define     P_KEY1  _pb2
//#define     P_KEY2   _pb1
//#define     P_KEY3   _pb0
#define     P_KEY1  _pb2
#define     P_KEY2   _pb1
#define     P_KEY3   _pb0
#define     P_KEY4   _pb3
#define     P_BZ     _pa3
#define     P_LED1    _pd0
#define     P_LED2    _pa2
#define     P_LED3    _pa1
#define     P_COM1   _pc0
#define     P_COM2    _pc1
#define     EEI      _eei
#pragma     rambank0
bit F_ON_OFF;
bit F_ZERO,F_EINT;
bit F_MOTO_L,F_MOTO_R,F_MOTO_L_F,F_MOTO_R_F;         //左右振动使能
bit F_KEY_ST;
bit F_TIME_1MS;
bit F_BZ_F,F_BZ_H;
bit F_OUT_E;
//bit F_TEMP_F,F_TEMP_F1,F_TEMP_F2;
bit F_TIME500MS;
bit F_LED_2S;
bit F_TEMP_F1;
bit F_TEMP_F;
bit F_TEMP_F2;
uchar GateOffTime1,GateOffTime2;
uchar MotoVi,MotoViBuff;
uchar ModeM;
uchar MotoViS;
uchar KeyTime;
uchar Time1ms;
uchar MotoMode;
uchar BzS,BzS1;
uchar Timer2;        //定时
uchar OutS,OutTemp,OutTemp1;
uchar AutoMode;
uchar StTime;
uchar LedS,Sunmer;
ushort Led2s;
ushort Timer1;
ushort OutTime,OutTimeBuff,OutTimeBuffV;
ushort MotoTime;
ushort Time500ms,BzTime,BzTimeV;
const uchar  MotoViTa[]={0,20,24,29,33,37,41,44,48};      //分9级
const uchar  BcdTal[]={0x7e,0x22,0x6d,0x67,0x33,0x57,0x5f,0x62,0x7f,0x77};
void Sys_init();
void Ram_init();
void TimeSub();
void KeySub();
void MotoSub();
void BzSub(uchar s,ushort d);
void LedSub();
void delayus(uchar s);
void MotoOutS(uchar rnum,uchar lnum,ushort dtime,uchar n);
void MotoOutS2();
void MotoOutS1();
void MotoOutS_L(uchar n1,uchar dl1,uchar dl2);
void MotoOutS_R(uchar n1,uchar dl1,uchar dl2);
void MotoOutM1(ushort s);
void MotoOutM2();
void MotoOutS2();
void MotoOutS1();
void MotoOutS_B(uchar n1,uchar dl1,ushort dl2);
//*****************************************************************************************************
//   外部中断,,主要是零点检测
//     上升沿
//
//
//*****************************************************************************************************
void intr0()
{
F_ZERO=1;           //马达1零点到
// F_TIME_10MS=1;
}
//*****************************************************************************************************
//             定时器中断,,200us一次
//          主要是:定时功能,,可控硅输出强度,可控硅从下半周到负半周定时10ms
//                  BZ输出功能
//
//
//
//*****************************************************************************************************
void timer0()
{
  //_tmr=55;
  #asm
   clr wdt
  #endasm
  if(F_ON_OFF)
  {
   //==============================可控硅门级1关
   if(F_MOTO_L_F)
   {
    if(++GateOffTime1>=3)        //可控硅驱动脉宽600US
    {
     GateOffTime1=0;
     P_MOTO1=1;
     F_MOTO_L_F=0;
    }
   }
   //==============================可控硅门级2关
   if(F_MOTO_R_F)
   {
    if(++GateOffTime2>=3)       //可控硅驱动脉宽600US   
    {
     GateOffTime2=0;
     P_MOTO2=1;
     F_MOTO_R_F=0;
    }
   }
   //==============================可控硅输出大小
   if(F_ZERO)
   {
   
    if(++MotoVi>=48)            //输出强度变量,,
    {
     F_ZERO=0;
     MotoVi=MotoViBuff;
     if(F_MOTO_L)
     {
      F_MOTO_L=0;
      F_MOTO_L_F=1;
      P_MOTO1=0;
     }
     if(F_MOTO_R)
     {
      F_MOTO_R=0;
      F_MOTO_R_F=1;
      P_MOTO2=0;
     }   
    }
   }
  //================================================
}
else
   {
     P_MOTO1=1;
     P_MOTO2=1;
   }
//========================================================
//         1MS的标志
   if(++Time1ms>=5)
   {
     Time1ms=0;
     F_TIME_1MS=1;
    // _pa2=!_pa2;
   }
   
}
//*******************************************************************************************************
//
//        主程序:循环跑(可控硅控制,时间程序,按键程序,LED显示程序,马达输出或加热)
//
//
//
//*******************************************************************************************************
void main()
{
    Sys_init();
    Ram_init();
    //Time1ms=1;
    BzSub(2,200);
    while(1)
    {     
     if(F_TIME_1MS)
     {
      F_TIME_1MS=0;
      TimeSub();
      KeySub();   
      LedSub();   
      MotoSub();
     }
    }
}
//*******************************************************************************************************
//
//               
//
//        系统初始化,,IO,,定时,,外部中断
//
//*******************************************************************************************************
void Sys_init()
{
_pbc=0x00;
_pb=0;
_pac=0x20;
_pcc=0;
_pdc=0;
P_COM1=1;
P_COM2=1;
P_LED1=1;
P_LED2=1;
P_LED3=1;
_pa6=1;
_pa7=1;
P_BZ=0;
//------------
     _tmrc=0x82;               //4M/32*(255-130)=1MS
  _tmr=55;
  _eti=1;
  _emi=1;
  _ton=1;
  _eei=0;
}
//*******************************************************************************************************
//
//               
//          内存初始
//
//
//*******************************************************************************************************
void Ram_init()
{
//_bp=0;
_mp=0xA8;
do{
  _iar=0;
  _mp++;
   }while(_mp^0xff);
_iar=0;

//F_ON_OFF=0;
// F_ZERO=0;
// F_EINT=0;
// F_MOTO_L=0;
// F_MOTO_R=0;
// F_MOTO_L_F=0;
// F_MOTO_R_F=0;
// F_KEY_ST=0;
// F_TIME_1MS=0;
// F_BZ_F=0;
// F_BZ_H=0;
// F_OUT_E=0;
// F_LED_2S=0;
// F_TEMP_F=1;
// F_TEMP_F1=1;
// F_TEMP_F2=1;

// StTime=0;
// AutoMode=4;
// GateOffTime1=0;
// GateOffTime2=0;
MotoViS=3;
MotoVi=MotoViBuff=MotoViTa[3];
// KeyTime=0;
// Time1ms=0;
MotoMode=1;
BzS=1;
// BzTime=0;
// Timer2=0;
// OutS=0;
// OutTemp=0;
// Timer1=0;
// OutTime=0;
// OutTimeBuff=0;
// MotoTime=0;
// LedS=0;
// Time500ms=0;
// Led2s=0;
ModeM=1;
}
//*******************************************************************************************************
//
//               
//     时间处理,开机定时6分
//
//
//*******************************************************************************************************
void TimeSub()
{
if(F_ON_OFF)              //开机定时10分
{
  if(++Timer1>60000)
  {
   Timer1=0;
   if(++Timer2>=10)
   {
    F_ON_OFF=0;             //关机
    Timer2=0;   
    Ram_init();
    BzSub(3,500);
   }
  }
}
//=======================================蜂鸣器处理
if(F_BZ_F)
{
  if(F_BZ_H)
  {
      if(++BzTime>BzTimeV)             //蜂鸣器响的时间
      {
       F_BZ_H=0;
       P_BZ=0;
       BzTime=0;
      }
  }
  else
  {
   if(++BzTime>BzTimeV)             //蜂鸣器停的时间
   {
    BzTime=0;
    if(--BzS>0)
    {
     F_BZ_H=1;
     P_BZ=1;
    }
       else
        F_BZ_F=0;
   }
  }
}
//--------------------------------------------OUT TIME
if(F_ON_OFF)
{
  if(++OutTime>OutTimeBuff)           //电机输出的时间
  {
   OutTime=0;
   F_OUT_E=1;                      //电机输出使能
  }
}

if(++Time500ms>=500)                   //0.5S时间标志
{
  Time500ms=0;
  F_TIME500MS=!F_TIME500MS;
}
//======================================数码管转换显示2S
if(F_LED_2S)
{
  if(++Led2s>2000)
  {
   Led2s=0;
   F_LED_2S=0;
  }
}
}

//*******************************************************************************************************
//
//               这里主要是马达振动多久停多久的输出模式
//
//        手动模式1-5,,,自动模式6
//
//*******************************************************************************************************
void MotoSub()
{
    if(F_OUT_E)
    {
      F_OUT_E=0;
      if(F_ON_OFF==0)return;
      switch(AutoMode)
      {
                    case 1:
                      {
                          switch(MotoMode)
                          {
                           case 1:{MotoOutS(2,2,180,10);}break;
                          // case 2:{MotoOutS(3,3,140,5);}break;
                           case 2:{MotoOutS(5,5,160,6);}break;
                          // case 4:{MotoOutS(3,3,120,6);}break;
                           case 3:{MotoMode=1;}break;
                           default:break;
                          }
                      }break;
                    case 2:
                      {
                          switch(MotoMode)
                          {
                           case 1:{MotoOutS(1,1,220,20);}break;
                           case 2:{MotoOutS(5,5,220,5);}break;
                           case 3:{MotoOutS(1,1,140,20);}break;
                           case 4:{MotoOutS(5,5,140,6);}break;
                           case 5:{MotoMode=1;}break;
                           default:break;
                          }
                      }break;
                    case 3:
                      {
                          switch(MotoMode)
                          {
                           case 1:{MotoOutS1();}break;
                           case 2:{MotoOutS2();}break;
                           case 3:{MotoMode=1;}break;
                           
                           default:break;
                          }
                      }break;
                    case 4:
                      {
                          switch(MotoMode)
                          {
                           case 1:{MotoOutS(3,1,160,10);}break;
                           case 2:{MotoOutS(1,3,160,10);}break;
                           case 3:{MotoOutS(1,1,160,15);}break;
                           case 4:{MotoOutS(2,2,160,15);}break;
                           case 5:{MotoMode=1;}break;
                           default:break;
                          }
                      }break;
                    
                    case 5:
                             {
                       //---------------------------------------------------------
         switch(MotoMode)                     
             {
            
               
                        
             case 1:{MotoOutS(2,2,180,4);}break;
                         case 2:{MotoOutS(3,3,120,4);}break;
                         case 3:{MotoOutS(2,2,180,4);}break;
                         case 4:{MotoOutS(3,3,120,4);}break;
                        
                         case 5:{
                             MotoOutS_B(20,120,60);
                             }break;
                         case 6:{MotoOutS_B(16,160,60);}break;
                         case 7:{MotoOutS_B(12,180,60);}break;
                         case 8:{MotoOutS_B(10,220,60);}break;
                        
                         case 9:{MotoOutS_B(20,120,60);}break;
                         case 10:{MotoOutS_B(16,160,60);}break;
                         case 11:{MotoOutS_B(12,180,60);}break;
                         case 12:{MotoOutS_B(10,230,60);}break;
                        
                         case 13:{MotoOutS(16,16,120,2);}break;
                         case 14:{MotoOutS(12,12,80,7);}break;
                        
                         case 15:{MotoOutS(5,5,100,2);}break;
                         case 16:{MotoOutS_B(20,100,500);}break;
                         case 17:{MotoOutS_B(20,100,200);}break;
                         case 18:{MotoOutS(5,5,100,2);}break;
                         case 19:{MotoOutS_B(20,100,500);}break;
                         case 20:{MotoOutS_B(20,100,200);}break;
                        
                         case 21:{MotoOutS(15,15,100,1);}break;
                         case 22:{MotoOutS_B(15,100,500);}break;
                         case 23:{MotoOutS(15,15,100,1);}break;
                         case 24:{MotoOutS_B(15,100,500);}break;
                         case 25:{MotoOutS(15,15,100,1);}break;
                         case 26:{MotoOutS_B(15,100,500);}break;
                        
                         case 27:{MotoOutS_R(30,100,500);}break;
                         case 28:{MotoOutS_B(30,100,500);}break;
                         case 29:{MotoOutS_L(30,100,500);}break;
                         case 30:{MotoOutS_B(30,100,500);}break;
                        
                         case 31:{MotoOutS1();}break;
                        
                         case 32:{MotoOutS2();}break;
                        
                         case 33:{MotoOutS(10,10,140,2);}break;
                         case 34:{MotoOutS(10,10,120,2);}break;
                         case 35:{MotoOutS(12,12,100,2);}break;
                        
                         case 36:{MotoOutS(3,3,270,2);}break;
                         case 37:{MotoOutS(3,3,220,2);}break;
                         case 38:{MotoOutS(3,3,140,3);}break;
                        
                         case 39:{MotoOutS(15,15,100,2);}break;
                         case 40:{MotoOutS(15,15,120,2);}break;
                         case 41:{MotoOutS(18,18,140,2);}break;
                        
                         case 42:{MotoOutS(3,3,140,3);}break;
                         case 43:{MotoOutS(3,3,220,2);}break;
                         case 44:{MotoOutS(3,3,270,2);}break;
                        
                         case 45:{MotoOutS(18,18,120,4);}break;
                        
                         case 46:{MotoOutS(5,5,100,2);}break;
                         case 47:{MotoOutS_B(20,100,500);}break;
                         case 48:{MotoOutS_B(20,100,200);}break;
                         case 49:{MotoOutS(5,5,100,2);}break;
                         case 50:{MotoOutS_B(20,100,500);}break;
                         case 51:{MotoOutS_B(20,100,200);}break;
                        
                         case 52:{MotoOutS(15,15,100,1);}break;
                         case 53:{MotoOutS_B(15,100,500);}break;
                         case 54:{MotoOutS(15,15,100,1);}break;
                         case 55:{MotoOutS_B(15,100,500);}break;
                         case 56:{MotoOutS(15,15,100,1);}break;
                         case 57:{MotoOutS_B(15,100,500);}break;
                        
                         case 58:{MotoOutS_R(30,100,500);}break;
                         case 59:{MotoOutS_B(30,100,500);}break;
                         case 60:{MotoOutS_L(30,100,500);}break;
                         case 61:{MotoOutS_B(30,100,500);}break;
                        
                         case 62:{MotoOutS1();}break;
                        
                         case 63:{MotoOutS2();}break;
                        
                         case 64:{MotoOutS(3,3,270,2);}break;
                         case 65:{MotoOutS(3,3,220,2);}break;
                         case 66:{MotoOutS(3,3,140,3);}break;
                        
                         case 67:{MotoOutS(10,10,140,2);}break;
                         case 68:{MotoOutS(10,10,120,2);}break;
                         case 69:{MotoOutS(12,12,100,2);}break;
                        
                         case 70:{MotoOutS(1,1,120,200);}break;
                        
                         case 71:{MotoOutS1();}break;
                        
                         case 72:{MotoOutS2();}break;
                         case 73:{MotoMode=1;}break;
             default:break;
              }   
            //--------------------------------------------------------------
               }break;
        default:break;
     }
     }
}

相关帖子

沙发
hanshun1986|  楼主 | 2012-5-4 10:40 | 只看该作者
//====================================================================================
//
// rnum:左边脉冲数,lnum:右边脉冲数,dtime:间隔时间,,n:循环次数
//====================================================================================
void MotoOutS(uchar rnum,uchar lnum,ushort dtime,uchar n)
{
                 if(OutTemp<rnum)
                           {
                                           OutTemp++;
                                           F_MOTO_R=1;
                                           OutTimeBuff=dtime;
                                          
                           }
                           else
                           {
                                           OutTemp++;
                                           F_MOTO_L=1;
                                           OutTimeBuff=dtime;
                                           if(OutTemp>=(rnum+lnum))
                                           {
                                                   OutTemp=0;
                                                   OutTimeBuff=dtime;
                                                   if(++OutS>=n)
                                                    {
                                                           MotoMode++;
                                                   //        OutTemp=0;
                                                           OutS=0;
                                                     }
                                           }
                                          
                           }
}
//=======================================================================
//
//      单边左输出
//========================================================================
void MotoOutS_L(uchar n1,uchar dl1,uchar dl2)
{
        if(OutTemp<n1)
        {
                OutTemp++;
                F_MOTO_R=1;
                OutTimeBuff=dl1;
        }
        else
        {
                OutTimeBuff=dl2;
                MotoMode++;
                OutTemp=0;
                OutS=0;
        }
}
//=======================================================================
//
//      单边右输出
//========================================================================
void MotoOutS_R(uchar n1,uchar dl1,uchar dl2)
{
        if(OutTemp<n1)
        {
                OutTemp++;
                F_MOTO_L=1;
                OutTimeBuff=dl1;
        }
        else
        {
                OutTimeBuff=dl2;
                MotoMode++;
                OutTemp=0;
                OutS=0;
        }
}
//=======================================================================
//
//      双边输出
//========================================================================
/*void MotoOutS_B(uchar n1,ushort dl2)
{
        if(OutTemp<n1)
        {
                OutTemp++;
                F_MOTO_R=1;
                F_MOTO_L=1;
                OutTimeBuff=dl2;
        }
        else
        {
                OutTimeBuff=dl2;
                MotoMode++;
                OutTemp=0;
                OutS=0;
        }
}*/
void cc2()
{
        OutTimeBuff=100;F_MOTO_R=1;ModeM++;
}
void cc3()
{
        OutTimeBuff=100;F_MOTO_L=1;ModeM++;
}

void MotoOutM1(ushort s)
{
        switch(ModeM)
        {
                case 1:{OutTimeBuff=s;F_MOTO_R=1;ModeM++;}break;
                case 2:{OutTimeBuff=s;F_MOTO_R=1;ModeM++;F_MOTO_L=1;}break;
                case 3:{cc2();F_MOTO_L=1;}break;
                case 4:{cc2();}break;

                case 5:{cc2();F_MOTO_L=1;}break;
                case 6:{cc2();F_MOTO_L=1;}break;
                case 7:{cc2();F_MOTO_L=1;}break;
                case 8:{cc2();F_MOTO_L=1;}break;

                case 9:{cc3();}break;
                //case 10:{cc3();}break;
                case 10:{OutTimeBuff=s;F_MOTO_L=1;ModeM=1;MotoMode++;}break;
               
        }
}
void cc1()
{
        OutTimeBuff=150;F_MOTO_R=1;ModeM++;
}
void cc4()
{
        OutTimeBuff=150;F_MOTO_L=1;ModeM++;
}
void MotoOutM2()
{
        switch(ModeM)
        {
                case 1:{OutTimeBuff=600;F_MOTO_R=1;ModeM++;}break;
                case 2:{cc1();}break;
                case 3:{cc1();F_MOTO_L=1;}break;
                case 4:{cc1();}break;
                case 5:{cc1();}break;
                case 6:{cc1();}break;
                case 7:{cc1();F_MOTO_L=1;}break;
                case 8:{cc1();F_MOTO_L=1;}break;
                case 9:{cc4();}break;
                case 10:{cc4();}break;
                case 11:{cc4();}break;
                case 12:{cc4();}break;
                //case 13:{OutTimeBuff=100;F_MOTO_R=1;ModeM++;}break;
                case 13:{OutTimeBuff=50;F_MOTO_L=1;ModeM=1;MotoMode++;}break;
               
        }
}

//*******************************************************************************************************
//
//               
//       按键处理程序  开关,加和减  
//
//
//*******************************************************************************************************

void KeySub()
{
                if(++KeyTime>=10)
                {
                        KeyTime=0;
                        P_COM1=1;
                        P_COM2=1;
                        _pbc=0x0f;
                        delayus(200);
                        //===================================================================
                        if(F_KEY_ST==0)
                        {
                                if(P_KEY1==0)                                //POWER
                                {
                                        F_ON_OFF=!F_ON_OFF;
                                       
                                        if(F_ON_OFF==0)
                                        {
                                                Ram_init();
                                                BzSub(1,200);
                                                F_KEY_ST=1;
                                                _eei=0;
                                        }
                                        else
                                        {
                                                F_KEY_ST=1;
                                                _eei=1;
                                                F_ON_OFF=1;
                                                BzSub(2,200);
                                        }
                                        return;                                                                                                               
                                }
       
                         if(P_KEY2==0)            //  ++
                                {
                                        F_KEY_ST=1;
                                        if(F_ON_OFF==0)return;
                                            if(MotoViS<8)
                                            {
                                                    MotoViS++;
                                                    MotoVi=MotoViTa[MotoViS];
                                                    MotoViBuff=MotoVi;
                                                    BzSub(1,200);                            //BZ
                                                   
                                            }
                                            return;
                                }
                        if(P_KEY3==0)                                    //--
                                {
                                        F_KEY_ST=1;
                                        if(F_ON_OFF==0)return;
                                        if(MotoViS>1)
                                        {
                                                MotoViS--;
                                                MotoVi=MotoViTa[MotoViS];
                                                   MotoViBuff=MotoVi;
                                            BzSub(1,200);
                                          
                                        }       
                                        return;                                                               
                                }
                               
                         if(P_KEY4==0)                                //MODE
                                {
                                        F_KEY_ST=1;
                                        if(F_ON_OFF==0)return;       
                                        BzSub(1,200);
                                                OutTimeBuff=1000;
                                                F_OUT_E=0;
                                                AutoMode++;
                                                ModeM=1;
                                                MotoMode=1;
                                                   OutTemp=0;
                                                   OutS=0;
                                                   Led2s=0;
                                                   Sunmer=0;                                       
                                                if(AutoMode>=5)
                                                {
                                                        AutoMode=0;
                                                }
                                                F_LED_2S=1;
                                                OutS=0;
                                }
                               
                        }
                       
                        else
                        {
                                if(P_KEY1==0)
                                        return;
                                if(P_KEY2==0)
                                        return;
                                if(P_KEY3==0)
                                        return;
                                if(P_KEY4==0)
                                        return;
                                F_KEY_ST=0;
                        }
                }
}
//*******************************************************************************************************
//
//               
//    LED和数码管显示功能
//    LED1,LED2,LED3   数码管有二门,LEDS分别扫描
//
//*******************************************************************************************************

void LedSub()
{
        //==============================================================
         P_COM1=1;
         P_COM2=1;
         _pbc=0;
         _pb=0;
         
               
                if(F_ON_OFF)
                {
                        P_LED1=0;       //POWER-LED ON
                        if(AutoMode==0)
                        {
                                P_LED3=0;   //AUTO-LED ON
                                P_LED2=1;   //手动LED  灭
                        }
                        else
                        {
                                P_LED3=1;
                                P_LED2=0;
                        }
                }
                else
                {
                        if(F_TIME500MS)
                                P_LED1=1;
                        else
                                P_LED1=0;
                        P_LED3=1;
                        P_LED2=1;
                }
               
                //===================================================================
                if(F_ON_OFF)
                {       
                                if(LedS==0)             //第一个数码管
                                {
                                        LedS=1;
                                        if(F_LED_2S)         //有按模式键显示模式2S
                                        {
                                                if(AutoMode>=10)  //自动模式显示A
                                                        _pb=0x22;
                                                else
                                                        _pb=0x7e;
                                        }                                       
                                    P_COM1=0;       
                                }
                //===================================================================               
                                else                    //第二个数码管
                                {
                                        LedS=0;
                                        if(F_LED_2S)         //有按模式键显示模式2S
                                        {
                                                 if(AutoMode>=10)
                                                 {
                                                         _pb=BcdTal[AutoMode-10];
                                                 }
                                                 else
                                                 {
                                                         _pb=BcdTal[AutoMode];
                                                 }
                                         //        _pb=BcdTal[AutoMode%10];                                                                                               
                                        }
                                        else                 //否则显示强度,H
                                        {
                                                _pb=BcdTal[MotoViS];
                                        }
                                P_COM2=0;       
                                }
                        //        P_COM2=0;
                        //        P_COM1=0;
                        //        _pb=0B11111111;
                        //        _pb=BcdTal[2];
                }       
        //========================================================================       
               
}
//*******************************************************************************************************
//
//               
//     蜂鸣器输出次数  S :响几声
//
//
//*******************************************************************************************************

void BzSub(uchar s,ushort d)
{
        F_BZ_F=1;
        P_BZ=1;
        BzTimeV=d;
        BzTime=0;
        F_BZ_H=1;
        BzS=s;
}
//===================================================
//         
//
//===================================================
void MotoOutS1()
{
        if(F_TEMP_F)
        {
                if(F_TEMP_F1)
                {       
                        F_TEMP_F1=0;
                        F_MOTO_R=1;
                        F_MOTO_L=1;
                        OutTimeBuff=160;
                }
                else
                {
                        OutTemp++;
                        F_TEMP_F1=1;
                        OutTimeBuff=120;
                        F_MOTO_R=1;
                        if(OutTemp>=2)
                        {
                                F_TEMP_F=0;
                                OutTemp=0;
                        }
                       
                }
        }
        else
        {
                if(F_TEMP_F1)
                {       
                        F_TEMP_F1=0;
                        F_MOTO_R=1;
                        F_MOTO_L=1;
                        OutTimeBuff=160;
                }
                else
                {
                        OutTemp++;
                        F_TEMP_F1=1;
                        OutTimeBuff=120;
                        F_MOTO_L=1;
                        if(OutTemp>=2)
                        {
                                F_TEMP_F=1;
                                OutTemp=0;
                                if(++OutS>10)
                                {
                                        OutS=0;
                                        MotoMode++;
                                }
                        }
                       
                }
        }
}
//=========================================================
//
//
//========================================================
//===================================================
//         
//
//===================================================
void MotoOutS2()
{
        if(F_TEMP_F)
        {
                if(F_TEMP_F1)
                {
                        if(F_TEMP_F2)
                        {
                                OutTemp++;
                                F_MOTO_R=1;
                                OutTimeBuff=160;
                                if(OutTemp>=2)
                                {
                                        OutTemp=0;
                                        F_TEMP_F2=0;
                                }
                               
                        }
                        else
                        {
                                OutTemp++;
                                F_MOTO_L=1;
                                OutTimeBuff=160;
                                if(OutTemp>=2)
                                {
                                        OutTemp=0;
                                        F_TEMP_F2=1;
                                        F_TEMP_F1=0;
                                }
                        }
                }
                else
                {
                        OutTemp++;
                        F_MOTO_R=1;
                        F_MOTO_L=1;
                        OutTimeBuff=120;
                        if(OutTemp>=4)
                        {
                                F_TEMP_F=0;
                                F_TEMP_F1=1;
                        }
                }
        }
        //==============================================
        else
        {
          if(F_TEMP_F1)
                {
                        if(F_TEMP_F2)
                        {
                                OutTemp++;
                                F_MOTO_L=1;
                                OutTimeBuff=160;
                                if(OutTemp>=2)
                                {
                                        OutTemp=0;
                                        F_TEMP_F2=0;
                                }
                               
                        }
                        else
                        {
                                OutTemp++;
                                F_MOTO_R=1;
                                OutTimeBuff=160;
                                if(OutTemp>=2)
                                {
                                        OutTemp=0;
                                        F_TEMP_F2=1;
                                        F_TEMP_F1=0;
                                }
                        }
                }
                else
                {
                        OutTemp++;
                        F_MOTO_R=1;
                        F_MOTO_L=1;
                        OutTimeBuff=120;
                        if(OutTemp>=4)
                        {
                                F_TEMP_F=1;
                                F_TEMP_F1=1;
                                if(++OutS>8)
                                {
                                        OutS=0;
                                        MotoMode++;
                                       
                                }
                        }
                }
        }
}
void MotoOutS_B(uchar n1,uchar dl1,ushort dl2)
{
        if(OutTemp<n1)
        {
                OutTemp++;
                F_MOTO_R=1;
                F_MOTO_L=1;
                OutTimeBuff=dl1;
        }
        else
        {
                OutTimeBuff=dl2;
                MotoMode++;
                OutTemp=0;
                OutS=0;
        }
}
void delayus(uchar s)
{
        while(s--);
}

使用特权

评论回复
板凳
ayb_ice| | 2012-5-4 13:27 | 只看该作者
这些人都是大牛,程序一次全部写完,再调试

使用特权

评论回复
地板
de101| | 2012-5-4 16:53 | 只看该作者
估计是Rom小了,编译到KeySub()用完了2k

使用特权

评论回复
5
NE5532| | 2012-5-4 16:55 | 只看该作者
这些人都是大牛,程序一次全部写完,再调试
ayb_ice 发表于 2012-5-4 13:27


同意,我等折腾了8、9年的,都从来不敢如此。而且这些人从来不写注释……另外给楼主说,我从不仿真,直接下载了调就OK了。

使用特权

评论回复
6
hanshun1986|  楼主 | 2012-5-8 19:15 | 只看该作者
既然说了编译无误,那么调试肯定也是没问题的撒,我没有说出来而已。
4楼的兄弟分析是对的,我请教了一位师兄,的确是ROM用完导致的。

使用特权

评论回复
7
NE5532| | 2012-5-8 19:42 | 只看该作者
既然说了编译无误,那么调试肯定也是没问题的撒,我没有说出来而已。
4楼的兄弟分析是对的,我请教了一位师兄,的确是ROM用完导致的。
hanshun1986 发表于 2012-5-8 19:15


对此结论当顶礼膜拜~!

使用特权

评论回复
8
McuPlayer| | 2012-5-9 01:17 | 只看该作者
是链接错误
Linker无法为1011D.OBJ分配足够的程序空间

使用特权

评论回复
9
hanshun1986|  楼主 | 2012-5-10 11:06 | 只看该作者
对此结论当顶礼膜拜~!
NE5532 发表于 2012-5-8 19:42
仔细问了一下,这个说法的确不妥,嘿嘿,见笑了:lol

使用特权

评论回复
10
readlove1| | 2014-4-23 09:25 | 只看该作者
ROM区块*空间已满,段落'@DIS_P'配置存储器空间(大小为0330H)失败 这是什么原因? 写之前明明ROM是够的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:笨鸟先飞

0

主题

73

帖子

1

粉丝