2021-4-19单片机原理及应用作业

这篇博客详细介绍了基于12MHz晶振的AT89S51单片机的汇编语言编程实践,包括查表获取平方值、数据在片内外存储器之间的迁移以及跑马灯功能的实现。通过实验任务,如从片外数据存储器取数据存入片内RAM,以及在P1口进行跑马灯显示,展示了单片机的编程技巧与应用。
摘要由CSDN通过智能技术生成

延时程序的书写:

以12MHZ为晶振的atm89s51单片机的机器周期为1us为例子
执行一次MOV需要1个机器周期----1us

执行一次DJNZ需要2个机器周期---2us

执行一次nop需要1个机器周期----1us

执行一次RET需要2个机器周期---2us

使用循环程序

实验任务一:

 已知程序存储器中以TAB为起点地址的空间存放着0~9的平方值,累加器A中存放着一个0~9的十进制数据,要求用查表的方法获得A中数据的平方值

org 0000h
	mov 30h, #0
	mov 31h, #1
	mov 32h, #2
	mov 33h, #3
	mov 34h, #4
	mov 35h, #5
	mov 36h, #6
	mov 37h, #7
	mov 38h, #8
	mov 39h, #9
	call start		;将0-9的数据依次放在30h-39h的位置上
start:
	MOV R0,#30H    ;初始化寄存器R0
	MOV R2,#10
	MOV DPTR,#TAB  ;DPTR作为指针,指向TAB表的地址
LOOP:
	MOV A, @R0	 ;将寄存器R0中的数据传送到累加器A中
	MOVC A, @A + DPTR;DPTR的地址加上A的偏移地址中的值传送到累加器A中
	INC R0	   ;R0加一,指向R0寄存器中存放的下一个值
	DJNZ R2, LOOP ;循环10次
	RET	;子程序结束
TAB:
DB 0,1,4,9,16,25,36,49,64,81// 将0-9的平方值放入TAB中
END

实验结果:debug验证查看:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值