用51系列单片机编写一个跑马灯程序。哪位大侠帮帮忙,在线等。。。。。
要求平时L0--L3与L4--L7依次以0.5秒间隔闪亮;当合上开关K再断开后L0--L7依次以0.2秒间隔点亮3次,3次完后又回到原来的L0--L3和L4--L7依次点...
要求平时L0--L3与L4--L7依次以0.5秒间隔闪亮;当合上开关K再断开后L0--L7依次以0.2秒间隔点亮3次,3次完后又回到原来的L0--L3和L4--L7依次点亮的状态。
要汇编的 展开
要汇编的 展开
1个回答
展开全部
程序我给你,假如说使用P1口作为输出口,P2^6作为开关,单片机用52的,按键用的是不带锁的按键开关,未按下时为高电平,按下后变成低电平,用P2^6控制:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned char
sbit L0=P1^0;
sbit L1=P1^1;
sbit L2=P1^2;
sbit L3=P1^3;
sbit L4=P1^4;
sbit L5=P1^5;
sbit L6=P1^6;
sbit L7=P1^7;
key=P2^6;
void Delay(unt xms);
void main( void )
{uint a;
while(1)
{
Delay(500);
L1=1;
Delay(500);
L2=1;
Delay(500);
L3=1;
Delay(500);
L4=1;
Delay(500);
L5=1;
Delay(500);
L6=1;
Delay(500);
L7=1;
if(!key)
Delay(10);
for(a=3;a>0;a--)
{Delay(200)
L1=1;
Delay(200)
L2=1;
Delay(200);
L3=1;
Delay(200);
L4=1;
Delay(200);
L5=1;
Delay(200);
L6=1;
Delay(200);
L7=1;}
}
}
代码有些繁琐了,你可以试试精简一下!
void Delay(uint a)
{
int i,j;
for(i=0;i<a;i--)
for(j=0;j<110;j++);
}
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned char
sbit L0=P1^0;
sbit L1=P1^1;
sbit L2=P1^2;
sbit L3=P1^3;
sbit L4=P1^4;
sbit L5=P1^5;
sbit L6=P1^6;
sbit L7=P1^7;
key=P2^6;
void Delay(unt xms);
void main( void )
{uint a;
while(1)
{
Delay(500);
L1=1;
Delay(500);
L2=1;
Delay(500);
L3=1;
Delay(500);
L4=1;
Delay(500);
L5=1;
Delay(500);
L6=1;
Delay(500);
L7=1;
if(!key)
Delay(10);
for(a=3;a>0;a--)
{Delay(200)
L1=1;
Delay(200)
L2=1;
Delay(200);
L3=1;
Delay(200);
L4=1;
Delay(200);
L5=1;
Delay(200);
L6=1;
Delay(200);
L7=1;}
}
}
代码有些繁琐了,你可以试试精简一下!
void Delay(uint a)
{
int i,j;
for(i=0;i<a;i--)
for(j=0;j<110;j++);
}
追问
有没有汇编的啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询