普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 4634|回复: 2

51单片机求助

[复制链接]

1

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2020-4-28 22:27:54 | 显示全部楼层 |阅读模式
1金钱
我想点亮led点阵左上角一个led灯为什么点亮了一排。
#include<reg52.h>
#include<intrins.h>
sbit se = P0 ^ 2;
sbit sc = P0 ^ 1;
sbit rc = P0 ^ 0;
int dat1,dat2;
void ledsend(int);
void main()
{
    while(1)
    {
        P1 = 0x7f;
        ledsend(0x80);//列是低电平有效行是高电平有效
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        P1 = 0x7f;
    }
}
void ledsend(int dat1)
{
   int a;
    for(a = 0;a < 8;a ++)
    {
        se = dat1 >> 7;
        dat1 <<= 1;
        sc = 0;
         _nop_();
         _nop_();      
        sc = 1;
        //_nop_();
    }
    rc = 0;
    _nop_();
    _nop_();   
    rc = 1;
    _nop_();
    _nop_();
}
我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 金钱 , 目前已有1人回答

回复

使用道具 举报

0

主题

49

帖子

242

积分

中级会员

Rank: 3Rank: 3

积分
242
发表于 2020-5-23 10:14:06 | 显示全部楼层
因为你把段码0x7f,在 ledsend 函数里8个位都执行了一遍,所以成了8个点,如果执行一次就1个点
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-20 14:48 , Processed in 0.093968 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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