📄 c54init.asm
字号:
************************** c54init.asm ********************
.mmregs
.include c54.inc
.def c54init
.sect "progsys"
c54init:
*SWWSR :SoftWare Wait-State Register Address 0028h
* -------------------------------------------------------------------------
* | 15 | 14 12 | 11 9 | 8 6 | 5 3 | 2 0 |
* -------------------------------------------------------------------------
* | XPA | I/O | Data | Data | Program | Program |
* -------------------------------------------------------------------------
STM #0x7208,SWWSR ;0 111 001 000 001 000
*I/O空间为7个等待周期
*数据空间8000h-FFFFh为1个等待周期
*数据空间0000h-7FFFh为0个等待周期
*程序空间8000h-FFFFh为1个等待周期
*程序空间0000h-7FFFh为0个等待周期
*SWCR :SoftWare Wait-State Conctrol Register Address 002Bh
* -------------------------------------------------------------------------
* | | 0 |
* -------------------------------------------------------------------------
* | | SWSM |
* -------------------------------------------------------------------------
STM #0,SWCR
*等待周期不变
*(STM #1,SWCR 等待周期加倍)
*
*
*BSCR :Programabel bank-switching wait states Address 0029h
* -------------------------------------------------------------------------
* | 15 12 | 11 | 10 3 | 2 | 1 | 0 |
* -------------------------------------------------------------------------
* | BNKCMP | PS–DS | Reserved | HBH | BH | EXIO |
* -------------------------------------------------------------------------
STM #0xF800,BSCR ;1111 1000 0000 0000
*允许修改PMST中的值
*在连续的读程序或数据空间时插入1个额外的等待周期
*外部存储器的空白区间为4k
*
*
*ST0
* ------------------------------------------------------------------------
* | 15 13 | 12 | 11 | 10 | 9 | 8 0 |
* ------------------------------------------------------------------------
* | ARP | TC | C | OVA | OVB | DP |
* ------------------------------------------------------------------------
STM #0,ST0
*数据页指针指向0
*
*
*ST1
* ------------------------------------------------------------------------
* | 15 | 14 | 13 | 12 | 11 |10 | 9 | 8 | 7 | 6 | 5 |4 0 |
* ------------------------------------------------------------------------
* |BRAF| CPL | XF | HM | INTM | 0 | OVM | SXM | C16 | FRCT | CMPT | ASM |
* ------------------------------------------------------------------------
STM #0x2b00,ST1 ;0010 1011 0000 0000
*INTM=1 将全局中断禁止
*SXM=1 数据进入ALU之前进行符号位扩展
*OVM=1 益处控制位(参考ST1资料)
*
*
*PMST
* ------------------------------------------------------------------------
* | 15 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
* ------------------------------------------------------------------------
* | IPTR | MP/MC | OVLY | AVIS | DROM | CLKOFF | SMUL|SST |
* ------------------------------------------------------------------------
* |0020 1111 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
* ------------------------------------------------------------------------
* 0011 11111 1 1 0 0 1 0 0
STM #0x2fe4,PMST ;0010 1111 1110 0100
*将中断向量表映射到 2f80
*MP/MC=0 芯片工作在微计算机方式,可以寻址片内程序存储器
*
*
*IFR or IMR
* --------------------------------------------------------------------------------------------
* |15 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
* ---------------------------------------------------------------------------------------------
* |RES |DMAC5|DMAC4|BXINT1|BRINT1|HPINT|INT3|TINT1|DMAC0|BXINT0|BRINT0|TINT0|INT2|INT1|INT0|
* | | | |DMAC3 |DMAC2 | | |DMAC1| | | | | | | |
* --------------------------------------------------------------------------------------------
* 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0
STM #0xFFFF,IFR
*清除挂起的中断
STM #0x0000,IMR ;关闭所有中断
*打开定时器0的中断。
*
*
*CLKMD
* ------------------------------------------------------------------------
* | 15 12 | 11 | 10 3 | 2 | 1 | 0 |
* ------------------------------------------------------------------------
* | PLLMUL | PLLDIV | PLLCOUNT | PLLON/OFF | PLLNDIV | PLLSTATUS |
* ------------------------------------------------------------------------
STM #0,CLKMD
clkcon: LDM CLKMD,A
AND #0x01,A
BC clkcon,ANEQ
STM #0x43ff,CLKMD ;0100 0011 1111 1111
*利用软件对CLKMD进行加载(参考教材:P250)
*PLL=4 MUL=5 100Mhz; PLL=3 MUL=4 80Mhz
*
*
*TCR
* ------------------------------------------------------------------------
* | 15 12 | 11 | 10 | 9 6 | 5 | 4 | 3 0 |
* ------------------------------------------------------------------------
* | Revd | soft | free | PSC | TRB | TSS | TDDR |
* ------------------------------------------------------------------------
STM #0x0010,TCR1 ;timer1 stop
STM #0x0010,TCR ;TSS=1 Timer stop
STM #12800,PRD
STM #0x0020,TCR
*定时中断周期=CLKOUT*(TDDR+1)*(PRD+1)
RSBX INTM
*将全局中断使能
NOP
NOP
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -