C语言设计跑马灯程序
#include //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=0;i<8;i++) //8个流水灯逐个闪动
{
P1=~temp;
delay(100); //调用延时函数
temp<<=1;
}
}
void delay(uint t) //定义延时函数
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
跑马灯程序最基本的,c语言还未入门啊!!!
C语言编程实现跑马灯的四个不同的亮法
1:if里面的表达式应该是“==”,少了一个 “=” 编译器不一定会报错,但运行的时候一定进入不了;
2:最大的错误是那么多地方使用了变量“i “,但你却只定义了一个全局变量,试想当你的程序进入了一个for后,再执行了“delay(10);”,等退出了这个延时后,i 的值已经变成了120了,所以紧接着这个for语句也会被退出,因为已经不满足 i<10 这个条件了。再多定义几个局部变量分开处理,不然是没办法搞定的。
3:你的P0=table2[]、P0=table2[]连下标都忘记写了。
4:for(0;i<10;i++) 这句是错的,你忘记了给“i ”赋值了。
5:你的延时太短点了吧,如果你的晶振用得快的话,估计灯跑起来一就一闪而过,连什么亮法都看不清楚。
能看出来的大概有这些,你再试下看有没有别的
用汇编语言编写跑马灯程序
跑马灯程序用汇编是很好实现的,只要用好循环移位指令就可以,以下是程序。
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
用C语言编写简单跑马灯程序(4个灯的)
如下程序:
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=0;i++;}、、、、、、、、、、、
求一个跑马灯的C语言编程
参考:http://zhidao.baidu/link?url=vT0HMc_kojtX9us9LIHj3crC2GLu_DQfzIvw0nrXbcQnY9PMCMmShx5GYk0t79TB_c124h2GdXPDe8cIdcabhq
用51单片机(汇编语言写)写一个跑马灯程序??知道的帮个忙写写。
答疑解难 跑马灯程序
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: JB P0.7,MAIN ;等待开始键按下
LCALL YS ;按键延时
JB P0.7,MAIN
MOV A,#7FH ;是开始键按下 则跑马灯开始运行
LL: MOV P1,A
LCALL YS ;显示延时
RR A ;循环右移一位
JB P0.6,LL ;没有按下停止键 则继续跑马
LCALL YS ;按键延时
JB P0.6,LL ;按下停止键则停止跑马;否则继续跑马
MOV A,#0FFH
MOV P1,A
SJMP MAIN ;转到程序开始处,等待开始键的按下
YS: MOV R7,#150 ;延时子程序
YL: MOV R6,#200
YY: NOP
DJNZ R6,YY
DJNZ R7,YL
RET
END
硬件接口电路如下:
哈哈 还满意吗 就请给俺选择(满意选项)吧
本文标签:
更多推荐
四个跑马灯的c语言程序,入门编程语言跑马灯,C语言设计跑马灯程序
发布评论