欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: Keil報錯C247,是不是數(shù)值不能直接賦予變量值 [打印本頁]

作者: asdadqw2    時間: 2024-5-9 10:48
標(biāo)題: Keil報錯C247,是不是數(shù)值不能直接賦予變量值
keil報錯,是不能直接賦予數(shù)組dat[5]={dat1,dat2,dat3,dat4,datL};這樣的變量值嗎?
void led_hc595_drive(unsigned char dat1,unsigned char dat2,unsigned char dat3,unsigned char dat4,unsigned char datL)
{
unsigned char dat[5]={dat1,dat2,dat3,dat4,datL};
unsigned char i,j;

for(j = 0;j < 5;j++)
{
unsigned char temp = dat[j];
for(i=0;i<8;i++)
{
HC595_DS=(temp&0x80)?1:0;
HC595_SH_CP=0;
HC595_SH_CP=1;
temp<<=1;
}
}
HC595_ST_CP = 0;//上升沿 移位寄存器的數(shù)據(jù)移到存儲寄存器
HC595_ST_CP = 1;


HC595_SH_CP = 0;//拉低,提高抗干擾
HC595_ST_CP = 0;
HC595_DS = 0;

}

作者: devcang    時間: 2024-5-9 12:59
unsigned char dat[5]={dat1,dat2,dat3,dat4,datL};改成定義和賦值分開
作者: lkc8210    時間: 2024-5-9 13:23
是數(shù)組不能直接用變量初始化
作者: asdadqw2    時間: 2024-5-9 13:24
devcang 發(fā)表于 2024-5-9 12:59
unsigned char dat[5]={dat1,dat2,dat3,dat4,datL};改成定義和賦值分開

把定義和賦值分開也不行
作者: xiaobendan001    時間: 2024-5-9 14:08
你這綠色背景怎么弄的啊
作者: Longan.Wang    時間: 2024-5-9 14:15
unsigned char dat[5]={dat1,dat2,dat3,dat4,datL}; 不能在函數(shù)內(nèi)部這樣寫。
作者: lightday    時間: 2024-5-9 15:09
這樣試試吧
unsigned char dat[5];
dat[0] = dat1;
dat[1] = dat2;
dat[2] = dat3;
dat[3] = dat4;
dat[4] = datL;
作者: xiaobendan001    時間: 2024-5-9 15:12
asdadqw2 發(fā)表于 2024-5-9 13:24
把定義和賦值分開也不行

要這樣,dat[0] = dat1;dat[1]=……

作者: 小H丶    時間: 2024-5-9 15:47
unsigned char dat[5]={dat1,dat2,dat3,dat4,datL};
作者: 小H丶    時間: 2024-5-9 15:49
unsigned char dat[5]={0}; dat[0]=dat1;dat[1]=dat2;dat[2]=dat3;dat[3]=dat4;dat[4]=datL;
作者: Hephaestus    時間: 2024-5-9 16:20
不能這樣賦值,回去看c語言教材。
作者: asdadqw2    時間: 2024-5-9 17:36
小H丶 發(fā)表于 2024-5-9 15:49
unsigned char dat[5]={0}; dat[0]=dat1;dat[1]=dat2;dat[2]=dat3;dat[3]=dat4;dat[4]=datL;

試過了,不行
作者: asdadqw2    時間: 2024-5-9 17:36
xiaobendan001 發(fā)表于 2024-5-9 14:08
你這綠色背景怎么弄的啊

不清楚
作者: asdadqw2    時間: 2024-5-9 17:37
試過這樣寫,還是不行
unsigned char dat[5]={0};
dat[0] = dat1;
dat[1] = dat2;
dat[2] = dat3;
dat[3] = dat4;
dat[4] = datL;
作者: Hephaestus    時間: 2024-5-9 19:10
asdadqw2 發(fā)表于 2024-5-9 17:37
試過這樣寫,還是不行
unsigned char dat[5]={0};
dat[0] = dat1;

報什么錯?
作者: 188610329    時間: 2024-5-9 19:22
為啥要弄個數(shù)組 給自己找不痛快呢? 直接用指針不香么?

void led_hc595_drive(unsigned char dat1,unsigned char dat2,unsigned char dat3,unsigned char dat4,unsigned char datL)
{
        unsigned char *p;
        unsigned char i;
       
        p        = &dat1;
        while(p <= &datL)
        {
                for(i=0;i<8;i++)
                {
                        HC595_DS=(*p&0x80)?1:0;
                        HC595_SH_CP=0;
                        HC595_SH_CP=1;
                        *p<<=1;
                }
                p++;
        }
        HC595_ST_CP = 0;//上升沿 移位寄存器的數(shù)據(jù)移到存儲寄存器
        HC595_ST_CP = 1;
       
        HC595_SH_CP = 0;//拉低,提高抗干擾
        HC595_ST_CP = 0;
        HC595_DS = 0;
}
作者: yytytx    時間: 2024-5-9 19:46
看著同問題
作者: fj51hei    時間: 2024-5-9 20:49
unsigned char dat1,unsigned char dat2,unsigned char dat3,unsigned char dat4,unsigned char datL這個會自己變成連續(xù)地址?
作者: 188610329    時間: 2024-5-9 22:17
fj51hei 發(fā)表于 2024-5-9 20:49
unsigned char dat1,unsigned char dat2,unsigned char dat3,unsigned char dat4,unsigned char datL這個會 ...

你可以看一下關(guān)于傳參的設(shè)定,只要傳參超過3個就一定是獨(dú)立的連續(xù)地址。
作者: wufa1986    時間: 2024-5-10 08:51
定義變量賦值是編譯的時候完成的,所以不能賦值變量
作者: xiaobendan001    時間: 2024-5-10 10:44
asdadqw2 發(fā)表于 2024-5-9 17:37
試過這樣寫,還是不行
unsigned char dat[5]={0};
dat[0] = dat1;

定義要寫在前邊,賦值要寫函數(shù)里面的吧。
main(){
dat[0] = dat1;
……
while(1);
}
作者: Longan.Wang    時間: 2024-5-10 17:37
asdadqw2 發(fā)表于 2024-5-9 17:37
試過這樣寫,還是不行
unsigned char dat[5]={0};
dat[0] = dat1;

可能是編譯器的問題,上面寫法,我用MDK就能編譯通過。
把unsigned char dat[5]={0};修改成unsigned char dat[5];試試。
作者: Hephaestus    時間: 2024-5-11 22:08
Longan.Wang 發(fā)表于 2024-5-10 17:37
可能是編譯器的問題,上面寫法,我用MDK就能編譯通過。
把unsigned char dat[5]={0};修改成unsigned cha ...

c99標(biāo)準(zhǔn)里面是可以隨用隨定義變量的。

c89標(biāo)準(zhǔn)變量定義必須在實(shí)體語句,比如賦值,前面才可以,有了實(shí)體語句就不能再定義變量了。

C51是永遠(yuǎn)都不可能支持c99標(biāo)準(zhǔn)了。
作者: rayin    時間: 2024-5-31 08:10
上面程序完全沒必要用到數(shù)組, 如果要HC595送20個, 30個,100個unsigned char 數(shù)據(jù)怎么辦, 單片機(jī)的棧空間要壓爆. 要送的數(shù)據(jù)長度是可變的怎么辦? c51是不支持可變數(shù)組的.

可以考慮傳指針+數(shù)據(jù)長度的方法/或者就傳一個unsigned char 參數(shù), 也是能解決問題的.
作者: szqinyi    時間: 2024-5-31 09:34

這樣寫行
unsigned char dat[5]={0};//定義
unsigned char dat1,dat2,dat3,dat4,datL;
//下面幾行在程序中運(yùn)行
dat[0] = dat1;
dat[1] = dat2;
dat[2] = dat3;
dat[3] = dat4;
dat[4] = datL;
作者: 小郭郭a    時間: 2024-5-31 10:55
這種錯誤提示通常是因?yàn)樵贙eil中初始化數(shù)組時,dat1, dat2, dat3, dat4等變量的值可能無法直接獲取或不符合數(shù)據(jù)類型要求。你可以嘗試分別給數(shù)組dat的各個元素賦值來避免這個問題。你可以嘗試使用如下方式初始化數(shù)組:  dat[0] = dat1; dat[1] = dat2; dat[2] = dat3; dat[3] = dat4; dat[4] = datL; 這通常會避免一些編譯錯誤,希望對你有幫助!




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1