找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

请问这个单片机代码哪里错了?

查看数: 1020 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-10-4 20:34

正文摘要:

#include <reg51.h> void delay(unsigned char i) {         unsigned char j,k;         for(k=0;k<i;k++)       &n ...

回复

ID:883031 发表于 2021-10-5 16:59
一个问题,你发了3/4个帖子,基本的编程逻辑都没有。
ID:578842 发表于 2021-10-5 07:20
unsigned char P1_0=P1^0,P1_1=P1^1,P1_2=P1^2,P1_3=P1^3,P1_4=P1^4,P1_5=P1^5,P1_6=P1^6,P1_7=P1^7;
位声明用sbit,另外,编程注意格式,否则乱麻一堆
ID:824490 发表于 2021-10-5 00:18
你的led_1到led_8定义和赋值都是“unsigned char”类型,
但在使用时,却赋值给了“bit”类型:

unsigned char  led1 是8bit,而P1_0=P1^0是的1bit,却要让P1_0=led1;你是要闹哪样?

如楼上所说,应该要整个P1口输出:P1=led1;
ID:826942 发表于 2021-10-4 22:50
我猜你的显示是LED4亮然后延迟LED8亮,因为你赋值是整体赋值,后面的会覆盖前面的,如果非要你这样的话那么应该把几个值按位或上
ID:826942 发表于 2021-10-4 22:42
最好是给整个P0赋值来控制简单些
ID:826942 发表于 2021-10-4 22:41
你是要干嘛?是要点亮led1234四个灯延迟一段时间再点亮led5678再延迟循环吗?你这是应该是赋值不对,最好是给整个P0吗?
ID:624769 发表于 2021-10-4 22:34
严格来讲,你这代码应该出了 delay 就没对的地方……

先根据你的代码和电路图,猜测你要做流水灯,代码如下:

#include <reg51.h>
#include <INTRINS.H>
void delay(unsigned char i)
{
        unsigned char j,k;
        for(k=0;k<i;k++)
        for(j=0;j<255;j++);
}
void main()
{
        P1 = 0xFE;         //阴控亮一灯
//      P1 = 0x01;         //阳控亮一灯

        while(1)
        {
                 _cror_(P1,1);                   //右移一位
//                _crol_(P1,1);                  //左移一位
                  delay(200);                    //这个照抄的你的delay , 实际需要多少,自己调整
         }
}

如上, 如果你是要做流水灯,这就是全部代码了。

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

Powered by 单片机教程网

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