还是关于预编译的各位大侠帮小弟看看??

hotplane 2012-04-17 01:01:06
这是disp.h
#ifndef _DISP_H_
#define _DISP_H_

extern void ddelay(unsigned char i);

///*显示数码*/
#ifdef _DISLED_
void display(unsigned char n,unsigned char s);
#endif


/*根据量程high-low,转换为十进制数*/
#ifdef _DECPV_
extern float DecToPv(unsigned char,float,float);
#endif


///*显示P E*/
#ifdef _DISERR_
extern void displayPErr();
#endif

#ifdef _DISI_
void make_led_inumber(int i_num);
void displayIF(int num);
#else
/** 制作数码管整数数据*/
void make_led_fnumber(float f_num);
void displayIF(float num);
#endif


#endif


disp.c


#include <reg52.h>
#include <intrins.h>
#include "disp.h"

extern unsigned int LED_buf[4];
extern unsigned char code LEDn[15]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
0xf8,0x80,0x90,/*0-9*/0xff/*不显示*/,0xbf/*-*/,0x86/*E*/,0x7f/*小数点*/,0x8c/*p*/};
extern unsigned char code LEDs[4]={0xf7/*right*/,0xfb,0xfd,0xfe/*left*/};



void ddelay(unsigned char i)
{
unsigned char j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
#ifdef _DISLED_
void display(unsigned char n,unsigned char s)
{
P2=LEDs[s];
P0=LEDn[n];


}
#endif

#ifdef _DECPV_
/*char型转化为float,根据量程*/
float DecToPv(unsigned char in,float low,float high)
{
float ren;
ren=(high-low)*(float)((float)in/256);
return ren;

}
#endif


#ifdef _DISERR_
void displayPErr()
{
P0=0XFF; //P
P2=LEDs[3];
P0=LEDn[14];
//display(14,3);
ddelay(10);

P0=0XFF; //E
P2=LEDs[2];
P0=LEDn[12];
//display(12,2);
ddelay(10);
}
#endif


#ifdef _DISI_
/** 制作数码管整数数据*/
void make_led_inumber(int i_num)
{
bit s_flag=0;
int sit;
unsigned int i;

if (i_num < 0)
{
s_flag = 1;
i_num = -i_num;
}

// ET0 = 0;
for (i=2, sit=100; i>=1; i--, sit/=10)
{
if (i_num >= sit)
break;
LED_buf[i] = LEDn[10];
i_num -= i_num/sit*sit;
}

for (;i>=1; i--, sit/=10)
{
LED_buf[i] = LEDn[i_num/sit];
i_num -= i_num/sit*sit;
}
LED_buf[0] = LEDn[i_num] & 0x7F;
if (s_flag)
LED_buf[3] = LEDn[11];
else
LED_buf[3] = LEDn[10];
// ET0 = 1;

}

void displayIF(int num)
{
unsigned char Led_n=0;
make_led_inumber(num);

for(Led_n=0;Led_n<=3;Led_n++)
{
P0=0XFF;
P2=LEDs[Led_n];
P0=LED_buf[Led_n];
ddelay(5);
}


}
#else
/** 制作数码管浮点数据*/
void make_led_fnumber(float f_num)
{
bit s_flag=0;
int num;
int sit;
char i, decimal, dot_sit=0;


if (f_num < 0)
{
s_flag = 1;
f_num = -f_num;
}

num = (int)(f_num*100+0.5);
for (decimal=2; decimal>0; decimal--)
{
if (num % 10 != 0)
break;
num /= 10;
}

dot_sit = decimal;
if (f_num >= 100)
dot_sit = 0;
else if (f_num >= 10)
if (decimal >= 1)
dot_sit = 1;
else if (f_num >= 1)
if (decimal >= 2)
dot_sit = 2;


for (i=0; i<dot_sit; i++)
f_num *= 10;
num = (int)(f_num+0.5);

// ET0 = 0;
for (i=2, sit=100; i>=1; i--, sit/=10)
{
if (num >= sit)
break;
if (i == dot_sit)
break;
LED_buf[i] = LEDn[10];
num -= num/sit*sit;
}
for (;i>=1; i--, sit/=10)
{
LED_buf[i] = LEDn[num/sit];
num -= num/sit*sit;
}
LED_buf[0] = LEDn[num];
LED_buf[dot_sit] &= 0x7F;
if (s_flag)
LED_buf[3] = LEDn[11];
else
LED_buf[3] = LEDn[10];
// ET0 = 1;

}
void displayIF(float num)
{
unsigned char Led_n=0;
make_led_fnumber(num);

for(Led_n=0;Led_n<=3;Led_n++)
{
P0=0XFF;
P2=LEDs[Led_n];
P0 = LED_buf[Led_n];
ddelay(5);
}


}
#endif


这是主函数

#include<reg52.h>
#include <intrins.h>


#include "disp.h"

//#define _DISLED_
#define _DISERR_

void main(void)
{

while(1)
{
// float t;
// t= DecToPv(0x0a,0,256);
// display(2,2);

displayPErr();

// displayIF(-22.3);
// display(1,2);
// displayI(-56);
}
}

但是编译提示::
TEST1.C(21): warning C206: 'displayPErr': missing function-prototype
linking...
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: DISPLAYPERR
MODULE: test1.obj (TEST1)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: DISPLAYPERR
MODULE: test1.obj (TEST1)
ADDRESS: 0010H

警示信息如何去掉???


...全文
99 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbing7 2012-04-18
  • 打赏
  • 举报
回复
在最开始的地方加一句:

#define _DISERR_
内容概要:本文围绕基于混沌系统与DNA编码的彩色图像加密解密体系展开研究,提出了一种多层级、高复杂度的复合加密方法。该方法深度融合混沌系统的伪随机遍历特性与DNA编码的高维并行处理能力,对彩色图像RGB三通道像素信息实施双重混淆与扩散操作,显著增强了加密算法的安全性与抗攻击能力。研究系统性地构建了完整的加密-解密流程,并重点针对实际传输环境中常见的高斯噪声、椒盐噪声及多种裁剪攻击(包括小面积、中面积、边缘与中心区域裁剪)进行了详尽的鲁棒性测试。实验结果表明,该算法不仅具备极高的密钥敏感性与安全性,而且在遭受不同程度噪声干扰或局部数据丢失后,仍能有效恢复出具有清晰结构与可用信息的解密图像,展现出卓越的容错性与实用性。; 适合人群:具备一定图像处理、信息安全或密码学基础知识的科研人员、研究生及从事多媒体安全传输开发的工程技术人员。; 使用场景及目标:①应用于军事通信、医疗影像保护、数字版权管理等对安全性要求极高的图像传输与存储场景;②为新型图像加密算法的设计提供创新思路,并为算法的抗干扰性能评估建立系统化测试体系,推动复合加密技术向工程化、实用化发展。; 阅读建议:建议读者结合Matlab代码实现,复现文中所述的加密流程与抗干扰测试,深入理解混沌序列生成、DNA编码规则映射、像素扩散机制等关键步骤,并可通过调整参数或引入新的攻击类型来进一步拓展算法的性能分析。

27,522

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧