51实验代码

欢迎光临

代码均是在keil5中编写,注释可能有所不同,部分代码可能运行结果有问题,(因为注释),部分问题已经改正。

1跑马灯

ORG 00H
	START:
		MOV P0,#0FFH
		CALL DELAY
		MOV P0,#0FBH
		CALL DELAY
		MOV P0,#0F7H
		CALL DELAY
		MOV P0,#0EFH
		CALL DELAY
		MOV P0,#0DFH
		CALL DELAY


		MOV P0,#0BFH
		CALL DELAY
		MOV P0,#07FH
		CALL DELAY
		
		MOV P0,#07FH
		CALL DELAY
		MOV P0,#0BFH
		CALL DELAY
		MOV P0,#0DFH
		CALL DELAY
		MOV P0,#0EFH
		CALL DELAY
		MOV P0,#0F7H
		CALL DELAY
		MOV P0,#0FBH
		CALL DELAY
		MOV P0,#0FDH
		CALL DELAY
		MOV P0,#0FEH
		CALL DELAY
		
		
		JMP START
	DELAY:
		MOV r3,#20
	D1:
		MOV r4,#20
	D2:
		MOV R5,#248
		DJNZ R5,$
		DJNZ R4,D2
		DJNZ R3,D1
		RET 
		END
ORG 00H
	START:
		MOV DPTR,#TABLE
	LOADTABLE:
		CLR A
		MOVC A,@A+DPTR
		CJNE A,#88H,DISPLAY
		JMP START
	DISPLAY:
		MOV P0,A
		CALL DELAY
		INC DPTR
		JMP LOADTABLE
	DELAY:
		MOV R3,#20
	D1:
		MOV R4,20
	D2:
		MOV R5,#248
		DJNZ R5,$
		DJNZ R4,D2
		DJNZ R3,D1
		RET
	TABLE:
		DB 0FEH,0FDH,0FBH,0F7H
		DB 0EFH,0DFH,0BFH,07FH
		DB 07FH,0BFH,0DFH,0EFH
		DB 0F7H,0FBH,0FDH,0FEH	
		DB 88H
		END

接线图

在这里插入图片描述

1–四、课堂实验4:认识中断系统和中断服务程序的编写

实验目的: 认识中断系统和中断服务子程序编写。
实验工具: 普中实验仪、Keil μVision4。
实验内容:
1)实验电路:按钮K1接外部中断0(INT0)、P1.0接一 LED;
2)实验要求:按动一次按键,LED改变一次状态,对于外部中断,可以有两种方式:边沿触发方式和电平触发方式。分别汇编语言编程实现。

电平触发方式

ORG 00H;西木
	JMP MAIN
	ORG 03H
	JMP EXT0
	MAIN:
		MOV IE,#83H;使能
	GREEN:
		NOP
		JMP GREEN	;大循环
	EXT0:
		CPL P1.0;反转灯
		RETI

边沿触发方式

ORG 00H;西木
	JMP MAIN
	ORG 03H
	JMP EXT0
	MAIN:
		MOV IE,#83H;使能
		SETB TCON.0;
	GREEN:
		NOP
		JMP GREEN	;大循环
	EXT0:
		CPL P1.0
		RETI

接线
在这里插入图片描述

2–一、综合设计实验1:片内并行I/O口应用

实验内容:
汇编语言编程并在实验仪实现:检测电路中3个按键的状态,按下按键 时,实现不同的动作。具体要求:
按键1按下:静态数码管显示键号,4个LED指示灯轮流点亮, 呈走马灯状态,相邻指示灯点亮的时间间隔为约1秒钟,并不断 循环;
按键2按下:静态数码管显示键号,继电器动作,某LED亮 ;
按键3按下:所有动作结束;

	;西木,数码管连接P0,P1(0-4)连接跑马灯,K1为P3.0,K2为P3.1,K3为P3.2(中断) P1.6为LED灯
	ORG 00H;
	JMP MAIN
	ORG 03H
	JMP EXT0
	MAIN:
		MOV IE,#83H;
		SETB TCON.0;
		MOV DPTR,#TABLE
		MOV R0,#00H
		MOV P0,#0FFH
		MOV P1,#0FFH
		MOV A,#00H
	GREEN:
		JNB P3.0,KEY11;
		JNB P3.1,KEY21;
		JMP GREEN
	KEY11:;
		MOV A,#00H
		ADD A,#02H
		MOVC A,@A+DPTR
		MOV R5,A
		CALL DISPLAY;
		CALL DISPLAYMA;
		JMP KEY11
	KEY21:;
		CLR P1.6
		MOV A,#00H
		ADD A,#03H
		MOVC A,@A+DPTR
		MOV R5,A
		CALL DISPLAY;
		JMP KEY21	
	EXT0:;
		MOV P0,#0FFH
		MOV P1,#0FFH
		POP  ACC
        MOV SP,#30H                       
        MOV PSW,#00H   
        CLR  A   
        PUSH ACC  
        PUSH ACC
        RETI
	
	DISPLAY:
		MOV P0,R5
		;CALL DELAY
		RET
	DISPLAYMA:
		MOV R6,#3
		MOV A,#01H
	REL3:
		CPL A
		MOV P1,A
		CALL DELAY
		CPL A
		RL A
		DJNZ R6,REL3
		MOV R6,#3
		REL4:
		CPL A
		MOV P1,A
		CALL DELAY
		CPL A
		RR A
		DJNZ R6,REL4
		RET
	DELAY:
		MOV R3,#10
	D1:
		MOV R4,20
	D2:
		MOV R5,#250
		DJNZ R5,$
		DJNZ R4,D2
		DJNZ R3,D1
		RET
	TABLE:
		DB 0FFH,0C0H,0F9H,0A4H,0B0H
		DB 099H,092H,082H,0F8H,080H,090H
		END

接线图

在这里插入图片描述

3–综合设计实验2:片内定时器/计数器应用

实验内容: 汇编语言编程并在实验仪实现:
按键1接于INT0、按键2接于INT1;
按键1按下:启动片内定时器且使用定时器中断方式实现1-9秒 定时,并在静态数码管显示秒数;
按键2按下:停止定时器定时工作;

	ORG 00H;西木  P0接数码管,
	JMP MAIN
	ORG 03H
	JMP EXT0
	ORG 0BH
	JMP TIM0
	ORG 13H
	JMP EXT1
	ORG 1BH
	JMP TIM0
	MAIN:
		MOV IE,#87H
		SETB TCON.0
		SETB TCON.2
		MOV DPTR,#TABLE
		MOV IP,#02H
		MOV TMOD,#01H
		MOV TL0,#0B0H
		MOV R0,#00H
		MOV R1,#00H
	GREEN:
		NOP
		JMP $
	TIM0:
		INC R0
		CJNE R0,#20,NEXT
		INC R1
		MOV A,R1
		MOVC A,@A+DPTR
		CALL DISPLAY
		CJNE R1,#10,INC_SEC
		MOV R0,#00H
		MOV R1,#00H
	NEXT:
		MOV TH0,#3CH
		MOV TL0,#0B0H
		RETI
	INC_SEC:
		MOV R0,#00H 
		JMP NEXT
	EXT0:
		SETB TR0
		RETI
	EXT1:
		CLR TR0
;		MOV A,#0FFH
;		CALL DISPLAY
		RETI
	DISPLAY:
		MOV P0,A
		RET
	TABLE:
		DB 0FFH,0C0H,0F9H,0A4H,0B0H
		DB 099H,092H,082H,0F8H,080H,090H
		END

接线图

在这里插入图片描述

4–片内串行通信接口应用

实验内容: 汇编语言编程并在实验仪实现:
串口助手发送1个0-9的十进制数,实验仪接收并在静态数码管 显示。

ORG 00H;西木 波特率 2400
	JMP MAIN
	MAIN:
		MOV DPTR,#TABLE
		MOV SCON,#50H
		MOV TMOD,#20H
		MOV TH1,#0F3H
		MOV TL1,#0F3H
		SETB TR1
	GREEN:
		JBC RI,DISPLAY
		JMP GREEN
	DISPLAY:
		MOV A,SBUF
		;DA A
		;MOV SBUF,A
		CPL P1.3
		SUBB A,#030H
		DA A
		ADD A,#1
		MOVC A,@A+DPTR
		MOV P0,A
		JMP MAIN
	TABLE:
		DB 0FFH,0C0H,0F9H,0A4H,0B0H
		DB 099H,092H,082H,0F8H,080H,090H
		END

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值