求助关于cd4094级联应用

[复制链接]
7187|2
 楼主| yy温控 发表于 2009-12-16 12:27 | 显示全部楼层 |阅读模式
本帖最后由 yy温控 于 2009-12-16 13:08 编辑

我用了两片cd4094级联,下面的是我写的程序。
不知道问什么不能实现级联,望大家指教!
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
sbit STR=P1^2;
sbit CLK=P1^1;
sbit DATA=P1^0;
sbit key=P2^7;
void Out_4094(uchar data1);//CD4094写数据子函数;
void Out_40941(uchar data1);//CD4094写数据子函数;
void main()
{
   
while(1)
{   
     if(key==0)
  {  
  
    Out_40941(0x02);
    Out_4094(0x40);
  }
  else if (key==1)
  {
      Out_40941(0x08);
     Out_4094(0x01);
  }

}         
}
void Out_4094(uchar data1) //写CD4094子函数;
{
  uchar i;
    STR=0;
  for(i=0;i<8;i++)
   {
          if(data1&0x01)
     {
    DATA=1;

     }  
    else
    {
    DATA=0;
    }         
  CLK=0;
      _nop_();
  _nop_();
        _nop_();      //延时;   
  CLK=1;
  data1>>=1;

     }//数据送完;更新显示;
   STR=1;
}
void Out_40941(uchar data1) //写CD4094子函数;
{
  uchar i;
    STR=0 ;
  for(i=0;i<16;i++)
   {
          if(data1&0x01)
     {
    DATA=1;
         
     }  
    else
    {
    DATA=0;
    }         
  CLK=0;
      _nop_();
  _nop_();
        _nop_();      //延时;   
  CLK=1;
  data1>>=1;

     }//数据送完;更新显示;
   STR=1;  
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
hotpower 发表于 2009-12-16 19:34 | 显示全部楼层
本帖最后由 hotpower 于 2009-12-16 19:35 编辑

以前用过忘了,关键在STB。
再Keil C51时,程序要这样编写:
unsigned char i;
for(i=n;i>0;i--) 这样会产生djnz r7,xxx指令
DATA=data1&0x01;这样编译器会内部优化为rrc a
 楼主| yy温控 发表于 2009-12-19 10:17 | 显示全部楼层
谢谢,关键确实在STB
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

71

帖子

0

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