- #include<reg52.h>//數碼管顯示0123456789共陰
- #define uchar unsigned char
- uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
- void delay1ms(int n)
- {
- int i;
- while(n--)
- {
- for(i=0;i<200;i++);
-
- }
- }
- void main()
- {
- char i=0;
-
- while(1)
- { if(i<11)
- {
- P2=table[i];
- delay1ms(150);
- i++;
- }
- else i=0;
-
- }
- }
- 定時器點亮一個led///
- #include<reg52.h>
- char count=0;
- void timer_0(void)interrupt 1
- {
- count++;
- if(count==20)
-
- { P2=~P2;
- count=0;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- }
-
- }
-
- void main()
- {
-
-
- P2=0x00;
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- while(1)
- {
- }
-
- }
- 定時一百秒計數//
- #include<reg52.h>
- int second=0,count=0,munite=0;
- unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
- void main()
- {
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- while(1)
- {
- }
-
- }
- void timer_0(void)interrupt 1
- {
- second++;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- if(second==20)
- {
- P1=table[count%10];
- second=0;
- count++;
-
- }
- if(count==11)
- {
- munite++;
- P2=table[munite%10];
- count=0;
- }
- }
- 99999.9秒的定時程序顯示在6位7段數碼管上(注意小數點的電平),p3口掃描送高電平加上一個上拉電阻增大驅動電流P0口送共陽極代碼//
- #include<reg52.h>
- #include<intrins.h>
- sbit dot=P0^7;
- int i,second=0;
- unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
- unsigned char disp[]={0,0,0,0,0,0};
- void delayms( unsigned char n)
- {
- do
- { _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- }
- while(--n);
- }
-
- void main()
- {
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- while(1)
- {
- P3=0x80;
- for(i=5;i>=0;i--)
- {
- P3=_crol_(P3,1);
- P0=table[disp[i]];
- if(i==1)
- dot=0;
- delayms(10);
- }
- }
- }
- void timer_0(void)interrupt 1
- {
-
- second++;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- if(second==2)
- { second=0;
- disp[0]=disp[0]+1;
- }
- else
- return;
- for(i=0;i<6;i++)
- {
- if(disp[i]==10)
-
- {
- disp[i]=0;
- if(i!=5)
- disp[i+1]=disp[i+1]+1;
- }
- else break;
- }
- }
-
復制代碼
|