⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcuinit.s

📁 GP32启动程序
💻 S
字号:
	.module MCUinit.c
	.area text
	.dbfile MCUinit.c
	.dbfunc e MCUinit _MCUinit fV
_MCUinit::
	.dbline -1
	.dbline 16
; //MCUinit:芯片初始化-------------------------------------------------------*
; //功能:系统初始化设置                                                      *
; //    (1)由外部晶振f,通过本程序设置内部总线频率fBUS                        *
; //    (2)确定是否禁止看门狗(COP)                                           *
; //参数:无                                                                  *
; //返回:无                                                                  *
; //说明:该程序与芯片具体型号有关                                            *
; //    (1)外部晶振f = 32.768kHz,使用内部PLL(锁相环),产生内部总线时钟频率    *
; //       fBUS = 2.4576MHz                                                  *
; //    (2)禁止COP模块                                                       *
; //-------------------------------------------------------------------------*
; 
; #include "GP32C.h"    //映像寄存器名定义
; 
; void MCUinit(void)
; {
	.dbline 19
;     //1.设置CONFIG2,CONFIG1
;     //1.1 设置CONFIG2 
;     CONFIG2 = 0b00000001;
	lda #1
	sta 0x1e
	.dbline 24
;             //        ||_SCIBDSRC   = 1内部总线时钟用作SCI时钟
;             //        |__OSCSTOPENB = 0 在stop模式下禁止振荡器工作
; 
;     //1.2 设置CONFIG1
;     CONFIG1 = 0b00111101;
	lda #61
	sta 0x1f
	.dbline 35
;               //||||||||_COPD    = 1 禁止COP模块
;               //|||||||__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溢出范围使用长的时间
; 
;     //2.PLL编程
;     PCTL  = 0x00;          //(1)禁止PLL:清零PLL控制寄存器PCTL
	clr 0x36
	.dbline 36
;     PCTL  = 0x01;          //(2)将P,E写入PTCL,置VCO的参考频率为2
	lda #1
	sta 0x36
	.dbline 37
;     PMSH  = 0x01;          //(3)将N写入PMSH,PMSL,置VCO的倍频因子为$12C
	lda #1
	sta 0x38
	.dbline 38
;     PMSL  = 0x2C;
	lda #44
	sta 0x39
	.dbline 39
;     PMRS  = 0b10000000;    //(4)将L写入PMRS,置VCO的输出频率范围系数为$80
	lda #-128
	sta 0x3a
	.dbline 40
;     PRDS  = 0x01;          //(5)将R写入PRDS
	lda #1
	sta 0x3b
	.dbline 41
;     PCTL |= (1 << 5);      //(6)置PCTL.PLLON = 1,启动PLL电路
	bset #5,0x36
	.dbline 42
;     PBWC |= (1 << 7);      //(7)PBWC自动带宽控制位 = 1,选择自动控制方式
	bset #7,0x37
	.dbline 43
;     PCTL |= (1 << 4);      //(8)PCTL.BCS = 1,选择PLL电路为时钟源
	bset #4,0x36
	.dbline -2
L1:
	.dbline 0 ; func end
	rts
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -