赞助论坛
  • 4836阅读
  • 0回复

请各位高手帮忙提供MC44BS373CA全频道,AT89C2051 I2C总线汇编控制驱动程序 [复制链接]

楼层直达
发帖
6
精华
0
金币
25
威望
0
贡献
0
好评
0
注册
2010-02-17
楼主    peiqing3412 发表于: 2011-02-24 20:48:56 
请各位高手帮忙提供MC44BS373CA全频道,AT89C2051 I2C总线汇编控制驱动程序,或者是BIN,HEX档也行,本人将不盛感激,谢谢!以下是单频道的(请各位高手帮忙修改为多频道的)

AT89C2051 MC44BS373CA

;==========================================================================
Q0000:         AJMP Q0040                                                        
            XCH   A,R2                
            MOV   10H,R0              
            JB   2EH.4,Q0039          
            INC   @R1                
            INC   @R0                
            NOP                    
Q0039:         NOP                    
                             
Q0040:         MOV   R4,#0F0H            
            DJNZ R4,$                
            MOV   DPTR,#0030H            
            MOV   A,#00H              
            MOVC A,@A+DPTR            
            MOV   60H,A              
            MOV   A,#01H              
            MOVC A,@A+DPTR            
            MOV   61H,A                
            MOV   A,#02H              
            MOVC A,@A+DPTR            
            MOV   62H,A              
            MOV   A,#03H              
            MOVC A,@A+DPTR            
            MOV   63H,A                
            MOV   A,#04H              
            MOVC A,@A+DPTR            
            MOV   64H,A                
            MOV   A,#05H              
            MOVC A,@A+DPTR            
            MOV   65H,A                
            MOV   A,#06H              
            MOVC A,@A+DPTR            
            MOV   66H,A              
            MOV   A,#07H              
            MOVC A,@A+DPTR            
            MOV   67H,A                
Q006F:         MOV   A,60H                
            MOV   R1,#61H              
            MOV   R2,#04H              
            ACALL Q0086                
            CJNE A,#01H,Q007C          
            INC   65H                
Q007C:         ACALL Q00EF              
            DJNZ 65H,Q006F            
            ORL   PCON,#03H            
Q0084:         AJMP Q0084                
Q0086:         ACALL Q009D                
            ACALL Q00C3                
            JC   Q0098                
Q008C:         MOV   A,@R1                
            ACALL Q00C3                
            JC   Q0098                
            INC   R1                  
            DJNZ R2,Q008C              
            MOV   A,#00H              
            AJMP Q009A                
Q0098:         MOV   A,#01H              
Q009A:         ACALL Q00B2                
            RET                    
;==========================================================================
Q009D:         PUSH ACC                
            ACALL Q0102                
            ACALL Q00EA                
            ACALL Q00F8                
            ACALL Q00EA                
            ACALL Q0116                
            ACALL Q00EA                
            ACALL Q010C              
            ACALL Q00EA                
            POP   ACC                
            RET                    
;==========================================================================
Q00B2:         PUSH ACC                
            ACALL Q0116                
            ACALL Q00EA                
            ACALL Q00F8              
            ACALL Q00EA                
            ACALL Q0102                
            ACALL Q00EA                
            POP   ACC                
            RET                    
;==========================================================================
Q00C3:         MOV   R0,#08H              
            MOV   68H,A                
Q00C7:         ACALL Q012A                
            ACALL Q00EA                
            ACALL Q00F8                
            ACALL Q00EA                
            ACALL Q010C                
            ACALL Q00EA                
            DJNZ R0,Q00C7              
            ACALL Q0102                
            ACALL Q00EA                
            ACALL Q00F8                
            ACALL Q00EA              
            ACALL Q0120                
            MOV   69H,PSW              
            ACALL Q010C              
            ACALL Q00EA                
            MOV   PSW,69H              
            RET                    
;==========================================================================
Q00EA:         NOP                                                  
            RET                    
;==========================================================================
Q00EF:         MOV   R6,#14H              
Q00F1:         MOV   R7,#0A5H              
            DJNZ R7,$                
            DJNZ R6,Q00F1              
            RET                    
;==========================================================================
Q00F8:         MOV   DPTR,#013FH            
            MOV   B,#03H              
            MOV   A,66H                
            MUL   AB                  
            JMP   @A+DPTR              
Q0102:         MOV   DPTR,#013FH            
            MOV   B,#03H              
            MOV   A,67H              
            MUL   AB                
            JMP   @A+DPTR              
Q010C:         MOV   DPTR,#016FH          
            MOV   B,#03H              
            MOV   A,66H                
            MUL   AB                  
            JMP   @A+DPTR              
Q0116:         MOV   DPTR,#016FH            
            MOV   B,#03H              
            MOV   A,67H                
            MUL   AB                  
            JMP   @A+DPTR              
Q0120:         MOV   DPTR,#01CFH            
            MOV   B,#03H              
            MOV   A,67H                
            MUL   AB                  
            JMP   @A+DPTR              
Q012A:         MOV   A,68H                
            RLC   A                  
            MOV   68H,A                
            MOV   69H,PSW              
            MOV   DPTR,#019FH            
            MOV   B,#03H              
            MOV   A,67H              
            MUL   AB                  
            MOV   PSW,69H              
            JMP   @A+DPTR              
            SETB P1.0                
            RET                    
;==========================================================================
Q0142:       DB 0D2H, 91H, 22H,0D2H, 92H, 22H,0D2H, 93H  
Q014A:       DB 22H,0D2H, 94H, 22H,0D2H, 95H, 22H,0D2H  
Q0152:       DB 96H, 22H,0D2H, 97H, 22H,0D2H,0B0H, 22H  
Q015A:       DB 0D2H,0B1H, 22H,0D2H,0B2H, 22H,0D2H,0B3H  
Q0162:       DB 22H,0D2H,0B4H, 22H,0D2H,0B5H, 22H,0D2H  
Q016A:       DB 0B6H, 22H,0D2H,0B7H, 22H,0C2H, 90H, 22H  
Q0172:       DB 0C2H, 91H, 22H,0C2H, 92H, 22H,0C2H, 93H  
Q017A:       DB 22H,0C2H, 94H, 22H,0C2H, 95H, 22H,0C2H  
Q0182:       DB 96H, 22H,0C2H, 97H, 22H,0C2H,0B0H, 22H  
Q018A:       DB 0C2H,0B1H, 22H,0C2H,0B2H, 22H,0C2H,0B3H  
Q0192:       DB 22H,0C2H,0B4H, 22H,0C2H,0B5H, 22H,0C2H  
Q019A:       DB 0B6H, 22H,0C2H,0B7H, 22H, 92H, 90H, 22H  
Q01A2:       DB 92H, 91H, 22H, 92H, 92H, 22H, 92H, 93H  
Q01AA:       DB 22H, 92H, 94H, 22H, 92H, 95H, 22H, 92H  
Q01B2:       DB 96H, 22H, 92H, 97H, 22H, 92H,0B0H, 22H  
Q01BA:       DB 92H,0B1H, 22H, 92H,0B2H, 22H, 92H,0B3H  
Q01C2:       DB 22H, 92H,0B4H, 22H, 92H,0B5H, 22H, 92H  
Q01CA:       DB 0B6H, 22H, 92H,0B7H, 22H,0A2H, 90H, 22H  
Q01D2:       DB 0A2H, 91H, 22H,0A2H, 92H, 22H,0A2H, 93H  
Q01DA:       DB 22H,0A2H, 94H, 22H,0A2H, 95H, 22H,0A2H  
Q01E2:       DB 96H, 22H,0A2H, 97H, 22H,0A2H,0B0H, 22H  
Q01EA:       DB 0A2H,0B1H, 22H,0A2H,0B2H, 22H,0A2H,0B3H  
Q01F2:       DB 22H,0A2H,0B4H, 22H,0A2H,0B5H, 22H,0A2H  
Q01FA:       DB 0B6H, 22H,0A2H,0B7H, 22H  
;==========================================================================

各位大哥哥们与高手,难道论坛里没有好心人能够回复吗?
另我有同一颗飞思卡尔的同类芯片AS44CC373CA,SDA,SDL不能通讯,请各位大哥哥们指导一下,是哪里的问题,谢谢喽!本人好着急.........


#include "reg52.h"
#define   FALSE 0
#define   TRUE 1
//#define   SET   1
//#define   CLR   0
#define   C1_H   0x90
#define   C0_L   0x08
sbit SDA=P3^0;
sbit SCL=P3^1;


void delay(unsigned char m)
{ char i;
  for(i=m;i>=0;i--)
  ;
}
void start_i2c(void)
{
SDA=1;
SCL=1;
delay(2);
SDA=0;
delay(2);
SCL=0;
 
}

void stop_i2c(void)
{
  SCL=0;
  SDA=0;
  delay(2);
  SCL=1;
  delay(2);
  SDA=1;
  //delay(2);
  //SCL=0;
 
}
void send_1(void)
{
SCL=0;
SDA=1;
delay(2);
SCL=1;
delay(2);
}

void send_0(void)
{
SCL=0;
SDA=0;
delay(2);
SCL=1;
delay(2);
}

bit check_ack(void)
{
bit q;
SCL=0;
SDA=1;
delay(1);
q=SDA;
delay(1);
SCL=1;
delay(2);
if(q==1)
  return FALSE;
else
  return TRUE;
}

void write_i2c_byte(unsigned char temp)
{
unsigned char i;
for(i=0;i<8;i++)
{
  if((temp<<i)&0x80)
  send_1();
  else
  send_0();
}
SCL=0;
}

bit signal_send(unsigned int tmp)
{
unsigned char fm_h,fm_l;
bit ack=1;
fm_h=(unsigned char)(tmp>>6);
fm_l=(unsigned char)(tmp<<2)&0xff;
 
start_i2c();
write_i2c_byte(0xce);
ack=check_ack();
if(ack==0)
  return 0;
write_i2c_byte(fm_h);
ack=check_ack();
if(ack==0)
  return 0;
write_i2c_byte(fm_l);
ack=check_ack();
if(ack==0)
  return 0;
write_i2c_byte(C1_H);
ack=check_ack();
write_i2c_byte(C0_L);
ack=check_ack();
if(ack==0)
  return 0;
stop_i2c();
return 1;
}
void main(void)
{
unsigned char acknow=1;
//unsigned int temp=0x0b9;
while(1)
{
  //key_fun();
while(!acknow)
    {
    acknow=signal_send(freq_data);
    }
}