单片机振荡器时钟

本文以HT系列的BH66F2260单片机为讲解对象。该单片机为8位单片机,有四个系统振荡器,包括两个高速振荡器和两个低速振荡器。而振荡器就是单片机的系统时钟源。

振荡器类型

类型名称频率引脚
外部高速晶振HXT400kHz~16MHzOSC1/OSC2
内部高速 RCHIRC4/8/12MHz
外部低速晶振LXT32.768kHzXT1/XT2
内部低速RCLIRC32kHz

系统时钟配置选项(学会看DATA SHEET很重要)

图1系统时钟配置选项
使用高速或低速振荡器作为系统时钟的选择是通过设置 SCC 寄存器中的 CKS2~CKS0 位决定的,系统时钟可动态选择。
低速振荡器的实际时钟源由 SCC 寄存器的 FSS 位选择,高速振荡器的实际时钟源由 SCC 寄存器的 FHS 位选择。低速或高速系统时钟频率由 SCC 寄存器的CKS2~CKS0 位决定的。
请注意,两个振荡器必须做出选择,即一个高速和一个低速振荡器。

指令周期和时钟周期

指令周期与时钟周期的区別

(1)时钟周期也称为振荡周期,定义为时钟脉冲的倒数,是MCU中的最基本的时间单位。
(2)指令周期定义为执行一条指令所需要的时间

常见的IC均为4T架构,即1个指令周期是4个时钟周期
假定IC主频fSYS为HIRC 8MHz,则
时钟周期 = 1T = 1÷fSYS=1÷(8MHz)= 0.125μs
指令周期 = 4T = 4×0.125us = 0.5μs
在这里插入图片描述

振荡器的配置

在这里插入图片描述
在这里希望大家能够用汇编脚踏实地的一步步把寄存器的配置弄清楚同时学会看结构框图。下面几种时钟的配置都需要结合上面的结构框图进行理解。

HIRC和LIRC模式配置

汇编代码:

;=========HIRC模式===================
;       CLR     HIRC1
;       CLR     HIRC0        ;4M
;======;===========================
;       CLR     HIRC1
;       SET     HIRC0        ;8M
;;;==================================
;       SET     HIRC1
;       CLR     HIRC0        ;12M
;                
;       CLR      CKS2
;	    CLR      CKS1
;	    CLR      CKS0        ;F=F

单片机在默认情况下的高速振荡器选择为内部高速RC,因此不需要进行使能操作。

;===============LIRC模式=============
       SET     CKS2
       SET     CKS1
       SET     CKS0
       CLR     HIRCEN

单片机在默认情况下的低速振荡器选择为内部低速RC,但是当使用低速作为单片机系统的时钟时(即fsub=fsys)需要将高速失能即添加代码句“ CLR HIRCEN”。

HXT和LXT模式配置

汇编代码

;;=======HXT模式============   
;        MOV      A,11000000B   
;        LMOV      PAS0,A        ;对PAS0寄存器操作将引脚配置为OSC1
;        
;        MOV      A,00000011B    ;对PAS0寄存器操作将引脚配置为OSC2
;        LMOV      PAS1,A  
; 
;	     CLR     HXTM             ;晶振频率4.8MHZ OSC <10MHZ 
;	     SET     HXTM             ;晶振频率 OSC >10MHZ       	
;	
;	     SET	HXTEN             ;HXT振荡器使能控制位 
;	     CLR	WDT
;	     SNZ	HXTF              ;HXT振荡器稳定标志位
;	     JMP	$-2
;	     SET	FHS	              ;高频时钟选择位 
;	     CLR	HIRCEN	          ;HIRC失能
;	
;	     CLR      CKS2
;	     CLR      CKS1
;	     CLR      CKS0            ;F=F

在这里插入图片描述
在这里插入图片描述

;==========LXT模式===================
;   MOV     A,00110011B	 ; PA3.4設置為XT2,XT1 	
;	LMOV    PAS0,A       ;LMOV间接寻址
;	MOV     A,00000000B
;	LMOV    PAS1,A
;	SET	LXTEN            ;先使能后稳定
;	CLR	WDT
;	SNZ	LXTF             ;LXT振荡器稳定标志位
;	JMP	$-2
;        
;	SET	FSS             ;等时钟频率稳定再打开外部时钟
;		
;	SET	CKS2
;	SET	CKS1
;	SET	CKS0	

振荡器频率验证

t_toggle_4096: 
clr pac.7				;设置为输出
set pa.7
t_ toggle_4096_loop:
set pa.71条指令的时间
delay(4095) 			;delay 4095条指令的时间
clr Pa.71条指令的时间
delay(4093) 			;delay 4093条指令的时间
jmp t_idd_4096_loop     ;2条指令的时间

NOTE:
(1)指令需完全执行完后才会有对应的动作
(2)观察PA.7的波形可知,其波形为方波,周期为8192条指令时间

频率计算

从上面的代码可以看出 PA.7输出波形为一个duty为50%的方波,high/low width均为4096条指令时间,即PA.7一个周期的时间为8192指令时间,故PA.7方波的频率
f =1÷T = 1÷(8192指令时间) = 1÷(8192×4×(1÷fSYS))
→ f = 1÷(32768÷fSYS)
→ fSYS = 32768×f
f可通过示波器直接观察,从而推算出fSYS

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修才生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值