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