基于PIC12XX的精确延时技术方案设计

发布者:Aningmeng最新更新时间:2019-12-31 来源: elecfans关键字:PIC12XX  精确延时  RISC 手机看文章 扫描二维码
随时随地手机看文章

1 PIC12XX的结构

Microchip公司的单片机率先采用RISC(精简指令集计算机)结构的高性能价格比的嵌入式控制器


该PIC单片机具有高速度、低工作电压、低功耗、较大的输入输出直接驱动能力、在线串行编程、芯片的低价位和小体积等特点。为此,Microchip开发了高档、中档、低档不同层次系列多种型号的产品,PIC12XX是一款基于EEPROM的8位微控制器的中档PIC单片机,具有高性能的RISC CPU、特殊单片机功能、低功耗功能、增强型Timer 1外设功能,为单片机的精确延时技术提供可靠保障。其内部结构如图1所示。


1.1 外部结构特点

其引脚具有高灌/拉电流能力,可直接驱动LED。模拟比较器模块带有一个模拟比较器、片上可编程比较器参考电压(CVREF)模块、来自器件输入引脚的可编程输入复用、可外部访问比较器输出。Timer 0带有8位可编程预分频器的8位定时器/计数器;增强的Timer 1带有预分频器的16位定时器/计数器,外部选通输入模式,通过两个引脚可实现在线串行编程。

1.2 内部结构特点

高性能的RISC-CPU仅35条指令,除跳转指令外,所有指令都是单周期,其时钟频率为DC-20 MHz,指令周期为0-200 ns;有较强的中断功能,8级深度硬件堆栈,采用直接、间接和相对寻址方式;可选择内部和外部振荡器,内部为4 MHz高精度振荡器,其出厂时精度已校准为±1% ;能将CPU从休眠模式唤醒和进入省电休眠模式,带低功耗上电复位(POR)、上电延时定时器(PWRT)和振荡器起振定时器(OST)、欠压检测(BOD)和独立振荡器的看门狗定时器;可复用MCLR输入引脚,引脚电平变化可触发中断,具有独立的可编程弱上拉功能、可编程代码保护、高耐久性的闪存/EEPROM存储单元,闪存耐写次数达10 次,EEPROM耐写次数达10 次,闪存/数据EEPROM的数据保持期》40年。


1.3 Timer 1工作特点

Timer 1模块是由两个可读写的8位寄存器(TMR1H和TMR1L)组成的16位定时器/计数器。TMR1寄存器对(TMR1H、TMR1L)从0000h递增到FFFFh后,计满回零到0000h。如果允许Timer 1中断,则溢出时会产生Timer 1中断。该中断可通过置位/清零TMR1IE位来允许/禁止。Timer 1有3种工作模式:同步定时器模式、同步计数器模式、异步计数器模式。其模式由时钟选择位TMR1CS(T1CON)和同步控制位T1SYNC决定,如图3所示。

在定时器模式下,Timer 1在每个指令周期递增。而在计数器模式下,Timer 1在T1CKI引脚上外部时钟的每个上升沿递增。Timer 1可以通过TMR1ON(T1CON)控制位来打开和关闭。Timer 1还有一个内部“复位输入”,可由一个CCP模块产生。Timer 1可以外接晶体振荡器,当Timer 1的振荡器被使能(T1OSCEN位置1)时,T1OSI和T1OSO引脚设定为输入引脚。也就是说,其相应的TRIS值被忽略。


2 精确延时技术

2.1 理论分析

PIC12XX单片机内置晶振的频率为4 MHz,其精度为±1% ,则时钟周期为0.25 us,单指令运行时间为1 us,其误差均为1%us,导致较大的累积误差,故不能直接利用其内部晶振进行精确延时。为此需要采用高精度的外部时钟信号,又由于Timer 1为16位,计满次数为2 次,为便于计算采用频率为32768Hz,即215Hz,精度为5×10-6,以此作为时钟,计满Timer 1为2 s,如果用该晶振作为时钟,半年的最大误差不会超过1 min。图4为外接晶振信号发生电路原理图。


由于PIC12XX指令运行是按内部晶振进行的,为提高单片的延时精度,采用外接晶振信号作为时钟信号,利用单片机的Timer 1进行中断延时,即可实现高精度的任意时间延时。

2.2 延时方法

经过理论分析,采用图5所示的基本电路进行精确延时。由于采用的是32786 Hz时钟,Timer 1为16位,因此采用中断延时,当Timer 1初值置为0000H时,中断一次延时时间为2 s;当Timer 1初值置为8000H时,中断一次延时时间为1 s。对于大于或等于2 s的长延时,采用Timer1置0000H初值;对于大于1 s的长延时,采用Timer1置8000H初值;对于小于1 s的短延时,采用Timer 1置预算初值,中断一次完成所有短延时,这样可大大提高延时的精度。

2.3 延时关键子程序

由于精确延时采用的是外部晶振,则Timer 1接外部晶振的初始化程序采用如下精简程序:

CLRF T1 CON ;Stop Timer1,Internal Clock Source

;T1 oscillator disabled,prescaler = 1:1

CLRF TMR1H ;Clear Timer1 High byte register

CLRF TMR1L ;Clear Timer1 Low byte register

CLRF INTCON ;Disable interrupts

BSF STATUS,RP0 ;Bank1

CLRF PIE1;Disable peripheral interrupts

BCF STATUS,RP0 ;BankO

CLRF PIR1;Clear pe ripheral interrupts Flags

MOVLW 0x32 ;External Clock source with 1:8 prescaler

MOVWF T1CON ;Clock source is synchronized to device

;Timerl is stopped and T1 OSC is disabled

BSF T1CON,TMR1ON ;Timerl starts to increment

;The Timerl interrupt is disabled,do poling on the overflow bit

T1_OVFL_WAIT

BTFSS PIR1,TMR1IF

GOTO T1_OVFL_WAIT

;Timer has overflowed

BCF PIR1,TMR1IF

根据延时方法分析,中断置初值采用如下程序:

load_initial_s

bcf T1CON,TMR1ON

CLRF TMR1H; Clear Low byte,Ensures no rolover into

TMR1H,Value to load into TMR1H

MOVLW 0X80 ;Value to load into TMR1H,Write High byte

MOVWF TMR1H ;

MOVLW 0X00 ;Value to load into TMR1L,Write Low byte

ADDWF TMR1L;one second intrupt one time run 262162 Tcy,i.e.0.262162s。soset tmr1

BSF T1CON,TMR1ON

load_initial_ms

bcf T1CON,TMR1ON

CLRF TMR1L;Clear Low byte,Ensures no rolover into

TMR1H,Value to load into TMR1H

MOVLW 0Xxx;the value is preparative worked out

MOVWF TMR1H;

MOVLW 0Xxx ;the value is preparative worked out

MOVWF TMR1L;

BSF T1CON,TMR1ON

程序初始化后,通过预置初值,加上程序的其他结构。就可以实现PIC的精确延时。


3 结束语

鉴于PIC12XX单片机的功能特点和优点,采用外接晶振和Timer 1中断技术,可实现较精确的任意延时。另外。Microchip公司的PIC系列单片机具有实用、低价、易学、省电、高速和体积小等特点,还具有低功耗睡眠、掉电复位锁定、上电复位电路、看门狗电路等功能,而且外围器件少、占用空间小、成本低,保密技术也十分可靠,可最大限度地保护开发者的利益。因此,在工业控制、仪器仪表、计算机、家电等诸多领域具有极其广泛的应用前景。

关键字:PIC12XX  精确延时  RISC 引用地址:基于PIC12XX的精确延时技术方案设计

上一篇:采用PIC单片机芯片的三相半控整流电路设计
下一篇:基于嵌入式PIC32单片机的目标检测与跟踪系统

推荐阅读最新更新时间:2024-11-13 00:58

IAR Systems RISC-V 功能安全版开发工具支持最新的 SiFive 汽车解决方案
IAR Embedded Workbench for RISC-V 为SiFive 最近推出的汽车 E6-A 和 S7-A 产品提供全面支持 瑞典乌普萨拉 - 2022 年 10 月 17 日 - 嵌入式开发软件和服务的全球领导者 IAR Systems® 持续为 SiFive 的 RISC-V 车用 CPU IP 提供解决方案: IAR Systems 旗下的 IAR Embedded Workbench™ for RISC-V 支持最新的 SiFive 车用 E6-A 和 S7-A 产品系列,以满足信息娱乐、连接和 ADAS 等汽车应用的需求。IAR 的完整开发工具链帮助 OEM 和供应商的嵌入式软件开发人员充分利用 RI
[单片机]
IAR Systems <font color='red'>RISC</font>-V 功能安全版开发工具支持最新的 SiFive 汽车解决方案
C51全局初始化及精确延时程序,51单片机精确延时程序
/********************************************************************************************************* * Initialization Program * QiZhao,2007 * All Rights Reserved * File : initial.h * By : QiZhao * Contact :zq1987731@163.com * * Version : V2.1 γ * Corrector : QiZhao * Date : 2008.2.1 (Last modified) * * Remarks :
[单片机]
利用STM32的SysTick设计精确延时函数
在项目中使用I2C接口传感器时要求有比较精确的延时,在网上搜了下,如果不想用中断SysTick定时器可以做到,找到如下资料: 主要仿照原子的《STM32不完全手册》。SYSTICK 的时钟固定为HCLK 时钟的1/8,在这里我们选用内部时钟源72M,所以SYSTICK的时钟为9M,即SYSTICK定时器以9M的频率递减。SysTick 主要包含CTRL、LOAD、VAL、CALIB 等4 个寄存器, SysTick- CTRL 位段 名称 类型 复位值 描述 16 COUNTFLAG R 0 如果在上次读本寄存器后systick已为0,则该位为1,若 读该位自动清零 2 CLKSOURCE RW
[单片机]
C51全局初始化及精确延时程序
/********************************************************************************************************* * Initialization Program * QiZhao,2007 * All Rights Reserved * File : initial.h * By : QiZhao * Contact : zq1987731@163.com * * Version : V2.
[单片机]
stm32使用systick精确延时
利用系统滴答定时器来实现精确延时,需要以下五步: 1、设置滴答定时器的时钟,通过设置其控制寄存器,选择外部时钟,即为系统时钟的八分之一,若系统时钟为72M,则滴答定时器时钟为9M。即定时一秒需要9M个时钟周期。 2、设置滴答定时器的重装载寄存器的数值,即需要延时的时钟周期数。如:若需要延时20微秒,则重装载值为20*9.若要延时20毫秒,则设置重装载值为20*9000. 3、清空滴答定时器当前值寄存器的值,使之为零,以便使能计数时能够从设定值开始倒数计时。 4、设置滴答定时器的控制寄存器,开始倒计数。 5、查询滴答定时器的状态位,定时时间到,关闭定时器,清空定时器当前值。 void delay_init(u8 SYSCLK) {
[单片机]
Milk-V Mars 单板计算机发布:配备 1.5GHz 四核 RISC-V 芯片
6 月 6 日消息,Milk-V Mars 是一款信用卡大小的单板计算机,看起来很像树莓派 Raspberry Pi。但是,这款小型 PC 不是采用基于 ARM 的处理器,而是采用基于 RISC-V 架构的 1.5GHz StarFive JH7110 四核处理器。 Milk-V Mars 单板计算机尺寸为 85 毫米 x 56 毫米(3.3 英寸 x 2.2 英寸),支持 1GB 至 8GB 的 LPDDR4 内存,还有一个可用于闪存存储的 eMMC 插槽,以及一个用于移动存储的 microSD 插槽。 Milk-V Mars 单板计算机端口和连接器如下: 1 个 HDMI 1 个 MIPI-DSI(2 通道) 1
[嵌入式]
Milk-V Mars 单板计算机发布:配备 1.5GHz 四核 <font color='red'>RISC</font>-V 芯片
英特尔放弃RISC-V?官方回应:并不!
在英特尔公布 2022 年第四季度业绩大幅下滑的同时,也在官方宣布暂停其RISC-V 探路者(Pathfinder)计划,这引发了人们对其对 RISC-V 生态系统其他广泛投资的承诺的质疑。 针对业界这一猜想,英特尔近日发布特别公告,宣布如下:“这一决定(暂停Pathfinder)对英特尔代工服务(IFS)以及Horse Creek开发平台没有影响。IFS致力于为基于X86、Arm和RISC-V三大主要指令集架构的芯片提供支持。探路者计划是来自英特尔一个小组的创新项目。从该项目中获得的经验将有助于巩固我们对推进RISC-V规范并打造一个强健的RISC-V软件生态系统的承诺。” 2021年3月,英特尔CEO基辛格公布了英特尔
[半导体设计/制造]
MSP430精确延时_delay_cycles
IAR 软件430的编译器里面我们可以利用它内部的延时子程序来实现我们想要的高精度软件延时,方法如下: (1):将以下这段代码复制到你的.C源文件中。 #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) (2):修改 在 #define CPU_F ((dou
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved