MPLAB X IDE V4.2 -2:如何使用PIC10F200的TIMER0定时

由于是刚接触PIC的单片机,所以需要仔细学习。

一 我所使用的延时方法:

工作需要用到PIC10F200来定时:

1 最初我用的是简单的delay()来实现

但是这种延时不精确,且由于各个PIC10F200芯片的晶振精度存在差异(即使厂家上电校正后,差异始终存在);我在235个芯片上刷相同的程序延时600ms,实际抽样测得延时时间在584~611ms左右不等。

delay(long i)
   {    
       while(i)
           i--;
   }

2 网友的方法1

程序中加入如下两行,按照网友的方法在程序中添加如下两行,网友的意思是可以精确定时。但我实际运行的结果仍然存在误差,实际运行时间为1.015ms

#define _XTAL_FREQ 4000000

 __delay_ms(1);

 

3 网友的方法2

利用timer0定时

#include<pic.h>

    int mydelay_ms(int y) ;
    long i ;
    int CountOld;
    int CountNew;
void main(void)
{
     __CONFIG(OSC_IntRC&WDT_OFF&CP_OFF&MCLRE_ON); 
      OPTION  = 0x07;      //256倍频
     TRIS        = 0x09;      //GPIO1、GPIO2输出;GPIO0、 GPIO3输入;高四位不可修改,默认为0: 0000,1001
     GP2 = 1;
     GP1 = 0;     //因为 只要MCLR功能开,则内部上拉始终有效;
     mydelay_ms(60);  //延时60*10ms左右
     GP1 = 1;
      mydelay_ms(4);//延时40ms左右
     GP2 =0; 
     while(1)
   {
       GP1=1;
       GP2=0;
   }           
}

int mydelay_ms(int y)  //延时 y*10 ms
{

     for(i =y;i>0;i--)
     {
     TMR0 = 0xD9; //延时10ms
     CountOld  = TMR0;
     CountNew = TMR0;
     while (CountNew  >= CountOld)    
     {
         CountOld = CountNew; 
         CountNew = TMR0;
     }
     }
}
//********************************NOTE*************************************************//
//定时时间计算:
//        N倍频,周期T,定时t,定时器初值X(TIMER0从 X向上计数,最多记到256,因为它是8位的寄存器)
//        N *(256-X)*T =t
//        --> X =256 - t/N*T +2
//        其中N 由OPTION的第三位设置,周期默认为1us
//       之所以X后面还要加2,是因为芯片自身存在2个周期的延时

上面程序是我自己写的,通过Stopwatch观察发现:定时时间为604.369ms 和40.338ms

利用K150将程序烧写到芯片后,测试芯片的实际定时时间为600ms,44ms 以及596ms,42ms。说明同一程序在不同PIC芯片上运行的定时时间确实存在差异,也说明了利用定时器确实能较精确地定时。

二 新发现:

1 MPLAB 不接仿真器和芯片也可以直接仿真;

2 MPLAB X IDE V4.2中Stopwatch的位置:

Window-->Debugging-->Stopwatch

二 遗留问题:

1 自己修改OSCCAL的校正参数有何作用?我在程序中加与不加这句似乎对运行结果没什么影响。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值