if(ledi==8)
{
ledi=0//到了最后一个灯就换到第一个
//每跑一圈灯就根据预定设置的表格来决定下一圈信尺的跑马滑历高速度
speed=speedcode[i]
i++if(i==2)i=0?你的速度设置不仅仅就2个呀(10个预定义的烂慎速度)
}
有两种解决办法:
一个就是将预定的速度加2倍
speedcode[30]={3,3,3,1,1,1,5,5,5,12,12,12,、、、、、、}
二是增加一全局变量uchar z=0在i++前加上如下,前后不改:
、、、、、if(++z==3){z=0i++;}、、、、、、、、、、、
#include<reg51.h> //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=0i<8i++) //洞枣8个流水灯逐个闪动
{
P1=~temp
delay(100) //调用延时函数
temp<银喊<=1
}
}
void delay(uint t) //定义延时函数
{
register uint bt
for(tt--)
for(bt=0bt<锋颤野255bt++)
}
跑马灯程序最基本的,c语言还未入门啊!!!
跑马灯程序用渗帆轿汇编是很好实现的,只要用好循环移位丛肆指令就可以,以下是程序。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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)