weixin_43777875 2020-10-01 13:59 采纳率: 0%
浏览 218
已采纳

怎么在MOV R0,#19 和CPL P2.3之间插入一个延迟两秒的指令?

ORG 0H
MOV R0,#20
MOV R1,#0 //Set time value = 0, seconds
MOV R2,#0 //minutes
MOV R3,#0 //hours
ACALL SETDIS //initialise the display
MOV TMOD,#0x01
REPEAT: MOV TH0,#0x3C
MOV TL0,#0xB0
SETB TR0
WAIT: JNB TF0,WAIT
CLR TR0
CLR TF0
DJNZ R0,REPEAT
MOV TH0,#0x3C
MOV TL0,#0xB0
SETB TR0
MOV R0,#19
CPL P2.3 //output every second
ACALL INCT //Increment time
ACALL DIST //Display time
AJMP WAIT

SETDIS: MOV A,#30H //Display initialisation routine
ACALL COMNWRT

ACALL DELAY1

MOV A,#0CH

ACALL COMNWRT

ACALL DELAY1

MOV A,#01

ACALL COMNWRT

ACALL DELAY2

MOV A,#06H

ACALL COMNWRT

ACALL DELAY1

RET

INCT: MOV A,R1 //Update time count routine

    //your code here
    ADD A,#01H
    DA A
    MOV R1,A
    CJNE A,#60H,INCE
    MOV R1,#0
    MOV A,R2
    ADD A,#1
    DA A
    MOV R2,A
    CJNE A,#60H,INCE
    MOV R2,#0
    MOV A,R3
    ADD A,#01H
    DA A
    MOV R3,A
    CJNE A,#24H,INCE
    MOV R3,#0

INCE: RET

DIST: MOV A,#01 //Update display routine
ACALL COMNWRT //Reset display
ACALL DELAY2

MOV A,R3 //MSD first

    //your code here
    SWAP A
    ACALL FUNC1
    MOV A,R3
    ACALL FUNC1
    MOV A,#3AH
    ACALL DATAWRT
    ACALL DELAY1
    MOV A,R2
    SWAP A
    ACALL FUNC1
    MOV A,R2
    ACALL FUNC1
    MOV A,#3AH
    ACALL DATAWRT
    ACALL DELAY1
    MOV A,R1
    SWAP A
    ACALL FUNC1
    MOV A,R1
    ACALL FUNC1



    RET

FUNC1:

ANL A,#0FH
ORL A,#30H
ACALL DATAWRT
ACALL DELAY1
RET

COMNWRT:

MOV P0,A

CLR P2.0

CLR P2.1

SETB P2.2

ACALL DELAY1

CLR P2.2

RET
DATAWRT:

MOV P0,A

SETB P2.0

CLR P2.1

SETB P2.2

ACALL DELAY1

CLR P2.2

RET

DELAY1: MOV R5,#30 //Short delay
LP1: DJNZ R5,LP1

RET

DELAY2: MOV R5,#50 //long delay
HERE2: MOV R4,#50

HERE: DJNZ R4,HERE

DJNZ R5,HERE2
RET

    END
  • 写回答

1条回答 默认 最新

  • threenewbee 2020-10-01 14:36
    关注
    DELAY:  MOV  R6, #13
    DELAY1: MOV  R5, #250
    DELAY2: NOP
     DJNZ  R5, DELAY2
     DJNZ  R6, DELAY1
    RET
    

    上面的代码在12MHz的处理器上延迟1秒,如果你要2秒,就改下数字,2倍,如果你的cpu频率更高,也要相应修改增加循环次数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效