- #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;
- }
- }
复制代码我选择了定时器0的工作方式2
单片机STC90C51
烧录后观察到数码管的数字变化为什么明显比0.1秒慢
一周热门 更多>