发新帖我要提问
12
返回列表
打印

仿真与实际电路

[复制链接]
楼主: zhoulingrong
手机看帖
扫描二维码
随时随地手机跟帖
21
wangteng1314| | 2010-4-13 20:31 | 只看该作者 回帖奖励 |倒序浏览
dingding

使用特权

评论回复
22
zjswuyunbo| | 2010-4-13 20:37 | 只看该作者
呵呵,估计是prouteus的bug,我碰过类式的

使用特权

评论回复
23
飞跃无线| | 2010-4-13 20:49 | 只看该作者
还没玩过仿真啊,那位给点资料?

使用特权

评论回复
24
麻辣鸭脖子| | 2010-4-13 22:06 | 只看该作者
进来学到不少东西

使用特权

评论回复
25
yjm332501| | 2010-4-14 08:33 | 只看该作者
扫描延时的方法估计有问题.把图和程序贴出来大家看看就知道了。

使用特权

评论回复
26
c4fantasy| | 2010-4-14 09:01 | 只看该作者
能显示8未必能显示1234567哦,很可能是程序里面断码搞反,共阴共阳错误,导致要么8,要么什么都没有

使用特权

评论回复
27
cliff_w| | 2010-4-14 12:37 | 只看该作者
好啊

使用特权

评论回复
28
zzf119| | 2010-4-14 14:55 | 只看该作者
其实很多仿真能用的,实际中还是自己要注意的

使用特权

评论回复
29
zdhlixiang2006| | 2010-4-14 16:38 | 只看该作者
某些人一遇到点问题就抱怨proteus,说实话,仿真了很多实验,还没有遇到过仿真能用,实际不能用呢

使用特权

评论回复
30
zhoulingrong|  楼主 | 2010-4-15 08:06 | 只看该作者
hehe,问题解决了,是我分配地址不适当造成的
我把我需要存储的数据放到了80H 到0FFH之间的空白空间,如0C0H中,可是那一部分好像不宜使用,我也不太清楚不敢肯定是那样,不过我把它们都改到30H 那一块儿就好了
至于其中的具体原因我现在还不太清楚望,有清楚的指点,呵呵
谢谢大家了!

使用特权

评论回复
31
mossopzg| | 2010-4-15 08:09 | 只看该作者
仿真的只是作為參考,會有缺陷,做實際電路的時候得考慮的更加實際點

使用特权

评论回复
32
john_light| | 2010-4-15 08:59 | 只看该作者
hehe,问题解决了,是我分配地址不适当造成的
我把我需要存储的数据放到了80H 到0FFH之间的空白空间,如0C0H中,可是那一部分好像不宜使用,我也不太清楚不敢肯定是那样,不过我把它们都改到30H 那一块儿就好了
至 ...
zhoulingrong 发表于 2010-4-15 08:06

这要看你使用了哪种单片机,有些芯片只有128字节的内部RAM。

另外,0x80~0xFF地址的内部RAM只能用间接寻址方式访问,直接寻址会访问SFR。

使用特权

评论回复
33
冷漠| | 2010-4-15 08:59 | 只看该作者
本帖最后由 冷漠 于 2010-4-15 09:01 编辑

80H 到0FFH 的内部data要使用idata来说明,告诉编译器;编译出来的汇编码是例如:
MOV R0,C0H ; MOV @R0,A ; 需要利用R0/R1间接寻址的。做堆栈使用最好,SP间接寻址,不要用户管理。

80H以下的内部data是编译器默认data存贮说明,汇编码是MOV 30H,A;直接寻址类型的。

使用特权

评论回复
34
john_light| | 2010-4-15 10:04 | 只看该作者
楼上的,51汇编中,立即数要加#。

使用特权

评论回复
35
zhoulingrong|  楼主 | 2010-4-15 12:41 | 只看该作者
0x80~0xFF地址的内部RAM只能用间接寻址方式访问,直接寻址会访问SFR。

需要利用R0/R1间接寻址的。做堆栈使用最好,SP间接寻址,不要用户管理。

谢谢了,呵呵!

使用特权

评论回复
36
ytfyiu| | 2010-4-17 11:16 | 只看该作者
zdhlixiang2006发表于 2010-4-14 16:38 | 只看该作者 回复 引用 评分 报告 返回版面 TOP  得分:0
29楼: 某些人一遇到点问题就抱怨proteus,说实话,仿真了很多实验,还没有遇到过仿真能用,实际不能用呢
=========
void tim0 (void) interrupt 1
{TH0=(-10000/256);
   TL0=(-10000%256);
  if(++cnt>=3)cnt=0;
   switch(cnt)
{ case 0:P0=0xxx;P1=0xxx;break;// 数码管位段.
   case 1:P0=0xxx;P1=0xxx;break;
  case  2:P0=0xxx;P1=0xxx;break;
  default:break;
}


  不管怎么改中断值,就是不能防真

使用特权

评论回复
37
ccxlslr| | 2010-4-18 19:46 | 只看该作者
AT89C52的IO的高电平是不能驱动LED的

使用特权

评论回复
38
gurong60| | 2010-4-20 14:34 | 只看该作者
EA的脚位电压,以前我也出现过

使用特权

评论回复
39
nathenlu| | 2010-4-20 15:47 | 只看该作者
实际电路也要验证下的,可能你的设计是没有错,但不保证你在焊接时,选用元器件是就一定没有错的。

使用特权

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

本版积分规则