欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
MAIN.C(24) : error C141: syntax error near 'u16'求助解決單片機C語言代碼錯誤
[打印本頁]
作者:
chun201302
時間:
2022-5-15 23:42
標題:
MAIN.C(24) : error C141: syntax error near 'u16'求助解決單片機C語言代碼錯誤
求助解決單片機C語言代碼錯誤
MAIN.C(24) : error C141: syntax error near ’u16‘
51hei截圖20220515234113.jpg
(5.59 KB, 下載次數: 36)
下載附件
2022-5-15 23:41 上傳
程序如下:
#include"reg51.h"
#define GPIO_KEY P1
#define GPIO_DIG P0
typedef unsigned char u8;
typedef unsigned int u16;
//138譯碼器選位
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u16 KeyValue; //存健值
u16 KeySwitch; //判斷是否按下按鍵?
//段選0-9,因為用的是字符,像0x3f中的字母,所以用u8型
u8 code duanxuan [] ={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71} //顯示0~F的值
//u16 box[8]={0}; //用數組存放每一位段選得到的數字,0就是初始化,{}這是放著8個數,開始就顯示8個0
//====延遲函數
u16 i;
void delay(u16 i)
{
while(i--);
}
u16 box[8]={0};//用數組存放每一位段選得到的數字,0就是初始化,{}這是放著8個數,開始就顯示8個0
//====顯示函數
void display()
{
//在138譯碼器中,是反著看,如100,其實在芯中是從下往上看
LSA=0;LSB=0;LSC=0;GPIO_DIG=duanxuan[box[7]];delay(50);GPIO_DIG=0x00; //box[7]就是在段數組里選第一個數,就是0x3f,就是十進制的0
LSA=1;LSB=0;LSC=0;GPIO_DIG=duanxuan[box[6]];delay(50);GPIO_DIG=0x00; //delay(50);GPIO_DIG=0x00;就是消影
LSA=0;LSB=1;LSC=0;GPIO_DIG=duanxuan[box[5]];delay(50);GPIO_DIG=0x00;
LSA=1;LSB=1;LSC=0;GPIO_DIG=duanxuan[box[4]];delay(50);GPIO_DIG=0x00;
LSA=0;LSB=0;LSC=1;GPIO_DIG=duanxuan[box[3]];delay(50);GPIO_DIG=0x00;
LSA=1;LSB=0;LSC=1;GPIO_DIG=duanxuan[box[2]];delay(50);GPIO_DIG=0x00;
LSA=0;LSB=1;LSC=1;GPIO_DIG=duanxuan[box[1]];delay(50);GPIO_DIG=0x00;
LSA=1;LSB=1;LSC=1;GPIO_DIG=duanxuan[box[0]];delay(50);GPIO_DIG=0x00;
}
//====按鍵掃描,看哪個鍵給按下
void KeyDown(void)
{
u16 a=0;
GPIO_KEY=0x0f; //因為GPIO_KEY=P1,這里是給P1的8個口,按0000 1111的順序輸入
if(GPIO_KEY!=0x0f)
{
GPIO_KEY=0x0f;
switch(GPIO_KEY)
{
case (0x07):KeyValue=0;break;
case (0x0b):KeyValue=1;break;
case (0x0d):KeyValue=2;break;
case (0x0e):KeyValue=3;break;
}
GPIO_KEY=0xf0;
switch(GPIO_KEY)
switch(GPIO_KEY)
{
case (0x70):KeyValue=KeyValue;break;
case (0xb0):KeyValue=KeyValue+4;break;
case (0xd0):KeyValue=KeyValue+8;break;
case (0xe0):KeyValue=KeyValue+12;break;
}
//如果能按中10個鍵中的一個
if(KeySwitch==0||KeySwitch==1||KeySwitch==2||KeySwitch==3||KeySwitch==4||KeySwitch==5||KeySwitch==6||KeySwitch==7||KeySwitch==8||KeySwitch==9)
{KeySwitch=1;}
while((a<50)&&(GPIO_KEY!=0xf0))//松手監測
{
dalay(1000);
a++;
}
}
}
u16 i;
void main()
{
u16 a=0,b=0,c=0; //定義第一個數,第二個數,得數
while(1)
{
display(); //調用數碼管函數,讓8個管亮起來
KeyDown(); //調用按鍵函數,看一上哪個鍵按下了
if(KeySwitch==1) //如果有鍵按下了,就執行{} 內和語句
{
for(i=7;i>0;i--) //輸入一個數,數字就向左移動
{box[ i]=box[i-1;]}
box[0]=KeyValue;
KeySwitch=0;
}
else if (KeyValue==14) //清零鍵
{
for(i=0;i<8;i++)
box[ i]0;
display();
}
//==========加法===============
else if (KeyValue==10) //加號
{ //計算第一個數的值存到a里
a=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000
//清空值,準備取下一個數
for(i=0;i<8;i++)
box[ i]=0;
while(1)
{
display();
KeyDown();
if(KeySwitch==1) //如果有鍵按下了,就執行{} 內和語句
{
for(i=7;i>0;i--) //輸入一個數,數字就向左移動
{box[ i]=box[i-1;]}
box[0]=KeyValue;
KeySwitch=0;
}
if (KeyValue==15)break; //等于號
}
//計算第二個數的值存到b里
b=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000
c=a+b;
//以下是把C輸入到box[]中去。
box[0]=c%10;
box[1]=c/10%10;
box[2]=c/100%10;
box[3]=c/1000%10;
box[4]=c/10000%10;
box[5]=c/100000%10;
box[6]=c/1000000%10;
box[7]=c/10000000%10;
display();
}
//======乘法===========
else if (KeyValue==12) // 乘號
{
//第一個數
a=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000
for(i=0;i<8;i++)
box[ i]=0;
while(1)
{
display();
KeyDown();
if(KeySwitch==1) //如果有鍵按下了,就執行{} 內和語句
{
for(i=7;i>0;i--) //輸入一個數,數字就向左移動
{box[ i]=box[i-1;]}
box[0]=KeyValue;
KeySwitch=0;
}
if (KeyValue==15)break; //等于,KeyValue==15 是等于的意思
}
//計算第二個數的值存到b里
b=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000
c=a*b;
//以下是把C輸入到box[]中去。
box[0]=c%10;
box[1]=c/10%10;
box[2]=c/100%10;
box[3]=c/1000%10;
box[4]=c/10000%10;
box[5]=c/100000%10;
box[6]=c/1000000%10;
box[7]=c/10000000%10;
display();
}
//======減法===========
else if (KeyValue==11) // 減號
{
//第一個數
a=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000
for(i=0;i<8;i++)
box[ i]=0;
while(1)
{
display();
KeyDown();
if(KeySwitch==1) //如果有鍵按下了,就執行{} 內和語句
{
for(i=7;i>0;i--) //輸入一個數,數字就向左移動
{box[ i]=box[i-1;]}
box[0]=KeyValue;
KeySwitch=0;
}
if (KeyValue==15)break; //等于,KeyValue==15 是等于的意思
}
//計算第二個數的值存到b里
b=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000
c=a-b;
//以下是把C輸入到box[]中去。
box[0]=c%10;
box[1]=c/10%10;
box[2]=c/100%10;
box[3]=c/1000%10;
box[4]=c/10000%10;
box[5]=c/100000%10;
box[6]=c/1000000%10;
box[7]=c/10000000%10;
display();
}
//======除法===========
else if (KeyValue==13) // 除號
{
//第一個數
a=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000
for(i=0;i<8;i++)
box[ i]=0;
while(1)
{
display();
KeyDown();
if(KeySwitch==1) //如果有鍵按下了,就執行{} 內和語句
{
for(i=7;i>0;i--) //輸入一個數,數字就向左移動
{box[ i]=box[i-1;]}
box[0]=KeyValue;
KeySwitch=0;
}
if (KeyValue==15)break; //等于,KeyValue==15 是等于的意思
}
//計算第二個數的值存到b里
b=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000
c=a/b;
//以下是把C輸入到box[]中去。
box[0]=c%10;
box[1]=c/10%10;
box[2]=c/100%10;
box[3]=c/1000%10;
box[4]=c/10000%10;
box[5]=c/100000%10;
box[6]=c/1000000%10;
box[7]=c/10000000%10;
display();
}
}
}
作者:
hy47566398
時間:
2022-5-16 05:37
u8 code duanxuan []={。。。}
括號尾部少分號
作者:
wulin
時間:
2022-5-16 07:15
分號錯漏比比皆是
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1