標題:
求助大神,單片機延時語句本身沒錯但報錯,實在是不懂了,求教大神
[打印本頁]
作者:
at89s51G
時間:
2017-5-30 15:02
標題:
求助大神,單片機延時語句本身沒錯但報錯,實在是不懂了,求教大神
延時的3句全報錯。。無奈。
#include<reg51.h>
sbit P1_0=P1^0; //脈沖輸出//
sbit P1_1=P1^1; //計數(shù)開關(guān)//
sbit P1_2=P1^2; //脈沖開關(guān)//
xdata unsigned char w _at_ 0x8002,d _at_ 0x8004; //位選 段選//
unsigned char j,x0,x1,x2,x3,x4,x5; //定義j(定時倍數(shù)10) x顯示段碼//
unsigned long i; //累加i 顯示i //
code unsigned char a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} //數(shù)組顯示//
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}}
QQ圖片20170530150607.png
(195.97 KB, 下載次數(shù): 68)
下載附件
2017-5-30 15:07 上傳
作者:
zjjhtony
時間:
2017-5-30 16:41
任何問題都在你的程序中:
1)注意語句結(jié)束了需要分號“;”;
2)注意程序書寫,不要一行接一行連著寫;
code unsigned char a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} //數(shù)組顯示//
這句后面的“;”呢?
作者:
yuquanyou
時間:
2017-5-30 19:18
語句結(jié)束了需要分號“;”
語句結(jié)束了需要分號“;”
語句結(jié)束了需要分號“;”
作者:
angmall
時間:
2017-5-30 22:37
#include<reg51.h>
sbit P1_0=P1^0; //脈沖輸出//
sbit P1_1=P1^1; //計數(shù)開關(guān)//
sbit P1_2=P1^2; //脈沖開關(guān)//
unsigned char xdata w _at_ 0x8002,d _at_ 0x8004; //位選 段選//
unsigned char j,x0,x1,x2,x3,x4,x5; //定義j(定時倍數(shù)10) x顯示段碼//
unsigned long i; //累加i 顯示i //
unsigned char code a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //數(shù)組顯示//
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;
}
}
復(fù)制代碼
作者:
阿茲尼亞
時間:
2017-5-31 19:26
延時程序沒錯就不是他的問題,一些看似無關(guān)的小錯誤也會讓程序報錯
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1