• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::


Browsing this Thread:   1 Anonymous Users






Re: 請問C30中(AND)(>>)運算元
#5
新會員
新會員


查看用戶資訊
我用版主的方法成功了


To Biko
強制轉型 double -> unsigned char
佔用的格子變少,這樣不會導致錯誤嗎?
unsigned char有可能低於1byte,
但是浮點數還是一樣需要4byte


我沒有試過啦,只是有點疑問

發表於: 2008/11/13 13:21
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問C30中(AND)(>>)運算元
#4
資深會員
資深會員


查看用戶資訊
我在想…這種位元運算子可能只能用在整數的資料型態,尤其是unsigned 的整數資料型態,不然應該很容易弄錯。
您可能需要再去看一下有關指標和強制轉型方面的資料,這對您有幫助的。

就您的需求假設你是用uart將資料傳到另一個MCU,我會像下面這樣的寫法。


extern void uart_tx(unsigned char *data, unsigned char data_length);//利用UART傳資料的函式

double Gps;//你要傳的Gps資料

//-----------
//
//-----------
void double_tx_gps(void)
{
uart_tx((unsigned char *)&Gps, sizeof(double));//將Gps強制轉成unsigned char送出
}


另外再給您一個函式幫助您思考:

//------------
//
//------------
void demo_func(void)
{
unsigned int int_a = 0x1234;//假設sizeof(int) = 2;
unsigned char arr[4];
unsigned char *p;

double f1 = 0.123;//假設sizeof(double) = 4;
double f2;

p = (unsigned char *)&int_a;

arr[0] = p[0];//此時arr[0]會等於0x34;
arr[1] = p[1];//此時arr[0]會等於0x12;


p = (unsigned char *)&f1;
//以下四行程式已經將f1分成4個byte分別存到arr[]裡,如果各別看arr[]裡的資料是無意義的
arr[0] = p[0];
arr[1] = p[1];
arr[2] = p[2];
arr[3] = p[3];

//將arr[]的位址強制轉型成double,再將這個位址裡的值丟給f2
f2 = *(double)arr;//此時f2會等於0.123



}

發表於: 2008/11/6 12:13
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問C30中(AND)(>>)運算元
#3
版主
版主


查看用戶資訊
從 W401 C18 教材剪下來的說明:

union u_tag
{
int l;
char c[2];
} temp;

利用 union & Aarray 的宣告,將 int 拆成兩個 byte 的方式。
---------------------------------------------------------------------

union FPvar
{
float FPNum; //floating point access
struct
{
unsigned char Arg0; //argument byte 0 access
unsigned char Arg1; //argument byte 1 access
unsigned char Arg2; //argument byte 2 access
unsigned char Exp; //exponent byte access
} ByByte;
} Foo;

Foo.FPNum = 3.14159;
Exponent = Foo.ByByte.Exp - 0x7F;

利用 union & struct 的宣告,將浮點數拆成四個 byte 的方式。

發表於: 2008/11/6 8:11
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問C30中(AND)(>>)運算元
#2
新會員
新會員


查看用戶資訊
把double換成int
編譯就給過了

是因為double不支援 '&' '>>' 這樣的運算嗎?

發表於: 2008/11/5 21:25
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


請問C30中(AND)(>>)運算元
#1
新會員
新會員


查看用戶資訊
請問大家

我想要將一個double變數
拆解成8個char
以方便傳到別的單晶片中
請問

GPS_data[j] = UTCtime_v & 0x0000000000000011 ;
UTCtime_v = (UTCtime_v >>8);


UTCtime 型態為 double
GPS_data 型態為 unsigned char


這樣寫C30編譯器不給過
在 '&' 以及 '>>' 的地方都出現error

invalid operands to binary &
error: invalid operands to binary >>

請問這樣要怎麼寫呢?

發表於: 2008/11/5 17:27
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------