找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2077|回复: 5
打印 上一主题 下一主题
收起左侧

ad转换程序调试的问题

[复制链接]
跳转到指定楼层
楼主
本帖最后由 dsj0430 于 2018-3-21 18:54 编辑

为什么调试到箭头所指那一行就停止了,怎么能继续运行调试。
这是一个AD转换计算电压的函数

OF]]95DEK}Q[2P0QLGFB}4K.png (6.91 KB, 下载次数: 21)

OF]]95DEK}Q[2P0QLGFB}4K.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:237354 发表于 2018-3-21 23:21 | 只看该作者
可能是模拟MCU有问题,ADC_CONTR  ADC_FLAG这二个标志未同时改变,只有强制跳出语句
回复

使用道具 举报

板凳
ID:295312 发表于 2018-3-22 01:29 | 只看该作者
while(!(ADC_CONTR && ADC_FLAG)),此处的代码应该这样写,一个&这个符号是表示取地址,两个才表示与,此处的while里面是判断语句,应该用逻辑与而不是取地址
回复

使用道具 举报

地板
ID:213173 发表于 2018-3-22 07:22 | 只看该作者
由于AD转换完成标志是由硬件置位,调试时只能用软件模拟AD转换完成,调试成功后删除此语句
uint Read(uchar CHA)       
{
        ADC_CONTR=ADC_POWER|ADC_SPEEDLL|CHA|ADC_START;//启动转换1000 1000
    _nop_();                        //延时确保正确读到ADC_CONTR寄存器的值
    _nop_();
    _nop_();
    _nop_();
//        ADC_CONTR |=0x10;                                                //软件模拟转换完成
        while(!(ADC_CONTR & ADC_FLAG));        //等待ADC转换完成标志置位
        ADC_CONTR &=~ADC_FLAG;                                //关闭ADC
        return(ADC_RES*4+ADC_RESL);                //返回十位ADC结果
}
回复

使用道具 举报

5#
ID:287350 发表于 2018-3-22 09:18 | 只看该作者
wulin 发表于 2018-3-22 07:22
由于AD转换完成标志是由硬件置位,调试时只能用软件模拟AD转换完成,调试成功后删除此语句
uint Read(ucha ...

你的方法我明白了
回复

使用道具 举报

6#
ID:371527 发表于 2018-12-9 21:32 | 只看该作者
中断还是查询?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表