伪爷 发表于 2019-12-24 17:21 只可惜我电脑上没有Keil了,你可以把工程贴上来,这样子光说很难找的出问题的 |
led=P1 错了哦 |
图片底下有错误提示,根据提示改 |
sbit 是位定义,P1口8位使用,直接调用 |
伪爷 发表于 2019-12-25 09:10 原来是这样,可以可以,解决了就好 |
sbit是定义特殊寄存器的位变量,不能直接定义P1 |
51jia 发表于 2019-12-25 00:16 谢谢啦 问题解决啦 |
未成为大佬 发表于 2019-12-24 23:36 谢谢啦 问题解决啦 ,确实是intrins.h头文件中程序少加了一个岗 ,应该是我误删的 哈哈 |
变量声明要在程序开始,sibit是位定义。按你的写法要用宏定义define. #include <reg52.h> #define led P0 void delay(unsigned int z) { while(z--); } void main() { unsigned char i; led=0xff; while(1) { for(i=0;i<8;i++) { led=0xff; led&=~(1<<i); delay(50000); } } |
![]() 我照这敲了一遍,没错。是不是你的intrins.h错误? #ifndef __INTRINS_H__ #define __INTRINS_H__ extern void _nop_ (void); extern bit _testbit_ (bit); extern unsigned char _cror_ (unsigned char, unsigned char); extern unsigned int _iror_ (unsigned int, unsigned char); extern unsigned long _lror_ (unsigned long, unsigned char); extern unsigned char _crol_ (unsigned char, unsigned char); extern unsigned int _irol_ (unsigned int, unsigned char); extern unsigned long _lrol_ (unsigned long, unsigned char); extern unsigned char _chkfloat_(float); extern void _push_ (unsigned char _sfr); extern void _pop_ (unsigned char _sfr); #endif |
void led=P1 改成#define led=P1 但是还是不行,报错还是一样 |
无法错误,定义led的端口不对 |
小黑屋525 发表于 2019-12-24 09:18 之后我针对这个问题又编了一个简单的程序,用sbit 声明整个IO口,计算机是检查不出来,是没有错误的,但是单片机没有反应。 |
小黑屋525 发表于 2019-12-24 09:18 改了之后错误还是没变, 好无助啊 |
还有谁? 发表于 2019-12-24 14:02 用这个函数流水灯看起来自然些 |
试试这个#define led P1 |
sbit led=P1改成 #define led P1 |
图片显示,mian.c没错,有问题的是intrins.h,141和129行。 |
这个拿去,不谢! #include "reg52.h" #include<intrins.h> void main() { u8 i; led=~0x01; delay(50000); //大约延时450ms while(1) { for(i=0;i<7;i++) //将led左移一位 { led=_crol_(led,1); delay(50000); //大约延时450ms } for(i=0;i<7;i++) //将led右移一位 { led=_cror_(led,1); delay(50000); //大约延时450ms } } } |
csmyldl 发表于 2019-12-24 02:18 我删除了一个组也不行 |
csmyldl 发表于 2019-12-24 02:18 双击 main.c没有任何反应呀 不过要是双击那两个错误就会跳到intrins.h的头文件中 |
第一条语句就是错的:sbit是位操作,定义不了P1。 |
你的第三行的sbit led=P1要改成define led P1,sbit是位操作,不能一下子定义整个IO口; |
你上传的图片中程序12行是没错的,检查你工程中加载的main.c是否加载正确,可以双击右边"main.c"看打开的文件是否对,因为看到你左边工程建有两个群组,要不删除一个群组试试 |