请教51的一个汇编程序,拜請!

[复制链接]
2745|4
 楼主| GUIZUORU 发表于 2008-5-22 08:44 | 显示全部楼层 |阅读模式
最近在學51匯編程序,現遇到下面一題,中間有3個問題不明白,特討教!


題:六個七段LED數碼管,51系列單片機,LED顯示用動態掃描,P3.0~P3.5做為掃描輸出,P1口輸出段碼數據,數據存放地址為70H~75H。


         ;顯示程序;

DISPLAY:MOV R1,#70H        
        MOV R5,#0FEH        ;掃描端口初值;問:為什么初值一定是0FEH
   PLAY:MOV A,R5
        MOV P1,#OFFH
        MOV P3,A
        MOV A,@R1
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P1,A
        LCALL DL1MS        ;數據顯示1ms時間;可DL1MS程序算出來應該是0.5ms
        INC R1
        MOV A,R5
        JNB ACC.5 ,ENDOUT   ;A中的值為11011111(B)時結束;問:11011111(B)值是怎么算出來的
        RL A
        MOV R5,A
        AJMP PLAY
ENDOUT: MOV P3,#0FFH
        MOV P1,#0FFH
        RET
   TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH

      ;1ms延時;

DL1MS: MOV R6,#14H
   DL1: MOV R7,#19H
   DL2: DJNZ R7,DL2
        DJNZ R6,DL1
        RET
HWM 发表于 2008-5-22 09:03 | 显示全部楼层

to LZ:

0FEH就是11111110b,选择第一个数码管。到了11011111b就是选择第六个数码管了,自然本轮扫描结束从新再来。至于延时要看具体MCU和晶振频率。
chenczy 发表于 2008-5-22 09:07 | 显示全部楼层

这样不知道对不对

   1:那个不是初值,而是位先。我想你用的是共阴的数码,P3.0为0时显示第一位。
   2:那个延时时间和晶振有关的。
   3:你是循环显示的,而位选是P3.0-P3.5,所以到P3.5为0时算循环了一次。再要显示就要从P3.0开始。
gyt 发表于 2008-5-22 15:11 | 显示全部楼层

用繁体字的

是港台同胞吗?
qca2369 发表于 2008-5-23 09:56 | 显示全部楼层

二楼点指点的很好!严重同意!

二楼点指点的很好!严重同意!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部