LED实验&&I/O口实验--将 P0 作为输出口,连接 8 个 LED,编写程序,使 LED 循环点亮

实验三(硬件实验):I/O 接口实验

一、实验要求:

将 P0 作为输出口,连接 8 个 LED,编写程序,使 LED 循环点亮。(LED1 亮,其余灭->LED2 亮,其余灭……,如此循环 5 次后,进行全灭->全亮闪烁,时间间隔为 500ms)。

二、实验目的

  1. 学习单片机的 I/O 口使用方法;
  2. 学习延时程序的编写和使用;
  3. 熟悉实验电路原理图,学习单片机硬件编程方法。

三、实验电路图

电路图

实验流程设计:
这里写图片描述
实验代码:

/***************************************
定时器中断实验
Programed by Lee.rw,all right reserved
****************************************/
ORG 0000H
LJMP MAIN
/********************定时器0中断**************************/
ORG 000BH
LJMP T0_INT						;定时器0中断服务子程序


ORG 0100H
MAIN:
	MOV P1,#0FFH				;初始全灭
	MOV A,#0FEH					;A中存要赋值给P1口的值以控制LED亮灭
	MOV R0,#27H					;循环39次左移即流水5次
	/*****************三个标志位*****************/
	MOV R1,#0H					
	MOV R2,#0H
	MOV R3,#0H
START:
	MOV P1,A
	MOV B,#0AH					;循环10次
	/****************设置定时器工作方式和中断**************/
	SETB EA
	SETB ET0
	MOV TMOD,#01H				;定时器0工作在方式一
	MOV TH0,#03CH				;定时器初值,一次50ms,循环10次,500ms
	MOV TL0,#0AFH
	SETB TR0
HERE:
	SJMP HERE
	RET
	
T0_INT:
	MOV TH0,#03CH				;重新装入初值
	MOV TL0,#0AFH
	DJNZ B,RETURN				
	MOV B,#0AH
	CJNE R3,#0H,JUDGE			;判断五次流水是不是已经完成
	RL A
	DJNZ R0,RETURN				
	MOV R3,#01H
	MOV R1,#01H

JUDGE:
	CJNE R1,#0H,OFF				;全灭
	CJNE R2,#0H,ON				;全亮
	
ON:
	MOV A,#00H
	MOV R2,#0H
	MOV R1,#01H
	AJMP RETURN
	
OFF:
	MOV A,#0FFH
	MOV R1,#0H
	MOV R2,#01H
	
RETURN:
	MOV P1,A
	RETI

END	

下面是另一种运用延时子程序来达到目的的方法,因为太简单直接上代码,不再注释

ORG 0000H
LJMP MAIN

ORG 000BH
LJMP T0_INT


ORG 0100H
MAIN:
	MOV P1,#0FFH
	MOV A,#0FEH
	MOV P1,A
	MOV B,#0AH
	MOV R0,#27H
	SETB EA
	SETB ET0
	MOV TMOD,#01H
	MOV TH0,#03CH
	MOV TL0,#0AFH
	SETB TR0
HERE:
	SJMP HERE
	RET
	

T0_INT:
	MOV TH0,#03CH
	MOV TL0,#0AFH
	DJNZ B,LOOP
	MOV B,#0AH
	RL A
	MOV P1,A
	MOV A,R0
	JZ FUN1
	MOV A,P1
	DEC R0
LOOP:
	RETI
	
FUN1:
	MOV P1,#00FFH
	LCALL DELAY
	MOV P1,#00H
	LCALL DELAY
	SJMP FUN1
	
	
DELAY:
	DEL:MOV R7,#10
	DEL1:MOV R6,#200
	DEL2:MOV R5,#123
	NOP
	DEL3:DJNZ R5,DEL3
	DJNZ R6,DEL2
	DJNZ R7,DEL1
	RET
	
END
  • 12
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值