找回密码
 立即注册

QQ登录

只需一步,快速开始

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

keil的单片机AD转换程序调试

[复制链接]
跳转到指定楼层
楼主
想问一下大家,在keil在线调试的过程中,怎么手动把ADC_CONTR寄存器里的ADC_FLAG位置1呢,或者说,怎么模拟一个ad值给它,运行时一直卡在标蓝处不动了

51hei截图_20230810102751.png (82.96 KB, 下载次数: 34)

51hei截图_20230810102751.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:94031 发表于 2023-8-10 14:56 | 只看该作者
实际器件会自动返回1,人为返回1调试没有意义。
回复

使用道具 举报

板凳
ID:123289 发表于 2023-8-10 16:10 | 只看该作者
将本句暂时改成 while(1或0)
调试完成后改回。
回复

使用道具 举报

地板
ID:1085441 发表于 2023-8-10 16:28 | 只看该作者
你应该查查是不是单片机初始化不对?造成一直在等待转换结束,否则ADC不会出现这个问题
回复

使用道具 举报

5#
ID:213173 发表于 2023-8-10 17:20 | 只看该作者
直接注释掉 while(!(ADC_CONTR & ADC_FLAG));,调试完后改回来。
回复

使用道具 举报

6#
ID:161164 发表于 2023-8-10 17:42 | 只看该作者
本帖最后由 lkc8210 于 2023-8-10 17:53 编辑

1.在while行打断点
2.在Memory1窗口输入D:0xBC(ADC_CONTR的地址)
3.按运行,会停在while行
4.在0xBC位置的值加0x10
如现在看到89(即0x89) 0x89+0x10 = 0x99



5.在0xBC位置输入99
6.再按运行就会跳出while



回复

使用道具 举报

7#
ID:1089588 发表于 2023-8-10 18:42 | 只看该作者
是不是代码有问题呢,清除标志位是不是不该这么写呢
回复

使用道具 举报

8#
ID:647261 发表于 2023-8-10 19:21 | 只看该作者
while语句后面没有加“;”,这样就会把下一句当成是while的循环体,刚好下一句是清零,就永远在while这里循环了
回复

使用道具 举报

9#
ID:647261 发表于 2023-8-10 19:30 | 只看该作者
举个例子:
a=2;
while(a--);
a=1;
a=2;
执行结果:a=2
假如少了个分号
a=2;
while(a--)
a=1;
a=2;
程序就执行不下去了,一直while循环
这样可以理解吧
回复

使用道具 举报

10#
ID:1089588 发表于 2023-8-11 09:31 | 只看该作者
sttt300 发表于 2023-8-10 19:21
while语句后面没有加“;”,这样就会把下一句当成是while的循环体,刚好下一句是清零,就永远在while这里 ...

对的,是我疏忽了,之前试了别的跳出方式忘了加;
回复

使用道具 举报

11#
ID:1089588 发表于 2023-8-11 09:37 | 只看该作者
lkc8210 发表于 2023-8-10 17:42
1.在while行打断点
2.在Memory1窗口输入D:0xBC(ADC_CONTR的地址)
3.按运行,会停在while行

原来如此,强啊,话说如果在线仿真可以采到ad值吗,还是说一定要实物呢
回复

使用道具 举报

12#
ID:1089588 发表于 2023-8-11 09:38 | 只看该作者
xuyaqi 发表于 2023-8-10 14:56
实际器件会自动返回1,人为返回1调试没有意义。

只能实际器件吗,在线的可以吗
回复

使用道具 举报

13#
ID:1040201 发表于 2023-8-11 10:20 | 只看该作者
while(!(ADC_CONTR & ADC_FLAG));   这个分号一定需要
回复

使用道具 举报

14#
ID:94031 发表于 2023-8-11 10:29 | 只看该作者
a825563619 发表于 2023-8-11 09:38
只能实际器件吗,在线的可以吗

调试AD转换只能实际器件才有意义。
回复

使用道具 举报

15#
ID:647261 发表于 2023-8-11 11:16 | 只看该作者
a825563619 发表于 2023-8-11 09:38
只能实际器件吗,在线的可以吗

只是学习的话,仿真没问题的,学得差不多再搞实际器件
proteus 8.9是支持STC15器件的,其他仿真软件我就不清楚了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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