📄 c8_1_1.asm
字号:
.title "ehancement.asm"
.mmregs
.global cy_start
DXR10 .set 0023h
SPSA0 .set 0038h
SPSA1 .set 0048h
SPSD0 .set 0039h
SPSD1 .set 0049h
SPCR10 .set 00h
SPCR20 .set 01h
XCR10 .set 04h
XCR20 .set 05h
PCR0 .set 0Eh
SPCR11 .set 00h
SPCR21 .set 01h
XCR11 .set 04h
XCR21 .set 05h
PCR1 .set 0Eh
K_DBL .set 0b << 15
K_RJUST .set 00b<< 13
K_CLKSTP .set 00b<< 11
K_SPCR1_RES .set 000b<<8
K_DXENA .set 1b << 7
K_ABIS .set 0b << 6
K_RINTM .set 00b<< 4
K_RSYNCERR .set 0b << 3
K_RFULL .set 0b << 2
K_RRDY .set 0b << 1
K_RRST .set 0b << 0
K_SPCR10_RST .set K_DBL|K_RJUST|K_CLKSTP|K_DXENA|K_ABIS|K_RINTM|K_RSYNCERR|K_RFULL|K_RRDY|K_RRST
K_SPCR11_RST .set K_DBL|K_RJUST|K_CLKSTP|K_DXENA|K_ABIS|K_RINTM|K_RSYNCERR|K_RFULL|K_RRDY|K_RRST
K_RRST1 .set 1b << 0
K_SPCR10_OUT_RST .set K_DBL|K_RJUST|K_CLKSTP|K_DXENA|K_ABIS|K_RINTM|K_RSYNCERR|K_RFULL|K_RRDY|K_RRST1
K_SPCR11_OUT_RST .set K_DBL|K_RJUST|K_CLKSTP|K_DXENA|K_ABIS|K_RINTM|K_RSYNCERR|K_RFULL|K_RRDY|K_RRST1
K_SPCR2_RES .set 000000b << 10
K_FREE .set 0b << 9
K_SOFT .set 0b << 8
K_FRST .set 0b << 7
K_GRST .set 0b << 6
K_XINTM .set 0b << 4
K_XSYNCERR .set 0b << 3
K_XEMPTY .set 0b << 2
K_XRDY .set 0b << 1
K_XRST .set 0b << 0
K_SPCR20_RST .set K_FREE|K_SOFT|K_FRST|K_GRST|K_XINTM|K_XSYNCERR|K_XEMPTY|K_XRDY|K_XRST
K_SPCR21_RST .set K_FREE|K_SOFT|K_FRST|K_GRST|K_XINTM|K_XSYNCERR|K_XEMPTY|K_XRDY|K_XRST
K_FRST1 .set 1b << 7
K_GRST1 .set 1b << 6
K_XRST1 .set 1b << 0
K_SPCR20_OUT_RST .set K_FREE|K_SOFT|K_FRST|K_GRST|K_XINTM|K_XSYNCERR|K_XEMPTY|K_XRDY|K_XRST1
K_SPCR21_OUT_RST .set K_FREE|K_SOFT|K_FRST1|K_GRST1|K_XINTM|K_XSYNCERR|K_XEMPTY|K_XRDY|K_XRST1
K_PCR_RES .set 00b <<14
K_XIOEN .set 0b << 13
K_RIOEN .set 0b << 12
K_FSXM .set 0b << 11
K_FSRM .set 0b << 10
K_CLKXM .set 0b << 9
K_CLKRM .set 0b << 8
K_CLKS_STAT .set 0b << 6
K_DX_STAT .set 0b << 5
K_DR_STAT .set 0b << 4
K_FSXP .set 1b << 3
K_FSRP .set 0b << 2
K_CLKXP .set 0b << 1
K_CLKRP .set 0b << 0
K_PCR0 .set K_PCR_RES|K_XIOEN|K_RIOEN|K_FSXM|K_FSRM|K_CLKXM|K_CLKRM|K_CLKS_STAT|K_DX_STAT|K_DR_STAT|K_FSXP|K_FSRP|K_CLKXP|K_CLKRP
K_PCR1 .set K_PCR_RES|K_XIOEN|K_RIOEN|K_FSXM|K_FSRM|K_CLKXM|K_CLKRM|K_CLKS_STAT|K_DX_STAT|K_DR_STAT|K_FSXP|K_FSRP|K_CLKXP|K_CLKRP
K_XCR1_rsvd1 .set 0b << 15
K_XFRLEN1 .set 0000000b << 8
K_XWDLEN1 .set 010b << 5
K_XCR1_rsvd2 .set 00000b << 0
K_XCR10 .set K_XCR1_rsvd1|K_XFRLEN1|K_XWDLEN1|K_XCR1_rsvd2
K_XCR11 .set K_XCR1_rsvd1|K_XFRLEN1|K_XWDLEN1|K_XCR1_rsvd2
K_XPHASE .set 0b << 15
K_XFRLEN2 .set 0000000b << 8
K_XWDLEN2 .set 010b << 5
K_XCOMPAND .set 00b << 3
K_XFIG .set 0b << 2
K_XDATDLY .set 00b << 0
K_XCR20 .set K_XPHASE|K_XFRLEN2|K_XWDLEN2|K_XCOMPAND|K_XFIG|K_XDATDLY
K_XCR21 .set K_XPHASE|K_XFRLEN2|K_XWDLEN2|K_XCOMPAND|K_XFIG|K_XDATDLY
K_PMST .set 001B0H
K_CLKMD .set 01336H
K_ST0 .set 01800H
K_ST1 .set 02B00H
K_BSCR .set 00000H
K_SWWSR_IO .set 00000H
port_adc .set 0x8000 ;0xe000
.data
flag_signal_count .word 0
const_one .word 1
const_null .word 0
tmp .word 0
const_8 .word 8
buffer .usect "varrible",256
signal .usect "varrible",32*32
dsnsignal .usect "varrible",32*32
.text
cy_start:
intm = #1
sp = #02C90h
nop
call init_5402
dp = #flag_signal_count
a = #0
ar4 = #dsnsignal
repeat(#1023)
*AR4+ = A
call serial_init
BEGIN:
ifr = #0ffffh
nop
nop
nop
IMR = #0001h
nop
@flag_signal_count = #31 ; 32 cycles
AR3 = #signal
cy_loop:
NOP
NOP
ar4 = #buffer
ar5 = #port_adc
intm = #0
nop
nop
nop
nop
idle(1)
nop
nop
nop
nop
intm = #1
cyfir_filter:
AR0 = #1
AR4 = #buffer
AR5 = #FIR_xishu
BRC = #31
dblockrepeat(fir_filter_loop-1)
BK = #8
repeat(#7),A=0
A += (*AR4+) * (*AR5+0%)
nop
*AR3+ = hi(A)
MAR(*AR4-)
MAR(*AR4-)
MAR(*AR4-)
MAR(*AR4-)
fir_filter_loop:
B = @flag_signal_count
B -= @const_one
if (blt) goto picture_ehance
@flag_signal_count = B
goto cy_loop
picture_ehance:
brc=#1023
ar4= #signal
ar5= #dsnsignal
@const_8= #8
T=@const_8
blockrepeat(ehancement_loop-1)
a=T* *ar4
b=*ar4(-33)
b=-b
a=a+b
b=*ar4(-32)
b=-b
a=a+b
b=*ar4(-31)
b=-b
a=a+b
b=*ar4(-1)
b=-b
a=a+b
b=*ar4(1)
b=-b
a=a+b
b=*ar4(31)
b=-b
a=a+b
b=*ar4(32)
b=-b
a=a+b
b=*ar4(33)
b=-b
a=a+b
*ar5+ = a
MAR(*AR4+)
ehancement_loop:
nop
goto BEGIN
***** ADC INPUT *****
receive_signal_int0:
BRC = #135
nop
nop
blockrepeat(cy_100MHz-1)
*ar4+ = *ar5
nop
cy_100MHz:
nop
nop
return_enable
init_5402:
SWWSR = #K_SWWSR_IO
BSCR = #K_BSCR
ST0 = #K_ST0
ST1 = #K_ST1
PMST = #K_PMST
CLKMD = #K_CLKMD
nop
nop
return
serial_init:
mmr(SPSA0) = #SPCR10
nop
mmr(SPSD0) = #K_SPCR10_RST
mmr(SPSA0) = #SPCR20
nop
mmr(SPSD0) = #K_SPCR20_RST
mmr(SPSA0) = #PCR0
nop
mmr(SPSD0) = #K_PCR0
mmr(SPSA0) = #XCR10
nop
mmr(SPSD0) = #K_XCR10
mmr(SPSA0) = #XCR20
nop
mmr(SPSD0) = #K_XCR20
nop
nop
return
FIR_xishu: ; filter coefficients
.word 0x0400
.word 0x1200
.word 0x3900
.word 0x4700
.word 0x4700
.word 0x3900
.word 0x1200
.word 0x0400
.sect "vectors"
reset:
goto cy_start
NOP
NOP
nmi:
return_enable
NOP
NOP
NOP
sint17 .space 4*16
sint18: .space 4*16
sint19 .space 4*16
sint20: .space 4*16
sint21 .space 4*16
sint22 .space 4*16
sint23 .space 4*16
sint24 .space 4*16
sint25 .space 4*16
sint26 .space 4*16
sint27 .space 4*16
sint28 .space 4*16
sint29 .space 4*16
sint30 .space 4*16
int0:
goto receive_signal_int0
NOP
NOP
int1: return_enable
NOP
NOP
NOP
int2: return_enable
NOP
NOP
NOP
tint: return_enable
NOP
NOP
NOP
rint0: return_enable
NOP
NOP
NOP
xint0: return_enable
NOP
NOP
NOP
rint1: return_enable
NOP
NOP
NOP
xint1: return_enable
NOP
NOP
NOP
int3: return_enable
nop
nop
nop
hpint: return_enable
nop
nop
nop
.space 4*16
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -