XCH A, OR1 MOV @RO, A NEXT 41H LP )v A, RO A MOV RI.A DJNZ 40H, LOP RET MOV TIMER. #50 START DELAY: MOV TIMERI, #255 延时以确保BC728X完成复位 START DELAY1: DJNZ TIMERl, START DELAY1 DJNZ TIMER, START DELAY MOV DATA OUT,#12H;BC728X初始化 LCALL SEND MOV DATA OUT,#8OH;设定为164模式,不反相 LCALL SEND RET 水水水水水水水水水水水客水水水水水水水水水客水水水水冰水水水冰水水水水水水水客水客水水水水水客水水水水水** *向BC728X发送一个字节子程序,待发送数据存于 DATA OUT CLR CLK 在CLK输出一脉冲 SETB CLK WAITI JB DAT, WAITI ;等待DAT变为低电平 CLR CLK 再输出一CLK脉冲 TB CLK WAIT2 JNB DAT,WAIT2;等待DAT恢复高电平(输入状态) MOV BIT COUNT, #8 SEND LOOP MOV C, DATA OUT. 7 输出BIT7 MOV DAT, C CLR CLK 输出一CLK脉冲 SETB CLK MOV A DATA OUT MOV DATA OUT. A DATA OUT左移一位 NOP 短暂延时 NOP NOP DJNZ BIT COUNT, SEND LOOP SETB DAT 恢复DAT为高电平 RET 本水水水水冰水冰本水冰客水水水水冰水客水冰水水水水水水水水水水水水水水冰水水水水水客水客水冰本水水冰水冰*水8 XCH A,@R1 MOV @R0,A NEXT: INC R1 DJNZ 41H,LP INC R0 MOV A,R0 INC A MOV R1,A DJNZ 40H,LOP RET ;*********************************************************** XSFW: MOV TIMER,#50 START_DELAY: MOV TIMER1,#255 ;延时以确保 BC728X 完成复位 START_DELAY1: DJNZ TIMER1,START_DELAY1 DJNZ TIMER,START_DELAY MOV DATA_OUT,#12H ;BC728X 初始化 LCALL SEND MOV DATA_OUT,#80H ;设定为 164 模式, 不反相 LCALL SEND RET ;************************************************************* ;* 向 BC728X 发送一个字节子程序,待发送数据存于 DATA_OUT ;************************************************************ SEND: CLR CLK ;在 CLK 输出一脉冲 SETB CLK WAIT1: JB DAT,WAIT1 ;等待 DAT 变为低电平 CLR CLK ;再输出一 CLK 脉冲 SETB CLK WAIT2: JNB DAT,WAIT2 ;等待 DAT 恢复高电平(输入状态) MOV BIT_COUNT,#8 SEND_LOOP: MOV C,DATA_OUT.7 ;输出 BIT7 MOV DAT,C CLR CLK ;输出一 CLK 脉冲 SETB CLK MOV A,DATA_OUT RL A MOV DATA_OUT,A ;DATA_OUT 左移一位 NOP ;短暂延时 NOP NOP DJNZ BIT_COUNT,SEND_LOOP SETB DAT ;恢复 DAT 为高电平 RET ;*************************************************************