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

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

流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:

ORG 0000H复位启动

AJMP START

ORG 001BHT1中断

AJMP T1INT

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

YSJSEQU 30H延时计数燃蠢器

LEDEQU 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,QT150mS*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汇编程序结束

扩展资料:

实现流水灯的三个方法:

第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延祥空时函数,即皮宴陪可控制每个LED灯的亮灭。

第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。

第三种,库函数实现流水灯。利用左移函数进行。

用MCS51单片机汇编语言编写的点亮一和兄穗只LED灯源程序LED1.ASM,尘含代码如唤卜下:

ORG 0000H

AJMPMAIN

ORG 0030H

MAIN:MOV A,#FEH

MOV P1,A

AJMP $

END

以89c51单片机为例,假定用P1控制LED:IO_LED EQU P1led_0 BIT P1.0led_1 BIT P1.1led_2 BIT P1.2led_3 BIT P1.3led_4 BIT P1.4led_5 BIT P1.5led_6 BIT P1.6led_7 BIT P1.7 定义开关LED的数据,假定LED正极一端接电源,另一端通过限大旦橘流电阻接I/O端口: DATA_CloseLED EQU 11111111BDATA_OpenLED EQU 00000000BORG 0000HAJMP MAINORG 0030H-----------------------延迟者时0.5秒程序(注:此延时函数摘自STC-ISP)DELAY500MS:@12.000MHzPUSH 30HPUSH 31HPUSH 32HMOV 30H,#4MOV 31H,#205MOV 32H,#180NEXT:DJNZ 32H,NEXTDJNZ 31H,NEXTDJNZ 30H,NEXTPOP 32HPOP 31HPOP 30HRET-----------------------下面是主程序MAIN:MOV IO_LED,#DATA_CloseLED同时关闭8个LEDLCALLDELAY500MS延时0.5秒MOV IO_LED,#DATA_OpenLED同时打开8个LEDLCALLDELAY500MS延时0.5秒LJMP MAIN循环END上面程序演示滚团了8个LED间隔0.5秒同时亮和灭的变化。51单片机用汇编语言实现八个LED的全亮全灭


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12436607.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存