微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 我的跑马灯程序跑不了

我的跑马灯程序跑不了

时间:10-02 整理:3721RD 点击:
        前几天做了一个电子产品的跑马灯的程序。结果弄了好半天,还是跑步起来。(本人新手中)。请教下坛里的大神,我该怎么修改一下。代码如下了。
#define uchar unsigned char
#include<reg51.h>
bit ldelay=0;//
长定时溢出标志,预置为
0
uchar m=-1,n=0;
uchar t=0;
void main(void)
{
uchar code ledp[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //
预定的写入
P2
的值

uchar code ledq[4]={0x7e,0xbd,0xdb,0xe7};
uchar i;


//
用来指示显示顺序

TMOD=0x01;  

//
设置定时器
0
为工作方式
1
TH0=0x3c;
TL0=0xb0;
//
给定时器设定初始值

TR0=1;



//
启动定时器
0
ET0=1;


//
打开定时器
0
中断

EA=1;


//
打开总中断

while(1)
{



if(ldelay) //
发现时间溢出标志,进入处理

{
ldelay=0;

//
清除标记

if(m<8)n=0;
if(m>=8&m<16)n=1;
if(m>=16&m<20)n=2;
if(m>=20)n=3;
if(m==23)m=-1;
switch(n)
{
case 0:

P2=ledp[i];

//
读出一个值送到
P1


i++;  

//
指向下一个



break;

case 1:


i--;
P2=ledp[i];
break;
case 2:

P2=ledq[i];
i++
;
break;
case 3:

i--;
P2=ledq[i];
break;
}
}
}
}
timer0 () interrupt 1
电脑计时启动
t++; weidongli.biz
0
中断

{
t++;
if(t==5)
{
t=0;
ldelay=1;  




//
每次溢出置一个标志,以便主程序处理

++m;
}
TH0=0x3c;
TL0=0xb0;
//
是给定时器设定初始值
50MS
}  

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top