感悟网 导航

求一个51单片机的流水灯(从1-8的...)的汇编程序??? 51单片机16位流水灯汇编程序

作者&投稿:季垂 (若有异议请与网页底部的电邮联系)
51单片机中如何用汇编语言编写流水灯~

流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:
ORG 0000H;复位启动AJMP START;ORG 001BH;T1中断AJMP T1INT;
;定义变量========================YSJSEQU 30H;延时计数器LEDEQU 31H;LED控制缓冲器
;主程序==========================START:MOV LED,#0FEH;初始化数据MOV YSJS,#0;MOV TMOD,#10H;定时器1工作于方式1,16位定时器MOV TL1,#0B0H;设置定时初值MOV TH1,#3CH;定时时间=50mSSETB ET1;使能定时器1中断SETB TR1;启动定时器1SETB EA;开总中断
MOV P1,LED;初始化流水灯LOOP:JMP LOOP;循环等待中断T1INT:PUSH PSW;定时器1中断程序PUSH ACC;保护现场MOV TH1,#3CH;定时时间=50mSMOV TL1,#0B0H;INC YSJS;
PUSH ACC;保护ACCMOV A,YSJI;CJNE A,#2,QT1;50mS*2=100mSMOV 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口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。
第三种,库函数实现流水灯。利用左移函数进行。

花样流水灯的玩法,一个51单片机8位端口轮流输出16颗灯珠,

哈哈,很简单,

ORG 00H
MAIN:MOV P3,#00H
SETB P3.2
CALL DELY
CLR P3.2
SETB P3.3
CALL DELY
CLR P3.3
SETB P3.4
CALL DELY
.........按照上面省略,你自己补全。
AJMP MAIN
DELY:延时省略。
END
这种方法比较麻烦。但容易理解,你可以用循环左移,或者查表比较简洁

ORG 0000H
AJMP MAIN
ORG 0100H
MAIN:MOV A,#0FFH
LOOP:MOV P1,A
CLR P1.0
CALL DELAY
CLR P1.1
CALL DELAY
CLR P1.2
CALL DELAY
CLR P1.3
CALL DELAY
CLR P1.4
CALL DELAY
CLR P1.5
CALL DELAY
CLR P1.6
CALL DELAY
CLR P1.7
MOV P1,A
CLR P1.7
CALL DELAY
CLR P1.6
CALL DELAY
CLR P1.5
CALL DELAY
CLR P1.4
CALL DELAY
CLR P1.3
CALL DELAY
CLR P1.2
CALL DELAY
CLR P1.1
CALL DELAY
CLR P1.0

SJMP MAIN

DELAY:MOV R7,#250

DEL:MOV R6,#250
NOP
NOP
DJNZ R6,$
DJNZ R7,DEL

RET
END
这个我下午才在试验箱上做了,从0到7。再从7到0,也就是左右左循环,这个是最容易看懂的!还有其他的,你如果要我还可以给你。

八个LED灯,P3.0~P3.7才行,程序如下:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV R2,#8

MOV A,#0FEH

LOOP:
MOV P3,A

CLR C

RLC A

LCALL DELAY

DJNZ R2,LOOP

SJMP MAIN

DELAY:
MOV R2,#200

DLY:
MOV R3,#250

DJNZ R3,$

DJNZ R2,DLY

RET

END

ORG 0030H

N1:MOV P3,#11111011B; // P3.2先亮
N2:LCALL YS0_5S; // 延时0.5S
MOV A,P3;
SETB CY;
RLC A; // 带进位左移
JNC N1; // 若CY=0则跳往N1
MOV P3,A;
SJMP N2;

YS0_5S:MOV 40H,#10;
S1: MOV 41H,#200;
S2: MOV 42H,#250;
S3: DJNZ 42H,S3;
DJNZ 41H,S2;
DJNZ 40H,S1;
RET
END

P3.2-P3.7的LED一个一个……--这才6个灯。
(从1-8的...),……--这是8个灯。
--
这程序,谁都没有办法编写。
楼上几位给出程序的,都是“大忽悠”赵本山的徒弟,组团卖拐呢。
只有“回答者: 怎能平庸”例外。

《求一个51单片机的流水灯(从1-8的...)的汇编程序???》
答:哈哈,很简单,ORG 00H MAIN:MOV P3,#00H SETB P3.2 CALL DELY CLR P3.2 SETB P3.3 CALL DELY CLR P3.3 SETB P3.4 CALL DELY ...按照上面省略,你自己补全。AJMP MAIN DELY:延时省略。END 这种方法比较麻烦。但容易理解,你可以用循环左移,或者查表...

《51单片机流水灯程序》
答:include <reg52.h> sbit led1 = P2^0;sbit led2 = P2^1;sbit led3 = P2^2;sbit led4 = P2^3;sbit led5 = P2^4;sbit led6 = P2^5;sbit led7 = P2^6;sbit led8 = P2^7;void main(){ int i,j;//点亮第一个灯 led1 = 1;led2 = 0;led3 = 0;led4 = 0;led5 ...

《如何用单片机实现流水灯,从一依次亮到八,再从八依次亮?》
答:单片机流水灯C语言程序的源代码如下:include //51系列单片机定义文件。define uchar unsigned char //定义无符号字符。define uint unsigned int //定义无符号整数。void delay(uint); //声明延时函数。硬件特征 1、单片机的体积比较小, 内部芯片作为计算机系统,其结构简单,但是功能完善,使用起来十分方...

《怎样用单片机做一个简单的流水灯?》
答:单片机流水灯代码:#include<reg51.h>//51头文件void delay(int t)//定义延时函数{int j;while(t--){for(j=0;j<500;j++);}}void main(){int i;while(1){for(i=0;i<7;i++)//循环点亮LED,到第7个LED延时一会就结束循环。在这个单片机流水灯代码中,假设使用的是8051...

《51单片机流水灯程序》
答:程序如下,仿真见附件。有问题请追问。#include <AT89X51.h>#define uchar unsigned char#define uint unsigned intbit flag_1s=0;uchar code tab[8]={1,2,4,8,16,32,64,128};//[第1小题用这个表]//uchar code tab[8]={0x05,0x0a,0x50,0xa0,0xaa,0x55,0xff,0x00};//[第2小...

《如何用单片机实现流水灯,从一依次亮到八,再从八依次亮回一,一直...》
答:可位寻址。 每一位代表一个灯。对字节LED附初值1,做一个200mS的时钟,每200ms对字节LED值做左移1位指令(汇编可循环)。主程序中位寻址判断字节LED的bit(0-7)点亮相应的灯。或者直接P0=LED 纯想法、还没试过,感觉好玩,呵呵。 好像上述灯流的方式不对,不过可以改。。。

《51单片机中如何用汇编语言编写流水灯》
答:流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:ORG 0000H;复位启动AJMP START;ORG 001BH;T1中断AJMP T1INT;;定义变量===YSJSEQU 30H;延时计数器LEDEQU 31H;LED控制缓冲器 ;主程序===START:MOV LED,#0FEH;初始化数据MOV YSJS,#0;MOV TMOD,#10H;定时器1工作于方式1,16位定时...

《很简的51单片机C语言流水灯程序》
答:1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。例程:include<reg51.h> //51单片机头文件#include <intrins.h> //包含有左右循环移位子函数的库#define uint unsigned int //宏定义#define uchar unsigned char //宏定义sbit beep=P2^3;void delay(uint z) //延时函数,z...

《51单片机16路流水灯怎么用C语言写,并求每个步骤的讲解》
答:}while(1);} 程序中的花样数据可以自以去定义,因这里我们的LED 要AT89C51 的P1 引脚为低电平才 会点亮,所以我们要向P1 口的各引脚写数据O 对应连接的LED 才会被点亮,P1 口的八个引 脚刚好对应P1 口特殊寄存器的八个二进位,如向P1 口定数据0xFE,转成二进制就是 11111110,最低位D0 为0 ...

《单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)》
答:单片机流水灯C语言程序的源代码如下:include //51系列单片机定义文件 define uchar unsigned char //定义无符号字符 define uint unsigned int //定义无符号整数 void delay(uint); //声明延时函数 void main(void){ uint i;uchar temp;while(1){ temp=0x01;for(i=0;i<8;i++) //8个流水...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网