【汇编】课程实验-控制继电器、流水灯(51单片机)

实验一 流水灯


学习实验仪和KEIL软件的使用。流水灯程序(可选其他实验)。

采用ISP下载(或仿真器在线仿真)两种方式调试运行程序,编写流水灯程序(采用软件延时每隔0.5秒左右依次点亮八个LED)。

ISP下载:第一步 接USB转串口线。执行STC单片机下载软件,下载流水灯HEX程序,观察8个LED发光管轮流闪烁。
如果采用仿真器在线仿真:将仿真器的USB线连接电脑,把单片机的CPU拔出,将仿真器的仿真头插入单片机的CPU座。编写程序,编译生成HEX文件,点击Debug图标,进入Debug调试模式,全速或单步执行。观察8个发光管轮流闪烁。




实验代码

	org  0000h  	
	ajmp  loop
	
	org  0080h   	
loop:    	

			MOV   P1,#00000110B  //1
			lcall delay 
			MOV   P1,#01011011B//2 11011010B
			lcall delay 
			MOV   P1,#01001111B//3 11110010B
			lcall delay 
			MOV   P1,#01100110B//4 01100110B
			lcall delay 
			MOV   P1,#01101101B//5 10110110B
			lcall delay 
			MOV   P1,#01111101B//6 10111110B
			lcall delay 
			MOV   P1,#00000111B//7 11100000B
			lcall delay 
			AJMP LOOP
			
	//也可以使用移位的方法控制流水灯,代码更加简便
	//如RR等


delay:      mov r5,#40    
d1:		mov r6,#40
d2:  	mov r7,#248
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
	end

若使用移位指令控制流水灯

ORG 0000H
AJMP START

ORG 0080H
START:
    MOV P1, #0  ; 设置P1口为输出口,初始值为全灭
LOOP:
    MOV R1, #00000001B  ; 设置R1为二进制数00000001,表示第一个LED点亮
    MOV R2, #8     ; 设置R2为8,表示总共有8个LED

SHIFT:
    MOV P1, R1     ; 将R1的值输出到P1口,点亮对应的LED
    ACALL DELAY    ; 调用延时函数,延时0.5秒

    ROL R1         ; 左移R1,将下一个LED点亮
    DJNZ R2, SHIFT ; R2减1,如果R2不为0,则跳转到SHIFT继续点亮下一个LED

    SJMP LOOP      ; 跳转到LOOP,重新开始循环

DELAY:
    MOV R3, #0FFH  ; 设置R3,用于延时计数

DELAY_LOOP:
    MOV R4, #0FFH  ; 设置R4,用于延时计数

DELAY_LOOP2:
    DJNZ R4, DELAY_LOOP2  ; R4减1,如果R4不为0,则跳转到DELAY_LOOP2继续计数

    DJNZ R3, DELAY_LOOP   ; R3减1,如果R3不为0,则跳转到DELAY_LOOP继续计数

    RET

END






实验二 继电器编程-控制继电器


继电器编程,控制继电器通断,独立按键单键控制继电器。


实验代码


ORG 0H
	
MOV P2, #0FFH		;初始化
MOV P1, #0FFH

LOOP:

	MOV A,P2		;把P2的值赋给累加器A
	CPL A			;取反
	ANL A,#001H		;将取反后的A与001H按位相与
	JZ LOOP			;若按钮未被按下,则跳转LOOP
	
	LCALL DELAY

	CPL P1.3    ;乒乓球开关
	
	SJMP LOOP
	
	
	
DELAY:      MOV R5,#20    ;延时子程序
	D1:		MOV R6,#40
	D2:  	MOV R7,#248
	DJNZ R7,$
	DJNZ R6,D2
	DJNZ R5,D1
	RET
	END

结果和分析

程序运行后,继电器吸合,吸合时可以听到“搭”的一声。(P1键设计为乒乓球开关,即按一下开,再按一下关)
—如图:

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值