📄 sr2_56k.asm
字号:
;单片机类别:12分频单片机
;单片机的振荡频率:22.1184MHz
;CARD类型:56Kpbs
;CARD的振荡频率:3.5795MHz
;CARD的IO管脚:P2.0
;===================================
;1ETU需要的nop数:32.9556 ; 0.5etu=17
;1ETU(实际-现在):=-.111300460958233
;0.5ETU(实际-现在):=-2.05565023047912
;===================================
public _I_2Send56k
public _I_2Rda56k
proc segment code
rseg proc
SAMIO bit P2.2 ;by cpu_io pin
Timer00 EQU 13 ;ONEETU=2*Timer00
Timer01 EQU 7 ;HALFETU=2*Timer01
;======================================================
;1ETU: AAA--AAA, BBB-BBB,CCC-CCC
;1.5ETU: DDD--DDD
;======================================================
;======================================================
;c: unsigned char I_Send(unsigned char ch);
; input: ch
; ret: ==0 --OK
; !=0--ERR
;ASM: OCCUPY: R6,R7,A,C
; INPUT : R7
; output:--
; status: r7=0:right
; <>0:error
_I_2Send56k:
sb_00: mov a,r7
mov c,p ;for parity
mov r7,#0ffh
mov r6,#0ffh
sb_01: jb SAMIO,sb_02 ;
djnz r7,sb_01
mov r7,#0ffh
djnz r6,sb_01
setb SAMIO
mov R7,#01H ;timeout=(255*4+1)*255
ret
sb_02:
mov r6,#09h ;1
clr SAMIO ;1
NOP ;1-------------TEST BIT1
;------------------------------------------AAA1ETU
mov r7,#Timer00 ;1
djnz r7,$ ;2*#Timer00
nop ;1
nop ;1 03.3.18 test delete is good for our cos
;nop
;------------------------------------------BBB1ETU
sb_03: rrc a ;1
mov SAMIO,c ;1
NOP ;1-------------TEST BIT2
;nop ; 03.3.18 test delete is good for our cos
;------------------------------------------AAA.1ETU
;------------------------------------------CCC1ETU
mov r7,#Timer00 ;1
djnz r7,$ ;2*#Timer00
djnz r6,sb_03 ;2
;------------------------------------------BBB1ETU
NOP ;1
setb SAMIO ;1
NOP ;1-------------TEST BIT3
;------------------------------------------CCC1ETU
mov r7,#Timer00 ;1
djnz r7,$ ;2*#Timer00
nop ;1
nop ;1
nop ;1
nop ;1
NOP ;1-------------TEST BIT4
;------------------------------------------CCC1ETU
mov r7,#Timer00 ;1
djnz r7,$ ;2*#Timer00
nop ;1
NOP ;1
mov r7,#00h ;1
NOP ;1-------------TEST BIT5
;------------------------------------------CCC1ETU
ret ;1
;======================================================
; Timer00 EQU 13 ;ONEETU=2*Timer00
; Timer01 EQU 7 ;HALFETU=2*Timer01
_I_2Rda56k:
RB_00: mov r6,#0FFh
mov r7,#0ffh
MOV R5,#03h
RB_01: jnb SAMIO,RB_021 ;
djnz r7,RB_01 ;
mov r7,#0ffh
djnz r6,RB_01
djnz r5,RB_01
mov R7,#01H ;timeout=(4*255+1+2)*255*3
ret
RB_021:
NOP ;1-------------TEST BIT6
mov r6,#08h ;1
mov r7,#Timer00 ;1 2003.3.12
djnz r7,$ ;#Timer00*2
NOP ;1
nop
nop
mov r7,#Timer01 ;1 mov r7,#Timer03
djnz r7,$ ;#Timer01*2
NOP ;1
;------------------------------------------AAA1ETU
RB_031: mov c,SAMIO ;1
;------------------------------------------DDD1.5ETU
;------------------------------------------BBB1ETU
NOP ;1-------------TEST BIT7
;nop ;03.3.18
rrc a ;1
mov r7,#Timer00 ;1 mov r7,#Timer02
djnz r7,$ ;#Timer00*2
djnz r6,RB_031 ;2
;------------------------------------------AAA1ETU
mov c,SAMIO ;1
;------------------------------------------BBB1ETU
;------------------------------------------CCC1ETU
NOP ;1-------------TEST BIT8
mov r7,#13 ;1 2003.3.12
djnz r7,$ ;#Timer00*2
NOP ;1
NOP ;1
setb SAMIO ;1
;------------------------------------------CCC1ETU
NOP ;1-------------TEST BIT9
RB_041: CJNE R3,#02H,RB_051 ;2
MOV DPH,R2 ;
MOV DPL,R1
MOVX @DPTR,A ;2
MOV R7,#00H ;1
RET ;2 共26个CLOCK ,0.5ETU
RB_051: MOV @R1,A ;1
mov r7,#00h
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -