Ⅰ 單片機給數組賦值可以用strcpy么
strcpy是c語言庫程序,其代碼沒有公開、也許包含Debug信息,這種庫程序要額外佔用一些你也許用不到的資源(比如需要申請堆棧空間),而單片機一般資源緊張,所以如果只用strcpy這一個功能的話,最好自己動手寫一段子程序替代它實現同樣功能。
Ⅱ 51單片機 C語言 串口數組賦值問題
貼上來的程序部分,修改如下:
#include<reg52.h>
#include<stdio.h> //列印到串口函數
#define uchar unsigned char
#define uint unsigned int
uchar date_zi[4][11]; //存放接收到的數據
uint i_index=0; //接收到的字元個數
uint i=0; //i字元用於循環
unsigned int xia = 0; //用於保存到數據的下標
void fh_zi(uchar a) //返回字元到串口
{
ES=0;
SBUF=a;
while(!TI);
TI=0;
ES=1;
}
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0Xfd;
//TH0=(65536-45872)/256;
//TL0=(65536-45872)%256;
TR1=1;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;
}
void main()
{
i_index=0;
xia=2;
init();
while(1);
}
void ser() interrupt 4 //串口
{
if(RI == 1)
{
RI=0;
date_zi[xia][i_index] = SBUF;
i_index++;
if(i_index>10) //接受完10個字元後顯示數組所有內容
{
i_index=0;
for(i=0;i<11;i++) //顯示數組中所有內容
fh_zi(date_zi[0][i]);
for(i=0;i<11;i++)
fh_zi(date_zi[1][i]);
for(i=0;i<11;i++)
fh_zi(date_zi[2][i]);
for(i=0;i<11;i++)
fh_zi(date_zi[3][i]);
}
}
}
Ⅲ C語言 AVR單片機中 給數組賦值
你問題前後矛盾啊,到底是左補0還是右補0啊,另外,你舉的例子是10進制還是16進制,數組中是BCD碼還是HEX,快補充一下吧
Ⅳ 單片機數組的定義和使用方法
單片機數組的定義和使用方法,單片機數組的定義就是說他是通過一個單機片組成個主板,然後使用方法是相對來說比較簡單的,然後可以參照使用說明來操作
Ⅳ 單片機程序 把數組賦值給p什麼意思數組有很多位數據,哪一位賦給了p p=table1
p是指針,指向數組後,默認是其首個成員的地址,循環中執行P++或j++,p或p+j便指向下一個成員。L1602_char(1,17-i+j,*(p+j))即相當於L1602_char(1,17-i+j,table1[j])
Ⅵ 單片機C語言數組賦值求助
數組只能在定義的時候整體賦值,不能在之後這樣用。
所以你只能寫成
uchar frist[5]={a,b,c,d,e,f};
而不能寫成
uchar frist[5];
frist[5]={a,b,c,d,e,f};
如果你真的要在之後賦值,特別是每個成員不一樣,你只能用循環或者手動一個一個賦值。
或者先把所有值放在另外一個數值然後memcpy給目標數組。
Ⅶ 變數賦值給數組 c語言單片機中
你定義了位於xdata的數組,可是你確認你的設計中包含
外部存儲器
嗎?
先確認。
Ⅷ 單片機c語言編程 數組賦值問題:
uchar
code
table2[]={"12.3"};
注意到你用什麼樣的數據類型了沒有
uchar
是整形
而你的數組里帶小數點
Ⅸ 單片機數組賦值問題!
這個程序我已經調試過可以使用,放到數組中應該為了用數碼管顯示吧
uchar
i=0,j=0,z=0,m=0;
//i-整數位數,j-小數位數
float
a=0,b=0;
//a-整數,b-小數
uint
c=0,d=0;
uchar
k[8]={0};//數組設大一點沒關系的
adval=P1
a=ad_vol;
ad_vol=(float)adval*5.0/255
d=a;
c=a;
while(c)
{
k[i]=c%10;
c=c/10;
i++;
}
for(
m=0;m
評論
0
0
載入更多
Ⅹ 關於單片機 數組使用
你給的信息太有限,
我需要知道你的單片機的具體型號,還有你創建工程的屬性。
我先猜一下:
你用的是stc增強型52單片機,除了自帶的256位元組內存還有256位元組的擴展內存,並且你在工程屬性裡面選擇的是大內存模式(large:
variables
in
xdata
)這樣在你定義內存的時候如果不加data,idata,pdata關鍵字的話,默認就是xdata。這用的是外部ram,是通過p0和p2口用匯流排模式擴展晶元得到的,可訪問64k的內存空間。但是stc增強型52內置了256位元組(某些版本會更大,我猜你用的是256的),默認訪問方式一樣,但是被stc集成到了片內。你定義了一個a[160]一個b[160],加起來遠遠超過256.按你的說法,有用的是160+48(這里你又有一個表達錯誤,a[0]~a[47]應該是48個。)=208個,算上你其他地方定義的變數,應該滿256個,那麼a[48]~a[159]是怎麼出現的呢,理論上是從p0口讀回來的。但是這里你還有一個不嚴謹的地方,不知道你有沒有證明到底是a[48]~a[159]全部成為了0xff還是b[48]~b[159]早早的就成為了0xff。
處理辦法一:內存模式先改成small:variables
in
data
.
這時你應該都無法通過編譯。
然後改變這句話:void
2(char
a[160])
變成
void
2(char
pdata
a[160])
方法二:直接改
char
b[160]=
變成
char
code
b[160]=
試試看。
如果猜錯了,請別笑話我。