• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

51单片机的C程序

#include
void delay(unsigned int i);  //声明延时函数
char LED;


main()
{
  unsigned char i;
 
  while (1)
  {  LED = 0xfe;
   
    for (i = 0 ;i < 8 ; i++)
   {
    P2  = LED;
    delay(500);
    LED = LED << 1;      // 左移
    LED = LED | 0x01;  // 移位后,后面的位为高电平
    if (LED == 0x7f)  break;   //提前退出 FOR 循环
    }
 
    for (i = 0 ;i < 8 ; i++)
    {
  
    P2  = LED;
    delay(500);
    LED = LED >> 1;  // 右移
    LED = LED | 0x80;  // 移位后,后面的位为高电平
   
    }

   }
 
}


/*******延时函数*************/
void delay(unsigned int i)
{
    unsigned char j;
    for(i; i > 0; i--)
        for(j = 255; j > 0; j--);

}

注明:上面的这段单片机C程序是左右跑马灯前面的#include 一定要吗?还有LED = 0xfe;中的0xfe代表什么意思,整个程序我都看不大懂,我看了两三个星期的C语言入门,却还是看不太懂,很模糊,教程讲的都不够详细,哪位大哥能详细讲解一下,小弟不胜感激……

全部回复(8)
正序查看
倒序查看
王人言
LV.2
2
2010-10-05 17:55
fe是十六进制中的一个值,相当于11111110,其中,1表示高电平,0表示低电平,FE一组端口的电平状态
0
回复
2010-10-05 18:25
#include 是头文件,后面所用的函数所定义的地方,你要使用这些函数必须将其文件包含进来,否则无法调用此函数。好久没用了,好像是这样的说法。
0
回复
fu-tao
LV.4
4
2010-10-05 18:38
@梦中的生活
#include是头文件,后面所用的函数所定义的地方,你要使用这些函数必须将其文件包含进来,否则无法调用此函数。好久没用了,好像是这样的说法。

顶一下

0
回复
2010-10-06 12:16

这是学单片机最基本的东西了,建议看看单片机的C!如果你只看标准C,有些硬件的东西一般不会介绍的...

0
回复
sxjnice
LV.8
6
2010-10-06 14:40
#include 这个是头文件,一定要要的,否则你的程序将会无法运行,因为你很多东西需要从这里调用,另定义LED=0XFE,也就是说LED为11111110状态,如果从这个来看,你的LED应该是八个,那么这个定义就说明了这八个LED的状态,当程序运行后,下一个状态就是11111101的状态了
0
回复
fu-tao
LV.4
7
2010-10-07 11:39
@sxjnice
#include这个是头文件,一定要要的,否则你的程序将会无法运行,因为你很多东西需要从这里调用,另定义LED=0XFE,也就是说LED为11111110状态,如果从这个来看,你的LED应该是八个,那么这个定义就说明了这八个LED的状态,当程序运行后,下一个状态就是11111101的状态了

0XFE我看了好多资料都没有介绍是代表什么意思,应该从哪着手去弄懂这些东西,教程好像都是讲给懂的人听的,我们还没入门的根本看不大懂,天!

0
回复
2010-10-07 11:55

先看c语言,接着汇编,再看51单片机,

 

 

0
回复
sxjnice
LV.8
9
2010-10-07 13:39
@fu-tao
0XFE我看了好多资料都没有介绍是代表什么意思,应该从哪着手去弄懂这些东西,教程好像都是讲给懂的人听的,我们还没入门的根本看不大懂,天!

这个是不需要介绍的呀,建议你看看《单片机原理与应用》教材,我以前用的,但是是关于80c51的,里面讲的东西通俗易懂,建议你看看,不过作者我记不得了,有些东西需要你自己去理解,就说这个FE问题吧,你把它转成二进制,则是0和1,0则表示低电平,1则表示高电平,那你看你的电路是公阴极还是公阳极,如果公阴极,则1的时候,即高电平有效,灯亮,反之,则低电平时候有效,灯亮,这些又和数字电路有些关系,所以你要多看看了啊

0
回复