搜索
bottom↓
回复: 3

93c56怎么读不出数据啊

[复制链接]

出0入0汤圆

发表于 2010-4-16 20:11:00 | 显示全部楼层 |阅读模式
#include<pic.h>
__CONFIG(XT&WDTDIS);
#define sdin   RA3                 //数据
#define clk    RA5                 //时钟
#define V1_8CS   RE0                 //V1-V8片选
#define L1CS   RE1                 //led1片选
#define L2CS   RE2                 //led2片选
#define L3CS   RC0                 //led3片选
#define L4CS   RD0                 //led4片选
#define cs    RC4
#define dout  RC7
#define sck   RC5
#define din RC6
#define uchar unsigned char
#define uint unsigned int
#define nop() asm("NOP")
uchar a1=1,a2,a3,a4;
const uchar table[10]={0x88,0xdb,0x2a,0x0b,0x59,0x0d,0x0c,0xcb,0x08,0x09};
void send(uchar dat);
void delay(uchar x)
{
        uint a,b;
        for(a=x;a>0;a--)
                for(b=10;b>0;b--);
}
void write_164(unsigned char dt)
{
        unsigned char i;        
        for(i=0;i<8;i++)
        {
                clk=0;       
       
                if(dt&0x80)
                        sdin=1;
                else
                        sdin=0;
                       
                clk=1;        
                dt=dt<<1;               
        }               
}
void init(void)
{
         TRISA=0;
         TRISB=0;
         TRISD=0;
         TRISE=0;
         TRISC0=0;
         TRISC4=0;
         TRISC5=0;
         TRISC6=0;
         TRISC7=1;
         ADCON1=0x06;
         PORTE=0x07;
         cs=0;
}
void write_enable()
{  
          cs=1;
          nop();
          send(0x09);
          send(0x80);
          nop();
          
          
        }
void write(uchar add,uchar dat)
{  
           cs=1;
           nop();
           write_enable();
           nop();
           nop();
        /*   sck=0;
           din=1;  //起始位1100
           sck=1;
           nop();
           sck=0;
           din=0;   //
           sck=1;
           nop();
           sck=0;
           din=1;  //
           sck=1;
           nop();
           sck=0;
           //din=0;   //A8位0
           sck=1;
           nop();
           sck=0;*/
          
           send(0x0a);
           send(add);
           send(dat);          
          // cs=0;nop();
          
          
}
void send(uchar dat)
{
         uchar i;
         for(i=0;i<8;i++)
            {
                      sck=0;nop();
                      if(dat&0x80)
                        din=1;
                      else
                                din=0;
                      nop();
                      sck=1; nop();
                      dat=dat<<1;
                   }
                   sck=0;
                   nop();
        }
uchar read(uchar add)
{
          uchar i,out_data;
          
          // TRISC6=0;
          
           cs=1;
           nop();
         /*  sck=0;
           din=1;  //起始位1100
           sck=1;
           nop();
           sck=0;
           din=1;   //
           sck=1;
           nop();
           sck=0;
           din=0;  //
           sck=1;
           nop();
           sck=0;
           //din=0;   //A8
           sck=1;
           nop();
           sck=0;*/
           write_enable();
           send(0x0c);
           send(add);
           sck=1;nop();
           TRISC7=1;
           for(i=0;i<8;i++)
             {
                       out_data=out_data<<1;
                       sck=1;
                       nop();
                       sck=0;
                       nop();             
                       out_data=out_data|dout;
                       
                    }
           cs=0;nop();
           return out_data;
        }
void main()
{
        uchar i;
        init();
        for(i=4;i>0;i--)
          {
                  nop();
            nop();
            write(i,i);
          }
          a1=read(4);
          nop();
          a2=read(3);
          nop();
          a3=read(2);
          nop();
          a4=read(1);
          nop();
        while(1)
        {
                    write_164(table[a1]);
              RE1=0;
              delay(10);
              RE1=1;
              write_164(table[a2]);
              RE2=0;
              delay(10);
              RE2=1;
              write_164(table[a3]);
              RC0=0;
              delay(10);
              RC0=1;
              write_164(table[a4]);
              RD0=0;
              delay(10);
              RD0=1;                  
                }
}

出0入0汤圆

发表于 2010-5-7 00:13:26 | 显示全部楼层
示波器看信号有没有正确。
用的什么信号PIC单片机?
16位以上的有库函数直接调用,写那么多程序干嘛?

出0入0汤圆

发表于 2010-5-26 15:56:36 | 显示全部楼层
数据写进去没有啊!!!!!!!!!!?????

出0入0汤圆

发表于 2010-5-26 16:27:32 | 显示全部楼层
你的是93C56A,93C56B,还是93C56C啊?不同型号的操作位数不同
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 12:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表