4498|9

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于89s51的小程序的问题 简单 [复制链接]

#include

unsigned char code tab[]={0xco,0x9f,0xa4,0xb0,0x99,0x82,0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};


sbit S1=P2^0; //这一段是什么意思??



void Delay()
{

   unsigned int i,j;
   for(i=0;i<1500;i++)
       for(j=0;j<1500;j++);

}

void main()
{
     unsigned char i=0; //这一段是不是说给i一个初值啊??如果是的话 为什么还要再定义一遍呢??上 面不是定义过了吗?
                            //还是说如果在#include下面再加一条定义的话 下面延时和主程序里就不用再定义了。
                            //例如:#include
                         //        unsigned char i,j;



      S1=0;             //这一段是什么意思??与上面S同个问题
      while(1)
      {
          P0=tab;
            Delay();
          i++;
          if(i>15) i=0;
      }

}


各位高手请多多指教






最新回复

建议看看单片机c语言局部变量和全局变量这块 能比较清楚 基础东西多看看底子打好了对提高很有好处  详情 回复 发表于 2008-8-22 11:42
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
sbit是C51里面新加的变量类型,sbit S1 = P2^0;的结果是使得S1指向P2寄存器的bit 0,也就是单片机的P2口的P2.0引脚的状态。因此S1只有2个状态:1或者0。

S1=0;就是使得P2.0=0;硬件上就是使得单片机的P2.0引脚变低。


至于i的定义,处于Delay()和main()中是两个不同作用域的变量,看C的“局部变量”的定义就能明白。

 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你的S1定义在两个函数之外(main、Delay),这个S1代表P2.0,而且在这两个函数中都可以用。
至于i,分别定义在两个函数之内,这两个i是互不相干的。
如果一个变量定义在所有函数之外,则这个变量在所有函数中都可以用;
如果一个变量定义在一个函数之内,则这个变量只能在这个函数之内使用;
如果一个变量在函数外和函数内都定义,则这个变量在所有函数中都可以用,可以定义了这个变量的那个函数用的是它自己定义的那个变量,比如函数外定义i=0,而且有一个函数定义i=1,则这个函数内i=1,而其它函数i=0。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 1 楼 shuiyan 的回复:
sbit是C51里面新加的变量类型,sbit S1 = P2^0;的结果是使得S1指向P2寄存器的bit 0,也就是单片机的P2口的P2.0引脚的状态。因此S1只有2个状态:1或者0。

S1=0;就是使得P2.0=0;硬件上就是使得单片机的P2.0引脚变低。


至于i的定义,处于Delay()和main()中是两个不同作用域的变量,看C的“局部变量”的定义就能明白。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
还没学到那里,路过
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 

呵呵,sbit S1=P2^0; 定义的一个i/o口

S1=0;   输出低电平

我给大家特别推荐的两款产品,非常棒!!!

1. c8051f 单片机(c2 ,jtag)和at89s5x单片机(isp)二合一串口编程下载线,支持3伏(c8051f 单片机),5伏(at89s5x单片机)电源,
目前通过实际验证可编程下载的芯片:c8051f310、c8051f320、c8051f330D、c8051f340、c8051f350、c8051f360、c8051f410、c8051f020、c8051f120、at89s51、at89s52、at89s8253等。

2. c8051f320 usb demo 板(是目前学习和应用usb 性价比特别高的一款单片机,资料全!上手快!)软硬件资源丰富:可提供硬件原理图;USB demo板上位机应用软件源代码(VB6 和VC6),以及usb底层驱动和驱动安装信息;USB demo板单片机固化程序的c51源代码。同样可以提供在keil下串口isd51源代码,可以硬件单步,连续运行和仿真!!!

陕西杨工c8051f单片机博客
手机 13002928013
http://c8051fmcu.blog.sohu.com
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 
我也是个初学者,最近自学的,个人理解,简单的记法,sbit S1=P2^0;sbit是变量类型,S1就是把单片机的I/O口的P2^0口定义为S1.S1 = 0;就是给这个端口低电平,S1 = 1则是给这个端口高电平。至于你unsigned char i=0; 是定义在主函数里面的参数,跟Delay里面的参数是不一样的。可以在主函数里面把i变成j,因为这个两个参数不是不在同一个函数里面可以定义成一样的,但是功能不同
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

8
 
都是用来控制单片机的输出口电平的!
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

9
 
就是进行位定义,S1就代表了P2^0
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

10
 
建议看看单片机c语言局部变量和全局变量这块 能比较清楚
基础东西多看看底子打好了对提高很有好处
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表