📄 80c196kd.inc
字号:
$gen
;*******************************************************************************
; 80C196.INC - DEFINITION OF SYMBOLIC NAMES FOR THE I/O REGISTERS OF THE
; 80C196
;*******************************************************************************
_HOLDEN set 80h
WIN0 set 0h
WR_WIN_MASK set 0fh
RD_WIN_MASK set 4h
BYTE_WORD_MASK set 8h
READ_WIN0 set 00h
READ_WIN1 set 10h
READ_WIN15 set 0f0h
WRITE_WIN0 set 00h
WRITE_WIN1 set 01h
WRITE_WIN15 set 0fh
READ_WRITE_ANY set 55h
RD_WR_ANY set 5h
WORD_OP set 100h
tmpreg equ 1ch
r0 equ 00h:word
zero_reg equ 00h:word
ad_command equ 02h:byte
ad_result equ 02h:word
ad_result_lo equ 02h:byte
ad_result_hi equ 03h:byte
ad_time equ 03h:byte
hsi_mode equ 03h:byte
hso_time equ 04h:word
hsi_time equ 04h:word
hso_command equ 06h:byte
hsi_status equ 06h:byte
sbuf equ 07h:byte
int_mask equ 08h:byte
int_pend equ 09h:byte
int_pending equ 09h:byte
watchdog equ 0ah:byte
timer1 equ 0ah:word
ioc2 equ 0bh:byte
ioc3 equ 0ch:byte
t2capture equ 0ch:byte
timer2 equ 0ch:word
baud_rate equ 0eh:byte
ioport0 equ 0eh:byte
ioport1 equ 0fh:byte
ioport2 equ 10h:byte
sp_con equ 11h:byte
sp_stat equ 11h:byte
int_pend1 equ 12h:byte
ipend1 equ 12h:byte
int_mask1 equ 13h:byte
imask1 equ 13h:byte
wsr equ 14h:byte
ioc0 equ 15h:byte
ios0 equ 15h:byte
ioc1 equ 16h:byte
ios1 equ 16h:byte
ios2 equ 17h:byte
pwm_control equ 17h:byte
pwm0_control equ 17h:byte
pwm1_control equ 16h:byte
pwm2_control equ 17h:byte
sp equ 18h:word
ptssrv equ 06h:word
ptssel equ 04h:word
r0_w set READ_WRITE_ANY + WORD_OP
zero_reg_w set READ_WRITE_ANY + WORD_OP
ad_command_w set READ_WIN15 + WRITE_WIN0
ad_result_w set READ_WIN0 + WRITE_WIN15 + WORD_OP
hsi_mode_w set READ_WIN15 + WRITE_WIN0
hso_time_w set READ_WIN15 + WRITE_WIN0 + WORD_OP
hsi_time_w set READ_WIN0 + WRITE_WIN15 + WORD_OP
hso_command_w set READ_WIN15 + WRITE_WIN0
hsi_status_w set READ_WIN0 + WRITE_WIN15
sbuf_w set READ_WIN0 + WRITE_WIN15
int_mask_w set READ_WRITE_ANY
int_pend_w set READ_WRITE_ANY
int_pending_w set READ_WRITE_ANY
timer1_w set READ_WIN0 + WRITE_WIN15 + WORD_OP
timer2_w set READ_WIN0 + WRITE_WIN15 + WORD_OP
baud_rate_w set WRITE_WIN0
ioport0_w set READ_WIN0
ioport1_w set READ_WIN0 + WRITE_WIN0
ioport2_w set READ_WIN0 + WRITE_WIN0
sp_con_w set READ_WIN15 + WRITE_WIN0
sp_stat_w set READ_WIN0 + WRITE_WIN15
ioc0_w set READ_WIN15 + WRITE_WIN0
ios0_w set READ_WIN0 + WRITE_WIN15
ioc1_w set READ_WIN15 + WRITE_WIN0
ios1_w set READ_WIN0 + WRITE_WIN15
pwm_control_w set READ_WIN15 + WRITE_WIN0
pwm0_control_w set READ_WIN15 + WRITE_WIN0
ioc2_w set READ_WIN15 + WRITE_WIN0
ioc3_w set READ_WIN1 + WRITE_WIN1
t2capture_w set READ_WIN15 + WRITE_WIN15 + WORD_OP
int_pend1_w set READ_WRITE_ANY
ipend1_w set READ_WRITE_ANY
int_mask1_w set READ_WRITE_ANY
imask1_w set READ_WRITE_ANY
wsr_w set READ_WRITE_ANY
ios2_w set READ_WIN0 + WRITE_WIN15
ad_time_w set READ_WIN1 + WRITE_WIN1
ptssel_w set READ_WIN1 + WRITE_WIN1 + WORD_OP
ptssrv_w set READ_WIN1 + WRITE_WIN1 + WORD_OP
pwm1_control_w set READ_WIN1 + WRITE_WIN1
pwm2_control_w set READ_WIN1 + WRITE_WIN1
;;------------------------------------------------------------------
_ReadSFR macro Destination, SFR
local ReadWindow, Byte_or_Word
ReadWindow set ((SFR&_w shr RD_WIN_MASK) and 0fh)
Byte_or_Word set (SFR&_w shr BYTE_WORD_MASK)
if not(ReadWindow = RD_WR_ANY)
ldb wsr, #ReadWindow + _HOLDEN
endif
if (Byte_or_Word = 1)
st SFR, Destination
else
stb SFR, Destination
endif
endm
;;------------------------------------------------------------------
_WriteSFR macro SFR, Value
local WriteWindow, Byte_or_Word
WriteWindow set (SFR&_w and WR_WIN_MASK)
Byte_or_Word set (SFR&_w shr BYTE_WORD_MASK)
if not (WriteWindow = RD_WR_ANY)
ldb wsr, #WriteWindow + _HOLDEN
endif
if (Byte_or_Word = 1)
ld SFR, Value
else
ldb SFR, Value
endif
endm
;;------------------------------------------------------------------
_ClrSFR_bit macro SFR, BitNumber
local WriteWindow, ReadWindow, Byte_or_Word, MaskValue
WriteWindow set (SFR&_w and WR_WIN_MASK)
ReadWindow set ((SFR&_w shr RD_WIN_MASK) and 0fh)
Byte_or_Word set (SFR&_w shr BYTE_WORD_MASK)
MaskValue set not (1 shl BitNumber)
if not (ReadWindow = RD_WR_ANY)
ldb wsr, #ReadWindow + _HOLDEN
endif
if ((ReadWindow = RD_WR_ANY) or (ReadWindow = WriteWindow))
if (Byte_or_Word = 1)
and SFR, #MaskValue
else
andb SFR, #MaskValue
endif
else
if (Byte_or_Word = 1)
and tmpreg, SFR, #MaskValue
ldb wsr, #WriteWindow + _HOLDEN
ld SFR, tmpreg
else
andb tmpreg, SFR, #MaskValue
ldb wsr, #WriteWindow + _HOLDEN
ldb SFR, tmpreg
endif
endif
endm
;;------------------------------------------------------------------
_AndSFR macro SFR, MaskValue
local WriteWindow, ReadWindow, Byte_or_Word
WriteWindow set (SFR&_w and WR_WIN_MASK)
ReadWindow set ((SFR&_w shr RD_WIN_MASK) and 0fh)
Byte_or_Word set (SFR&_w shr BYTE_WORD_MASK)
if not (ReadWindow = RD_WR_ANY)
ldb wsr, #ReadWindow + _HOLDEN
endif
if ((ReadWindow = RD_WR_ANY) or (ReadWindow = WriteWindow))
if (Byte_or_Word = 1)
and SFR, MaskValue
else
andb SFR, MaskValue
endif
else
if (Byte_or_Word = 1)
and tmpreg, SFR, MaskValue
ldb wsr, #WriteWindow + _HOLDEN
ld SFR, tmpreg
else
andb tmpreg, SFR, MaskValue
ldb wsr, #WriteWindow + _HOLDEN
ldb SFR, tmpreg
endif
endif
endm
;;------------------------------------------------------------------
_SetSFR_bit macro SFR,BitNumber
local WriteWindow, ReadWindow, Byte_or_Word, MaskValue
WriteWindow set (SFR&_w and WR_WIN_MASK)
ReadWindow set ((SFR&_w shr RD_WIN_MASK) and 0fh)
Byte_or_Word set (SFR&_w shr BYTE_WORD_MASK)
MaskValue set (1 shl BitNumber)
if not (ReadWindow = RD_WR_ANY)
ldb wsr, #ReadWindow + _HOLDEN
endif
if ((ReadWindow = RD_WR_ANY) or (ReadWindow = WriteWindow))
if (Byte_or_Word = 1)
or SFR, #MaskValue
else
orb SFR, #MaskValue
endif
else
if (Byte_or_Word = 1)
ld tmpreg, SFR
or tmpreg, #MaskValue
ldb wsr, #WriteWindow + _HOLDEN
ld SFR, tmpreg
else
ldb tmpreg, SFR
orb tmpreg, #MaskValue
ldb wsr, #WriteWindow + _HOLDEN
ldb SFR, tmpreg
endif
endif
endm
;;------------------------------------------------------------------
_OrSFR macro SFR, MaskValue
local WriteWindow, ReadWindow, Byte_or_Word
WriteWindow set (SFR&_w and WR_WIN_MASK)
ReadWindow set ((SFR&_w shr RD_WIN_MASK) and 0fh)
Byte_or_Word set (SFR&_w shr BYTE_WORD_MASK)
if not(ReadWindow = RD_WR_ANY)
ldb wsr, #ReadWindow + _HOLDEN
endif
if ((ReadWindow = RD_WR_ANY) or (ReadWindow = WriteWindow))
if (Byte_or_Word = 1)
or SFR, MaskValue
else
orb SFR, MaskValue
endif
else
if (Byte_or_Word = 1)
ld tmpreg, SFR
or tmpreg, MaskValue
ldb wsr, #WriteWindow + _HOLDEN
ld SFR, tmpreg
else
ldb tmpreg, SFR
orb tmpreg, MaskValue
ldb wsr, #WriteWindow + _HOLDEN
ldb SFR, tmpreg
endif
endif
endm
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -