สอบถามเรื่อวแนวทางการเขียนโปรแกรมต่อในภายภาคหน้า

  • 4 Replies
  • 1891 Views
 :-\
ตั้งกระทู้นี้ต่อเพื่อเป็นหาแนวทางที่จะไปต่อและเพื่อพัฒนาความเข้าใจของตัวเองครับ

เข้าเรื่องเลย คือผมสังสัยการใช้งาน typedef struc โดยส่วนตัวนะผมไม่ได้ใช้ไอ้เจ้าตัวนี้เลยนับตั้งแต่เรียนมาเคยพอใช้บ้างตอนเรียนโครงสร้างข้อมูลพวก ต้นไม้ทั้งหลาย ลิ้งลัส
แต่เอาตรงๆก็คือแค่การเขียนตาม อัลกอริทึ่มที่มีมาแต่ต้นแล้ว แล้วผมเข้าใจว่ามันใช้สำหรับสร้างชุดข้อมูลขึ้นมา 1 ชุด หรือ กี่ชุดก็ตามแต่แล้วแต่เราจะเรียกใช้ ซึ่งผมไม่รู้ว่าในงาน
ไมโครคอนโทรเลอร์เนี่ยสิ่งพวกนี้เค้าใช้สำหรับทำอะไร หรือใช้เพื่อกำหนดชุดข้อมูลเพื่อแยกเป็นคลาสๆไปแค่นั้นหลอมังก็คงจะไม่ใช่

แล้วอีกตัวเลยสำหรับผมก็คือ พ้อยเตอร์ ตัวนี้ผมใช้แทนการ return ค่าฟังชั่นหนึ่งไปอีกฟังชั่นหนึ่งที่ต้องการค่ามากกว่า 1 ค่า เพราะผมคิดว่าน่าจะประหยัดกว่าการประกาศ globalvar อันนี้ผมคิดเอาเองนะ

ถ้ามีผู้รู้หรือใครก็ได้ที่ทำงานด้านนี้แบบจริงจังแล้วเขียนโปรแกรมเองไม่ก็ทำงานเป็นทีมช่วยตอบสงเคราะห์ผมทีเถอะผมมองภาพยังไม่ออกเลยว่า เจ้าstruc ทั้งหลายจะนำไปใช้กับงานแบบไหน
หรือพอยเตอร์เราเหมาะเอาไปใช้งานแบบไหนอีก

ปล.
ซึ่งเอาเข้าจริงๆตอนนี้รู้ศึกว่าตัวเองรู้น้อยมากๆ ถึงมากที่สุด เลยมาตั้งกระทู้ถาม ใจจริงผมอยากถามอาจารย์ในแผนกเหมือนกันนะแต่รู้ศึกจะติดปัญหาตลอดเลยตอนผมเข้าไปเลยไม่ได้มีโอกาศถามซักที
แล้วก็สำหรับการที่ผมเขียน arduino อย่างเดียวทำให้สกิล ไมโครผมกากมากๆ ซึ่งพอนึกย้อนกลับไป ตอนทำ pic ตอนนั้นผมเขียนติดต่อกับ lcd ผมต้องมานั่งทำความเข้าใจเกี่ยวกับเนื้อหาที่ อาจารย์
สอนตั้ง 3 4 วัน แต่ arduino ผมแค่โหลด lib จึ้กเดียว อยู่เลย  :P เลยคิดว่ามันสดวกโคตรๆจนเกินไป ซึ่งรู้ศึกสำนักจนอยากไปซื้อเจ้าpickit มาเล่นหัดใหม่ซะเหลือเกิ้น

*

Offline JENG

  • *****
  • 808
  • รู้ทุกเรื่องเว้นเรื่องจริง
    • View Profile
ใช้บ่อยจนขาดไม่ได้ ..... ไม่อธิบายนะคับดูเอาเอง


EX.1

Code: [Select]
//--------------------------------------------------
// DMX512 Control 6Channel Model
//--------------------------------------------------
// CH1     0-255       Master dimming                   *** !!! send all device to value[255] at on start up !!! ***
// CH2     0-255       Red dimming
// CH3     0-255       Green dimming
// CH4     0-255       Blue dimming
// CH5     1-255       Strobe control                   *** !!! send all device to value[0] at on start up !!! ***
// CH6     1-255       Master function + sound control  *** !!! send all device to value[0] at on start up !!! ***
//--------------------------------------------------


#define dmxChannel 96


struct _dmx_device_
{
    unsigned char MasterDim;
    unsigned char RedDim;
    unsigned char GreenDim;
    unsigned char BlueDim;
    unsigned char StrobeCtrl;
    unsigned char FunctionCtrl;
};


typedef union
{
    unsigned char dmxData[dmxChannel];
    struct _dmx_device_ DEVICE[12];
}dmxDevice;

dmxDevice DMX_TX,FIRST_VAR,LAST_VAR;




EX.2


Code: [Select]
//-----virtual timer register-----
struct timerStatusBits
{
    unsigned char PEN:1;       //Program enable
    unsigned char SUN:1;       //Sunday
    unsigned char MON:1;       //Monday
    unsigned char TUE:1;       //Tuesday
    unsigned char WED:1;       //Wednesday
    unsigned char THU:1;       //Thursday
    unsigned char FRI:1;       //Friday
    unsigned char SAT:1;       //Saturday
};


union timerStatusGroup
{
    struct timerStatusBits REGbits;
    unsigned char REG;
};


struct timerGroup
{
    union timerStatusGroup Status;
    unsigned char SecOn;
    unsigned char MinOn;
    unsigned char HorOn;
    unsigned char SecOf;
    unsigned char MinOf;
    unsigned char HorOf;
};


volatile union
{
    struct timerGroup Program[25];
}VTIMER1, VTIMER2, VTIMER3, VTIMER4, VTIMER5, VTIMER6;




EX.3


Code: [Select]
struct bit_field
{
    unsigned char bit0:1;
    unsigned char bit1:1;
    unsigned char bit2:1;
    unsigned char bit3:1;
    unsigned char bit4:1;
    unsigned char bit5:1;
    unsigned char bit6:1;
    unsigned char bit7:1;
}bit_field;


volatile union
{
    struct bit_field bit_of_data;
    unsigned char byte_of_data;
}status1, status2;


#define blink_flag                      status1.bit_of_data.bit0
#define set_time_blink_flag             status1.bit_of_data.bit1
#define del_succ_dsp_flag               status1.bit_of_data.bit2
#define add_succ_dsp_flag               status1.bit_of_data.bit3
#define lcd_update_flag                 status1.bit_of_data.bit4
#define beep1_en_flag                   status1.bit_of_data.bit5
#define write_menu_flag                 status1.bit_of_data.bit6
#define TOUT                            status1.bit_of_data.bit7


#define save_succ_dsp_flag              status2.bit_of_data.bit0


EX.4

Code: [Select]
struct max6675data
{
    unsigned int state:1;
    unsigned int device_id:1;
    unsigned int thermocouple_input:1;
    unsigned int temperature_reading:12;
    unsigned int dummy_sign_bit:1;
};


volatile union
{
    unsigned int PROTOCOL;
    struct max6675data PROTOCOLbits;
}RD_TEMP;








สามารถติดตาม electoday ได้ที่

Facebook
www.facebook.com/groups/coopmicro

Google+
https://plus.google.com/communities/103482067769375459277

☺☺☺ความรู้ และความฉลาด ไม่ใช่สิ่งเดียวกัน จะมีประโยชน์อะไร ถ้าฉลาดแต่อยู่ในกะลา☺☺☺


เดียวจะนำไปดูเป็นตัวอย่างเพิ่มเติมกับหยังสือที่อาจารย์ให้มาครับ ขอบคุณทุกท่านมาก

*

Offline wlasoi

  • *****
  • 757
    • View Profile
typedef กับ pointer กับภาษา C มันเป็นของคู่กัน ครับ!   ช่วยให้ code เข้าใจได้ง่ายขึ้นใช้งานได้สะดวกขึ้น สื่อสารกับผู้ใช้งานได้สะดวก โดยเฉพาะคนที่ต้องทำ libary
ให้คนอื่นใช้ด้วย ไม่ต้อง อธิบายให้มากความ .. ส่วน pointer ช่วยให้การใช้งานหน่วยความจำมีประสิทธิภาพมากยิ่งขึ้นโดยเฉพาะ การใช้งานร่วมกับ stanard libary หรือ
ที่เรียกสั้นๆว่า ANSI-C ยิ่งพวกต้องเรียกใช้งาน stdio.h บ่อยๆ นี่จำเป็นมากๆ ใช้บ่อยๆเดี่ยวก็เข้าใจเองไม่ยาก แต่ถ้าจะให้เข้าใจง่ายๆ ใช้กับเครื่องมือ ที่สามารถ debug code
ได้ จะช่วยให้เช้าใจง่ายยิ่งขึ้น