机器频率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; //} }
上一篇:PIC 1508 TIM2的定时器使用
下一篇:PIC16F877A第一个程序
推荐阅读最新更新时间:2024-11-16 22:33
设计资源 培训 开发板 精华推荐
- 使用 Cypress Semiconductor 的 MB39C022L 的参考设计
- AD9272-80KITZ,用于评估超声系统 AD9272 的评估板
- TCR2EN34、200mA、3.4V 输出电压 CMOS 低压降稳压器的典型应用
- STC/IAP15W4K61S4开发板
- 51单片机摇摇棒
- 基于ST7540 PLM和STM32微控制器的通用电力线调制解调器模块
- 使用 ON Semiconductor 的 NCP400 的参考设计
- LTC3425 的典型应用 - 5A、8MHz、4 相同步升压型 DC/DC 转换器
- LTM8031,采用 15mm 9mm 模块封装的 EMI 认证降压转换器从 3.6VIN -36VIN 产生 1A、0.8VOUT 10V 输出
- LTC2945CUD 在 -48V 系统中使用低侧检测进行电源监控的典型应用