请问高手lpc1114 ucos定时器的时间是怎么计算出来的

T0定时器工作方式2的编程,想设定时间为1s,但上电后没动,不知哪错了,应该是定时器的问题,求高手_百度知道
T0定时器工作方式2的编程,想设定时间为1s,但上电后没动,不知哪错了,应该是定时器的问题,求高手
#include&reg52.h&#define uchar unsigned charuchar const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值uchar code seg[]={0,1,2,3,4,5,6,7};//分别对应相应的数码管点亮,即位码char second,min,char shi,void display(char,char);void delay(int x)//delay x ms at 12.000 MHZ{ int n,k; for(n=x;n&0;n--)
for(k=123;k&0;k--);}main(){ hour=0; P2=seg[7]; P0=0; TMOD=0x02;
TH0=61; TL0=61; EA=1; ET0=1; TR0=1;
display(hour,1);
if(hour==24)
P2=seg[2];
display(min,4);
if(min==60)
P2=seg[5];
display(second,7);
if(i==5000)
if(second==60)
}}void display(char x,char n){ shi=x/10;
P2=seg[n-1]; P0=dofly[shi]; delay(2); P0=0; P2=seg[n]; P0=dofly[ge]; delay(2); P0=0;}
void temer_0() interrupt 1{
提问者采纳
首先你的i是uchar 型的,不可能=5000 要改成uint 型  另外,改成if(i&=5000)试试 因为可能你在延时程序里进入T1中断的,到你if(i==5000)时,i已经大于5000了
哦哦,貌似是的,但如果是在演示程序里进入了中断那定时器就不精确了吧,怎么让他精确计时呢
你为什么要用定时方式2 ?那时间太短了。用1 吧
我就是想都试试,想都熟练熟练,用1已经编过了。定时器1进入中断后还要初始化,要浪费时间,那么要想精确定时就要用到汇编了吧。查看其汇编代码,需再加七个指令周期(2个mov 1个inc 1个reti),如果晶振是12mhz,那么需在初始化时多加上7微秒,我说的对吗?
不是吧,用定时,精确和汇编一样的了。
进入中断后,不在中断中执行语句吗,执行语句就要耗费时间了啊。你QQ号多少,我能加你吗
中断里尽可能短。但计数没停呀。578743933
提问者评价
谢谢了。晚上加你
其他类似问题
定时器的相关知识
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁请问高手LPC1114定时器的时间是怎么计算出来的_百度知道
请问高手LPC1114定时器的时间是怎么计算出来的
求详细的计算过程,重赏!!
位的定时器,2个32位的定时器,还有一个M0自带的滴答定时器,你说的哪一个?
说一个例子吧,16位定时器中的一个。谢谢
如果仅仅做一般的定时器使用,2个16位定时器和2个32位定时器是差不多的。预分频计数器(PC)每个PCLK加1。当PC = PR(预分频寄存器)时,在下一个PCLK来临时,PC清零,TC(定时器计数器)加1,也就是记一个数。假设PCLK为48M。PR = 47,那么定时器的计时频率就是48M / (47 + 1),也就是1M的频率
其他类似问题
按默认排序
其他1条回答
理论脱离实践是最大的不幸
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用单片机定时器控制一个LED亮灭,时间间隔两秒的程序。高手来。谢谢。_百度知道
用单片机定时器控制一个LED亮灭,时间间隔两秒的程序。高手来。谢谢。
提问者采纳
你有什么教材吗?我用的郭天祥的教材的第74页就有一个控制一秒闪烁的。你这个问题是超简单的问题。 你要程序的话我可以给你
要,你QQ给我,我们详细谈
你也是玩单片机的新手嘛?我是新手,你说的程序是很简单的程序,自己买本书就可以学了,我买的是淘宝上郭天祥的51单片机C语言教程(20元左右的盗版书)。还有假QQ就不用了,我是新手,所以你要程序,我可以照着书给你打(要的回,我下次打)。
#include&reg52.h&#define uchar unsigned char#define uint unsigned intsbit led1=P1^0;void main(){TMOD=0x01;TH0=()/256;
//设置初值50msTL0=()%256;EA=1;ET0=1;TR0=1;while(1);}void T0_time() interrupt 1{TH0=()/256;
//重设设置初值50msTL0=()%256;num++;if(num==20)
//20次为一秒,两秒换成40次 { num=0; led1=~led1;
提问者评价
其他类似问题
定时器的相关知识
按默认排序
其他2条回答
这种程序网上多的是,何必呢就一个定时器的功能而已
网上找不到啊
你看书,学习如何使用定时器。定时器回了这个就很简单了
我来帮你搞定
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 lpc1114中文资料 的文章

 

随机推荐