导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→关于MAX7219的一个问题,请赐教

* 24871: 关于MAX7219的一个问题,请赐教

   caorr 
caorr发表的帖子 

 关于MAX7219的一个问题,请赐教
我用MAX7219驱动8位LED,想要使8位LED分别显示数字1~8,结果全速运行时,1~8显示(但有闪烁现象),但单步运行时,LED全亮,而且发现单步时当第一次调用DISPLAY时LED便已全亮,请问会是什么原因啊?我怎么都不明白,那时MAX7219还没初始化啊,怎么会亮的!
我若关掉电源再上电,请问7219里的寄存器是什么状态啊?
程序如下:
MAX7219的DIN,LOAD,CLK分别连8051的P1.6,P3.5和8255的PC0

       ORG  0000H
       LJMP MAIN
       ORG    0100H
MAIN:  MOV    SP,#60H
       MOV    A,#11000000B
       MOV    DPTR,#7FFFH       ;;8255控制口地址
       MOVX   @DPTR,A
START: MOV    26H,#0BH          ;; 扫描寄存器 (显示位数)
       MOV    27H,#07H          ;; 取值由 00-- 07 , 分别表示显示 1 --- 8 个数码管
       

LCALL  DISPLAY
   ;;单步运行时第一次调用DISPLAY,8位LED便已全亮
       
       MOV    26H,#0AH          ;;; 亮度寄存器
       MOV    27H,#09H          ;; 00 --- 0F 是由 最暗 -->   最亮
       LCALL  DISPLAY

       MOV    26H,#0CH          ;; 关灭寄存器
       MOV    27H,#01H          ;; 取值为 0, 或 1.  为1,正常操作; 为0,关灭
       LCALL  DISPLAY   
      
       MOV    26H,#0FH          ;; 测试寄存器
       MOV    27H,#00H          ;; 取值为 0, 或 1.  为1,测试状态; 为0,正常操作
       LCALL  DISPLAY
       
       MOV    26H,#09H          ;; 译码方式寄存器
       MOV    27H,#0FFH         ;; 取值为0FFH时为BCD码方式,00H时为段选码方
       LCALL  DISPLAY
       
       MOV    26H,#01H          ;; 位0
       MOV    27H,#01H
       LCALL  DISPLAY

       MOV    26H,#02H
       MOV    27H,#02H
       LCALL  DISPLAY

       MOV    26H,#03H
       MOV    27H,#03H
       LCALL  DISPLAY

       MOV    26H,#04H
       MOV    27H,#04H
       LCALL  DISPLAY

       MOV    26H,#05H
       MOV    27H,#05H
       LCALL  DISPLAY

       MOV    26H,#06H
       MOV    27H,#06H
       LCALL  DISPLAY

       MOV    26H,#07H
       MOV    27H,#07H
       LCALL  DISPLAY

       MOV    26H,#08H
       MOV    27H,#08H
       LCALL  DISPLAY

DISPLAY:
       PUSH   00H
       MOV    R0,#08H
       MOV    A,26H
L000:  PUSH   ACC
       MOV    A,#00H
       MOV    DPTR,#7FFFH
       MOVX   @DPTR,A
       POP    ACC
       RLC    A
       MOV    P1.6,C
       NOP
       PUSH   ACC
       MOV    A,#01H
       MOV    DPTR,#7FFFH
       MOVX   @DPTR,A
       POP    ACC
       DJNZ   R0,L000
       NOP
;;=====
       MOV    R0,#08H
       MOV    A,27H
L001:  PUSH   ACC
       MOV    A,#00H
       MOV    DPTR,#7FFFH
       MOVX   @DPTR,A
       POP    ACC
       RLC    A
       MOV    P1.6,C
       NOP
       PUSH   ACC
       MOV    A,#01H
       MOV    DPTR,#7FFFH
       MOVX   @DPTR,A
       POP    ACC
       DJNZ   R0,L001

       NOP
       CLR    P3.5         ;;即MAX7219的LOAD脚
       NOP
       NOP
       SETB   P3.5
       pop    00H
       RET
     
;;==================
       END

发表时间:2003年4月13日23:36:37

  
回复该帖

本主题共有 4 帖,分页:>>>>>该主题的所有内容[4]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  24872.[详细]而且很奇怪的是,当我在MOV 26H,#08HMOV 27H,#08HLCAL..
摘要:而且很奇怪的是,当我在 MOV 26H,#08H MOV 27H,#08H LCALL DISPLAY 语句后加一个循环语句后(WAIT:SJMP  ......(194字)
- [CAORR][1125次] 2003年4月14日

  24874.[详细]你前两句付值作用是?
摘要:......(无内容)
- [langren0468][869次] 2003年4月14日

  25012.[详细]因为MAX7219的CLK脚连8255的PC0脚,所以那是给8255初始化,让8255的PC口作通..
摘要:因为MAX7219的CLK脚连8255的PC0脚,所以那是给8255初始化,让8255的PC口作通用I/O用......(78字)
- [caorr][1156次] 2003年4月14日

[上一篇帖子]:而且很奇怪的是,当我在 MOV 26H,#08H MOV 27H
[下一篇帖子]:朋友说说32位机的开发步骤嘛?