导航:首页 > 操作系统 > 单片机流水灯程序汇编程序

单片机流水灯程序汇编程序

发布时间:2022-09-09 20:45:24

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

51单片机用汇编语言编写流水灯程序,就是控制多个LED
,使其在特定时间间隔内,只有一个LED
发光,其他熄灭,用这种方式顺序移动点亮LED的位置,就形成了流水灯的效果。以下是程序:
;假设晶振12MHZ,P1控制8个LED低电平亮
;启动入口========================
ORG
0000H
;复位启动
AJMP
START
;
ORG
001BH
;T1中断
AJMP
T1INT
;
;定义变量========================
YSJS
EQU
30H;延时计数器
LED
EQU
31H;LED控制缓冲器
;主程序==========================
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
;汇编程序结束

2. 单片机流水灯程序

程序如下:

#include <reg52.h>

sbit led1 = P2^0;

sbit led2 = P2^1;

sbit led3 = P2^2;

sbit led4 = P2^3。

让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,单片机技术在电子产品领域的应用,丰富了电子产品的功能,也为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。

从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期。

无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。当前工业发展进程中,电子行业属于新兴产业,工业生产中人们将电子信息技术成功运用。

3. 单片机流水灯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个流水灯逐个闪动

{

P1=~temp;

delay(100); //调用延时函数

temp<<=1;

}

temp=0x80;

for(i=0;i<8;i++) //8个流水灯反向逐个闪动

{

P1=~temp;

delay(100); //调用延时函数

temp>>=1;

}

temp=0xFE;

for(i=0;i<8;i++) //8个流水灯依次全部点亮

{

P1=temp;

delay(100); //调用延时函数

temp<<=1;

}

temp=0x7F;

for(i=0;i<8;i++) //8个流水灯依次反向全部点亮

{

P1=temp;

delay(100); //调用延时函数

temp>>=1;

}

void delay(uint t) //定义延时函数

{

register uint bt;

for(;t;t--)

for(bt=0;bt<255;bt++);

}

(3)单片机流水灯程序汇编程序扩展阅读

51单片机流水灯的源代码如下

#include<reg51.h>

#include<intrins.h>

voiddelay(inta)

{

inti;

while(a--)for(i=0;i<110;i++);

}

main()

{

inti;

while(1)

{

P0=0xfe;

for(i=0;i<8;i++)

{

P0=_crol_(P0,1);

delay(500);

}

}

}

4. 8路流水灯汇编语言程序的写法

汇编语言程序如下:

;假设1:D1~D8八个彩灯接在P1口,输出低电平发光

;假设2:系统晶振为12MHz

;假设3:N = 5

;程序如下:

ORG 0000H

MOV R3, #5 ;N=5

LOOP0:

MOV A, #0FFH

MOV P1, #0FFH ;开始时全灭

;-------------------------------逐个点亮

MOV R2, #8

LOOP1: CLR C

RLC A

MOV P1, A

CALL DL500MS

DJNZ R2, LOOP1

;-------------------------------逐个熄灭

MOV R2, #8

LOOP2: SETB C

RLC A

MOV P1, A

CALL DL500MS

DJNZ R2, LOOP2

;-------------------------------全亮、全灭交替

MOV R2, #4

LOOP3: MOV P1, #0 ;全亮

CALL DL500MS

CALL DL500MS ;共1s

MOV P1, #255 ;全灭

CALL DL500MS ;0.5s

DJNZ R2, LOOP3

;-------------------------------

DJNZ R3, LOOP0

MOV P1, #01001001B ;5、显示为0100 1001

CALL DL500MS

CALL DL500MS ;共1s

SJMP 0000H ;重新开始N遍

;-------------------------------延时子程序

DL500MS:

MOV R5, #9 ;1T

DL1: MOV R6, #128 ;1T

DL2: MOV R7, #215 ;1T

NOP ;1T

DL3: DJNZ R7, DL3 ;2T 2 * 215 = 430 T

DJNZ R6, DL2 ;2T [1+1+430+2] * 128 = 55552 T

DJNZ R5, DL1 ;2T [1+55552+2] * 9 = 499995 T

RET ;2T 1 + 499995 + 2 = 499998 T

;-------------------------------------

流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。

要实现流水灯功能,只要将LED1~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。

实现8个LED流水灯程序用中文表示为:

P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高。

P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。

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

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

ORG 0000H ;复位启动
AJMP START ;
ORG 001BH ;T1中断
AJMP T1INT ;

;定义变量========================
YSJS EQU 30H;延时计数器
LED EQU 31H;LED控制缓冲器

;主程序==========================
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 ;汇编程序结束

(5)单片机流水灯程序汇编程序扩展阅读:

实现流水灯的三个方法:

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

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

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

6. 单片机流水灯汇编程序是怎样的

ORG 000H
LJMP MAIN
ORG 000BH;定时器0中断入口
LJMP LOOP1
ORG 0100H
MAIN:
MOV TMOD,#01H;设置定时器工作模式
MOV TL0,#0EFH;设置定时器初值
MOV TH0,#0D8H
SETB EA;打开总中断
SETB ET0;打开定时器0中断
SETB TR0;启动定时器0
MOV P0,#0FFH
MOV R0,#200;延时参数
LOOP:
CJNE R0,#0,LOOP;延时
MOV A,#0EFH
NEXT:
MOV P0,A ;送值
MOV R0,#50 ;延时参数
EXIT:
CJNE R0,#00H,EXIT ;延时一会儿
RL A ;A循环左移【根据程序分许,该程序完成流水灯功能】
LJMP NEXT

LOOP1:;定时器0中断函数
MOV TL0,#0EFH;定时器初值
MOV TH0,#0D8H ;定时器初值
DEC R0 ;
RETI ;中断返回
END
有疑问可以追问。

7. 求一个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
这种方法比较麻烦。但容易理解,你可以用循环左移,或者查表比较简洁

8. 急!急!急!单片机流水灯汇编语言程序

5只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。

;用最直接的方式实现流水灯

ORG 0000H
START:MOV P1,#01111111B ;最下面的LED点亮
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
MOV P1,#10111111B ;最下面第二个的LED点亮
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
MOV P1,#11011111B ;最下面第三个的LED点亮 (以下省略)
LCALL DELAY
LCALL DELAY ;延时60秒
MOV P1,#11101111B
LCALL DELAY
LCALL DELAY ;延时60秒
MOV P1,#11110111B
LCALL DELAY
LCALL DELAY ;延时60秒
MOV P1,#11111011B
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
LCALL DELAY ;延时60秒
LCALL DELAY ;完成第一次循环点亮,延时约0.25秒
AJMP START ;反复循环

;延时子程序,12M晶振延时约250毫秒
DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250ms
PUSH PSW ;现场保护指令(有时可以不加)
MOV R4,#240
L3: MOV R2 ,#00H
L1: MOV R3 ,#00H
L2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2)
DJNZ R2 ,L1 ; 中层循环:256次
DJNZ R4 ,L3 ;外层循环:240次
POP PSW
RET
END

随便改了一个

9. 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 = 0;

led6 = 0;

led7 = 0;

led8 = 0;

//延时1秒

for(i = 0;i < 110; ++i)

{

for(j = 0; j < 1000; ++j)

{

;//什么也不做

}

}

//点亮第二个灯

led1 = 0;

led2 = 1;

led3 = 0;

led4 = 0;

led5 = 0;

led6 = 0;

led7 = 0;

led8 = 0;

//点亮剩余的灯

//省略……

while(1);

}

(9)单片机流水灯程序汇编程序扩展阅读:

流水灯几点说明:

void:因为该延时函数不需要返回值,所以写为void

delay1s:该函数的函数名,命名需要符合C语言的标识符命名规则。

(): 不需要传入参数,所以括号中为空

至此我们可以把流水灯程序写为以下形式:

阅读全文

与单片机流水灯程序汇编程序相关的资料

热点内容
单片机求初值 浏览:420
安卓机如何在电脑备份图片 浏览:925
ca证书加密机价格 浏览:798
天干地支年份算法 浏览:796
程序员打造的视频 浏览:7
java和php通信 浏览:680
为什么黑程序员 浏览:163
程序员男生 浏览:456
戴尔文件夹内文件怎么置顶 浏览:582
云服务器6m网速 浏览:722
vivo手机中国联通服务器地址 浏览:862
工程总控编译失败 浏览:707
燕赵红枫app如何下载 浏览:867
php查杀软件 浏览:878
教育管理学pdf 浏览:547
服务器均衡怎么使用 浏览:626
linux中jps 浏览:954
单片机实验感想 浏览:561
程序员级别数学算法逻辑 浏览:900
2k21公园怎么换服务器 浏览:724