延時的3句全報錯。。無奈。
#include<reg51.h>
sbit P1_0=P1^0; //脈沖輸出//
sbit P1_1=P1^1; //計數開關//
sbit P1_2=P1^2; //脈沖開關//
xdata unsigned char w _at_ 0x8002,d _at_ 0x8004; //位選 段選//
unsigned char j,x0,x1,x2,x3,x4,x5; //定義j(定時倍數10) x顯示段碼//
unsigned long i; //累加i 顯示i //
code unsigned char a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} //數組顯示//
void delay()
{ unsigned char i;
for(i=0;i<250;i++);
}
void play()
{x0=i%10;
x1=i/10%10;
x2=i/100%10;
x3=i/1000%10;
x4=i/10000%10;
x5=i/100000;
w=0x01;d=a[x0]; delay();
w=0x02;d=a[x1]; delay();
w=0x004;d=a[x2];delay();
w=0x08;d=a[x3]; delay();
w=0x10;d=a[x4]; delay();
w=0x20;d=a[x5]; delay(); }
void main()
{EA=1;
ET0=1;
ET1=1;
TMOD=0x15;
TR0=0;
TR1=0;
TH0=0x00;TL1=0x00;
TH1=0x3c;TL1=0xb0;
while(1)
{if(P1_1==0)
{TR0=0;TH0=0x00;TL0=0x00;i=153091;play()}
if(P1_1==1)
{TR0=1;i=TH0<<8|TL0;play();}
if(P1_2==0)
{TR1=0;TH1=0x3c;TL1=0xb0;j=0;P1_0=0}
if(P1_2==1)
{TR1=1;}}}
void int1() interrupt 3
{TH1=0x3c;TL1=0xb0;j++;
if(j==10)
{P1_0=!P1_0;j=0}}
|