关闭

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

267人阅读 评论(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网站的观点或立场
    个人资料
    • 访问:2742次
    • 积分:114
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类