send_循环: mov c,数据_输出.7 ; 1
mov dat,c
setb clk ; CLK
mov 一个,数据_输出 ;
rl 一个
mov 数据_输出,一个
call 短的_延迟 ;
clr clk ; CLK
call 短的_延迟 ;
djnz 位_计数,send_循环 ; 8
clr dat ;
RET
;*******************************************
; hd7279
;*******************************************
receive: mov 位_计数,#8 ; =8
setb dat ; p1.2(数据)
;( )
call 长_延迟 ;
receive_循环:setb clk ; CLK
call 短的_延迟 ;
mov 一个,数据_在 ;
rl 一个
mov 数据_在,一个
mov c,dat ;
mov 数据_在.0,c
clr clk ; CLK
call 短的_延迟
djnz 位_计数,receive_循环; 8
clr dat ; DAT ( )
RET
;*******************************************
;
;*******************************************
长_延迟: mov 计时器,#25 ; 50uS
延迟_循环: djnz 计时器,延迟_循环
RET
短的_延迟: mov 计时器,#4 ; 8uS
短的_lp: djnz 计时器,短的_lp