历史上的今天

今天是:2025年03月11日(星期二)

正在发生

2020年03月11日 | PIC18f2580下TMR0定时器初值设置方法

发布者:二进制游侠 来源: eefocus关键字:PIC18f2580  TMR0  定时器  初值设置 手机看文章 扫描二维码
随时随地手机看文章

机器频率Fosc:单片机的振荡频率,如果用外置的晶振电路,晶振上会有频率标志,常用的有4MHz、8MHz、20MHz等,本例使用的是4MHz。


机器周期Tosc:机器频率的倒数,本例中Fosc=4MHz,Tosc=1/4=0.25us


指令周期:运行一条指令所需的时间,等于4个机器周期,本例中机器周期为0.25us,则指令周期为1us。


【注】PIC系列大部分为单指令周期,就是说一条指令运行只需要一个指令周期的时间。但有有几条指令,允许需要两个指令周期的时间;如RETURN、GOTO等;而有些指令需要1~2个指令周期,需要具体分析,如DECFSZ,如果无调整只需1指令周期,如果有跳转则需要2个指令周期。


定时时间的计算.假设Timer0用的时钟源是内部的4MHZ,那么每条指令的执行时间就是 1us,设Timer0的预分频系数是1:256,TMR0的初值是6,那么定时时间为: 

256×(256-6)×1us=64ms


256×(256-6)×(1/4M*4)=64ms


即 (4M/4)/256/250=16HZ。    


参见: bit 5 T0CS:Timer0 Clock Source Select bit


1 = Transition on T0CKI pin input edge

0 = Internal clock (F OSC /4)


程序

#include

 

void initPORTB(void);

void initTMR0(void);

void interrupt TMR0INT(void);

int coun=0;

bit abc=0b0;

 

void main(){

initPORTB();

initTMR0();

while(1){}

}

 

void initPORTB(){

TRISB=0x00;

PORTB=0x00;

}

 

void initTMR0(){

//T0CON=0x89; //10001001 89

T0CON=0xc7; //11000111 c7  8位定时器方式 256分频

TMR0IF=0;

TMR0IE=1;

GIE=1;

// TMR0H=0x00;

TMR0L=0x06;

}

 

void interrupt TMR0INT(void){

//if(TMR0IF==1)

//{

GIE=0;

 

// TMR0H=0x00;

TMR0L=0x06;

TMR0IF=0;

// PORTB=coun&0x0f;

// if(coun==10)

// {

coun=0;

RB0=abc;

abc=!abc;

// }

coun++;

GIE=1;

//}

}

 

例如:10ms延时


#include   

  

void initPORTB(void);  

void initTMR0(void);  

void interrupt TMR0INT(void);  

int coun=0;  

bit abc=0b0;  

  

void main(){  

    initPORTB();  

    initTMR0();  

    while(1){}  

}  

  

void initPORTB(){  

    TRISB=0x00;  

    PORTB=0x00;  

}  

  

void initTMR0(){      

    T0CON=0x89; //10001001 89 使能TMR0,工作于16位定时器方式,使用内部时钟,不分频  

    TMR0IF=0;  

    TMR0IE=1;  

    GIE=1;  

    TMR0H=0xd9;  

    TMR0L=0x00;  

}  

  

void interrupt TMR0INT(void){  

//if(TMR0IF==1)  

//{  

    GIE=0;  

  

        TMR0H=0xd9;//FFFF-D900=9983 采用4M晶振。指令周期1us,  

        TMR0L=0x00;//故对TMR0写入10ms(即9983*1us)定时调整值9983  

      

        TMR0IF=0;  

//  PORTB=coun&0x0f;  

//  if(coun==10)  

//  {  

        coun=0;  

        RB0=abc;  

        abc=!abc;  

//  }  

    coun++;       

    GIE=1;  

//}  

}

关键字:PIC18f2580  TMR0  定时器  初值设置 引用地址:PIC18f2580下TMR0定时器初值设置方法

上一篇:PIC 1508 TIM2的定时器使用
下一篇:PIC16F877A第一个程序

推荐阅读

魅蓝Note 6是魅蓝在2017年8月23日推出的千元机,它最大的亮点是拍照。魅蓝Note 6采用主摄像头+景深镜头的双彩色方案,主摄像头为1200万像素,副摄像头为500万像素,后者用于纪录物体之间的景深信息。在索尼IMX362或三星2L7“旗舰级”传感器组合中,索尼IMX362拥有1.4微米单像素面积及F/1.9光圈,支持Dual PD全像素双核对焦技术,最快达到0.03秒。官方表...
阳光电源打造逆变器引领者  
实现了技术方面的突破,那么要如何与生产环境集成呢?如何在实际的业务体系中实现对FPGA优势更好的应用?实际部署是其中最值得探讨与研究的方向。对此,深维科技进行了一系列的探索与尝试,形成了以下几种方案。 部署问题 1.1 如何与生产环境集成 在云端,ThunderImage通常会与OBS进行集成,用户端发送对图片的请求,CDN检查是否存在本地缓存,如不存在则...
集微网报道,中美之间在半导体领域的较量已进入白热化状态。为防止中国取得竞争优势,近两年,美国频频祭出各种新招来遏制中国。始于2018年的中美贸易战,凸显出中国半导体设备的短板,而华为被断供后,更是让半导体设备国产化上升到国家战略层面。但当所有人都把眼光投向光刻机、晶圆厂等半导体前段核心设备和材料的时候,却无意间忽视了半导体封装这一后...

史海拾趣

问答坊 | AI 解惑

RAM核心板PCB 高清大图

https://home.eeworld.com.cn/my/space.php?uid=257400&do=album&id=1232     前几天有些朋友在问我联系方式我的QQ:1211406057 有朋自远方来  乐乎!!!         谢谢大家支…

查看全部问答∨

WLAN Controller SOS!!!SOS!!!SOS!!! 100分外加RMB100

请针对就您理解WLAN Controller目的与    原理制作简报说明, 含以下内容者尤佳: 系统实作方式 功能测试方式 答题简报内容 WLAN Controller目的 WLAN Controller原理 答题简报语句 条理清晰,语句简洁 答题简报格式 使用Power Po ...…

查看全部问答∨

来问个基础问题,WinCE下的程序是怎么开发的?

    微软应该为WinCE应该提供PC机上运行的开发环境吧,在开发环境下编译连接,生成输出文件,然后用编程器写到嵌入式系统中,应该是这个样子吧?我一直用TI的DSP/BIOS做学习,对WinCE不了解.…

查看全部问答∨

关于freepy自由拼音输入法的问题

下载了wince下的自由拼音输入法。 按照“安装及调试说明”拷贝了文件并修改了注册表 HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Layouts\\e0010804修改,把Ime File键值从msimepy.dll改为freepy.dll 我用的是winCE5.0,Ime File ...…

查看全部问答∨

蓝牙模块&AT命令

在应用层发送AT命令,是如何到底层的?模块是怎么接收的? 是不是,应用层的AT命令由主板上的MCU通过蓝牙模块的串口(UART)传送到蓝牙模块。 还是应用层的AT命令由蓝牙模块通过蓝牙模块的串口(UART)传送到主板上的MCU。 或者都不是? 还有个 ...…

查看全部问答∨

有没有关于电子设计大赛备战的QQ群啊?

本帖最后由 paulhyde 于 2014-9-15 09:15 编辑 有没有关于电子设计大赛备战的QQ群啊?  …

查看全部问答∨

msp430采用精简指令集,又是冯诺依曼结构,是否矛盾?

从网上好多地方都说,精简指令集是哈佛结构,复杂指令集是冯诺依曼结构,我有点混,而msp430到底是怎么回事呢  求正解   谢谢…

查看全部问答∨

关于MSP430的VLO一些说明

VLO是MSP430内部超低功耗低频振荡器,这个时钟源在MSP430的1xx系列里面是根本没有的,在2系列里面就已经出现了,目前G2系列的MSP430中也基本都有这个模块。 这个振荡器根据使用方法,应该在设计目的上是用来取代32768Hz的晶振的,这样可以省掉一个 ...…

查看全部问答∨

怎么改变协议栈中最小的时间识别

我需要识别时间为0.5ms,就是时间增量最大要为0.5ms,但是现在只能识别1ms的整数倍时间,请问怎么改 …

查看全部问答∨
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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