Xem bài viết riêng lẻ
  #5  
Cũ 23-04-2013, 11:04 AM
ctyxdcaosu ctyxdcaosu đang online
Junior Member
 
Tham gia ngày: Jun 2012
Bài gửi: 10
Mặc định

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<n;i++)
  5. for (j=0;j<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


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;
Trả lời với trích dẫn