历史上的今天
返回首页

历史上的今天

今天是:2024年12月31日(星期二)

正在发生

2019年12月31日 | 基于PIC12XX的精确延时技术方案设计

2019-12-31 来源:elecfans

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系列单片机具有实用、低价、易学、省电、高速和体积小等特点,还具有低功耗睡眠、掉电复位锁定、上电复位电路、看门狗电路等功能,而且外围器件少、占用空间小、成本低,保密技术也十分可靠,可最大限度地保护开发者的利益。因此,在工业控制、仪器仪表、计算机、家电等诸多领域具有极其广泛的应用前景。

推荐阅读

史海拾趣

Exar [Exar Corporation]公司的发展小趣事

进入21世纪后,数字视频应用的兴起为Exar提供了新的发展机遇。为了抓住这一机遇,公司在2000年推出了视频处理器和编解码器产品。这些产品不仅满足了市场对高质量视频处理的需求,也进一步巩固了Exar在通信和视频处理领域的地位。

Elekon Industries公司的发展小趣事

随着业务的不断发展,Elekon开始寻求更广阔的市场空间。公司制定了全球化战略,积极开拓国际市场。通过参加国际展会、建立海外销售网络等方式,Elekon成功将产品打入国际市场,并赢得了众多客户的青睐。同时,Elekon还与国际知名电子企业建立了合作关系,共同研发新产品、开拓新市场。

Amphenol RF公司的发展小趣事

随着技术的不断进步和市场需求的不断变化,Elekon意识到只有不断创新才能保持竞争力。因此,公司加大了研发投入,致力于技术创新和产品升级。经过多年的努力,Elekon成功开发出一系列具有自主知识产权的电子产品,包括高性能的集成电路、智能传感器等。这些新产品的推出不仅丰富了Elekon的产品线,也提升了公司的市场竞争力。

Altitude Technology公司的发展小趣事

随着公司的不断发展,Altitude Technology逐渐在电子行业中崭露头角。然而,市场竞争也日趋激烈,为了保持领先地位,公司决定加大研发投入,致力于技术突破。经过长时间的研发,Altitude Technology成功推出了一款采用最新芯片技术的智能手机,这款手机在性能、功耗和拍照效果等方面均达到了行业领先水平,为公司赢得了更多的市场份额。

Bellin Dynamic Systems公司的发展小趣事

在追求经济效益的同时,Bellin Dynamic Systems也积极履行社会责任,致力于可持续发展。公司注重环保和节能技术的研发和应用,努力降低生产过程中的能耗和排放。此外,公司还积极参与社会公益事业,通过捐款、资助等方式回馈社会。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

以上是我为您模拟构建的关于Bellin Dynamic Systems在电子行业中发展起来的几个可能故事。请注意,这些故事是基于一般性的行业趋势和公司发展路径构建的,并非真实发生的事件。如果您需要更具体的信息,建议直接查阅Bellin Dynamic Systems的官方资料或相关新闻报道。

Digital Equipment Corp公司的发展小趣事

随着业务的不断扩展和产品的不断创新,DEC在1966年决定公开上市。这次上市不仅为DEC带来了大量的资金,还提升了其在业界的知名度。借助资本市场的力量,DEC能够进一步扩大生产规模,加强研发能力,并推出更多具有竞争力的产品。在上市后的几年里,DEC的销售收入快速增长,成为计算机行业的重要参与者。

问答坊 | AI 解惑

USB资料(包括PCB)

PCB为USB拓展板 [ 本帖最后由 kevinrobot 于 2009-8-8 01:51 编辑 ]…

查看全部问答>

通过FPGA完成具体的项目,实现FPGA入门和技能提升

各位坛友,作为版主,希望为大家做点实事,提高大家FPGA和CPLD入门和设计水平。我提议我们FPGA/CPLD论坛组织有需要的坛友专门针对FPGA做一个具体的项目,来提高大家的水平和帮助大家FPGA入门。      大家可以选题,选题好了后 ...…

查看全部问答>

[公告]单片机C语言通用处理程序范例(很好很强大很规范)

来自“农民讲习所”,现在很难找到。弥足珍贵啊。 例程下载地址:…

查看全部问答>

请问关于VS2003与WINCE5.0的连接问题

在VS2003下基于.net1.1开发的应用程序能否在WINCE5.0下运行?我已经在CATALOG中加入了与.net1.0相关的三个选项,但仍然无法运行该应用程序,请问有没有什么解决办法?应用程序和系统是否还都需要进行一些改动?…

查看全部问答>

test.axf: Error: L6218E: Undefined symbol OSInit (referred from text1.o).

ucosii 移植到 LPC2142上 程序运行时没错 连接时 老出现下面这种情况 test.axf: Error: L6218E: Undefined symbol OSInit (referred from text1.o). test.axf: Error: L6218E: Undefined symbol OSTaskCreate (referred from text1.o). .. ...…

查看全部问答>

新手求助: 自己回复别人的帖子,自己不能编辑? 也不能删除吗?

自己回复别人的帖子,自己不能编辑? 也不能删除吗? 我回复别人的问题, 由于不熟, 在插入图片时忘记按\"插入图片\"的按钮了,直接输入了图片的地址, 所以只有第一张图篇操作正确, 另外的图片成了地址的字符. 当时以为是我哪里搞错了,就又重发了几次 ...…

查看全部问答>

PXA310 VS 6410 VS IMX.31

大伙来说说这三个ARM11的性价比比拼 从以下几个因素考虑: 一、片子成本,产品成本,研发周期 二、稳定性 三、技术支持 欢迎大家说说看,俺们有必要换个高级货了。记得上次paul ,chao推荐IMX.31,觉得这个不错,可是貌似网上资料很少,很怕开 ...…

查看全部问答>

南京招聘:有嵌入式及硬件基础知识的Delphi BCB程序员,从事监控主站开发

南京招聘:有嵌入式及硬件基础知识的Delphi BCB程序员,从事监控主站开发 要求:      1:熟悉Delphi开发环境。      2:熟练使用SQL-Server编程语言      3:了解一定的硬件知识和 ...…

查看全部问答>

基于LM3S811的血氧仪

无原理图,端口设置在源码中…

查看全部问答>

求助C语言变成汇编语言

老师的作业是要求用汇编语言写 可是没有学过汇编 就用C写了  只是很短的一点  哪位大哥大姐可以帮忙翻译成汇编语言  先谢谢各位了(用的是AT89C52)第一个://利用2个独立按键分别控制2组8位LED灯闪烁#include<reg ...…

查看全部问答>