|
;**************************************<br />DATA_OUT DATA 21H;<br />DAT BIT P1.2<br />CLK BIT P1.1<br />BIT_COUNT DATA 007FH<br />CS BIT P1.0<br />TIMER1 DATA 007DH<br />TIMER DATA 007EH<br />;**************************************<br /> ORG 0000H<br /> AJMP MAIN<br /> ORG 0100H<br />MAIN: SETB CS<br /> mov timer,#50<br />start_delay : mov timer1,#255<br />start_delay1 : djnz timer1,start_delay1<br /> djnz timer,start_delay<br /> mov data_out ,#10100100b<br /> call send<br /> MOV DATA_OUT,#10000001B<br /> LCALL SEND <br /> LCALL LONG_DELAY<br /> MOV DATA_OUT,#10000001B<br /> LCALL LONG_DELAY<br /> SJMP $<br />;****************************************<br /><br />send: mov bit_count,#8<br /> clr cs<br /> call long_delay<br />send_loop: mov c,data_out.7<br /> mov dat,c<br /> setb clk<br /> mov a,data_out<br /> rl a<br /> mov data_out,a<br /> call short_delay<br /> clr clk<br /> call short_delay<br /> djnz bit_count,send_loop<br /> clr dat<br /> ret<br />;*****************************************<br /><br /><br /><br />LONG_DELAY:MOV TIMER,#25<br />DELAY_LOOP:DJNZ TIMER,DELAY_LOOP<br />RET<br />;******************************************<br />SHORT_DELAY:MOV TIMER,#4<br />SHORT_LOOP:DJNZ TIMER,SHORT_LOOP<br />RET<br />;*********************************************<br />END<br />;********************************************
|