微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 自建头文件的编写及加载错误!

自建头文件的编写及加载错误!

时间:10-02 整理:3721RD 点击:
自己写的头文件总是说我.h文件里面少了个分号!我仔细看了看,也看了模块和主程序,最终还是没有把问题搞定!求助各位大神!看看我写的头文件格式,调用时哪里出错了!先谢谢了!
/*****************************
用的是tlc2543  ad芯片,目的是转换一路模拟电压信号,并在数码管上显示电压。
主函数和TLC2543.C在一个.c文件里面编译运行都可以,但是我把ad转换程序写
成单独的.C文件,再加头文件就出错了!
*****************************/
#include <reg51.h>
#include <intrins.h>
#include "TLC2543.h"
#define uchar unsigned char
#define uint  unsigned int
uchar a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f};//共阴极段码
uchar b[4];//存放4位要显示的数
sbit clk=P2^7; /*2543时钟*/
sbit D_in=P2^6; /*2543输入*/
sbit D_out=P2^4; /*2543输出*/
sbit cs=P2^5; /*2543片选*/
//1ms延时子程序
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void dis()//数码管显示子程序
{
uint i;
uchar c=0x01;
for(i=0;i<4;i++)
{
  P1=(c<<i);
  P3=b[i];
  if(i==1)//显示小数点
  P3=P3|0x80;
  delay(1);
}
}
/********主函数*******/
void main()
{
uint ad=0;
while(1)
{
  ad=TLC2543(0x00);//从通道0输入
  ad=ad*1.0/4096*3000;//注意这一步不能写成 ad=ad*500/4096
  b[0]=a[ad%10];//个位
  b[1]=a[ad%1000%100/10];//十位
  b[2]=a[ad%1000/100];//百位
  b[3]=a[ad/1000];//最高位
  dis();
}
}
/*************************tlc2543.h****************************/
#ifndef  __TLC2543_h__
#define  __TLC2543_h__
/*#define uint unsigned int
#define uchar unsinged char*/
uint TLC2543(uchar port);
#endif
/**************************tlc2543.c*******************************/
#include <reg51.h>
#include <intrins.h>
#include "TLC2543.h"
#define uchar unsigned char
#define uint  unsigned int
/************************************
  名称:read2543
  功能:TLC2543驱动模块
  输入参数:port通道号
  输出参数:ad转换值
*************************************/
sbit clk=P2^7; /*2543时钟*/
sbit D_in=P2^6; /*2543输入*/
sbit D_out=P2^4; /*2543输出*/
sbit cs=P2^5; /*2543片选*/
uint TLC2543(uchar port)
{
uint ad = 0;
uchar i;
clk = 0;
cs = 0;

for(i=0;i<12;i++)//没有设置控制字时,默认输出数据为12位,
{     //高位先送出,输出数据的格式为2进制
   if(D_out)  //判断输出位是否为1,如果为1,则ad也送入1
    ad|=0x01;//转换后的值高位先送出
   D_in = (bit)(port & 0x80);//通道值高位先送出
   clk = 1;
   _nop_();
   _nop_();
   _nop_();
   clk = 0;
   _nop_();
   _nop_();
   _nop_();
   port<<=1;
   ad<<=1;
}
cs = 1;
ad>>=1;//循环中左移时多移动了一位
return ad;
}

大神们,别致是飘过啊!有空帮我看一下!谢谢!

搞的我头痛,现在搞定了!我把tlc2543.c中用到的变量页在头文件中声明了一下,现在可以通过,并且顺利仿真了!谢谢大家!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top