大家好,我用keil编译C语言时,遇到如下错误: ERROR: PREPROCESSOR: MACROS TOO NESTED
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大家好,我用keil编译C语言时,遇到如下错误: ERROR: PREPROCESSOR: MACROS TOO NESTED相关的知识,希望对你有一定的参考价值。
主函数程序:
#include<stc12c5a60s2.h>
#include"AD7841.h"
void main()
while(1);
AD7841.h程序:
#ifndef _AD7841_H_
#define _AD7841_H_
#include<stc12c5a60s2.h>
/*-------------端口定义---------------*/
sbit DCLK = P1^0;
sbit DIN = P1^1;
sbit BUSY = P1^2;
sbit DOUT = P1^3;
sbit CS = P1^4;
/*---------------函数声明--------------*/
void write_ADS7841(uchar i);
void Init_AD7841(void);
uint read_ADS7841(void);
#endif
AD7841.c程序:
#include"AD7841.h"
/*--------------------------------------------
函数功能:向AD7841写入数据
输入参数 :控制字
返回参数:无
-----------------ADS7841控制字节描述-----------
Control Byte S A2 A1 A0 MODE SGL/DIF P1 P0
S 1 start,恒为1
A2 A1 A0 通道选择
SGL/DL=1 CH0 -------9 (S A2 A1 A0)
CH1 -------D (S A2 A1 A0)
CH2 -------A (S A2 A1 A0)
CH3 -------E (S A2 A1 A0)
SGL/DL=0 CH0+ CH1--------9 (S A2 A1 A0)
CH0- CH1+-------D(S A2 A1 A0)
CH2+ CH3--------A(S A2 A1 A0)
CH2- CH3+-------E(S A2 A1 A0)
MODE 0 与MODE引脚共同决定转换位数,如果引脚为低,总为12位,
如果MODE引脚为高, MODE位=0为12位 MODE位=1为8位
SGL/DIF 1 高电平单端,低电平差分输入
P1 P0 11 00转换结束进入掉电模式,11 持续供电
------------------------------------------------*/
void write_ADS7841(uchar i) //下降沿写入
uchar n;
CS=0;
for(n=0;n<8;n++)
DCLK=1;
DCLK=1;
DIN=(bit)(i&0x80);
DCLK=0;
DCLK=0;
i=i<<1;
// CS=1; //片选无效 这句不能加上去,加上去显示的就不行了
/*--------------------------------------------
函数功能:初始化AD7841
输入参数 :无
返回参数:无
-----------------------------------------------*/
void Init_AD7841(void)
CS=1; //先让ADS7841片选无效
/*****************重要*******************************/
DOUT=1; //拉高 不然显示都是0
/******************************************************/
DOUT=1; //拉高 不然显示都是0
BUSY=1;
write_ADS7841(0x93); //S=1 SGL/DIF=1 PD1 PD0 =00 选择掉电模式
/*--------------------------------------------
函数功能:从AD7841读数据
输入参数 :无
返回参数:16位的转换值
-----------------------------------------------*/
uint read_ADS7841(void)
uchar n;
uint x;
x=0;
CS=0;
while(BUSY==1);
/*
DCLK=1;
DCLK=1;
DCLK=0;
DCLK=0;
*/
for(n=0;n<12;n++) // 上/下降沿读 ??? 因为DCLK此时为0 貌似都是下降沿有效
DCLK=1;
DCLK=1;
DCLK=0;
DCLK=0;
x=x|DOUT;
//if(n!=0)
//
x=x<<1;
//
for(n=0;n<3;n++)
DCLK=0;
DCLK=0;
DCLK=1;
DCLK=1;
CS=1;
return x;
烦请大侠解决?说的对才有加分
其实是主程序和AD模块控制程序同时都在调用同一个h头文件:
#include<stc12c5a60s2.h>
将AD模块的控制程序调用的头文件屏蔽就不会这样提示。 参考技术A 需要看一下 stc12c5a60s2.h 文件的内容 参考技术B uint
uchar
在哪定义了
~~~~~~~~~~~~~~~~~~~ 参考技术C 是哪一句报错?追问
我点击后没有指向,应该是.H .C文件出错了
以上是关于大家好,我用keil编译C语言时,遇到如下错误: ERROR: PREPROCESSOR: MACROS TOO NESTED的主要内容,如果未能解决你的问题,请参考以下文章
很急,我用keil写一个C语言子函数,去调用数组,怎么写,例如
用命令行编译Java时遇到如下错误提示(该错误是在Class文件生成后,执行java命令时出现的)
keil51中怎么用C语言编程把处理得到的数据存到数据存储器中,掉电不会消失