打印

自己编写的程序!大伙进来看看!找找错!

[复制链接]
3500|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zzj137|  楼主 | 2007-8-8 20:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
p1.5       p1.4      p1.3            p1.2     p1.1      p1.0
红灯       黄灯       绿灯           红灯     黄灯      绿灯
k           l         m               n       o         p


51单片机p1口控制~
模拟交通灯程序



#include<REGX51.H>
void delay (void)
{
unsigned char i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++)
;
}
main()
{
bit  k=P1^5,l=p1^4,m=p1^3,n=p1^2,o=p1^1,p=1^0;
int x,y;
while(1)
{
k=0,l=1,m=1,n=1,o=1,p=0;
x=0,y=0;
delay();
loop1:
p=1,o=0;
delay();
x++;
if(x<4) goto loop1;
k=1,l=1,m=0,n=0,o=1,p=1;
delay();
loop2:
m=1,l=0;
delay();
m=1,l=1;
delay();
y++;
if(y<4) goto loop2;
k=0,l=1,m=1,n=1,o=1,p=0;
}
}
 

相关帖子

沙发
lsfsxfljj| | 2007-8-8 20:17 | 只看该作者

错得一踏糊涂

使用特权

评论回复
板凳
zzj137|  楼主 | 2007-8-8 20:19 | 只看该作者

我知道!能具体点吗?先谢了!

使用特权

评论回复
地板
stycx| | 2007-8-8 21:19 | 只看该作者

天下程序一大抄

建议先看懂别人的程序再修改成自己的程序

使用特权

评论回复
5
birenai| | 2007-8-8 21:35 | 只看该作者

把X Y定义成char能节省内存

虽然对你这个程序没什么影响,但大点的程序这可以节省内存,也减少了单片机的计算时间

使用特权

评论回复
6
hzqsaint| | 2007-8-8 22:08 | 只看该作者

一点建议

没有注释,可读性差了点。
所有goto都可以用for或者while替代。
每种灯变化没有延时参数控制,可移植性差,适应性差。

使用特权

评论回复
7
ayb_ice| | 2007-8-9 07:33 | 只看该作者

编译都不能通过吧...

使用特权

评论回复
8
ddh1129| | 2007-8-9 10:05 | 只看该作者

最简单的定义都不会!

bit  k=P1^5,l=p1^4,m=p1^3,n=p1^2,o=p1^1,p=1^0;
这是什么乱七八糟的语句,编译能通过吗?

使用特权

评论回复
9
dallxl| | 2007-8-9 10:11 | 只看该作者

都不想看了

我以为我是初学者~~~~~~~~~~哈哈,结果~~~~~…………

使用特权

评论回复
10
etual| | 2007-8-9 11:07 | 只看该作者

汇编思想太明显了....

硬套一个C的外壳而已.
这类死循环的 delay 延时还是不要学为好
以后做项目的时候就知错的了 ......

使用特权

评论回复
11
zzj137|  楼主 | 2007-8-9 14:16 | 只看该作者

谢谢个位的指点!我确实是个比初学者还初学的!

正在学习中!
不会放弃的!学的东西都是自己的!

使用特权

评论回复
12
古道热肠| | 2007-8-9 14:35 | 只看该作者

变量命名很不好。

    真想学好编程,就得养成好习惯。

使用特权

评论回复
13
zzj137|  楼主 | 2007-8-9 14:46 | 只看该作者

根据进一步的学习程序改成这样!大家再看看!


p1.5       p1.4      p1.3            p1.2     p1.1      p1.0
红灯       黄灯       绿灯           红灯     黄灯      绿灯
k           l         m               n       o         p


51单片机p1口控制~



#include<REGX51.H>
void delay (void)                                 /*延时程序*/
{
unsigned char i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++)
;
}
main()
{
sbit  k=P1^5,l=p1^4,m=p1^3,n=p1^2,o=p1^1,p=1^0;    /*声明k,l,m,n,o,p
                                             对p1.5-p1.0进行位操作*/  
int x,y;                                           
while(1)                   /*无穷循环*/             
{
k=0,l=1,m=1,n=1,o=1,p=0;   /*一组红灯亮,二组绿灯亮*/            
delay();
for(x=0;x<4;x++);         /*二组绿灯灭,黄灯闪烁四次*/     
{
p=1,o=0;
delay();
p=1,o=1;
delay();
}
k=1,l=1,m=0,n=0,o=1,p=1;     /*一组绿灯亮,二组红灯亮*/
delay();
for(y=0;y<4;y++);          /*一组绿灯灭,黄灯闪烁四次*/
{
m=1,l=0;
delay();
m=1,l=1;
delay();
}
k=0,l=1,m=1,n=1,o=1,p=0;     /*返回原始状态的一组红灯亮,二组绿灯亮*/
}
}
 

使用特权

评论回复
14
birenai| | 2007-8-9 17:11 | 只看该作者

改一下

for(x=0;x<4;x++);         /*二组绿灯灭,黄灯闪烁四次*/     
{
p=1,o=0;
delay();
p=1,o=1;
delay();
}
请问你闪烁几S?


for(x=0;x<4;x++);         /*二组绿灯灭,黄灯闪烁四次*/     
{
o=~o;
delay();
}

使用特权

评论回复
15
birenai| | 2007-8-9 17:13 | 只看该作者

补充

如果0.5S闪烁则把for(x=0;x<4;x++);改成
for(x=0;x<8;x++);                  

使用特权

评论回复
16
zzj137|  楼主 | 2007-8-9 17:37 | 只看该作者

至于时间问题!得通过反汇编看!我也不知道有多长时间!

这里的时间问题,我也搞不清楚!
我问过大虾,说是得看反汇编!我也头疼这个问题呢!

使用特权

评论回复
17
q223490115| | 2007-8-9 20:42 | 只看该作者

123321

   嘎嘎   不知道这位兄弟学了C多久啦    

使用特权

评论回复
18
bagdmu| | 2007-8-9 21:57 | 只看该作者

延时可用定时器呀

使用特权

评论回复
19
zzj137|  楼主 | 2007-8-10 16:18 | 只看该作者

回楼上

谢谢!各位大虾! 

我刚学C有一个星期了吧!
大一学过点!不过纯粹的基础,都忘了差不多了!哈哈!
听个位的解释又有点收获!
 
 

使用特权

评论回复
20
birenai| | 2007-8-11 18:03 | 只看该作者

对不起

对不起了
我是复制的没看清,是多了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

45

帖子

0

粉丝