初学者请教大神,这程序错在哪了
#include<reg52.h>
sfr P0M0=0X93;
sfr P0M1=0X94;
sfr P1M0=0X91;
sfr P1M1=0X92;
sfr P2M0=0X95;
sfr P2M1=0X96;
sfr P3M0=0Xb1;
sfr P3M1=0Xb2;
const unsigned charsg7[16](0x3f,0x06,ox5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71);
void ms_delay(unsigned int t)
{
unsigned int i;
for(t;t>0;t--)
for(i=100;i>0;i--)
;
}
main()
{
int mun=0;
P0M0=0xff;
P0M1=0xff;
whil(1)
{
P0=seg7(mun);
ms_delay(1000);
mun++;
if(mun>15);
mun=0;
}
}
第二个
#include<reg52.h>
sfr P0M0=0X93;
sfr P0M1=0X94;
sfr P1M0=0X91;
sfr P1M1=0X92;
sfr P2M0=0X95;
sfr P2M1=0X96;
sfr P3M0=0Xb1;
sfr P3M1=0Xb2;
define p2 0xff ;
void ms_delay(unsigned int t)
{
unsigned int i;
for(t;t>0;t--)
for(i=100;i>0;i--)
;
}
main()
{
int mun;
P1M1=0x00 ;
P1M0=0X00 ;
while(1)
{
switch(mun)
{
case 0:
p2=0xff;
break;
case 1:
p2=0xfe;
break;
case 2:
p2=0xfd;
break;
case 3:
p2=0xfc;
break;
case 4:
p2=0xfb;
break;
case 5:
p2=0xfa;
break;
case 6:
p2=0xf9;
break;
case 7:
p2=0xf8;
break;
default:
p2=0xff;
}
ms_delay(500);
mun++;
if(mun>4)
mun=0;
}
}
还请大神不吝赐教,谢谢。
你都是用STC单片机吗?sfr P0M0=0X93;
sfr P0M1=0X94;
sfr P1M0=0X91;
sfr P1M1=0X92;
sfr P2M0=0X95;
sfr P2M1=0X96;
sfr P3M0=0Xb1;
sfr P3M1=0Xb2;
define p2 0xff ;貌似没什么卵用
charsg7[16](0x3f,0x06,ox5b,0x4f, 等号都没有
P0=seg7(mun); 这是调用哪个函数,我看了你的程序都没看到
define p2 0xff ; 应该是#define P2 0xff 没有分号 但是这样改也不是啊,p2都是固定的怎么可以继续复制呢
whil(1)
while(1);
感觉都是语法上的错误,可能是笔误吧,程序一里whil(1)不就是写错了吗,应该是while(1)
你应该把keil编译的错误贴出来,这样看太麻烦
里面有些字符是输入错误的,比如charsg7数组中的oX5b,应该是0x5b的。建议你先了解一下C语言的基本语法,然后再学习单片机会比较好!
这位大哥 首先只想跟你说你应该先把C语言先搞好 当初我学的时候先看了一个月的C语言 视频加书。然后开始实践。再就是关于单片机的一些知识 你这程序里面开头的那些寄存器都包含在头文件里面 不需要再去管了,还有就是常用的几个英文单词要记住,打错了肯定是编译不过的。现在我写程序编译的话一般都没问题了。想学的话就要把基础打好 要不没法往下进行了,这是我给你的一个建议。这个程序你就不用关心它错在哪里了 回头再看看基础知识吧。
先学好c语法基础先 都是语法错误