LJMP MAIN
ORG 030H
MAIN:MOV P0,#00H
MOV P1,#00H
MOV P2,#00H
MOV P3,#00H
lcall del
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
AJMP MAIN
DEL: MOV R7,#0FH延时子程序
DEL1:MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,DEL1
RET
END
;这个是P0,口和P1口 ...P3口闪烁的,你稍微改动一下让其中一个口中的一个管脚变化电平就成。
程序:ORG
0000H
LJMP
MAIN
ORG
4000H
MAIN:MOV
R5,#04H
LOOP:MOV
R1,#00H
MOV
A,#0FEH
L1:MOV
P1,A
LCALL
DELAY
RL
A
INC
R1
CJNE
R1,07H,L1
MOV
R2,#00H
MOV
A,#01H
L2:MOV
P1,A
LCALL
DELAY
RR
A
INC
R2
CJNE
R2,07H,L2
DJNE
R5,LOOP
DELAY:MOV
R6,#02H
D1:MOV
R7,#0FFH
D2:DJNZ
R7,D2
DJNE
R6,D1
RET
END
电路:
连接灯的阴极至P1口上即可,复位和震荡电路不需要我说了吧
说明一下,延时时间不准确,不过基本接近1ms的
t=(256*2+1)*2+1+2=1028
如果想做到精确延时的话建议在DELAY中使用NOP指令调理,自己试一下吧
最好是用Keil仿真一下确定延时时间。
很久没有汇编了,仔细检查一下,估计有Bug也不一定。
如图,只要P1.1输出低电平,发光二极管就会导通发光。串联300欧姆电阻
完整程序:
#include<reg52.h>
sbit P11=P1^1
main()
{P11=0}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)