打印

新手,请教C51奇怪的问题

[复制链接]
2598|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aliluya|  楼主 | 2007-2-11 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
computer00| | 2007-2-11 21:45 | 只看该作者

把你的hex文件用记事本打开,复制上来看看。

使用特权

评论回复
板凳
aliluya|  楼主 | 2007-2-11 21:47 | 只看该作者

:10085F00D3EF9400EE940040147D657C18ED1D706D
:0E086F00011CED4C70F7EF1F70E61E80E322B7
:100800000000000000000000D2B5D2B4D297D2960A
:10081000000000000000000075B0FF0000000000B4
:10082000000000E5B05430FF643060E400000000D8
:1008300000000000000000000000000020B5D1C250
:10084000967F147E00115FD29620B4FDC2977F146C
:0F0850007E00115FD297A2B5B3A0B450B380F76A
:0300000002087D76
:0C087D00787FE4F6D8FD758107020800C2
:00000001FF


多谢,

使用特权

评论回复
地板
computer00| | 2007-2-11 21:52 | 只看该作者

估计是你所说的那个软件有点问题吧

看看这句:
:0300000002087D76

这是一个跳转语句,地址在0,指令为02087D,跳转到087D处。

使用特权

评论回复
5
aliluya|  楼主 | 2007-2-11 22:31 | 只看该作者

你实说程序编得有问题吗?还是说Topwin有问题?Topwin是top2005的pc端软件。截图中状态栏也显示“起始地址:800”。
但打开其他经过验证正确的代码时它又在0地址开始显示,
难道我的keil设置有问题?

使用特权

评论回复
6
aliluya|  楼主 | 2007-2-12 10:45 | 只看该作者

?

求教,多谢。

使用特权

评论回复
7
aliluya|  楼主 | 2007-2-12 21:48 | 只看该作者

?

没有人能够帮忙吗?

使用特权

评论回复
8
NE5532| | 2007-2-15 16:10 | 只看该作者

你把工程发上来算了,绝对是低级错误。

使用特权

评论回复
9
aliluya|  楼主 | 2007-2-15 19:33 | 只看该作者

这是程序及编译器的设置截图

#include <reg51.H>
#include <intrins.H>
#include <absacc.H>
#define uint unsigned int
#define uchar unsigned char
#define  nop1 _nop_() ,_nop_(),_nop_() ,_nop_(),_nop_() ,_nop_(),_nop_() ,_nop_() ;
sbit  P17=P1^7      ;
sbit  P16=P1^6      ;
sbit  up_v=P3^5     ;
sbit  down_v=P3^4   ;
sbit  P35=P3^5     ;
sbit  P34=P3^4   ;
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void delay(uint m);
void delay(uint m)
{
  uchar i;
  while(m--)
   {
     for(i=0;i<110;i++);
   }
}
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
main()
{
    uchar temp ;
    nop1 ;
    up_v=1   ;
    down_v=1 ;
    P17=1    ;
    P16=1    ;
//  P17=0    ;
//  P16=0    ;
    while(1)
     {
         nop1 ;
         P3=0xff ;
         nop1 ;
         temp=P3&0x30 ;
              
         if(temp!=0x30)
             {
                nop1 ;
                nop1 ;
            //    nop1 ;
            //    nop1 ;
            //    nop1 ;
            //    nop1 ;
            //    nop1 ;
                if(P35==0)
                  {
                     P16=0    ;
                     delay(30);
                     P16=1    ;
                     while(down_v) ;
                     P17=0    ;
                     delay(30);
                     P17=1    ;
                     while((!up_v)|(!down_v))  ;
                     //while(!down_v);
                 }     
             }
     }
     
}

使用特权

评论回复
10
thw| | 2007-2-17 03:01 | 只看该作者

把USE ON CHIP ROM去掉

你的P3口怎么接的
temp=P3&0x30 ;
读的应该是P3的管脚状态,可能对你后面的顺序有影响。

这么简单的程序先拿KEIL访真一下就行了吗。

使用特权

评论回复
11
aliluya|  楼主 | 2007-2-23 00:17 | 只看该作者

?

已经搞定,
原来是编译器的问题,重新安装就好了。

使用特权

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

本版积分规则

6

主题

23

帖子

0

粉丝