upD79F8513A(NEC)或upD78F0511A(NEC)之初始化外部8M晶振做系统时钟
2017-09-14 18:59
387 查看
本篇博文最后修改时间:2017年09月14日 19:04。
一、简介
本文以upD79F8513A(NEC)或upD78F0511A(NEC)编程为例,介绍upD79F8513A(NEC)或upD78F0511A(NEC)初始化外部8M晶振做系统时钟。
二、实验平台
电脑平台:Windows7 64位旗舰
编译软件:PM+ V6.30
硬件平台:upD79F8513A(NEC)或upD78F0511A(NEC)
三、版权声明
博主:_懵懂
声明:此博客仅供参考不做任何商业用途,最终解释权归原博主所有。
原文地址:http://blog.csdn.NET/qq_18842031
QQ:951795235
E-mail :951795235@qq.com
懵懂之MCU交流群:136384801
四、实验前提
1、在进行本文步骤前,请先安装PM+ V6.30版本;准备好upD79F8513A(NEC)或upD78F0511A(NEC)硬件平台。
五、基础知识
暂无
六、源码地址
暂无
七、关联文章
链接:暂无
八、实验内容
1.系统时钟初始化为外部8M
3.编写主函数
/*********************************************************************
* pragma
**********************************************************************/
#pragma SFR /*程序中可以直接使用数据手册上描述的特殊寄存器名*/
#pragma DI /*关全局中断*/
#pragma EI /*开全局中断*/
#pragma NOP /*允许嵌入NOP指令*/
#pragma ASM /*允许嵌入汇编指令*/
#pragma STOP /*允许嵌入STOP指令*/
#pragma HALT /*允许嵌入HALT指令*/
//#include<> /*这里包含文件*/
__interrupt void INT_TM50(void); //这句放在main函数前面
#define W5NOP NOP();NOP();NOP();NOP();NOP() /*5个空指令*/
void main(void)
{
DI();
NOP();
/*嵌入汇编是清空内存*/
/*
注意事项:
1. #asm #endasm __asm 只能小写
2. 汇编程序段中的标号必须以"?L"开头
3. 调用C程序中的子程序,必须在子程序名前增加 "_" ;CALL !_CPU_init
*/
#asm
;清RAM
MOVW HL ,#0FB00H
?LRAM_CLEAR:
MOV A, #0
MOV [HL],A
INCW HL
MOVW AX,HL
CMPW AX,#0FEDFH
BC $?LRAM_CLEAR
#endasm
/*嵌入汇编*/
__asm(" MOV A,#0 ");
EI();
Init_OST(); //初始化时钟
while(1)
{
WDTE = 0xAC;
}
}
一、简介
本文以upD79F8513A(NEC)或upD78F0511A(NEC)编程为例,介绍upD79F8513A(NEC)或upD78F0511A(NEC)初始化外部8M晶振做系统时钟。
二、实验平台
电脑平台:Windows7 64位旗舰
编译软件:PM+ V6.30
硬件平台:upD79F8513A(NEC)或upD78F0511A(NEC)
三、版权声明
博主:_懵懂
声明:此博客仅供参考不做任何商业用途,最终解释权归原博主所有。
原文地址:http://blog.csdn.NET/qq_18842031
QQ:951795235
E-mail :951795235@qq.com
懵懂之MCU交流群:136384801
四、实验前提
1、在进行本文步骤前,请先安装PM+ V6.30版本;准备好upD79F8513A(NEC)或upD78F0511A(NEC)硬件平台。
五、基础知识
暂无
六、源码地址
暂无
七、关联文章
链接:暂无
八、实验内容
1.系统时钟初始化为外部8M
void Init_OST(void) { uint8 ucR_StabSet, ucR_StabWait; IMS = 0x04; //0511--04 8513--C8 0537--CC 内部存储器容量切换寄存器的设置 IXS = 0x00; //内部扩展 RAM 容量切换寄存器 (IXS) 的设置 OSCCTL = 0x40; /* X1/X2 input mode 选择晶振模式外部晶振 X1*/ MOC &= ~0x80; /*允许使用来自 EXCLK 引脚的外部时钟*/ ucR_StabSet = 0x1F; /*振荡稳定时间计数器的状态*/ do { ucR_StabWait = OSTC; ucR_StabWait &= ucR_StabSet; } while(ucR_StabWait != ucR_StabSet); /*等待时钟稳定*/ OSTS = 0x05; /*振荡稳定时间选择*/ PCC = 0; /* 处理器时钟控制 选择系统时钟,无分频*/ W5NOP; W5NOP; W5NOP; W5NOP; /* wait 5us */ MCM |= 0x05; /* X1 operate for CPU 主时钟模式 高速系统时钟 */ RCM |= 0x01; /*内部高速振荡器停止*/ }
3.编写主函数
/*********************************************************************
* pragma
**********************************************************************/
#pragma SFR /*程序中可以直接使用数据手册上描述的特殊寄存器名*/
#pragma DI /*关全局中断*/
#pragma EI /*开全局中断*/
#pragma NOP /*允许嵌入NOP指令*/
#pragma ASM /*允许嵌入汇编指令*/
#pragma STOP /*允许嵌入STOP指令*/
#pragma HALT /*允许嵌入HALT指令*/
//#include<> /*这里包含文件*/
__interrupt void INT_TM50(void); //这句放在main函数前面
#define W5NOP NOP();NOP();NOP();NOP();NOP() /*5个空指令*/
void main(void)
{
DI();
NOP();
/*嵌入汇编是清空内存*/
/*
注意事项:
1. #asm #endasm __asm 只能小写
2. 汇编程序段中的标号必须以"?L"开头
3. 调用C程序中的子程序,必须在子程序名前增加 "_" ;CALL !_CPU_init
*/
#asm
;清RAM
MOVW HL ,#0FB00H
?LRAM_CLEAR:
MOV A, #0
MOV [HL],A
INCW HL
MOVW AX,HL
CMPW AX,#0FEDFH
BC $?LRAM_CLEAR
#endasm
/*嵌入汇编*/
__asm(" MOV A,#0 ");
EI();
Init_OST(); //初始化时钟
while(1)
{
WDTE = 0xAC;
}
}
相关文章推荐
- 【STM32F103攻城笔记】外部晶振HSE倍频设置系统时钟
- M4修改外部晶振8M和25M晶振的方法
- 菜鸟stm32学习笔记(1)系统时钟初始化函数
- 18.SoC时钟系统概述及初始化
- upD79F8513A(NEC)或upD78F0511A(NEC)之AD采样
- STM32值系统时钟初始化程序设计
- STM32F107(互联网型)外部晶振用25MHZ 而STM32F103却用8MHZ的原因及其时钟来源分析
- LPC1788系统时钟初始化
- STM32外部晶振8M更改为25M
- S5PV210初始化系统时钟
- A9系统时钟用外部
- 单片机系统时钟与实时时钟有什么区别?为什么有的系统时钟晶振使用12M,而实时时钟使用32.768K
- STM32系统时钟设置,采用外部有源晶振相关配置问题
- STM32F107(互联网型)外部晶振用25MHZ 而STM32F103却用8MHZ的原因及其时钟来源分析
- STM32F107(互联网型)外部晶振用25MHZ 而STM32F103却用8MHZ的原因及其时钟来源分析
- STM32F30X时钟初始化为HSI 64Mhz,并使用PLLCLK作为系统时钟
- STM32 SYSTick系统时钟初始化
- 中颖系统时钟初始化
- upD79F8513A(NEC)或upD78F0511A(NEC)之定时器TM50
- STM32F107(互联网型)外部晶振用25MHZ 而STM32F103却用8MHZ的原因及其时钟来源分析