mickey
23-04-2013, 11:04 AM
Toán tử gán (=). Ex:
c code
b = 5;
a = 2 + b;
a = 2 + (b = 5);
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
++
c code
a++; <=> a+=1; <=> 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
( , !=, >, <, >=, <= )
c code
Bằng
!= Khác
> Lớn hơn
< Nhỏ hơn
> = Lớn hơn hoặc bằng
< = Nhỏ hơn hoặc bằng
EX
c code
(7 5) sẽ trả giá trị false
(6 >= 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
(a*b >= c) sẽ trả giá trị true.
(b+4 < 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
!(5 5) trả về false vì biểu thức bên phải (5 5) có giá trị true.
!(6 <= 4) trả về true vì (6 <= 4)có giá trị false.
!true trả về false.
!false trả về true.
( (5 5) && (3 > 6) ) trả về false ( true && false ).
( (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 :: scope Trái
2 () [ ] -> . sizeof Trái
3 ++ tăng/giảm Phải
~ Đảo ngược bit
! NOT
& * Toán tử con trỏ
(type) Chuyển đổi kiểu
+ - Dương hoặc âm
4 * / % Toán tử số học Trái
5 + - Toán tử số học Trái
6 << >> Dịch bit Trái
7 < <= > >= Toán tử quan hệ Trái
8 != Toán tử quan hệ Trái
9 & ^ | Toán tử thao tác bit Trái
10 &&
hieplong
23-04-2013, 11:04 AM
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
{
}
cpmhoabinh
23-04-2013, 11:04 AM
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
if (x 100) x++;
nếu x=100 thì tăng x thêm 1
->if (condition) statement1 else statement2
c code
if (x 100) x++;
else x--;
nếu x=100 thì tăng x thêm 1 còn không thì giảm x.
marinehubvn
23-04-2013, 11:04 AM
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
ctyxdcaosu
23-04-2013, 11:04 AM
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
void delayms(int n)
{
int i,j; // khai bao bien chi trong chuong trinh con
for (i=0;i<n;i++)
for (j=0;j<1500;j++) {} // tham so j tuy thach anh toc do vxl ma cac
//ban thay doi cho phu hop
}
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
switch (expression) {
case constant1:
block of instructions 1
break;
case constant2:
block of instructions 2
break;
.
.
.
default:
default block of instructions
}
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
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" Project ");
lcd_gotoxy(0,1);
lcd_putsf(" Mode select ");
delayms(700);
lcd_clear();
while (1)
{
while(1) //chon che do
{
delayms(300);
lcd_gotoxy(0,0);
lcd_putsf(" Sys");
switch(mode)
{
case 1:lcd_gotoxy(5,0);lcd_putsf(" Run DC ");break;
case 2:lcd_gotoxy(5,0);lcd_putsf(" PWM ");break;
case 3:lcd_gotoxy(5,0);lcd_putsf(" Vdc ");break;
case 4:lcd_gotoxy(5,0);lcd_putsf(" test ");break;
}
lcd_gotoxy(0,1);
lcd_putsf(" Mode ");
lcd_gotoxy(10,1);
lcd_putnum(mode);
if (!enter) {break;}
if (!next) {if (mode++>3) mode=1 ;delayms(200);}
if (!back) {if (mode--<2) mode=4 ;delayms(200);}
}
switch (mode)
{
case 1: break; //lam cong viec thu 1
case 2: break; //lam cong viec thu 2
case 3: break; //lam cong viec thu 3
case 4: break; //lam cong viec thu 4
Writing C Code for the 8051
Các kiểu biến.
c code
Type(Bits,Bytes,Range)
char (8,1, -128 to +127)
unsigned char (8,1,0 to 255)
enum (16,2,-32,768 to +32,767)
short (16,2,-32,768 to +32,767)
unsigned short (16,2,0 to 65,535)
int (16,2,-32,768 to +32,767)
unsigned int (16,2,0 to 65,535)
long (32,4, -2,147,483,648 to +2,147,483,647)
unsigned long (32,4, 0 to 4,294,697,295)
//nhung kieu bien duoi chi dung rieng trong Keil C
bit (1,0,0 to 1)
sbit (1,0,0 to 1)
sfr (8,1,0 to 255)
sf16 (16,2,0 to 65,535)
data địa chỉ trực tiếp MOV A, 07Fh
idata địa chỉ gián tiếp MOV R0, #080h
MOV A, R0
xdata bộ nhớ ngoài MOVX @DPTR
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;
mxuan
23-04-2013, 11:04 AM
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
org 00h
ljmp main
org 0003h
ljmp ngat0
org 30h
main:
...
Here: sjmp Here
ngat0:
...
reti
code C
box code
void main
{
...
while(1)
}
void ngat0(void) interrupt 0
{
...
}
lienhiepvt2006
23-04-2013, 11:04 AM
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!
raytuner0717
23-04-2013, 11:04 AM
có lap trình hợp ngữ cho vi điều khiển không vậy bạn
truong3an
23-04-2013, 11:04 AM
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:(
dwengvn
23-04-2013, 11:04 AM
bạn đọc tài liệu này coi có giúp gì được cho bạn không.
http://rapidshare.com/files/396172438/PIC.rar.html
vBulletin v3.6.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.