标题: 15f2k60s2单片机和stc89c51的使用及头文件区别 [打印本页]

作者: 可能否    时间: 2018-10-3 16:00
标题: 15f2k60s2单片机和stc89c51的使用及头文件区别
51单片机的头文件可以直接在15单片机上使用吗?例如15使用“reg51.h”头文件时需要注意哪些事项。  


我写了一个智能车的红外跟随程序 大神帮忙看看哪里出错了
#include <REGX52.H>

sbit LeftIR=P0^0;                         //定义前方左侧红外探头端口
sbit RightIR=P0^1;                        //定义前方右侧红外探头端口
sbit ZhongIR=P0^2;                        //定义中间红外探头端口
sbit xiao=P0^3;                          //根据此红外信号有无,判断跟随距离是否过近

sbit M1A=P1^0;                              //电机左右引脚口
sbit M1B=P1^1;
sbit M2A=P1^2;
sbit M2B=P1^3;
sbit ENA0=P1^4;                                   //电机控制使能端
sbit ENA1=P1^5;

unsigned char Xinhao;

/**********毫秒延时**********/
void delay_nms(unsigned int t)                   //毫秒延时
{
unsigned int i,j;
for(i=0;i<t;i++)
  for(j=0;j<120;j++);
}

/**********信号处理**********/
void Xhao(Xinhao)
{
if(xiao==0)
{
  Xinhao=0;
}
if( LeftIR ==1 && ZhongIR==1 && RightIR ==1 )
{
  Xinhao=1;
}
if( LeftIR ==0 && ZhongIR==0 && RightIR ==0 )
{
  Xinhao=2;
}
if( LeftIR ==0 && ZhongIR==1 && RightIR ==1 )
{
  Xinhao=3;
}
if( LeftIR ==1 && ZhongIR==0 && RightIR ==1 )
{
  Xinhao=4;
}
if( LeftIR ==1 && ZhongIR==1 && RightIR ==0 )
{
  Xinhao=5;
}
if( LeftIR ==0 && ZhongIR==0 && RightIR ==1 )
{
  Xinhao=6;
}
if( LeftIR ==0 && ZhongIR==1 && RightIR ==0 )
{
  Xinhao=7;
}
if( LeftIR ==1 && ZhongIR==0 && RightIR ==0 )
{
  Xinhao=8;
}
}

/**********电机运行方式**********/
void tingzhi()
{
   M1A=0;                                   //将M1电机A端初始化为0
   M1B=0;                                   //将M1电机B端初始化为0
   M2A=0;                                   //将M2电机A端初始化为0
   M2B=0;
}
void qianjin()
{
   M1A=1;         
   M1B=0;                                   
   M2A=1;                                   
   M2B=0;
}
void houtui()
{
   delay_nms(30);
   M1A=0;                                   
   M1B=1;                                   
   M2A=0;                                   
   M2B=1;
}

void zuozhuan()
{
   M1A=1;                                   
   M1B=0;                                   
   M2A=0;                                   
   M2B=0;
}
void youzhuan()
{
   M1A=0;                                   
   M1B=0;                                   
   M2A=1;                                   
   M2B=0;
}

/**********信号电机综合方式**********/
void Yunxing(unsigned char Yxing)
{
switch(Yxing)
{
case 0:
{
  tingzhi();
  break;
}
case 1:
{
  tingzhi();
  break;
}
case 2:
{
  qianjin();
  break;
}
case 3:
{
  zuozhuan();
  break;
}
case 4:
{
  qianjin();
  break;
}
case 5:
{
  youzhuan();
  break;
}
case 6:
{
  zuozhuan();
  break;
}
case 7:
{
  qianjin();
  break;
}
case 8:
{
  youzhuan();
  break;
}  
}
}

/**********主程序**********/
void main()         
{
Yunxing(0);
while(1)
{
switch(Xinhao)                          
{
  case 0:
  {
   Yunxing(0);
   break;
  }
  case 1:                        
  {
    Yunxing(1);
    break;
  }
  case 2:                        
  {
    Yunxing(2);                              
    break;
  }
  case 3:                       
  {
    Yunxing(3);                           
        break;
  }
  case 4:                  
  {
    Yunxing(4);                                                                       
        break;
  }
  case 5:                        
  {
    Yunxing(5);
        break;                              
  }
  case 6:                  
  {
    Yunxing(6);                                                                       
        break;
  }
  case 7:                  
  {
    Yunxing(7);                                                                       
        break;
  }
  case 8:                        
  {
    Yunxing(8);
        break;                              
  }
}
}
}


作者: 可能否    时间: 2018-10-3 16:01
希望快点回复
作者: wulin    时间: 2018-10-3 17:17
15系列头文件
STC15xxxx.zip (2.33 KB, 下载次数: 35)

作者: 杨雪飞    时间: 2018-10-3 19:34
除了头文件不通用,延时函数等都要改
作者: 围城    时间: 2018-10-3 20:48
不通用,没有用过15系列单片机,
1、注意看看晶振频率确定延时时间
2、头文件引用
3、具体寄存器有无区别
4、端口使用是否需要定义方向
作者: yousunny    时间: 2018-10-3 20:54
主要是延时函数,再看下定时器等。官方有范例程序的
作者: devcang    时间: 2018-10-3 21:52
不完全相同的。。。。。。STC下载工具中,有相应的头文件可以获取到。


~~~~~~~~~~~~~~~~
作者: sxhwdz    时间: 2018-10-4 07:31
15的头文件兼容经典51单片机,但是扩展增加的很多功能,使用了更多的特殊功能寄存器,这些寄存器定义是传统头文件中没有的。所以说如果只使用基本功能,传统的头文件也是可以使用的。
作者: 文凤轩    时间: 2018-10-4 09:08
头文件需要改,延时的那部分也是不一样的,也需要变动的




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1