📄 isd51.a51
字号:
;--------------------------------------------------------------------------
; Command: Write SFR SP, B
; LOW (?ISD?WRITESFR01), HIGH (?ISD?WRITESFR01), SP, B
;
?ISD?WRITESFR01:
MOV SP,R0
MOV B,A
AJMP ?ISD?CMDLOOP
;--------------------------------------------------------------------------
; Command: Write SFR02: P0
; LOW (?ISD?WRITESFR02), HIGH (?ISD?WRITESFR02), dummy, P0
;
?ISD?WRITESFR02:
MOV P0,A
AJMP ?ISD?CMDLOOP
;--------------------------------------------------------------------------
; Command: Write SFR03: P3
; LOW (?ISD?WRITESFR03), HIGH (?ISD?WRITESFR03), dummy, P3
;
?ISD?WRITESFR03:
MOV P3,A
AJMP ?ISD?CMDLOOP
#ifdef PHILIPS_LPC900
;--------------------------------------------------------------------------
; Command: Write SFR04: FMCON
; LOW (?ISD?WRITESFR04), HIGH (?ISD?WRITESFR04), dummy, FMCON
;
?ISD?WRITESFR04:
MOV PH_FMCON,A
AJMP ?ISD?CMDLOOP
;--------------------------------------------------------------------------
; Command: Write SFR05: FMADRL
; LOW (?ISD?WRITESFR05), HIGH (?ISD?WRITESFR05), dummy, FMADRL
;
?ISD?WRITESFR05:
MOV PH_FMADRL,A
AJMP ?ISD?CMDLOOP
#endif
;--------------------------------------------------------------------------
; 0 Read CPU Core SFR registers:
; LOW (?ISD?READCORESFR), HIGH (?ISD?READCORESFR), dummy, dummy
; Sends: dummy, dummy, B, AUXR, DPL, DPH, SP
?ISD?READSFR00: MOV A,SP
PUSH DPH
PUSH DPL
PUSH AUXR
PUSH B
PUSH ACC ; Dummy
PUSH ACC ; Dummy
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
; 1 Read CPU Core SFR registers:
; LOW (?ISD?READSFR01), HIGH (?ISD?READSFR01), dummy, dummy
; Sends: S:80, S:84, S:85, S:86, S:87, S:88, S:89
;
?ISD?READSFR01:
MOV A,0x89 ; S:89
PUSH 0x88 ; S:88
PUSH 0x87
PUSH 0x86
PUSH 0x85
PUSH 0x84
PUSH 0x80
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
; 2 Read CPU Core SFR registers:
; LOW (?ISD?READSFR02), HIGH (?ISD?READSFR02), dummy, dummy
; Sends: S:8A, S:8B, S:8C, S:8D, S:8E, S:8F, S:90
;
?ISD?READSFR02:
MOV A,0x90
PUSH 0x8F
PUSH 0x8E
PUSH 0x8D
PUSH 0x8C
PUSH 0x8B
PUSH 0x8A
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
; 3 Read CPU Core SFR registers:
; LOW (?ISD?READSFR03), HIGH (?ISD?READSFR03), dummy, dummy
; Sends: S:91, S:92, S:93, S:94, S:95, S:96, S:97
;
?ISD?READSFR03:
MOV A,0x97
PUSH 0x96
PUSH 0x95
PUSH 0x94
PUSH 0x93
PUSH 0x92
PUSH 0x91
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
; 4 Read CPU Core SFR registers:
; LOW (?ISD?READSFR04), HIGH (?ISD?READSFR04), dummy, dummy
; Sends: S:8A, S:8B, S:8C, S:8D, S:8E, S:8F, S:90
;
?ISD?READSFR04:
MOV A,0x9E
PUSH 0x9D
PUSH 0x9C
PUSH 0x9B
PUSH 0x9A
PUSH 0x99
PUSH 0x98
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
; 5 Read CPU Core SFR registers:
; LOW (?ISD?READSFR05), HIGH (?ISD?READSFR05), dummy, dummy
;
?ISD?READSFR05:
MOV A,0xA5
PUSH 0xA4
PUSH 0xA3
PUSH 0xA2
PUSH 0xA1
PUSH 0xA0
PUSH 0x9F
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
; 6 Read CPU Core SFR registers:
; LOW (?ISD?READSFR06), HIGH (?ISD?READSFR06), dummy, dummy
;
?ISD?READSFR06:
MOV A,0xAC
PUSH 0xAB
PUSH 0xAA
PUSH 0xA9
PUSH 0xA8
PUSH 0xA7
PUSH 0xA6
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
; 7 Read CPU Core SFR registers:
; LOW (?ISD?READSFR07), HIGH (?ISD?READSFR07), dummy, dummy
;
?ISD?READSFR07:
MOV A,0xB3
PUSH 0xB2
PUSH 0xB1
PUSH 0xB0
PUSH 0xAF
PUSH 0xAE
PUSH 0xAD
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
; 8 Read CPU Core SFR registers:
; LOW (?ISD?READSFR08), HIGH (?ISD?READSFR08), dummy, dummy
;
?ISD?READSFR08:
MOV A,0xBA
PUSH 0xB9
PUSH 0xB8
PUSH 0xB7
PUSH 0xB6
PUSH 0xB5
PUSH 0xB4
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
; 9 Read CPU Core SFR registers:
; LOW (?ISD?READSFR09), HIGH (?ISD?READSFR09), dummy, dummy
;
?ISD?READSFR09:
MOV A,0xC1
PUSH 0xC0
PUSH 0xBF
PUSH 0xBE
PUSH 0xBD
PUSH 0xBC
PUSH 0xBB
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
;10 Read CPU Core SFR registers:
; LOW (?ISD?READSFRC8), HIGH (?ISD?READSFRC8), dummy, dummy
;
?ISD?READSFR10:
MOV A,0xC8
PUSH 0xC7
PUSH 0xC6
PUSH 0xC5
PUSH 0xC4
PUSH 0xC3
PUSH 0xC2
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
;11 Read CPU Core SFR registers:
; LOW (?ISD?READSFR11), HIGH (?ISD?READSFR11), dummy, dummy
;
?ISD?READSFR11:
MOV A,0xCF
PUSH 0xCE
PUSH 0xCD
PUSH 0xCC
PUSH 0xCB
PUSH 0xCA
PUSH 0xC9
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
;12 Read CPU Core SFR registers:
; LOW (?ISD?READSFR12), HIGH (?ISD?READSFR12), dummy, dummy
;
?ISD?READSFR12:
MOV A,0xD7
PUSH 0xD6
PUSH 0xD5
PUSH 0xD4
PUSH 0xD3
PUSH 0xD2
PUSH 0xD1
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
;13 Read CPU Core SFR registers:
; LOW (?ISD?READSFR13), HIGH (?ISD?READSFR13), dummy, dummy
;
?ISD?READSFR13:
MOV A,0xDE
PUSH 0xDD
PUSH 0xDC
PUSH 0xDB
PUSH 0xDA
PUSH 0xD9
PUSH 0xD8
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
;14 Read CPU Core SFR registers:
; LOW (?ISD?READSFR14), HIGH (?ISD?READSFR14), dummy, dummy
;
?ISD?READSFR14:
MOV A,0xE6
PUSH 0xE5
PUSH 0xE4
PUSH 0xE3
PUSH 0xE2
PUSH 0xE1
PUSH 0xDF
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
;15 Read CPU Core SFR registers:
; LOW (?ISD?READSFR15), HIGH (?ISD?READSFR15), dummy, dummy
;
?ISD?READSFR15:
MOV A,0xED
PUSH 0xEC
PUSH 0xEB
PUSH 0xEA
PUSH 0xE9
PUSH 0xE8
PUSH 0xE7
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
;16 Read CPU Core SFR registers:
; LOW (?ISD?READSFR16), HIGH (?ISD?READSFR16), dummy, dummy
;
?ISD?READSFR16:
MOV A,0xF5
PUSH 0xF4
PUSH 0xF3
PUSH 0xF2
PUSH 0xF1
PUSH 0xEF
PUSH 0xEE
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
;17 Read CPU Core SFR registers:
; LOW (?ISD?READSFR17), HIGH (?ISD?READSFR17), dummy, dummy
;
?ISD?READSFR17:
MOV A,0xFC
PUSH 0xFB
PUSH 0xFA
PUSH 0xF9
PUSH 0xF8
PUSH 0xF7
PUSH 0xF6
AJMP Send7Bytes
;
;--------------------------------------------------------------------------
;18 Read CPU Core SFR registers:
; LOW (?ISD?READSFR18), HIGH (?ISD?READSFR18), dummy, dummy
;
?ISD?READSFR18:
MOV A,0xFF
PUSH 0xFE
PUSH 0xFD
PUSH ACC ; dummy
PUSH ACC ; dummy
PUSH ACC ; dummy
PUSH ACC ; dummy
AJMP Send7Bytes
;
;--------------------------------------------------------------------------;
; putchar: transmit a character via the serial interface
#if ISD_PUTCHAR
PUBLIC _putchar ; C-Prototype: char putchar (char c);
PUBLIC ?ISD?PUTCHAR, ?ISD?PUTCHAR_END
?ISD?PUTCHAR:
_putchar: CJNE R7,#0A7H,$+3
JNC pc_end
MOV A,R7
XRL A,#0AH
SAVE_ES
CLR_ES
JNZ pc_char
MOV A,#0DH
CLR_TI
WR_SBUF
JNB_TI $
pc_char: MOV A,R7
CLR_TI
WR_SBUF
JNB_TI $
JNC pc_char1 ; ISD51 is not initialized
MOV R0,#?ISD?RAMTOP
MOV A,@R0
#if CBLK_SZ == 0 /* no Hareware Breakpoints */
JNZ pc_char1
#else
JNB ACC.0,pc_char1
#endif
CLR_TI
pc_char1:
RESTO_ES
?ISD?PUTCHAR_END:
pc_end: RET
#endif
;--------------------------------------------------------------------------
; _getkey: waits for a character to be received from the serial port
#if ISD_GETKEY
PUBLIC _getkey ; C-Prototype: char _getkey (void);
_getkey: JNB_ES _getkey2
MOV A,_ISD_CHAR
XRL A,#0A5H
JZ _getkey ; no character available
MOV A,#0A5H
XCH A,_ISD_CHAR
MOV R7,A
RET
_getkey2: JNB_RI $
RD_SBUF
CJNE A,#0A5H,gk_clrRI
CALL __isd_init
SJMP _getkey
gk_clrRI: MOV R7,A
CLR_RI
RET
PUBLIC _iskey ; C-Prototype: bit _iskey (void);
_iskey: JNB_ES _iskey2
MOV A,_ISD_CHAR
CJNE A,#0A5H,ik_on
CLR C
RET
_iskey2: CLR C
JNB_RI ik_end
RD_SBUF
CJNE A,#0A5H,ik_on
CALL __isd_init
SJMP _iskey
ik_on: SETB C
ik_end: RET
?DT?ISD51 SEGMENT DATA
RSEG ?DT?ISD51
PUBLIC _ISD_CHAR
_ISD_CHAR: DS 1 ; current user input character
RSEG ?PR?ISD51
#endif
;--------------------------------------------------------------------------
; __isd_init: prepare idata RAM for ISD51
__isd_init:
MOV R0,#?ISD?RAMTOP
MOV @R0,#0xFF
#if ISD_GETKEY
MOV _ISD_CHAR,#0A5H ; no character available
#endif
SET_ES
RET
NOP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -