
HX711驱动程序.doc
2页参考驱动程序(汇编)/*-------------------------------------------------------------------在ASM中调用: LCALL ReaAD可以在C中调用: extern unsigned long ReadAD(void);unsigned long data;data=ReadAD();----------------------------------------------------------------------*/PUBLIC ReadADHX711ROM segment coderseg HX711ROMsbit ADDO = P1.5;sbit ADSK = P0.0;/*--------------------------------------------------OUT: R4, R5, R6, R7 R7=>LSB如果在C中调用,不能修改R4,R5,R6,R7---------------------------------------------------*/ReadAD:CLR ADSK // 使能AD(PD_SCK 置低)SETB ADDO //51CPU 准双向I/0 输入使能JB ADDO,$ // 判断AD转换是否结束,若未结束则等待否则开始读取MOV R4,#24ShiftOut: SETB ADSK //PD_SCK 置高(发送脉冲)NOPCLR ADSK //PD_SCK 置低MOV C,ADDO // 读取数据(每次一位)XCH A,R7 // 移入数据RLC AXCH A,R7XCH A,R6RLC AXCH A,R6XCH A,R5RLC AXCH A,R5DJNZ R4,ShiftOut // 判断是否移入24BITSETB ADSKNOPCLR ADSKRET END参考C程序:Sbit ADDO=P1^5;Sbit ADSK=P0^0;Undsigned long ReadCount(void){ Unsigned long Count;Unsigned char i; ADDO=1; ADSK=0; Count=0; While(ADDO); for(i=0;i<24;i++){ ADSK=1; Count=Count<<1;ADSK=0; if(ADDO)Count++;} ADSK=1;Count=Count^0x800000;ADSK=0;return(Count);} 。
