一、下载仿真软件与烧录软件
1、仿真软件Edsim51
前往Edsim51官方网站 (EdSim51 - The 8051 Simulator for Teachers and Students) 下载最新版本的Edsim51,并按照指示安装
2、烧录软件PZ-ISP
前往论坛 普中ISP_下载资源_代码源码-优快云下载 按照指令提取安装包
二、掌握汇编语言用查表法
在汇编语言中,查表法(Table Lookup Method)是一种常用的技术,用于通过查找预先存储在表中的数值或数据来实现某些功能。这种方法通常用于加快某些运算或处理过程,特别是在需要频繁访问特定数据或进行复杂计算时。
1、求平方数的程序
假设我们要计算1到10的平方数,我们可以事先计算好1到10的平方数并存储在一个查找表中,然后在程序中通过查找表来获取平方数。
下面是一个示例汇编代码片段,演示了如何使用查表法来计算1到10的平方数:
ORG 100H ; //程序起始地址
MOV R0, #1 ; //初始化计数器为1
LOOP:
MOV R1, #OFFSET table ; //计算查找表的偏移量
ADD R1, R0 ; //计算查找表中的偏移地址
MOV A, table[R1] ; //从查找表中获取平方数
; //这里可以将平方数存储在其他寄存器或内存中,进行后续处理或输出
INC R0 ; //计数器加1
CMP R0, #11 ; //检查计数器是否达到10
JZ END_LOOP ; //如果计数器为10,则结束循环
JMP LOOP ; //否则继续循环
END_LOOP:
; //在这里可以添加程序结束的处理
table: DB 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 ; //存储1到10的平方数的查找表
END ; //程序结束
该代码使用一个包含1到10的平方数的查找表,然后在循环中通过查找表来获取平方数并进行后续处理(网上借鉴)
三、用开发板进行点灯实验
1、周期性点灯
#include <reg52.h>
#define LED P2 // 假设LED连接到P2口
void delay() {
unsigned int i, j;
for (i = 0; i < 5000; i++) {
for (j = 0; j < 1000; j++) {
}
}
}
int main() {
while (1) {
LED = 0xFF; // 点亮LED
delay();
LED = 0x00; // 熄灭LED
delay();
}
return 0;
}
这段代码的核心思想是通过控制P2口的引脚状态来控制LED的点亮和熄灭,通过·delay();
调用延时函数,使LED保持点亮一段时间,通过延时函数来控制LED的周期性变化
其中 LED = 0xFF;表示
将P2口的所有引脚置为高电平,即点亮LED
LED = 0x00;表示
将P2口的所有引脚置为低电平,即熄灭LED
2、流水灯
这里我将p0当做输出端口,实际开发板上p2为输出端口(下图为51开发板原理图)我们将代码里的p0改成p2即可,输出端口各异同理。
在keil5代码运行成功后便会生成hex文件,在edsim51中打开仿真即可得到闪烁时间(存在误差是正常的)
接下来就要进行烧录,在PZ-ISP中进行程序录入,找到我们设置好的hex文件,连接开发板即可进行下载烧录。(烧录过程大致如下)
最后开发板流水灯效果如下:
通过不断的学习和实践,我们可以更好地掌握汇编语言中使用查表法完成求平方数的程序,并且熟练掌握普中单片机实验开发板的开发使用方法。