CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  硬件/嵌入开发 >  单片机/工控

MCS-51下面这个流程图的原程序???

楼主angel_rabbit(zj_rabbit)2003-06-04 01:16:47 在 硬件/嵌入开发 / 单片机/工控 提问

MCS-51  
  下面这个流程图的原程序???  
  主要是怎么比较k0,k1的值:都为0,都为1,一个为0或1,另一个为1或0?  
  k0,k1分别接着p1.0,p1.1!  
   
                k0=k1=1   and   k0=k1=0<------k0=?     k1=?---->k0=0,k1=1  
                                |                                           |                           |  
                                |                                           |                           |  
                                |                                           |                           |  
                          LED全灭                             k0=1,k1=0               L3,L4亮  
                                                                            |  
                                                                            |  
                                                                        L0,L1亮 问题点数:0、回复次数:18Top

1 楼setcdq9801(蓝鸽@我是你.net)回复于 2003-06-04 08:08:51 得分 0

用C还是汇编Top

2 楼Hermit(替地球省氧气,决定每天少呼吸)回复于 2003-06-04 09:24:56 得分 0

思路:  
  汇编:mov   c   k0;  
            jc   pro1;  
            pro2;  
   
      我汇编比较烂,记得是先移到C寄存器,然后就可以判断是不是0了。(请老手指正)  
   
  C程序:   用   ==   就可以解决了。  
  Top

3 楼wangluyan(我不知道!所以我问!)回复于 2003-06-04 09:26:45 得分 0

用C比较直观些!Top

4 楼angel_rabbit(zj_rabbit)回复于 2003-06-04 12:50:47 得分 0

用汇编!!!Top

5 楼CrazyGentleman(疯狂绅士)回复于 2003-06-05 08:16:07 得分 0

如果想在语句上简单,先用异或指令,再用比较指令,没有问题。  
  实际运用中,要考虑其他因素的话,难说。。。。。。  
  Top

6 楼wuchunling(阿玲)回复于 2003-06-05 09:15:30 得分 0

 
              JNB   P1.0,KEY0                           ;假设为零有效  
              JNB   P1.1,KEY1  
                               
   
  KEY0:       LCALL   DELAY                         ;延时消抖  
                   
   
  KEY1:       LCALL   DELAY  
   
  不太全面,请高手帮忙!!!!Top

7 楼redflag00(子陵)回复于 2003-06-06 00:20:27 得分 0

请语言说明这个流程吧。不太好看。  
   
  大体是判断k0,k1两个按键的状态从而控制四个发光二极管亮灭的吧?  
   
  再说明一下,给你写出源程序Top

8 楼angel_rabbit(zj_rabbit)回复于 2003-06-06 02:37:49 得分 0

楼上的,你说得很对!!!  
  这是我们单片机一个实验中,一段程序!我已经看了我们同学的了,他用的这种方法我觉得还   行!程序如下:你看看有没有更好的方法??  
    -------------------------------------------------  
                  ORG           0000H  
  MAIN:       MOV           P1,#3H  
                  MOV           A,P1  
                  ANL           A,#3H  
                  CJNE         A,#1H,PS1         ;〈-----     第一次判断K0是否为1  
                  MOV           P1,#0CH  
                  ACALL       DELAY  
                  SJMP         PS2  
  PS1:         CJNE         A,#2H,PS2         ;〈-----     第二次判断K1是否为1  
                  MOV           P1,#30H  
                  ACALL       DELAY  
  PS2:         MOV           P1,#0H  
                  ACALL       DELAY  
                  SJMP         MAIN  
  DELAY:     MOV           R7,#0A3H                                 ;置延时用常数  
  DELAY1:   MOV           R6,#0FFH  
  DELAY2:   DJNZ         R6,DELAY2                               ;用循环来延时  
                  DJNZ         R7,DELAY1  
                  RET  
                  END                  
      ------------------------------------------------  
  顺便问一问,就是下面这种延时程序,R6,R7付怎样的初值,才为延时100ms?  
   
   
  DELAY:     MOV           R7,#0A3H                                 ;置延时用常数  
  DELAY1:   MOV           R6,#0FFH  
  DELAY2:   DJNZ         R6,DELAY2                               ;用循环来延时  
                  DJNZ         R7,DELAY1  
   
   
  Top

9 楼xybyl(xybyl)回复于 2003-06-06 16:10:08 得分 0

sbit   LED12   =   P0^0;  
  sbit   LED34   =   P0^1;  
   
  void   main()  
  {  
  unsigned   char   LedState;  
  while(1)  
  {  
  LedState   =   P1;  
  switch(LedState   &   0x03)  
  {  
  case   0:  
  case   3:LED12   =   0;  
                LED34   =   0;  
                break;  
  case   1:LED12   =   1;  
                LED34   =   0;  
                break;  
  case   2:LED12   =   0;  
                LED34   =   1;  
                break;  
  }  
  }  
  }  
   
   
  Top

10 楼angel_rabbit(zj_rabbit)回复于 2003-06-07 11:42:19 得分 0

朋友,用汇编呢?Top

11 楼ldqmoon(ldqmoon)回复于 2003-06-08 10:31:12 得分 0

如果按这为仁兄的程序会出现什么样的情况?  
  我的思路和他的差不多。  
   
   
  =======================  
   
   
   
  wuchunling(阿玲)   (   )   信誉:100     2003-06-05   09:15:00     得分:0    
     
     
       
              JNB   P1.0,KEY0                           ;假设为零有效  
              JNB   P1.1,KEY1  
                               
   
  KEY0:       LCALL   DELAY                         ;延时消抖  
                   
   
  KEY1:       LCALL   DELAY  
   
   
     
  Top

12 楼dds098(dd)回复于 2003-06-08 13:27:11 得分 0

控制延时的时间首先要看你的单片机的频率是多少!  
  具体的公式很多关于单片机的书上都有说明的!Top

13 楼redflag00(子陵)回复于 2003-06-09 00:23:05 得分 0

有几个问题先搞清楚:  
  1.k0,k1按下后是0还是1?  
  2.四个led分别接哪几个管脚?  
  3.k0按下谁亮谁灭?  
      k1按下谁亮谁灭?  
      k0,k1都按下谁亮谁灭?  
      k0,k1都不按下谁亮谁灭?  
   
  至于延时问题,看晶振了。  
  11.0592的一条指令1.4uS  
  12的一条指令1uS(建议用它)  
   
  以12M晶振来说比较好些  
  算法明天告诉你。  
  我的问题你也回答清楚  
  Top

14 楼redflag00(子陵)回复于 2003-06-09 20:49:35 得分 0

12M晶振  
  DELAY:   MOV     R5,#100  
  D1:         MOV     R6,#20  
  D2:         MOV     R7,#248  
                DJNZ   R7,$  
                DJNZ   R6,D2  
                DJNZ   R5,D1  
                RET  
   
  100*{20*[(2+2*248)+2]+2}=1000.2msTop

15 楼angel_rabbit(zj_rabbit)回复于 2003-06-10 00:59:05 得分 0

有几个问题先搞清楚:  
  1.k0,k1按下后是0还是1?           //是1  
  2.四个led分别接哪几个管脚?   //p1.2--L0   p1.3--L1   p1.4--L3   p1.5--L4  
  3.k0按下谁亮谁灭?                     //L0   L1亮        
      k1按下谁亮谁灭?                     //L3   L4   亮  
      k0,k1都按下谁亮谁灭?           //全灭  
      k0,k1都不按下谁亮谁灭?  
   
  Top

16 楼angel_rabbit(zj_rabbit)回复于 2003-06-12 00:01:31 得分 0

uping!!11Top

17 楼CrazyGentleman(疯狂绅士)回复于 2003-06-12 00:59:49 得分 0

还没有结贴??Top

18 楼nullisfull(null)回复于 2003-06-12 21:39:14 得分 0

//我学汇编才3天。   我以前不搞这个。   为了讨饭吃。   我改了行。   也来混混。  
   
                  ORG           0000H  
  MAIN:       MOV           P1,#3H  
                  MOV           A,P1  
                  ANL           A,#3H  
                  CJNE         A,#1H,PS1         ;〈-----     判断K0是否为1  
                  MOV           P1,#0CH  
                  ACALL       DELAY  
                  CJNE         A,#1H,MAIN         ;〈-----     第二次判断K0是否为1   /   不为1反回。    
                  SJMP         PS2  
                  ;这里给灯的值。我没时间了。   就这样。  
   
  PS1:         CJNE         A,#2H,PS2         ;〈-----     第二次判断K1是否为1  
                  MOV           P1,#30H  
                  ACALL       DELAY  
  PS2:         MOV           P1,#0H  
                  ACALL       DELAY  
                  SJMP         MAIN  
  DELAY:     MOV           R7,#0A3H                                 ;置延时用常数  
  DELAY1:   MOV           R6,#0FFH  
  DELAY2:   DJNZ         R6,DELAY2                               ;用循环来延时  
                  DJNZ         R7,DELAY1  
                  RET  
                  ENDTop

相关问题

  • 做程序谁画流程图?
  • Notes开发中的程序流程图
  • 系统流程图和数据流程图和程序流程图有什么区别?
  • 谁知道程序流程图和系统流程图有什么区别?
  • 在ROSE中用哪个视图来表示程序流程图???
  • 请问?哪里有写程序流程图的软件下载?
  • 大家在写程序的时候画流程图吗?
  • 帮忙写一个程序流程图!!!谢谢
  • 跪求krusal算法的程序流程图
  • 大家写程序都画流程图吗?

关键词

  • ps2
  • 汇编
  • 单片机
  • ps
  • 指令
  • djnz
  • led
  • acall
  • cjne
  • 程序

得分解答快速导航

  • 帖主:angel_rabbit

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo