① 用51单片机(汇编语言写)写一个跑马灯程序知道的帮个忙写写。
急用!请教!!!
用汇编语言程序,程序功能:实现方向可控的跑马灯
编程要求:用八个LED发光二极管实现跑马灯(即:8个灯依次轮流发光,每次只亮一个灯),系统启动后,跑马灯右向流转,按下K1键,则反向流转,再按则再反向……。接线方法:流水灯接P0口,按键K1可自选P1~P3任一引脚。
② 单片机汇编语言跑马灯
ORG0000H
LJMPMAIN
ORG001BH
LJMPT1ISR
ORG0030H
MAIN:
MOVTMOD,#10H
MOVTH1,#HIGH(65536-50000)
MOVTL1,#LOW(65536-50000)
SETBTR1
SETBET1
SETBEA
MOVA,#0FEH
MOVP1,A
MOVR2,#5
SJMP$
T1ISR:
CLRTR1
MOVTH1,#HIGH(65536-50000)
MOVTL1,#LOW(65536-50000)
SETBTR1
DJNZR2,T1E
MOVR2,#5
RLA
MOVP1,A
T1E:
RETI
END
③ 单片机跑马灯汇编。反向跑
ORG 0000H
SJMP START
ORG 0030H
START: MOV A, #0FEH ; 先让第一个发光二极管点亮
LOOP: MOV P1, A ; 从P1口输出到发光二极管
MOV R1, #100 ; 延时0.5秒
DEL1: MOV R2, #200
DEL2: MOV R3, #7
DEL3: DJNZ R3, DEL3
DJNZ R2, DEL2
DJNZ R1, DEL1
RL A ; 左移一位,点亮下一个发光二极管
LJMP LOOP
END
这个是我写的跑马灯程序,没有左右振荡,自己参考参考加上去吧
④ 单片机89C51用汇编制作跑马灯P1控制8个LED(D1~D8)灯实现流水灯的效果,高手速度来
很酷的流水灯
#include <reg51.h>
typedef unsigned char uchar;
#define Ton 40
#define LED P0
sbit leds=P1^4;
sbit LED0 = P0^0;
sbit LED1 = P0^1;
sbit LED2 = P0^2;
sbit LED3 = P0^3;
sbit LED4 = P0^4;
sbit LED5 = P0^5;
sbit LED6 = P0^6;
sbit LED7 = P0^7;
unsigned char Maikuan=0;
static unsigned char ledon[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar Occupy_led; //占空比越大,灯越亮
bit light;
uchar m;
void Inittime()
{
TMOD = 0x02; //定时器0,工作方式2,自动重装
TH0 = 256-Ton;
TL0 = 256-Ton;
ET0 = 1;
EA = 1;
TR0 = 1;
}
//定时器0中断
void time0() interrupt 1 using 0
{
Maikuan++;
}
void main()
{
unsigned char i = 0,j = 0; //初始化i,j
leds=0;
Inittime();
while (1)
{
//第1,3,5,7个灯半亮,其余的全亮。
for(i=254; i>0; i--)
{
while ( Maikuan!=20)
{
LED = 0x00;
}
while ( Maikuan!=200)
{
LED = 0x55;
}
Maikuan = 0;
}
//最难的:8个灯从第一个开始依次渐亮,直到最后一个。再从最后一个起渐暗,直到第一个。如此循环往复。
for(j = 0;j<=7;j++)
{
i = 0;
while(i!=255) // 由暗变亮
{
if( Maikuan == 0) // 点亮
{
LED = ledon[j];
}
if(Maikuan == i) // 熄灭
{
LED = 0xff;
}
if( Maikuan== 255)
{
i++;
}
}
}
for(j=7;j>=0;j--)
{
i = 0;
while(i!=255) // 由亮变暗
{
if(Maikuan == 0) // 熄灭
{
LED = 0xff;
}
if( Maikuan == i) // 点亮
{
LED = ledon[j];
}
if( Maikuan == 255)
{
i++;
}
}
}
//所有的灯逐渐从暗到全亮,再由全亮到暗。
for (m=254; m>0; m--)
{
while (Maikuan!=Occupy_led)
{
LED = 0x00;
}
while (Maikuan!=127)
{
LED = 0xff;
}
Maikuan = 0;
if (light)
{
Occupy_led++;
}
else
{
Occupy_led--;
}
if (Occupy_led==128)
{
Occupy_led = 127;
light = !light;
}
if (Occupy_led>128)
{
Occupy_led = 0;
light = !light;
}
}
}
}
⑤ 单片机跑马灯
看看我写的,P0到P7接8个LED.
org ooooh
ajmp main
main:mov r7,#8
main:mov r0,#8 ;一个循环需要移动8位
mov p1,#01111111b ;初始为P0.7灯点亮
loop: clr p2.3
acall ds1ms ;延时,以便人眼可以观察到
setb p2.3
acall ds1ms
mov a,p1 ;读P0口当前显示的数据送到A
rr a ;将A中的数据循环右移1位
mov p1,a ;再将A中右移过的数据送到P0
djnz r0,loop
djnz r7,main ;移动不够8位,跳到LOOP处循环,
ljmp rel ;流动1遍跳转到MAIN处循环流。
;---显示延时----------
ds1ms: mov r1,#1
ds1lo: mov r2,#200
ds2lo: mov r3,#200
djnz r3,$
djnz r2,ds2lo
djnz r1,ds1lo
ret ;延时返回
rel:end
C语言的:
//8个发光二极管循环点亮
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit beep=P2^3;
uchar i,j,m,n,k;
void delay(uchar k)
{for(m=k;m>0;m--)
for(n=125;n>0;n--);
}
void main(void)
{i=0xfe;
while(1)
{//beep=0;
delay(100);
//beep=1;
delay(100);
j=_crol_(i,1);
i=j;
P1=j;
}
}
⑥ 求个51单片机 汇编语言设计的LED跑马灯的程序
C语言程序如下,已经经过了仿真,符合要求.
#include
<reg52.h>
#include<intrins.h>
#define
uchar
unsigned
char
#define
uint
unsigned
int
uchar
t1
=
0;
//-------------------------------
void
TIME0()interrupt
1
{
TH0
=
0xD8;
//初值.
TL0
=
0xF0;
//10ms
@
12MHz
t1++;
}
//-------------------------------
void
main()
//主函数.
{
uchar
i,
aaa
=
0xfe;
TMOD
=
0x01;
//定时器0
TH0
=
0xD8;
//初值.
TL0
=
0xF0;
//10ms
@
12MHz
TR0
=
1;
ET0
=
1;
EA
=
1;
P0
=
0x00;
//全亮.
while
(t1
!=
200);
//等待2000ms
t1
=
0;
aaa
=
0xfe;
P0
=
aaa;
//P1.0发光.
while
(1)
{
for
(i
=
0;
i
<
7;
i++)
{
while
(t1
!=
50);
//等待500ms
t1
=
0;
aaa
=
_crol_(aaa,
1);//左移一位.
P0
=
aaa;
}
//左移位7次,P0.7发光.
for
(i
=
0;
i
<
7;
i++)
{
while
(t1
!=
50);
//等待500ms
t1
=
0;
aaa
=
_cror_(aaa,
1);//右移一位.
P0
=
aaa;
}
//右移位7次,P0.0发光.
}
}
⑦ 51单片机汇编语言编写一个跑马灯的程序,初学者做实验用,具体要求如下,好了可以加分
程序1:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
LOOP:
MOV A,P2
MOV B,A
MOV P0,A
MOV P1,#0FFH
LOOP1:
LCALL DELAY
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
MOV A,P2
CJNE A,B,LOOP
SJMP LOOP1
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
程序2:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
JNB P2.0,LOOP1 ;
JNB P2.1,LOOP2 ;
SJMP MAIN
LOOP1:
MOV P0,#0FEH
MOV P1,#0FFH
LOOP11:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.1,LOOP2
SJMP LOOP11
LOOP2:
MOV P0,#0FCH
MOV P1,#0FFH
LOOP21:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.0,LOOP1
SJMP LOOP21
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
⑧ 用汇编语言编写跑马灯程序
跑马灯程序用汇编是很好实现的,只要用好循环移位指令就可以,以下是程序。
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV A,#0FEH
LOOP:
MOV P1,A ;将控制字送端口
RL A ;控制字循环左移
LCALL DELAY ;延时
SJMP LOOP
DELAY: ;延时大概1秒
MOV R2,#10
DLY1:
MOV R3,#200
DLY2:
MOV R4,#250
DJNZ R4,$
DJNZ R3,DLY2
DJNZ R2,DLY1
RET
END
⑨ 51单片机设计跑马灯的程序用(c语言)编写
|P1口接8个发光二极管共阳
#include <AT89X51.H>
unsigned char i;
unsigned char temp;
unsigned char a,b;
void delay(void)
{
unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
void main(void)
{
while(1)
{
temp=0xfe;
P1=temp;
delay();
for(i=1;i<8;i++)
{
a=temp<<i;
b=temp>>(8-i);
P1=a|b;
delay();
}
for(i=1;i<8;i++)
{
a=temp>>i;
b=temp<<(8-i);
P1=a|b;
delay();
}
}
}
(9)单片机汇编跑马灯扩展阅读:
Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程/仿真/调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。
⑩ 单片机汇编语言跑马灯
1)将你想要的LED显示样式进行编组,这里P1端口中,输出低电平LED亮,高电平LED不亮;
2)然后按你排的顺序输出编组数据,加上延时显示;
3)通过定时器中断(0.5S)来设置准备显示的编组号;