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

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-29
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单片机用汇编语言编写流水灯程序,就是控制多个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 ;汇编程序结束

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

Loop:
mov a, #01h
mov r2, #8
Output:
mov P1, a
rl a
call Delay
djnz r2, Output
ljmp Loop

Delay:
mov r6, #0
mov r7, #0
DelayLoop:
djnz r6, DelayLoop
djnz r7, DelayLoop
ret

end

端口的寄存器,赋予一个初值。每位对应一路灯。然后做移位命令。左移右移都可以,不就可以流水了。 写好花样,查表 ;亮灯控制程序; ;**; ORG ,

单片机不分是不是c51,只要是51单片机都支持汇编需要和c语言两种方式设计程序,实现流水灯功能。

  • 51单片机汇编语言,花样流水灯编程
    答:看你流程图,是要求用汇编语言写程序的。可是,按流程图写程序是很麻烦的,这是教材上的题目吗?哪有这么写汇编程序的?用查表程序就很简单了。你先采纳了,再发私信给你程序,这样,也可以不让别人看到程序。因为,这里有太多的人,看到程序后,得到了答案却不采纳,所以,这种提问都不愿意回答了。...
  • 这个单片机用汇编语言怎么编程?
    答:用 51 单片机汇编语言,编程如下:
  • 帮忙用MSC-51单片机汇编语言修改给出的代码,要求每个灯闪烁5次后再往后...
    答:MOV R2, #8 ;设计数值.OUTPUT:MOV R3, #5 ;设计数值.OUT_5:MOV P1, A ;送P1口输出.ACALL DELAY MOV P1, #0FFH ACALL DELAY DJNZ R3, OUT_5 RL A DJNZ R2,OUTPUT LJMP LOOP DELAY: MOV R6, #0 ;延时子程序.MOV R7, #0 DELAYLOOP:DJNZ R6, DELAYLOOP...
  • 用51单片机汇编语言,数码管静态轮流显示1~F
    答:错误给你找到了,由于在查显示编码表时 要不断地使用累加器A, 累加器A不能用来保存要轮流要显示的数据,可以改用R4.ORG 0000H TT: MOV R4,#0 ;循环16次 KK: MOV A,R4 MOV DPTR,#TABLE ;存入表的起始地址 MOVC A,@A+DPTR ;按地址取代码并存入A MOV P0,A ;将代码...
  • C51单片机的汇编语言怎么用C语言编的,求指点
    答:你这程序是单片机内部数据处理程序,C语言程序表现在外部
  • 跪求单片机c51用汇编语言写的程序,功能为:8只发光二极管依次点亮,从...
    答:手机版 我的知道 搜索答案 跪求单片机c51用汇编语言写的程序,功能为:8只发光二极管依次点亮,从左向右移动,时间间隔0.5秒。 30 跪求单片机c51用汇编语言写的程序,功能为:8只发光二极管依次点亮,从左向右移动,时间间隔0.5秒。 最好加上注释每一步在做什么,急用,好人一生平安!萌...
  • 如何用汇编语言写这个80c51单片机的程序?
    答:汇编很难写的一般都是用c
  • 怎样将汇编语言写入51单片机
    答:首先要用编译器,编译成可以下载的文件,像51单片机,一般最后生成一个。hex文件。然后用一个下载工具,网上有卖,或者学校实验室等。将单片机放入烧录座上,用电脑上的上位机软件将得到的hex文件下载进去即可。
  • 跪求单片机c51用汇编语言写的程序,功能为:8只发光二极管依次点亮,从...
    答:MAIN: MOV P1, #11111110B ; P1 口 点亮一个发光二极管 ACALL DELAY ; 调用延时子程序 MOV P1, #11111101B ; 从左向右移动 一位 ACALL DELAY MOV P1, #11111011B ACALL DELAY MOV P1, #11110111B ACALL DELAY MOV P1, #11101111B ACALL DEL...
  • 51单片机编程题,用汇编语言怎么做?
    答:ET0=1; TR0=1;} void timer0() interrupt 1 { TH0 = (65536-500)/256; //定时器装初值500, 1mS 中断一次 TL0 = (65536-500)%256;CP=~CP; //改变脉冲信号的输出状态 } void main(){ Timer0_init();CP=0;while(1) { } } 汇编语言,才看到,算了,你别人的回答吧 ...