打印
[其它应用]

仿真发现的问题

[复制链接]
1103|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
juventus9554|  楼主 | 2022-11-1 20:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初识中颖单片机,觉得仿真功能作的不错,可是在学习单片机ad功能时,仿真出现了如下的问题:先附源代码:
#include<SH79F083.h>
#define  uint  unsigned  int
#define uchar unsigned char
void main()
{
uint  i,adc,adc_data;
adc=0;
adc_data=0;
ADCON=0x80;
ADT=0x88;
ADCH=0x01;
for(i=0;i<250;i++);
while(1)
{

ADCON|=0x01;
while(ADCON&0x01);
adc = ADDH;
adc = adc<<2 + ADDL;
adc_data=adc;
}
}
仿真结果:首先adc_data一直是0.单步执行能执行到adc = adc<<2 + ADDL;,可是执行不到adc_data=adc;这一步。
          其次,在有时仿真时ADDH,ADDL有时会为0。

使用特权

评论回复
沙发
supernan| | 2022-11-1 20:43 | 只看该作者
是不是我代码做的也有问题

使用特权

评论回复
板凳
liliang9554| | 2022-11-1 20:46 | 只看该作者

是不是给优化了?

使用特权

评论回复
地板
wyjie| | 2022-11-1 20:49 | 只看该作者
是不是代码被优化了,所以断点放adc_data=adc;放得上么?

使用特权

评论回复
5
xxrs| | 2022-11-1 20:51 | 只看该作者
断点放不上去的。

使用特权

评论回复
6
wenfen| | 2022-11-1 20:53 | 只看该作者
我感觉是代码优化的问题 导致断点位置不对

使用特权

评论回复
7
songqian17| | 2022-11-1 20:56 | 只看该作者

断点位置出错了

使用特权

评论回复
8
shimx| | 2022-11-1 20:58 | 只看该作者
应该是被优化掉了,adc_data加个volailte限定词试试

使用特权

评论回复
9
V853| | 2022-11-5 10:04 | 只看该作者
你把软件的优化设置成Lvevl0这样应该就可以断点到每一行了。

使用特权

评论回复
10
朝生| | 2022-11-5 10:05 | 只看该作者
如果仿真效果不佳,可以试试打印LOG,这样可以看到实时的结果。

使用特权

评论回复
11
tpgf| | 2022-12-1 17:30 | 只看该作者
向前打断点 看看单片机有没有在这个位置进行复位

使用特权

评论回复
12
qcliu| | 2022-12-2 13:06 | 只看该作者
数据超限导致出现不可控现象?每次都是卡在这一步吗

使用特权

评论回复
13
drer| | 2022-12-2 13:14 | 只看该作者
adc本身就是uint型数据 再左移两位 会不会数据溢出呀

使用特权

评论回复
14
coshi| | 2022-12-2 13:25 | 只看该作者
xxrs 发表于 2022-11-1 20:51
断点放不上去的。

感觉如果无法打断点的话  就可能说明代码直接被优化掉了 是吧

使用特权

评论回复
15
kxsi| | 2022-12-2 14:22 | 只看该作者
可以暂时将两个语句进行顺序的调换进行确认吗

使用特权

评论回复
16
wiba| | 2022-12-3 08:13 | 只看该作者
在仿真的过程中 实际给定ad的模拟量是否是一个定值呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

900

主题

12190

帖子

3

粉丝