打印

大家帮我看下这个C51的程序?

[复制链接]
1564|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhubingshen|  楼主 | 2011-2-15 20:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
高手帮我看下这个程序: 两个灯分别从两边往中 间流动三次的部分程序;for(s=3;s>0;s--){b=0x7f;c=0xfe;for(o=3;o>0;o--){d=b&c;P1=d;delayms(400);b=_cror_(b,1);c=_crol_(c,1);}}我仿真的时候在d=b&c;P1=d;(到这P1=0XFF) 怎么要到delayms(400)完成之后(P1=0x7e)才能改变P1口的值呢?能人能指点下吗?

相关帖子

沙发
ejack| | 2011-2-16 09:04 | 只看该作者
执行完
P1=d;
后,P1即等于0x7E。
调试界面下,黄色箭头指向的行并非刚执行完的行,而是准备执行的行。

使用特权

评论回复
板凳
zhubingshen|  楼主 | 2011-2-16 10:19 | 只看该作者
本帖最后由 zhubingshen 于 2011-2-16 10:22 编辑

不是的,这个我知道
大家可以在看下这个程序.
/*8个发光管来回流动,第1个管亮100ms, 流动时让蜂鸣器发出“滴滴”声。*/
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delayms(uint x);
sbit FM=P2^3;
void main()
{
        uchar a=0xfe;
        uint i,j;
        while(1)
        {
                i=0;j=0;
                while(i!=7)
                {
                        FM=0;  
                        P1=a;   (这里执行完后P1=0Xfe)

                        delayms(100);
                        a=_crol_(a,1);
                        FM=1;
                        delayms(100);
                        i++;
                }
                while(j!=7)
                {
                        P1=a;
                        FM=0;(这里一定要等到下面DELAYMS执行完之后;P1的值才会变)

                        delayms(100);
                        a=_cror_(a,1);
                        FM=1;
                        delayms(100);
                        j++;
                }        
        }
}
void delayms(uint x)
{
        uint k;
        for(x;x>0;x--)
                for(k=110;k>0;k--);
}

使用特权

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

本版积分规则

0

主题

5

帖子

0

粉丝