⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isd51.a51

📁 keil7.09DEMO.rar
💻 A51
📖 第 1 页 / 共 2 页
字号:
;--------------------------------------------------------------------------
; 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 + -