📄 shanghai.asm
字号:
CLR SPBIT
LCALL ClkDownUP ; |________|
setb spbit
MOV A,R5
MOV R6, #08
SdcSP1:
RRC A
MOV SPBIT, C
LCALL ClkDownUp
DJNZ R6, SdcSP1 ; Send 8 data Bits
SETB SPBIT ; Send 1 stop bits
LCALL ClkDownUp
CLR C
POP ACC ;
MOV R6,A ;
POP ACC
RET
;***************************************************************************
; LD FORM 接收子程序
; 出口: A: 字符 C=0: 成功, C=1: 失败 (R5, R6)
;***************************************************************************
ReceCharSP:
PUSH ACC
MOV A,R7 ;
PUSH ACC ;
MOV A,R6 ;
PUSH ACC ;
MOV R6, #ByteWait2 ; Wait Start Bit
SETB SPCLK
RecSP1:
SETB SPBIT
SETB SPCLK
JB SPCLK, RecSP10
; JB SPBIT, RSP101; RECSPERR
JB SPBIT, RECSP10; RECSPERR
SJMP RecSP11
RecSP10:DJNZ R6, RecSP1
rsp101:
SJMP RecSPErr
RecSP11:MOV R7, #08 ; 8 Data Bits
SdcSP2: MOV R6, #ByteWait2 ; Wait CLK from 0 To 1
RecSP20:NOP
SETB SPCLK
JB SPCLK, RecSP21
DJNZ R6, RecSP20
SJMP RecSPErr
RecSP21:MOV R6, #30
RecSP22:
SETB SPCLK
JB SPCLK, RecSP23 ; Wait CLK from 1 TO 0
MOV C, SPBIT
RRC A
LJMP RecSP24
RecSP23:DJNZ R6, RecSP22
SJMP RecSPErr
RecSP24:DJNZ R7, SdcSP2
MOV R5, A
MOV R6, #ByteWait2 ; Wait CLK from 0 To 1
RecSP3: NOP
SETB SPCLK
JB SPCLK, RecSP30
DJNZ R6, RecSP3
SJMP RecSPErr
RecSP30:MOV R6, #ByteWait2
RecSP31:
SETB SPCLK
SETB SPBIT
JB SPCLK, RecSP32 ; Wait CLK from 1 TO 0
JB SPBIT, RecSPOK ; Stop Bit
SJMP RecSPErr
RecSP32:DJNZ R6, RecSP31
SJMP RecSPErr
RecSPOK:
CLR C
SJMP RecSPExit
RecSPErr:
SETB C
SJMP RecSPExit
RecSPExit:
SETB SPCLK
SETB SPBIT
POP ACC ;
MOV R6,A ;
POP ACC ;
MOV R7,A ;
POP ACC
RET
;****************************************************************************
CLKDownUp: ;LD FORM CLK, lower and high
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
;
CLR SPCLK
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB SPCLK
NOP
nop
NOP
ret
;**********************************************************************
CLKDown: ;LD FORM CLK=0
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR SPCLK
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
;*************************************************************************
CLKUp: ;LD FORM CLK=1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB SPCLK
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
;***********************************************************************
DELAY_10MS: ;delay 10 ms
MOV DPH,#10
DL10MS_P3:
LCALL DELAY_1MS
DJNZ DPH,DL10MS_P3
RET
;**********************************************************************
DELAY_5MS: ;delay 5 ms
MOV DPH,#5
DL5MS_P3:
LCALL DELAY_1MS
DJNZ DPH,DL5MS_P3
RET
;**********************************************************************
DELAY_1MS: ;delay 1 ms
MOV DPL,#142
DELAY1MS_P3:
LCALL DELAY
DJNZ DPL,DELAY1MS_P3
RET
;***********************************************************************
DELAY_50uS: ;delay 50 us
MOV DPL,#05
DELAY50uS_P3:
LCALL DELAY
DJNZ DPL,DELAY50uS_P3
RET
;************************************************************************
DELAY: ; DELAY 5 CYCLE = 10US
NOP
RET
;*************************************************************************
; delay A ms
;***************************************************************************
DELAYAMS:
LOOPR1: MOV DPH, #91 ; 10*g2*T=1ms 1/11.059M*12=1.0851us: 92
LOOPR2: NOP ; n 个 NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ DPH, LOOPR2
DJNZ DPL, LOOPR1
RET
;***********************************************************************
DELAY5us:
NOP
RET
;***************************************************************
;*************************************
; T0_SET: TIME : 1.4 MS *
;*************************************
T0_SET: CLR TR0
MOV A,TMOD
ANL A,#0F0H
ORL A,#01H
MOV TMOD,A
MOV TH0,#0F9H ;FBH
MOV TL0,#00H
SETB TR0
RET
;*************************************
;INT_T0: LED REFRESH INT PROGRAM ! *
;*************************************
INT_T0: CLR EA
PUSH ACC
PUSH PSW
MOV A,R7 ;
PUSH ACC ;
MOV R7,#020H ;
INT_T01: NOP ;
DJNZ R7,INT_T01 ;
MOV TH0,#0F9H
MOV TL0,#00H
POP ACC ;
MOV R7,A ;
POP PSW
POP ACC
SETB TR0
SETB EA
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -