loading请求处理中...
10大优享服务
62项会员特权

at89s51单片机程序修改

问题补充:我想让我的程序的单个LED灯能够连续闪烁,间隔时间是1ms!晶振频率为12MHZ!我现在能让它一亮一暗但是不能连续闪烁!程序如下:(请大家做一些小的修改但不要大换血)

 ORG 0000H
 MOV A,#0FEH 
LOOP:MOV P0,A
 LCALL DELAY
 AJMP LOOP2 
DELAY:MOV R4,#10 
 MOV TMOD,#00000001H 
TIME:MOV TH0,#0FCH
 MOV TL0,#18H
 SETB TR0
WAIT: JB TF0,LOOP1 
 AJMP WAIT
LOOP1:CLR TF0 
 DJNZ R4,TIME 
LOOP2:MOV A,#0FFH 
 MOV P0,A
 DJNZ LOOP,DELAY
 RET
 END
提问者:578336383的店铺 2回答 浏览次数:1842 提问时间: 2021/12/01 11:48
提问者采纳
好多都写的不对。而且写得很乱,好的程序不仅功能写得OK,而且程序的排版写得也很漂亮。
 
ORG 0000H
LOOP: ;标号最好是单独一行
 MOV A,#0FEH ;输出低,灯亮
 MOV P0,A 

 LCALL DELAY ;延时 这里LCALL 是调用子程序
 
 MOV A,#0FFH ;输出高,灯灭
 MOV P0,A


 LCALL DELAY ;延时


 AJMP LOOP ;跳到开始,循环执行 


;延时子程序 实际是10ms
DELAY: 
 MOV R4,#10 
 MOV TMOD,#00000001H 
TIME: 
 MOV TH0,#0FCH 
 MOV TL0,#18H 
 SETB TR0
WAIT: 
 JB TF0,LOOP1
 AJMP WAIT 
LOOP1: 
 CLR TF0 
 DJNZ R4,TIME 
 RET ;子程序返回
 
 END

全部回答

  • 从头来过 2021/12/01 11:57
    ORG 0000H
    INT :
    MOV P0,#0FFH
    MOV TMOD,#00000001H
    TIME:MOV TH0,#0FCH
    MOV TL0,#18H
    SETB TR0

    LOOP:
    JB TF0,$
    MOV P0,#00H
    CLR TF0
    JB TF0,$
    MOV P0,#0FFH

    AJMP $

    END

问题分类

我 要 回 答 我 要 提 问
问题分类   验证码 换一组