找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2831|回复: 4
收起左侧

用普中科技单片机学习板的流水灯控制问题?

[复制链接]
ID:405915 发表于 2018-12-8 16:04 | 显示全部楼层 |阅读模式
为什么前面的左移函数就执行了一次?后面就一直执行最后的语句了 ?
#include "reg52.h"
         #include<intrins.h>
         #define uint unsigned int
         #define uchar unsigned char

void delay(uint i)
{
   while(i--);
}

            uchar i;
  void main()
  {

     while(1)
         {
           P2=0xfe;
          delay(50000);
           for(i=0;i<7;i++)
           {
           P2=_crol_(P2,2);
           delay(50000);
           }
           P2=0x7f;
           delay(50000);
           for(i=0;i<7;i++)
           {
                   P2=_cror_(P2,1);
                delay(50000);
           }
         }
  }

回复

使用道具 举报

ID:164602 发表于 2018-12-8 20:42 | 显示全部楼层
你的程序打错了啊啊啊啊
           uchar i;
  void main()
看看看看,你的程序
应该这样吧——————
  void main()
{
           uchar i;
回复

使用道具 举报

ID:405915 发表于 2018-12-29 21:21 | 显示全部楼层
HC6800-ES-V2.0 发表于 2018-12-8 20:42
你的程序打错了啊啊啊啊
           uchar i;
  void main()

运行没问题啊
回复

使用道具 举报

ID:454000 发表于 2018-12-29 22:05 | 显示全部楼层
你这个程式有点意思,我用你的代码仿真试了一下,前面是跳格向下移7次,后面是紧跟上移7次,如此循环下去..........不过是写的不够严谨!uchar i;不放在任何函数中时是全局变量,就是说你delay中局部变量 i 与main中全局变量 i 发生了中突,仿真可能看不出来,但实际的51单片机可能就会出错。一要么同上面说的将
uchar i;放入main中,使其成局部变量,要么将两个变量不用同一个 i .void delay(uint i)中的 i 改成 t 也行啊!只要变量不中突,单片机是能正常运行的

评分

参与人数 2黑币 +30 收起 理由
还有谁? + 15
找人PK + 15

查看全部评分

回复

使用道具 举报

ID:454778 发表于 2018-12-30 10:41 | 显示全部楼层
你把I定义到主函数外面去了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表