📄 ini2407.asm
字号:
**2006 01 08 tianke 运动控制卡
****************************************************************
;Module: 2407 Initialization
;
; Initialize the PLL, Watchdog and Wait state generator
; Clear EV registers
***************************************************************
**初始化运动控制卡,定时器T1,设定周期,中断等
; Include header file:
.include "X24x.h"
; Step 1: Global declaration:
.global INIT_2407
.bss GPR0,1
; Digital I/O registers
OCRA .set 7090h ; Output Control Reg A
OCRB .set 7092h ; Output Control Reg B
OCRC .set 7094h ; Output Control reg c
OPCRA .set 7090h ; Output Control Reg A
OPCRB .set 7092h ; Output Control Reg B
OPCRC .set 7094h ; Output Control reg c
PADATDIR .set 7098h ; I/O port A Data & Direction reg.
PBDATDIR .set 709Ah ; I/O port B Data & Direction reg.
PCDATDIR .set 709Ch ; I/O port C Data & Direction reg.
PDDATDIR .set 709Eh ; I/O port D Data & Direction reg.
PEDATDIR .set 7095h ; I/O port E Data & Direction reg.
PFDATDIR .set 7096h ; I/O port F Data & Direc
INIT_2407:
; Disable interrupts, Clear SXM, OVM and CNF bits
POINT_PG0
SETC INTM ; Disable interrupts
SPLK #0h, IMR ; Mask all Ints
SPLK #0FFh, IFR ; Clear all Int Flags
CLRC SXM ; Clear Sign Extension Mode
CLRC OVM ; Reset Overflow Mode
CLRC CNF ; Config Block B0 to Data mem.
;B0区被配置为数据空间
; CALL ini_2407_pll
POINT_B0 ; Variables data page
POINT_PF1 ; Peripherals first data page
SPLK #4000h, SCSR
; Disable the watchdog timer
POINT_PF1
; Peripherals first data page
SPLK #006Fh, WD_CNTL
SPLK #05555h, WD_KEY
SPLK #0AAAAh, WD_KEY
SPLK #006Fh, WD_CNTL
lacc #0c1h
sacl CKCR0 ;CKCR0 PLLCLK=CLKIN输入直接为
lacc #0B2h
sacl CKCR1 ;ckcr1 输入10M,倍频3倍,到30M
; Enable EVA peripheral clocks
SPLK #4, 7018h
; Clear All EV Registers
ZAC
POINT_EV ; EV data page
SACL GPTCON
SACL T1CNT
SACL T1CMP
SACL T1PER
SACL T1CON
SACL T2CNT
SACL T2CMP
SACL T2PER
SACL T2CON
SACL COMCON
SACL ACTR
SACL DBTCON
SACL CMPR1
SACL CMPR2
SACL CMPR3
SACL CAPCON
SACL CAPFIFO
SACL FIFO1
SACL FIFO2
SACL FIFO3
LDP #DP_EV ;指向7400h~7480h区
SPLK #080H,EVIMRA ;使能T1PINT 中断
SPLK #0FFFFh,EVIFRA ;清EVA中断标志
SPLK #0,GPTCON
SPLK #927CH,T1PR ;使定时器每10ms产生一次中断
SPLK #0,T1CNT
SPLK #924Eh,T1CON ;TMODE=10 连续增计数模式,
;TPS=001 预分频为4
;TENABLE=1 定时器计数使能, TCLKS=00;内部时钟
LDP #0
SPLK #0ffH,IMR ;使能中断优先级INT2
SPLK #0FFFFh,IFR
;TECMPR=1 定时器1比较使能, SELT1PR=0
CALL ini_io_port
CLRC INTM ;开总中断
RET
ini_io_port:
;PORT A
;编码器portA: A0---ADCCS A1--ADCA0 A2 ADCR/C A3--ADCCE
;A0到A3均配置为输出口
ldp #0e1h ; 方向配置DIR输入0 输出为1
lacc #0h
sacl OCRA ;配置为GPIO,没有复用功能
lacc #0FF0Fh ;A0--A3为输出,均为输出
sacl PADATDIR
;PORT B
;全配置为输出 B0--ADCD8 B1--ADCD9 B2--ADCD10 B3--ADCD11
lacc #0h
sacl OCRB ;配置为GPIO,没有复用功能
lacc #3000h ;IOPB5,IOPB4配置为输出,IOPB0-IOPB3为输入
sacl PBDATDIR
;PORT C
;PORT C 全部为输入口
;C0--ADCD0 C1--ADCD1 C2--ADCD2 C3--ADCD3 C4--ADCD4
;C5--ADCD5 C6--ADCD6 C7--ADCD7
lacc #0h
sacl OCRC ;配置为GPIO,没有复用功能
lacc #0h
sacl PCDATDIR
;PORT E 全部为输出口
lacc #0ff00h
sacl PEDATDIR
;PORT F 全部为输出口
lacc #0ff00h
sacl PFDATDIR
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -