📄 setup.s
字号:
.module setup.c
.area text
__HC08Setup::
; /*_HC08Setup:GP32系统初始化子程序----------------------*
; *功能:系统初始化设置:设置CONFIG1和CONFIG2寄存器 *
; CGM的寄存器设置:由外部晶振f=32.768kHz,产生内部 *
; 总线时钟2.4576MHz *
; *参数:无 *
; *返回:无 *
; *-----------------------------------------------------*/
; #include "GP32C.h" //映像寄存器地址头文件
; void _HC08Setup(void)
; {
; //初始化CONFIG2
; CONFIG2=0b00000001; //SCIBDSRC=1内部总线时钟用作SCI
lda #1
sta 0x1e
; //时钟;OSCSTOPENB=0在stop模式下
; //禁止振荡器工作
; //初始化CONFIG1
; CONFIG1=0b00111101; //COPD=1 禁止COP模块
lda #61
sta 0x1f
; //STOP=0 禁止STOP指令
; //SSREC=1 32个CGMXCLK周期退出
; //STOP模式
; //LVI5OR3=1 LVI工作在5V
; //LVIPWRD=1 禁止LVI模块电源
; //LVIRSTD=1 允许LVI复位信号
; //LVISTOP=0 在stop模式下禁止LVI
; //COPRS=0 COP溢出范围使用长的时间
; PCTL=0x00; //①禁止PLL:清零PLL控制寄存器PCTL
clr 0x36
; PCTL=0x01; //②将P、E写入PTCL,置VCO的参考频率
lda #1
sta 0x36
; // 为2
; PMSH=0x01; //③将N写入PMSH、PMSL,置VCO的倍
lda #1
sta 0x38
; // 频因子为$12C
; PMSL=0x2C;
lda #44
sta 0x39
; PMRS=0b10000000; //④将L写入PMRS,置VCO的输出频率范
lda #-128
sta 0x3a
; // 围系数为$80
; PRDS=0x01; //⑤将R写入PRDS
lda #1
sta 0x3b
; PCTL|=(1<<5); //⑥置PCTL.PLLON=1,启动PLL电路
bset #5,0x36
; PBWC|=(1<<7); //⑦PBWC自动带宽控制位=1,选择自动
bset #7,0x37
; // 控制方式
; PCTL|=(1<<4); //⑧PCTL.BCS=1,选择PLL电路为时钟源
bset #4,0x36
L1:
.dbline 0 ; func end
rts
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -