各位大神!!懂指针的进

2020-02-04 09:13发布

    首先在51中P1的物理地址是90H,如果我不通过用《reg51.h》或者sfr之类的直接用指针,应该
也是可以对P1口进行操作的。
代码如下
void main()
{   
   unsigned char*p;
   p=( volatile unsigned char *)(0x90);
   *p=0xf0;
   while(1);
}
如果上面的代码正确的话,那么8个led是一半亮一半不亮啊,纳闷的是这个程序运行的时候没一点反应,望各位大侠多多指教!!十分感谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
35条回答
y574924080
2020-02-05 00:42
  1. ; . est.SRC generated from: test.c
  2. ; COMPILER INVOKED BY:
  3. ;        C:KeilC51BINC51.EXE test.c BROWSE DEBUG OBJECTEXTEND SRC(. est.SRC)


  4. NAME        TEST

  5. ?PR?main?TEST        SEGMENT CODE
  6.         EXTRN        CODE (?C_STARTUP)
  7.         EXTRN        CODE (?C?CSTPTR)
  8.         PUBLIC        main
  9. ; void main()

  10.         RSEG  ?PR?main?TEST
  11. main:
  12.         USING        0
  13.                         ; SOURCE LINE # 1
  14. ; {   
  15.                         ; SOURCE LINE # 2
  16. ;    unsigned char *p;
  17. ;    p=( volatile unsigned char *)(0x90);
  18.                         ; SOURCE LINE # 4
  19.         MOV          R3,#00H
  20.         MOV          R2,#00H
  21.         MOV          R1,#090H
  22. ;---- Variable 'p?040' assigned to Register 'R1/R2/R3' ----
  23. ;    *p=0xf0;
  24.                         ; SOURCE LINE # 5
  25.         MOV          A,#0F0H
  26.         LCALL        ?C?CSTPTR
  27. ?C0001:
  28. ;    while(1);
  29.                         ; SOURCE LINE # 6
  30.         SJMP         ?C0001
  31. ; END OF main

  32.         END
复制代码

一周热门 更多>