AT89C51单片机流水灯花样编程:keil软件实战

需积分: 10 4 下载量 32 浏览量 更新于2024-09-08 收藏 121KB DOCX 举报
嵌入式作业2要求学生使用嵌入式汇编语言在keil软件环境下实现花样流水灯的功能。该作业针对的是信息工程学院交通运输工程专业的学生孔方方,学号为2017324008,完成日期为2018年3月29日。 主要任务包括五个阶段的操作:首先,流水灯从右向左和从左向右逐个亮灭;其次,实现固定的亮灭顺序,如从右向左点亮1、3、5、7四个灯,然后从左向右点亮2、4、6、8;接着,灯先全亮再全灭;再次,分别实现1357和2468两个特定序列的亮灭;最后,通过直接修改P1口的值,实现从两端向中间和从中间向两端的亮灭切换。 程序设计流程始于ORG0000H,这是程序的起始地址,但需要跳过中断子函数区域(0000H~0023H)。接着,程序通过LJMP跳转至主函数MAIN。在MAIN函数中,程序设置循环变量R0为8,以控制8个流水灯的循环次数,使用MOVA指令设置初始状态,如将#0FEH(二进制11111110)赋值给累加器A,使得第一盏灯亮起。随后进入循环,通过A1和A2两个子程序分别执行左向右和右向左的亮灭操作,每个子程序中包含了延时子函数DELAY,确保灯的亮灭效果平稳。 在A1中,每次循环左移累加器A的内容,直到R0为0才结束循环。在A2部分,程序执行类似的操作,但累加器A的初始值设为#7FH(二进制11111111),以实现从左向右的亮灯顺序。通过这些步骤,学生练习了嵌入式汇编编程的基础知识,包括指令集、数据处理、循环控制以及I/O操作等。 整个程序设计过程旨在培养学生的逻辑思维能力,对硬件的理解,以及编写高效、简洁的嵌入式汇编程序的能力,同时展示了如何利用keil软件进行程序调试和硬件交互。完成这样的作业有助于提高学生的嵌入式系统开发技能,为后续的专业课程和实际项目打下坚实基础。