为什么51单片机的定时器计时不准确?
时间:10-02
整理:3721RD
点击:
- #include<reg51.h>
- int time;
- unsigned char code duan[10]={
- 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f};
- //0、1、2、3、4、5、6、7、8、9的显示码
- void timer_init()
- {
- TMOD=0x02; //定时器工作方式2
- TL0=0x9c; //初值为156,256溢出,定时100*1us=0.1ms
- ET0=1;
- EA=1;
- TR0=1;
- }
- void timer0_mod2() interrupt 1 //定时器0的中断编号是1
- {
- time++;
- }
- main()
- {
- char i=0;
- P0=0xff;
- i=0;
- timer_init();
- while(1)
- {
- P0=~duan[i];//我用共阳数码管
- if(time==1000) { time=0;i++; }//理论上0.1秒显示一个数字,实际上慢很多
- if(i==10) i=0;
- }
- }
单片机STC90C51
烧录后观察到数码管的数字变化为什么明显比0.1秒慢
应该是代码在执行过程中还有什么的中断函数调用中另外消耗了时间吧,
跟晶振有关把?
不会啊。工作方式1定时1秒就正常