打印

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

[复制链接]
2054|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 | 只看该作者

用繁体字的

是港台同胞吗?

使用特权

评论回复
5
qca2369| | 2008-5-23 09:56 | 只看该作者

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

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

0

粉丝