74HC595如何分别控制LED

[复制链接]
2535|4
 楼主| milktang 发表于 2012-1-9 10:09 | 显示全部楼层 |阅读模式
用74HC595输出驱动8个LED,如果把Q0-Q2三个LED做为一组,用按键K1控制其中某一个LED亮,把Q3-Q5三个LED用按键K2控制其中某一个亮,Q6-Q7两个LED用按键K3控制其中某一个亮,按键只对本组的LED起作用,不对其他组的LED起作用,应如何操作,现在是三个组定义三个变量,根据三个变量或的结果显示,有其他方法吗
dengm 发表于 2012-1-9 11:56 | 显示全部楼层
Key                Min                  Max                  Mask
  k1          00000001B        00000100B     00000111B
  K2          00001000B        00100000B     00111000B
  K3          01000000B        10000000B     11000000B
;--------------------------------------------------------------------
   DATA595=MIN(1) OR MIN(2) OR MIN(3)
   DO
        CALL KEY_INPUT(KEY)
        IN KEY<>0 THEN
             A = DATA595 AND MASK(KEY)
             IF A = MAX(KEY) THEN
                  A = MIN(KEY)
              ELSE
                  A = A + A
              END IF
              DATA595 = (DATA595 AND (NOT MASK(KEY))) OR A
              KEY = 0
        END IF



    LOOP
 楼主| milktang 发表于 2012-1-17 17:08 | 显示全部楼层
LS的流程可以讲解下吗
gx_huang 发表于 2012-1-17 17:30 | 显示全部楼层
这个基本的一个字节内各个比特的操作,还是自己闭门想想才好。
 楼主| milktang 发表于 2012-1-18 08:55 | 显示全部楼层
本帖最后由 milktang 于 2012-1-18 09:48 编辑

IF A = MAX(KEY) THEN
                  A = MIN(KEY)
是指A等于最大键值则赋最小键值吗
IN KEY<>0 THEN
             A = DATA595 AND MASK(KEY)
是指什么,不太懂汇编
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

267

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部