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

* 5607: 初学者:一个让我头痛的问题

    
献发表的帖子 

 初学者:一个让我头痛的问题
;一个让我很头痛的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

发表时间:2002年2月7日12:40:00

  
回复该帖

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

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

  5612.[详细]搞不清楚你的程序的具体功能,而且你的dptr我不能确定。
摘要:......(无内容)
- [leech42][1523次] 2002年2月7日

[上一篇帖子]:会不会是中断死循环了呀!
[下一篇帖子]:应该uchar xdata i _at_ 0x0100;(0