• Member Login:

+ Trả Lời Ðề Tài
Trang 1/2 1 2 cuốicuối
Hiện kết quả từ 1 tới 10 của 16
  1. #1
    Administrator
    Tham gia ngày
    May 2010
    Đến từ
    Hà Nội
    Bài gửi
    474
    Thanks
    Thanked 263 Times in 165 Posts

    Lập trình C cho Vi điều khiển tiếng việt

    Tùy chỉnh font chữ: Xem với cỡ chữ lớn hơn Xem với cỡ chữ nhỏ hơn


    Toán tử gán (=). Ex:

    c code
    1. b = 5;
    2. a = 2 + b;
    3. a = 2 + (b = 5);
    4. a = b = c = 5;


    Các toán tử số học ( +, -, *, /, % )
    + cộng
    - trừ
    * nhân
    / chia
    % lấy phần dư (trong phép chia)

    Các toán tử gán phức hợp (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)
    value += increase; tương đương với value = value + increase;
    a -= 5; tương đương với a = a - 5;
    a /= b; tương đương với a = a / b;
    price *= units + 1; tương đương với price = price * (units + 1);

    Tăng và giảm c code
    1. ++


    c code
    1. a++; &lt;=&gt; a+=1; &lt;=&gt; a=a+1;


    tính chất tiền tố hoặc hậu tố (++a) # (a++) Ex

    B=3;
    B=3;A=++B;
    // A is 4, B is 4

    B=3;
    A=B++;
    // A is 3, B is 4

    Các toán tử quan hệ c code
    1. ( , !=, &gt;, &lt;, &gt;=, &lt;= )


    c code
    1. Bằng
    2. != Khác
    3. &gt; Lớn hơn
    4. &lt; Nhỏ hơn
    5. &gt; = Lớn hơn hoặc bằng
    6. &lt; = Nhỏ hơn hoặc bằng


    EX

    c code
    1. (7 5) sẽ trả giá trị false
    2. (6 &gt;= 6) sẽ trả giá trị true


    tất nhiên thay vì sử dụng các số, chúng ta có thể sử dụng bất cứ biểu thức nào. Cho a=2, b=3 và c=6

    c code
    1. (a*b &gt;= c) sẽ trả giá trị true.
    2. (b+4 &lt; a*c) sẽ trả giá trị false


    Chú ý rằng = (một dấu bằng) lf hoàn toàn khác với c code
      (hai dấu bằng). ( c code
        ) nhằm so sánh còn (=)gán giá trị của biểu thức bên phải cho biến ở bên trái .

        Các toán tử logic ( !, &&, || ).
        ! NOT
        && AND
        || OR

        EX:
        (3 > 6)) trả về true ( true code
        1. !(5 5) trả về false vì biểu thức bên phải (5 5) có giá trị true.
        2. !(6 <= 4) trả về true vì (6 <= 4)có giá trị false.
        3. !true trả về false.
        4. !false trả về true.
        5. ( (5 5) && (3 > 6) ) trả về false ( true && false ).
        6. ( (5 5)


        Các toán tử thao tác bit ( &, |, ^, ~, <<, >> ).

        & AND Logical AND
        | OR Logical OR
        ^ XOR Logical exclusive OR
        ~ NOT Đảo ngược bit
        << SHL Dịch bit sang trái
        >> SHR Dịch bit sang phải

        Thứ tự ưu tiên của các toán tử

        Toán tử logic Trái
        11 ?: Toán tử điều kiện Phải
        12 = += -= *= /= %=
        >>= <<= &= ^= |= Toán tử gán Phải
        13 , Dấu phẩy Trái
        code
        1. 1 :: scope Trái
        2. 2 () [ ] -> . sizeof Trái
        3. 3 ++ tăng/giảm Phải
        4. ~ Đảo ngược bit
        5. ! NOT
        6. & * Toán tử con trỏ
        7. (type) Chuyển đổi kiểu
        8. + - Dương hoặc âm
        9. 4 * / % Toán tử số học Trái
        10. 5 + - Toán tử số học Trái
        11. 6 << >> Dịch bit Trái
        12. 7 < <= > >= Toán tử quan hệ Trái
        13. 8 != Toán tử quan hệ Trái
        14. 9 & ^ | Toán tử thao tác bit Trái
        15. 10 &&

        Xem chủ đề mới nhất cùng loại:

        ►Chia Sẻ Cho Bạn Bè:


        Bạn hãy cùng Admin xây dựng DIENDANDIEN.COM nhé

      1. #2
        Administrator
        Tham gia ngày
        May 2010
        Đến từ
        Hà Nội
        Bài gửi
        474
        Thanks
        Thanked 263 Times in 165 Posts


        Cấu trúc cơ bản của 1 chương trình C

        //Các chỉ thị tiền định
        #include <lcd.h> //Gọi thư viện có sẵn cách viết khác "*.h"
        #define led1 PORTA.0 //dùng định nghĩa các biến

        char bien1,bien2; //cac bien can dung
        int a,b;

        void chuongtrinhcon(void)
        {

        }

        int ham(void)
        {

        }

        void main(void) //chương trình chính
        {

        }

        Bạn hãy cùng Admin xây dựng DIENDANDIEN.COM nhé

      2. #3
        Administrator
        Tham gia ngày
        May 2010
        Đến từ
        Hà Nội
        Bài gửi
        474
        Thanks
        Thanked 263 Times in 165 Posts


        Các lệnh cơ bản của C

        Cấu trúc điều kiện: if và else

        ->if (condition) statement

        c code
        1. if (x 100) x++;


        nếu x=100 thì tăng x thêm 1

        ->if (condition) statement1 else statement2

        c code
        1. if (x 100) x++;
        2. else x--;


        nếu x=100 thì tăng x thêm 1 còn không thì giảm x.

        Bạn hãy cùng Admin xây dựng DIENDANDIEN.COM nhé

      3. #4
        Administrator
        Tham gia ngày
        May 2010
        Đến từ
        Hà Nội
        Bài gửi
        474
        Thanks
        Thanked 263 Times in 165 Posts


        Các lệnh cơ bản của C

        Các cấu trúc lặp

        Vòng lặp while .
        Dạng của nó như sau:
        while (expression) statement

        while(1) {};

        Tạo vòng lặp mãi mãi , rất hay đùng trong lập trình VXL .Chương trình chính sẽ được viết trong dấu ngoặc.

        Vòng lặp do-while
        Dạng thức:
        do statement while (condition);

        do
        {
        x++; // cho nay cac ban co the viet nhieu cau lenh ,
        }
        while(x>10)

        tăng giá trị của x cho đến khi x > 10

        Chức năng của nó là hoàn toàn giống vòng lặp while chỉ trừ có một điều là điều kiện điều khiển vòng lặp được tính toán sau khi statement được thực hiện, vì vậy statement sẽ được thực hiện ít nhất một lần ngay cả khi condition không bao giờ được thoả mãn .Như vd trên kể cả x >10 thì nơ vẫn tăng giá trị 1 lần trước khi thoát

        Bạn hãy cùng Admin xây dựng DIENDANDIEN.COM nhé

      4. #5
        Administrator
        Tham gia ngày
        May 2010
        Đến từ
        Hà Nội
        Bài gửi
        474
        Thanks
        Thanked 263 Times in 165 Posts


        Các lệnh cơ bản của C



        Vòng lặp for .

        Dạng thức:

        for (initialization; condition; increase) statement;
        và chức năng chính của nó là lặp lại statement chừng nào condition còn mang giá trị đúng, như trong vòng lặp while. Nhưng thêm vào đó, for cung cấp chỗ dành cho lệnh khởi tạo và lệnh tăng. Vì vậy vòng lặp này được thiết kế đặc biệt lặp lại một hành động với một số lần xác định.
        Cách thức hoạt động của nó như sau:

        1, initialization được thực hiện. Nói chung nó đặt một giá khí ban đầu cho biến điều khiển. Lệnh này được thực hiện chỉ một lần.
        2, condition được kiểm tra, nếu nó là đúng vòng lặp tiếp tục còn nếu không vòng lặp kết thúc và statement được bỏ qua.
        3, statement được thực hiện. Nó có thể là một lệnh đơn hoặc là một khối lệnh được bao trong một cặp ngoặc nhọn.
        4, Cuối cùng, increase được thực hiện để tăng biến điều khiển và vòng lặp quay trở lại bước 2.

        Phần khởi tạo và lệnh tăng không bắt buộc phải có. Chúng có thể được bỏ qua nhưng vẫn phải có dấu chấm phẩy ngăn cách giữa các phần. Vì vậy, chúng ta có thể viết for (;n<10 hoặc for (;n<10;n++).
        Bằng cách sử dụng dấu phẩy, chúng ta có thể dùng nhiều lệnh trong bất kì trường nào trong vòng for, như là trong phần khởi tạo. Ví dụ chúng ta có thể khởi tạo một lúc nhiều biến trong vòng lặp:
        for ( n=0, i=100 ; n!=i ; n++, i-- )
        {
        // cái gì ở đây cũng được...
        }
        Vi dụ điển hình nhất trong lập trình VXL
        c code
        1. void delayms(int n)
        2. {
        3. int i,j; // khai bao bien chi trong chuong trinh con
        4. for (i=0;i&lt;n;i++)
        5. for (j=0;j&lt;1500;j++) {} // tham so j tuy thach anh toc do vxl ma cac
        6. //ban thay doi cho phu hop
        7. }


        Các lệnh rẽ nhánh và lệnh nhảy

        Lệnh break.

        Sử dụng break chúng ta có thể thoát khỏi vòng lặp ngay cả khi điều kiện để nó kết thúc chưa được thoả mãn. Lệnh này có thể được dùng để kết thúc một vòng lặp không xác định hay buộc nó phải kết thúc giữa chừng thay vì kết thúc một cách bình thường. Ví dụ, chúng ta sẽ dừng việc đếm ngược trước khi nó kết thúc:

        Lệnh continue.
        Lệnh continue làm cho chương trình bỏ qua phần còn lại của vòng lặp và nhảy sang lần lặp tiếp theo. Ví dụ chúng ta sẽ bỏ qua số 5 trong phần đếm ngược:

        Lệnh goto.
        Lệnh này cho phép nhảy vô điều kiện tới bất kì điểm nào trong chương trình. Nói chung bạn nên tránh dùng nó trong chương trình C++. Tuy nhiên chúng ta vẫn có một ví dụ dùng lệnh goto để đếm ngược:

        Hàm exit.
        Mục đích của exit là kết thúc chương trình và trả về một mã xác định. Dạng thức của nó như sau
        void exit (int exit code);
        exit code được dùng bởi một số hệ điều hành hoặc có thể được dùng bởi các chương trình gọi. Theo quy ước, mã trả về 0 có nghĩa là chương trình kết thúc bình thường còn các giá trị khác 0 có nghĩa là có lỗi.

        các lệnh trên mình chủ yếu chỉ dùng lệnh break để thoát khỏi vòng lặp . Các lệnh khác thường rất ít dược sử dụng

        Đây là 1 đoạn code nhỏ mình trích ra từ chương trình của mình
        c code
        1. while(1)
        2. {
        3. lcd_gotoxy(5,0);lcd_putsf(" Run Thuan ");
        4. thuan();
        5. if(!enter) { lcd_clear();
        6. lcd_putsf("DA DUNG ");
        7. stop();break;}
        8. }
        Cấu trúc lựa chọn: switch.

        Cú pháp của lệnh switch hơi đặc biệt một chút. Mục đích của nó là kiểm tra một vài giá trị hằng cho một biểu thức, tương tự với những gì chúng ta làm ở đầu bài này khi liên kết một vài lệnh if và else if với nhau. Dạng thức của nó như sau:

        box code
        1. switch (expression) {
        2. case constant1:
        3. block of instructions 1
        4. break;
        5. case constant2:
        6. block of instructions 2
        7. break;
        8. .
        9. .
        10. .
        11. default:
        12. default block of instructions
        13. }


        Nó hoạt động theo cách sau: switch tính biểu thức và kiểm tra xem nó có bằng constant1 hay không, nếu đúng thì nó thực hiện block of instructions 1 cho đến khi tìm thấy từ khoá break, sau đó nhảy đến phần cuối của cấu trúc lựa chọn switch.
        Còn nếu không, switch sẽ kiểm tra xem biểu thức có bằng constant2 hay không. Nếu đúng nó sẽ thực hiện block of instructions 2 cho đến khi tìm thấy từ khoá break.
        Cuối cùng, nếu giá trị biểu thức không bằng bất kì hằng nào được chỉ định ở trên (bạn có thể chỉ định bao nhiêu câu lệnh case tuỳ thích), chương trình sẽ thực hiện các lệnh trong phần default: nếu nó tồn tại vì phần này không bắt buộc phải có.

        box code
        1. lcd_clear();
        2. lcd_gotoxy(0,0);
        3. lcd_putsf(" Project ");
        4. lcd_gotoxy(0,1);
        5. lcd_putsf(" Mode select ");
        6. delayms(700);
        7. lcd_clear();
        8. while (1)
        9. {
        10. while(1) //chon che do
        11. {
        12. delayms(300);
        13. lcd_gotoxy(0,0);
        14. lcd_putsf(" Sys");
        15. switch(mode)
        16. {
        17. case 1:lcd_gotoxy(5,0);lcd_putsf(" Run DC ");break;
        18. case 2:lcd_gotoxy(5,0);lcd_putsf(" PWM ");break;
        19. case 3:lcd_gotoxy(5,0);lcd_putsf(" Vdc ");break;
        20. case 4:lcd_gotoxy(5,0);lcd_putsf(" test ");break;
        21. }
        22. lcd_gotoxy(0,1);
        23. lcd_putsf(" Mode ");
        24. lcd_gotoxy(10,1);
        25. lcd_putnum(mode);
        26. if (!enter) {break;}
        27. if (!next) {if (mode++>3) mode=1 ;delayms(200);}
        28. if (!back) {if (mode--<2) mode=4 ;delayms(200);}
        29. }
        30. switch (mode)
        31. {
        32. case 1: break; //lam cong viec thu 1
        33. case 2: break; //lam cong viec thu 2
        34. case 3: break; //lam cong viec thu 3
        35. case 4: break; //lam cong viec thu 4
        Writing C Code for the 8051

        Các kiểu biến.
        c code
        1. Type(Bits,Bytes,Range)
        2. char (8,1, -128 to +127)
        3. unsigned char (8,1,0 to 255)
        4. enum (16,2,-32,768 to +32,767)
        5. short (16,2,-32,768 to +32,767)
        6. unsigned short (16,2,0 to 65,535)
        7. int (16,2,-32,768 to +32,767)
        8. unsigned int (16,2,0 to 65,535)
        9. long (32,4, -2,147,483,648 to +2,147,483,647)
        10. unsigned long (32,4, 0 to 4,294,697,295)
        11. //nhung kieu bien duoi chi dung rieng trong Keil C
        12. bit (1,0,0 to 1)
        13. sbit (1,0,0 to 1)
        14. sfr (8,1,0 to 255)
        15. sf16 (16,2,0 to 65,535)
        16. data địa chỉ trực tiếp MOV A, 07Fh
        17. idata địa chỉ gián tiếp MOV R0, #080h
        18. MOV A, R0
        19. xdata bộ nhớ ngoài MOVX @DPTR
        20. code bộ nhớ chương trình MOVC @A+DPTR

        VD
        unsigned int data bien = 0; // them data vao khai bao kieu bien

        Chú ý rằng , bạn có thể không cần khai báo cụ thể , chỉ cần
        unsigned int checksum = 0;

        Bạn hãy cùng Admin xây dựng DIENDANDIEN.COM nhé

      5. #6
        Administrator
        Tham gia ngày
        May 2010
        Đến từ
        Hà Nội
        Bài gửi
        474
        Thanks
        Thanked 263 Times in 165 Posts


        Writing C Code for the 8051

        Interrupt : Vector address ; Interrupt number
        External0 0003h 0
        Timer0 000Bh 1
        External1 0013h 2
        Timer 1 001Bh 3
        Serial 0023h 4

        c code
        1. org 00h
        2. ljmp main
        3. org 0003h
        4. ljmp ngat0
        5. org 30h
        6. main:
        7. ...
        8. Here: sjmp Here
        9. ngat0:
        10. ...
        11. reti


        code C
        box code
        1. void main
        2. {
        3. ...
        4. while(1)
        5. }
        6. void ngat0(void) interrupt 0
        7. {
        8. ...
        9. }

        Bạn hãy cùng Admin xây dựng DIENDANDIEN.COM nhé

      6. The Following User Says Thank You to Admin For This Useful Post:

        chien89 (12-10-2010)

      7. #7
        Junior Member
        Tham gia ngày
        May 2010
        Bài gửi
        1
        Thanks
        Thanked 0 Times in 0 Posts


        sap anh k up cái file tài liệu của vagam lên đỡ phải viết ạ.anh có thể làm các bài demo k ? em cảm ơn anh!

        ****Học để làm việc****

      8. #8
        Member
        Tham gia ngày
        May 2010
        Đến từ
        Hải Dương
        Bài gửi
        97
        Thanks
        Thanked 16 Times in 14 Posts


        có lap trình hợp ngữ cho vi điều khiển không vậy bạn

        Vâng Tui Nghèo!

      9. #9
        Junior Member
        Tham gia ngày
        Jun 2010
        Bài gửi
        2
        Thanks
        Thanked 0 Times in 0 Posts


        Mấy anh có biết cách học C hiệu quả không , em đang học ASM nhưng muốn chuyển qua C mà sao thấy khó hiểu quá . Đọc đi đọc lại mà vẫn chưa thông

        Bạn hãy cùng vinli xây dựng DIENDANDIEN.COM nhé

      10. #10
        Senior Member
        Tham gia ngày
        May 2010
        Đến từ
        C.Đ Viễn Đông TPHCM
        Bài gửi
        127
        Thanks
        Thanked 23 Times in 15 Posts


        Nguyên văn bởi vinli Xem bài viết
        Mấy anh có biết cách học C hiệu quả không , em đang học ASM nhưng muốn chuyển qua C mà sao thấy khó hiểu quá . Đọc đi đọc lại mà vẫn chưa thông
        bạn đọc tài liệu này coi có giúp gì được cho bạn không.
        [Chỉ có thành viên mới có thể nhìn thấy đường links. ]

        CAO VĂN HƯỞNG.
        Cao Đẳng Viễn Đông TPHCM.

      11. The Following User Says Thank You to caovanhuong For This Useful Post:

        vinli (08-06-2010)

      Múi giờ GMT. Hiện tại là 10:34 PM
      Powered by: VBB v4.1.5 Copyright ©2000-2014, Jelsoft Enterprises Ltd.
      SEO by vBSEO 3.5.2 DIỄNĐÀNĐIỆN.COM
      Xây Dựng Và Phát Triển Bởi Các Thành Viên DienDanDien.Com
      + DDD là một hệ thống mở, chúng tôi sẽ không chịu trách nhiệm về nội dung đăng tải do thành viên đưa lên
      + Truy cập và sử dụng Website này nghĩa là bạn đã chấp nhận Quy Định của Diễn Đàn
      Trang chủ | Diễn đàn |