pic单片机 实现10ms定时的简单程序

如题所述

这个可以用几种办法:
1、直接用软件延时,如用以下的DELAY()延时子程序,如要延时5ms,直接调用DELAY(5)就好了,但这种是纯软件的延时。
//======延时(n)ms,在4MHz晶振下!!!
void DELAY(uint n)
{ uint j;
uchar k;
for (j=0;j<n;j++)
for (k=246;k>0;k--) NOP();
}

2、用定时器延时,要通过计算延时的时间来确定延时的常数(分频比和定时器初值)。追问

用定时器实现的那种...

追答

这个说来有点麻烦,
假设晶振为4MHz,则指令周期Tcy=1us.
假设用TMR0延时,要延时10ms,即10000us,可得:256*K*Tcy=10000,得K=39.06,取K=64。(只能取比39.06大的分频比!)
接着计算延时常数X:(256-X)*64* Tcy=10000,得X=4.
因此,用TMR0分频比为1:64,初值为4,就可以得到10ms的延时了!

追问

这位大侠,可以给个完整的定时程序吗,用MCC18的

追答

如果你连这个程序都不会编,建议你还是完整地看一下相关的书吧!这个程序是其中最简单的程序了。

追问

看样子,这位大侠是编程高手呀,我要是会编就不会到这里来找答案了

参考资料:北航《PIC16系列单片机C程序设计与PROTEUS仿真》

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-01
刚刚学PIC单片机编程,一个装置,在接受到中断时,装置不报警,没有接受到另外,CGQ值对alarm_silencer();影响的逻辑关系有点乱,所以我没看alarm_,

pic单片机 实现10ms定时的简单程序
1、直接用软件延时,如用以下的DELAY()延时子程序,如要延时5ms,直接调用DELAY(5)就好了,但这种是纯软件的延时。\/\/===延时(n)ms,在4MHz晶振下!!!void DELAY(uint n){uint j;uchar k;for (j=0;j<n;j++)for (k=246;k>0;k--) NOP();} 2、用定时器延时,要通过计算延时的时...

PIC单片机怎样利用PWM模块设置10ms的脉冲周期?
设置PWM周期脉冲首先看你单片机的时钟周期是多少,然后设置相应的定时器为PWM模式,然后设置定时器的特殊寄存器来设置它的占空比,而且datasheet一般有计算式看能不能满足你的需求周期。还有PWM的周期也是在寄存器离选择分频什么的,单片机不一样设置不一样,只能参照datasheet了。比如你的单片机时钟周期是20ms...

计算机PIC定时器的工作原理是什么?
定时器通过内部振荡器产生时钟信号,时钟信号的频率决定了计数器的计数速度。预分频因子可以调整时钟信号的频率,以适应不同的定时需求。在计数过程中,当计数值达到预设值时,计数器会复位,并触发中断,从而执行相应的程序代码。中断机制是 PIC 定时器工作原理中的重要一环。当计数器完成计数并触发中断时...

关于PIC定时器问题
你应该去找PIC16F873的数据说明书来看看(电子版免费可下载的)。说明书里连样例程序都有。就如图可以看出:这是873的定时器1的结构图。当4Mhz的晶振时候,则单个指令周期为1uS,而定时器1的TMR1是16位的,如果预分频1:1,则从0计算到0xffff溢出时间需要65536个指令周期,也就是65mS多点。而当TM...

PIC单片机的延时问题 晶振4Mhz。大哥们,别跑题啊,只要回答就可以了...
因此会有额外的判断,编译结果每次循环耗费几十个周期毫不奇怪。问题2:前一句x从100开始递减,递减至1时退出循环。后一句x从0开始递增,递增到100时退出循环。所谓“2句话”相同仅仅是指这两个循环体的循环次数相同。实际上两个循环的执行过程是完全不同的,所消耗时间也有可能不同。

简单的PIC程序问题
RC0==1;delay(1500);RC0==0;delay(1500);改为 RC0=1;delay(1500);RC0=0;delay(1500);

pic单片机与51的区别在哪 pic单片机和51单片机哪个好
在寄存器组方面,pic单片机的所有寄存器,包括I\/O口、定时器和程序计数器等,均采用RAM结构,一个指令周期即可完成访问和操作。而51单片机需要两到三个指令周期才能完成寄存器内容的改变。流水线结构方面,51单片机采用单指令流水线结构,即取一条指令后执行,再取下一条指令。pic单片机则采用双指令流水线...

选用某型号PIC单片机的CCP模块设计频率计,频率测量范围0.1HZ至100KHz...
我们假设第一个上升沿来临时拍下的Timer1快照里值是1000,第二次上升沿来临时Timer1快照是2000,那么两个快照值相减就是周期值,有了周期值你就可以算出频率值,就这么简单。不过,你们老师在这里挖了好几个坑。第一个是低频率,第二个是高频率的。例如PIC工作在4MHz时Fcy为1M,Timer1每1uS加一,...

怎么判断pic单片机坏没坏啊?16F877的
首先要反复几次擦除烧写,都能成绩的话,再进一步,编个简单的程序,让某个引脚接个电阻串LED,让其闪亮(时间为100ms以上)。运行时能看到这个引脚的LED闪亮,就基本证明这个单片机没坏。

PIC单片机编程的问题 刚学 不太懂
W_TEMP ; 中断服务程序用来临时保存W和STATUS STATUS_TEMP FLAGS ; 程序要使用的状态标志寄存器 PWM_HIGH:2 ; 新的PWM高电平时间,保留两个字节 PWM_LOW:2 ; 新的PWM低电平时间,保留两个字节 PWM_HIGH_CURRENT:2 ; 当前PWM的高电平时间锁存 PWM_LOW_CURRENT:2 ; 当前的PWM低电平时间锁存 COUNTER ; AD采...

相似回答