c51单片机中如何用汇编语言编写流水灯

Python015

c51单片机中如何用汇编语言编写流水灯,第1张

51单片机用汇编语言编写流水灯程序,就是控制多个LED ,使其在特定时间间隔内,只有一个LED 发光,其他熄灭,用这种方式顺序移动点亮LED的位置,就形成了流水灯的效果。以下是程序:

假设晶振12MHZ,P1控制8个LED低电平亮

启动入口========================

ORG 0000H 复位启动

AJMP START

ORG 001BH T1中断

AJMP T1INT

定义变量========================

YSJS EQU 30H延时计数器

LED EQU 31HLED控制缓冲器

主程序==========================

START: MOV LED,#0FEH 初始化数据

MOV YSJS,#0

MOV TMOD,#10H 定时器1工作于方式1,16位定时器

MOV TL1,#0B0H 设置定时初值

MOV TH1,#3CH 定时时间=50mS

SETB ET1 使能定时器1中断

SETB TR1 启动定时器1

SETB EA 开总中断

MOV P1,LED 初始化流水灯

LOOP: JMP LOOP 循环等待中断

T1INT: PUSH PSW 定时器1中断程序

PUSH ACC 保护现场

MOV TH1,#3CH 定时时间=50mS

MOV TL1,#0B0H

INC YSJS

PUSH ACC 保护ACC

MOV A,YSJI

CJNE A,#2,QT1 50mS*2=100mS

MOV P1,LED

MOV A,LED

RL A 累加器A的值循环左移1位

MOV LED,A

MOV YSJS,#0

QT1: POP ACC 恢复现场

POP PSW

RETI 返回主程序

END 汇编程序结束

利用编译软件,业界最常用功能最强大的是KEIL uv2/3,将你的源程序编译生成为.hex格式的文件。具体用法你可以先下载一个keil c51的软件。找一个教程看一下。keil c51可以编译C语言,也可以编译汇编语言,也可以把两者混合汇编。但是只有将他们转换成.hex格式(十六进制格式文件)的文件(或者二进制的文件,这种情况一般很少),单片机才能识别。

程序编译好后,剩下的工作就是将生成的.hex烧录到单片机中去啦。使用编程器将文件传到单片机中就行啦。

编程器(也即程序烧录器)现在网上有很多卖的(很便宜的,四五十就行了。我前一段时间在淘宝上买了一个。当然,也可以自己做一个,算了下自己做的话,单个的成本也在三十六块钱左右。单个做不合算,批量才有的赚),很多可以通过计算机串口直接将单片机烧录好。然后再将烧录好的单片机取下来,安装在你的MCU系统中。上电....

搞定收工!O(∩_∩)O~