原创 单个LED闪烁程序(用汇编语言实现)

2008-2-18 11:34 9125 13 13 分类: 工程师职场

(1)用延时程序.


MAIN:    SETB P1.0                ;让P1.0引脚变为高电平
                LCALL DELAY
                CLR P1.0                  ;让P1.0引脚变为低电平
                LCALL DELAY
                LJMP MAIN
DELAY: MOV R7,#250         ;将立即数250送给工作寄存器R7
D1:          MOV R6,#250
D2:          DJNZ R6,D2            ;指令被执行250次,DJNZ的执行过程是


将其后面第一个参数值减1,然后看这个值是否等于0.如果等于0,往下执行;如果不等于0,则转到第二个参数所指定的位置去执行.
                DJNZ R7,D1
                RET
                END


注:延时程序占用CPU时间,作为演示可以,实际工作中这样做并不恰当.


截一个图看看实际运行的效果:


6c9d4844-0aae-4aa1-94c8-9f615346790b.jpg


 


(2)定时器的应用


ORG 0000H
AJMP START
ORG 30H
START:
MOV P1,#0FFH                      ;关P1口的所有灯
MOV TMOD,#00000001H    ;定时器/计数器0工作于方式1
MOV TH0,#15H                    
MOV TL0,0A0H                     ;15A0H即十进制的5536
SETB TR0                               ;定时器/计数器0开始运行
LOOP:
JBC TF0,NEXT                      ;这是一条判断转移并清0的指令,JBC后面的第1个参数值如果等于1,则跳到标号(NEXT)所指的位置去执行,同时把这一位清0
LJMP LOOP
NEXT:
CPL P1.0                                 ;取反
MOV TH0,#15H
MOV TL0,#0A0H                  ;重置定时器/计数器的初值
LJMP LOOP
END


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
13
关闭 站长推荐上一条 /3 下一条