• PIC16F877A的TIME0学习


    计算溢出时间根据晶振频率4Mhz,TMR0=6,PSA2~PSA0 = 1:4.
    因为好像外部晶振在给PIC的时候多分了一次1:4。所以PSA2~PSA0取1:4刚好
    数完250次的时间=(1/4Mhz/4)*4*250 = 1ms,每1ms触发一次T0IF中断。
    1. // FOSC=16MHz Fcy=4Mhz Tcy=1/Fcy
    2. #include <pic.h>
    3. __CONFIG(0XFF32);
    4. unsigned char data=0;//定义变数data并赋值为0

    5. main()
    6. {
    7.     unsigned int i=0;    //定义i为无符号整形并赋值为0
    8.        T0CS=0;             //定时模式
    9.        PSA=0;             //设定为用TIMER0,而不是WDT
    10.        PS2=0;                 //1:16 预除4倍,数完250次时间=(1/4Mhz)*250*16=1ms
    11.        PS1=0;                //PS2,PS1,PS0为除频设置
    12.     PS0=1;
    13.        T0IF=0;                //设置溢位初始值为0
    14.        TMR0=6;             //预设TMR0=6,运行250次会进位
    15.     TRISD=0;            //初始化D0--D7设置为输出
    16.     PORTD=0;             //输出低电频,8个LED全灭掉
    17.     data=0b00000001;    //data赋值为1
    18.        while(1)         //主回圈必须是闭环
    19.     {
    20.           if(T0IF==1)//如果溢位为1则执行if下语句
    21.         {
    22.                T0IF=0; //if成立将溢位再次置0
    23.                i++; //i=i+1
    24.             if(i==1000) //i=1000时执行下面语句
    25.             {
    26.                 i=0; //i重新置0,进行下一轮计时
    27.                 data=data<<1; //data左移1位
    28.                 if(data==0) //如果data=0时执行下面语句
    29.                 data=0b00000001; //data重新置为1
    30.                 PORTD=data; //D埠输出资料为data
    31.                 TMR0=6;//使TMR0等于6
    32.             }
    33.          }
    34.      }
    35. }

    无欲速,无见小利。欲速,则不达;见小利,则大事不成。
  • 相关阅读:
    Oracle中有大量的sniped会话
    Error 1130: Host '127.0.0.1' is not allowed to connect to this MySQL server
    汉字转换为拼音以及缩写(javascript)
    高效率随机删除数据(不重复)
    vs2010 舒服背景 优雅字体 配置
    mvc中的ViewData用到webfrom中去
    jquery ajax return值 没有返回 的解决方法
    zShowBox (图片放大展示jquery版 兼容性好)
    动感效果的TAB选项卡 jquery 插件
    loading 加载提示······
  • 原文地址:https://www.cnblogs.com/ch122633/p/7363234.html
Copyright © 2020-2023  润新知