📄 ad976test.asm
字号:
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.global start
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Address definitions
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.include f2407.h
.include vectors.h
Start_AD976 .set 1000000000000010b
;5432109876543210
Read_AD976 .set 0000000000000010b
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Setup the software stack
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stk_len .set 100 ;stack length
stk .usect "stack",stk_len ;reserve space for stack
;*********************************************************************
; M A I N R O U T I N E *
;*********************************************************************
.text
start:
LAR AR1, #stk ;AR1 is the stack pointer
CALL SYSTEM_INIT
CALL IO_INIT
SETC XF
CALL LED_ON
CALL BEEP_ON
CALL DELAY_LONG
CALL DELAY_LONG
CALL DELAY_LONG
CLRC XF
CALL BEEP_OFF
CALL LED_OFF
;SPLK #0H,60h
;5432109876543210
;OUT 60h,WSGR ; Set waitstates for external memory (if used)
CALL CAN_INIT
LOOP_TEST:
OUT *,Start_AD976
CALL DELAY_SHORT
CALL DELAY_SHORT
CALL DELAY_SHORT
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
IN *,Read_AD976
CALL DELAY_SHORT
B LOOP_TEST
LOOP:
NOP
B LOOP
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Configure the System Control and Status Registers
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SYSTEM_INIT:
LDP #0
SETC INTM
CLRC SXM
CLRC OVM
CLRC CNF
LDP #SCSR1>>7 ;set data page
LACL #0000011000000001b
;5432109876543210
SACL SCSR1 ; ENABLE THE SPI AND CAN MODULES.
;5432109876543210 ; SET THE CPU WORKING CLOCK =4*fin
LDP #WDCR>>7
SPLK #0E8H,WDCR ;关看门狗
;LDP #0
;LDP #IMR>>7
;LACL 0000000000100000B
;5432109876543210
;SPLK #0001H,IMR ;使能spi所在中断1
;SPLK #0FFFFH,IFR ;清除中断标志
;CLRC INTM
RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Disable the watchdog timer
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KILL_DOG:
LDP #DP_PF1 ;set data page
SPLK #0000000011101000b, WDCR
RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Setup shared I/O pins
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IO_INIT:
LDP #DP_PF2 ;set data page
SPLK #0000000000000000b,MCRA ;group A pins
LACC PADATDIR ; IOPA5=OUT OUT=0
OR #0010000000000000B
SACL PADATDIR
;SPLK #1111111000011101b,MCRB ;group B pins W/R, IOPC1, SPISIMO,SPISOMI SPICLK,IOPC5.
;DISABLE CANTX,CANRX = IOPC6,7. DISABLE XINT2 =IOPD0.
;LACC PCDATDIR
;OR #0010000000000000B ;IOPC5=OUT OUT=0
SPLK #0000000000000001b,MCRC ;group C pins ENABLE I0PE6
LACC PFDATDIR ; IOPF6=OUT OUT=0
OR #0100000000000000B
SACL PFDATDIR
RET
DELAY:
LACC #90000
DELAY1: SUB #1
RPT #80
NOP
BCND DELAY1,NEQ
RET
DELAY_SHORT: ;20MHz DELAY 1uS
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
DELAY_LONG LACC #2
DELAY_LONG1: SUB #1
PUSH ACC
CALL DELAY
POP ACC
BCND DELAY_LONG1,NEQ
RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;开启蜂鸣器,
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BEEP_ON:
LDP #DP_PF2 ;set data page
LACC PADATDIR
AND #1111111111011111B
SACL PADATDIR ;store result to PCDATDIR
RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;关闭蜂鸣器,
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BEEP_OFF:
LDP #DP_PF2 ;set data page
LACC PADATDIR
OR #0000000000100000B
SACL PADATDIR ;store result to PCDATDIR
RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;开启LED
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LED_ON:
LDP #DP_PF2 ;set data page
LACC PFDATDIR
AND #1111111110111111B
SACL PFDATDIR ;store result to PCDATDIR
RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; 关闭led
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LED_OFF:
LDP #DP_PF2 ;set data page
LACC PFDATDIR
OR #0000000001000000B
SACL PFDATDIR ;store result to PCDATDIR
RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;can接口初始化
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CAN_INIT: LDP #MCRB>>7
SPLK #0FF00H,MCRB
;LACC MCRB
;OR #0000000001000000B
;AND #1111111101111111B
;SACL MCRB
;LDP #PCDATDIR>>7
;LACC PADATDIR
;OR #0100000010000000B
;AND #0111111110111111B
;SACL PADATDIR
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -