导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→初学者:一个让我头痛的问题[献]

 *第2279篇: 初学者:一个让我头痛的问题

  
楼 主: 2002年2月7日12:40
 初学者:一个让我头痛的问题
;一个让我很头痛的LDE显示子程序
;不能正常显示出数据寄存器里的值,切只能显示从左到右3位,第4 位不亮,而且串显相当严

;请各位朋友们指点  在下先行谢谢了


;###############################################################################
##########
;此程序为一个4位LED 显示子程序,由T1中断来控制刷 新率
;对此子程序中断所用到的赋值项做一下说明:
WDZ EQU 16H             
MOV WDZ,#08H                      ;(08H  09H 10H 11H是4 个数据寄存器)
MOV R0,WDZ                        ;将数据寄存器的起始地址写入R0
MOV R1,0FEH                       ;从低到高开始显示 
;===========================================================================
;T1中断程序
DSZD1:
    PUSH PSW
    CJNE R1,#0FEH,W2          ;检查是否显示到第一位
    MOV P0,#0FFH
    MOV A,@R0
    MOVC A,@A+DPTR
    MOV P0,A
    MOV P2,R1
    MOV R1,#0FDH
    INC R0
    LJMP W5
W2:
    CJNE R1,#0FDH,W3          ;检查是否显示到第二位
    MOV P0,#0FFH              ;将0FFH传到P0,P2是为了防止显示串位
    MOV P2,#0FFH
    MOV A,@R0                 ;将数据写入ACC
    MOVC A,@A+DPTR            ;查BCD码表
    MOV P0,A                  ;将查到的BCD码 传 到P0口(数据口)
    MOV P2,R1                 ;将位地址码传到P2口(位控制口)
    MOV R1,#0FBH              ;将下一个需要显示的位地址写入R1
    INC R0                    ;数据寄存器地址加1
    LJMP W5
W3:
    CJNE R1,#0FBH,W4          ;检查是否显示到第三位
    MOV P0,#0FFH
    MOV P2,#0FFH
    MOV A,@R0
    MOVC A,@A+DPTR
    MOV P0,A
    MOV P2,R1
    MOV R1,#0F7H
    INC R0
    LJMP W5
W4:                               ;直接显示第四位
    MOV P0,#0FFH              
    MOV P2,#0FFH
    MOV A,@R0
    MOVC A,@A+DPTR
    MOV P0,A
    MOV P2,R1
    MOV R1,#0FEH
    MOV R0,WDZ
W5:
    POP PSW
    RETI

  
2楼:leech42 2002年2月7日13:35
 搞不清楚你的程序的具体功能,而且你的dptr我不能确定。

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:初学者:请教:外部RAM在仿真时能读写,一烧进片子就不行了

[下一篇主题]:C51编程:C51