实验二 P1口亮灯实验
一、实验目的
(1)学习P1口的使用方法; (2)学习延时子程序的编写。 二、实验预备知识
(1)P1口为准双向口,每一位都可独立地定义为输出线或输入线。 (2)本实验中延时子程序采用指令循环来实现,机器周期*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。 三、实验内容
P1作为输出口,接八只发光二极管,编写程序,使发光二极管循环顺序点亮。 四、程序框图
五、实验电路
六、实验步骤
P1.0~P1.7用插针连至L1~L8,运行程序后,观察发光二极管闪亮移位情况。 七、修改程序,分别完成以下任务: 1、修改程序,使二极管闪亮时间改变。
2、修改程序,使二极管闪亮移位方向改变。 3、修改程序,循环实现二极管全亮和全灭。
4、修改程序,循环实现先一次亮4只,然后亮另外4只。 5、修改程序,循环实现先点亮奇数灯,在点亮偶数灯。
6、修改程序,循环实现先顺序点亮奇数灯,在顺序点亮偶数灯。 7、使用定时器T0实现二极管循环点亮(选做)
参考程序:
ORG 0000H AJMP SE18 ORG 0790H
SE18: MOV P1,#0FFH ;送P1口
LO34: MOV A,#0FEH ;L1发光二极管点亮 LO33: MOV P1,A
LCALL SE19 ;延时 RL A ;左移位 SJMP LO33 ;循环
SE19: MOV R6,#0A0H LO36: MOV R7,#0FFH LO35: DJNZ R7,LO35
DJNZ R6,LO36 ;延时 RET END
1、修改程序,使二极管闪亮时间改变。
ORG 0000H AJMP SE18 ORG 0790H
SE18: MOV P1,#0FFH ;送P1口
LO34: MOV A,#0FEH ;L1发光二极管点亮 LO33: MOV P1,A
LCALL SE19 ;延时 RL A ;左移位 SJMP LO33 ;循环
SE19: MOV R6,#0A0H LO36: MOV R7,#0AFH LO35: DJNZ R7,LO35
DJNZ R6,LO36 ;延时 RET END
2、修改程序,使二极管闪亮移位方向改变
ORG 0000H AJMP SE18 ORG 0790H
SE18: MOV P1,#0FFH ;送P1口
LO34: MOV A,#0FEH ;L1发光二极管点亮 LO33: MOV P1,A
LCALL SE19 ;延时
RR A ;右移位 SJMP LO33 ;循环
SE19: MOV R6,#0A0H LO36: MOV R7,#0FFH LO35: DJNZ R7,LO35
DJNZ R6,LO36 ;延时 RET END
3、修改程序,循环实现二极管全亮和全灭。
ORG 0000H AJMP SE18 ORG 0790H
SE18: MOV P1,#0FFH ;送P1口 LO33: MOV P1,#0FFH ;送P1口
LCALL SE19 ;延时 MOV A,#00H MOV P1,A
LCALL SE19 ;延时
SJMP LO33 ;循环
SE19: MOV R6,#0A0H LO36: MOV R7,#0FFH LO35: DJNZ R7,LO35
DJNZ R6,LO36 ;延时 RET END
4、修改程序,循环实现先一次亮4只,然后亮另外4只。
ORG 0000H AJMP SE18 ORG 0790H
SE18: MOV P1,#0FFH ;送P1口 LO33: MOV P1,#0F0H ;送P1口
LCALL SE19 ;延时 MOV A,#00FH MOV P1,A
LCALL SE19 ;延时
SJMP LO33 ;循环
SE19: MOV R6,#0A0H LO36: MOV R7,#0FFH LO35: DJNZ R7,LO35
DJNZ R6,LO36 ;延时 RET
END
5、修改程序,循环实现先点亮奇数灯,在点亮偶数灯。 ORG 0000H AJMP SE18 ORG 0790H
SE18: MOV P1,#0FFH ;送P1口 LO33: MOV P1,#0AAH ;送P1口
LCALL SE19 ;延时 MOV A,#055H MOV P1,A
LCALL SE19 ;延时
SJMP LO33 ;循环
SE19: MOV R6,#0A0H LO36: MOV R7,#0FFH LO35: DJNZ R7,LO35
DJNZ R6,LO36 ;延时 RET END
6、修改程序,循环实现先顺序点亮奇数灯,在顺序点亮偶数灯。
ORG 0000H AJMP SE18 ORG 0790H
SE18: MOV P1,#0FFH ;送P1口
LO34: MOV A,#0FEH ;L1发光二极管点亮
MOV R3,#04H MOV R4,#04H
LO33: MOV P1,A
LCALL SE19 ;延时
RL A ;左移位
RL A ;左移位 DJNZ R3,LO33
LO37: MOV A,#0FDH LO38: MOV P1,A
LCALL SE19 ;延时
RL A ;左移位
RL A ;左移位 DJNZ R4,LO38
SJMP LO34 ;循环 SE19: MOV R6,#0A0H LO36: MOV R7,#0FFH LO35: DJNZ R7,LO35
DJNZ R6,LO36 ;延时 RET END
7、使用定时器T0实现二极管循环点亮(选做)
ORG 0000H AJMP MAIN ORG 000BH AJMP INT0 ORG 0030H
MAIN:MOV SP,#60H
MOV TMOD,#01H MOV TH0,#0D8H MOV TL0,#0F0H SETB TR0 SETB ET0 SETB EA
SE18: MOV P1,#0FFH LO34: MOV A,#0FEH LO33: MOV P1,A
LCALL INT0 RL A SJMP LO33 INT0: MOV TH0,#0D8H
MOV TL0,#0F0H RETI
END
;送P1口
;L1发光二极管点亮;延时 ;左移位 ;循环
因篇幅问题不能全部显示,请点此查看更多更全内容