关闭

AVR Studio 4.17软件中两个C文件间调用函数,被调用函数变量值不会改变

370人阅读 评论(0) 收藏 举报
分类:

最近在学习AVR单片机ADC章节内容时,建立了adc.c和display8.c两个文件。adc文件初始化ADC,设置ADC端口、使能和中断;display8.c文件将ADC读取数据通过51单片机HC6800开发板上的8位LED进行显示。main函数保持在adc.c文件内,每次通过adc.c文件中的main函数跨文件调用display()函数时,display()函数中的自变量uchar DisVal的值总是默认为1,即使加入关键字volatile后问题依然存在。

经过反复的模拟在线仿真试验后,发现DisVal被gcc编译器默认为局部函数的变量,将变量DisVal变量提到display8.c文件开头进行定义后,变量的值回复正常。


这个问题虽然解决了,但是下载到51开发板后,又发现8个数码管的位选显示不正常,同时LED亮度很微弱,使用万用表检查电路板,每次ls138某一位为零时,板子工作就不正常,测量电压为-1.9v。

AVR单片机IO口具有吸收电流的功能,两块板子的GND电压不一致导致了51单片机开发板的工作电压过低工作不正常,查明原因后,将两块板子的GND进行连接,8位LED数码管显示正常。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

extern终于搞懂了:1同一个工程一个c文件函数调用另一个c文件函数 2 c文件调用另一个c文件变量 3 c调用c++函数

当gcc assert.c b.c 将两个文件一起编译,这样两个文件看成一个工程。 这样在b.c中定义的a变成全局变量,在assert.c 中用extern 表示引用全局*.o中global a这个变...
  • fdsafwagdagadg6576
  • fdsafwagdagadg6576
  • 2015-06-28 16:29
  • 2459

關於JAVA中String类以形参传递到函数里面,修改后外面引用不能获取到更改后的值

一、 最开始的示例 写代码最重要的就是实践,不经过反复试验而得出的说辞只能说是凭空遐想罢了。所以,在本文中首先以一个简单示例来抛出核心话题:public class StringAsParamOfM...
  • JQ_AK47
  • JQ_AK47
  • 2016-10-03 15:27
  • 6014

在中断程序里修改全局变量的童鞋注意啦~(C中的volatile作用 转载~)

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存...
  • u012993936
  • u012993936
  • 2014-12-16 16:10
  • 3835

两个c语言的调用函数总结

system(); 函数原型:int system( const char *command ); 我以这个为测试为例:system("abcde"); 显示如下: 'abc...
  • hu1020935219
  • hu1020935219
  • 2013-10-25 11:09
  • 1566

调用函数求任意两个整数的最小公倍数和最大公约数

#include//0和任意的一个数的最大公约数就是那个数(最小公倍数就是0) int yue(int x,int y){ int m,t; if(y>x) { t=...
  • TX17_38381517124
  • TX17_38381517124
  • 2017-11-22 21:13
  • 433

Linux常用系统调用函数.ppt

  • 2015-11-22 10:58
  • 454KB
  • 下载

网络编程相关的系统调用函数

  • 2013-06-02 09:30
  • 40KB
  • 下载

IC卡调用函数

  • 2014-06-30 23:59
  • 40KB
  • 下载

丁丁云网络验证delphi调用函数声明源码

  • 2015-08-19 20:48
  • 3KB
  • 下载

matlab调用函数程序

  • 2014-06-20 09:24
  • 310KB
  • 下载
    个人资料
    • 访问:3788次
    • 积分:144
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条
    文章分类