Thứ Sáu, 24 tháng 9, 2010

tông hợp Lập trình C cho VXL - Cơ bản

ác bạn xem tới bài gần cuối đã có bản Pdf toàn bộ tài liệu này do VAGAM thực hiện

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

c code

1.

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




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ảmc code 1. ++ c code 1. a++; <=> a+=1; <=> a=a+1; tính chất tiền tố hoặc hậu tố (++a) # (a++) ExB=3;B=3;A=++B;// A is 4, B is 4B=3;A=B++;// A is 3, B is 4Các toán tử quan hệc code 1. ( , !=, >, <, >=, <= )c code 1. 2. Bằng 3. != Khác 4. > Lớn hơn 5. < Nhỏ hơn 6. > = Lớn hơn hoặc bằng 7. < = Nhỏ hơn hoặc bằng 8. EXc code 1. 2. (7 5) sẽ trả giá trị false 3. (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=6c code 1. 2. (a*b >= c) sẽ trả giá trị true. 3. (b+4 < a*c) sẽ trả giá trị false 4. Chú ý rằng = (một dấu bằng) lf hoàn toàn khác vớic code 1.(hai dấu bằng). (c code 1.) 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|| OREX:(3 > 6)) trả về true ( true code

1.

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






giotdang1985@yahoo.com


thtam | 11:00:18 05-08-07 | Posts: 23 2
Kiến thức C cơ bản dùng lập trình VXL

kiến thức này rất cần cho những người như tôi, chỉ quen dùng asm và bascom.

mong bạn tiếp tục viết các kiến thức C mà bạn đã dùng cho vi điều khiển?

Bạn có thể nói qua khoảng bao nhiêu lệnh C và nhiều ko vậy?

Nếu học thì tốn khoản nhiều thời gian không bạn? có thể bắt đầu bằng các bài nào vậy?

Chúc bạn luôn vui!





Nothing is not possible!!!
I am doing and it will be done by me!

thật tuyệt vời, em xin hỏi cách viết 1 delay trong C cho mọi vi điều khiển là thế nào ạ?

Em ví dụ sau nhé:
Bài toán kiểm tra relay, nếu thay đổi vị trí relay thì mở động cơ lên.

box code

1.
org
2.

3.
dc_cong_tac euq bit 1.0
4.

5.
relay euq bit 1.1
6.

7.
main
8.

9.
abc: // Nhản
10.
djnz relay, 0 // kiem tra trang thay relay co ở mức thấp ko
11.
lmp: abc //quay lại nhản nếu relay chưa đổi trạng thái
12.
set dc_cong_tac // bật động cơ để mở công tắc (công tắc đèn chẳng hạn)
13.

14.
ret



(Lâu quá em ko viết lại ASM, có gì nhờ anh trietnguyen chỉ giúp lại chỗ sai)

Vậy chyển qua C thì thế nào ạ? thanks các anh



mitvn@gmail.com
Một ngày mitvn sẽ giỏi lập trình!
Ai có câu hỏi gì về C, và matlab cứ viết lên để giúp tôi tiến bộ hơn với nhé!
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.

2.
org 00h
3.
ljmp main
4.
org 0003h
5.
ljmp ngat0
6.
org 30h
7.

8.
main:
9.
...
10.
Here: sjmp Here
11.

12.
ngat0:
13.
...
14.
reti



code C

box code

1.

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


Chào bạn,

. Keil C và Codevison tuy cùng dùng C khác nhau ở các lệnh hỗ trợ cho từng loại vđk. Đó tạo ra nét riêng của từng trình biên dịch, cái nào mạnh hơn cái nào một phần cũng là do vậy.

. Về C trong Keil: chẳng hạn kiểu dữ liệu bit, sbit, sfr.. chỉ gọi là C của Keil thôi. còn cấu trúc while.. là C chuẩn. những kiểu dữ liệu đó của riêng từng trình biên dịch, nhà sx quy định.
Ngoài ra Keil còn chứa các lệnh hỗ trợ dành riêng cho vđk, chẳng hạn lệnh

c code

1.
_crol_, _cror_

hoặc trong Bascom có lệnh

c code

1.
lcd, wait..v.v

, đó có thể gọi là lệnh hỗ trợ rồi còn gì biggrin

. Pinnacle dùng Asm, do vậy mình mà mình chỉ nhắc đến ngôn ngữ bậc cao thôi, đó là C và Basic, chắc do bạn đọc k kĩ smile

Chúc thành công !




Nơi nào có ý chí, nơi đó có con đường.
ý bạn thanlan nói dĩ nhiên là cách viết của Keil C rồi (luồng này đang viết về Keil C mà). mà bạn thanlan nói đúng rồi đấy, k hiểu sao bạn giotdang lại viết như vậy nhỉ ?

. chào mitvn, bạn thích học trên diễn đàn là điều rất đáng hoan nghênh, vì đó cũng là một cách học. chính mình cũng bắt đầu học như bạn đây.
. Nhưng muốn theo dõi luồng này tốt, bạn cần có kiến thức căn bản về C. Vì luồng này là "C cho vđk" nên bạn giotdang viết khá vắn tắt về C, chủ yếu là ôn lại thôi sau đó tập trung vào lập trình C cho vđk, trước mắt là 8051. tương tự, bạn ấy cũng không trình bày chi tiết về vdk, nên bạn sẽ thấy rất nhiều thắc mắc, mơ hồ là vậy. Vì thế mình mới khuyên bạn đọc trước về phần cứng vdk và C căn bản là thế.
. Bạn yên tâm đi, 8051 hay AVR hay PIC chung qui lại cũng là vdk 8bit, nên lập trình C cũng không khác nhau mấy. Bạn cứ ôn lại rồi theo dõi luồng này sẽ thấy rất bổ ích đấy ! wink
. Chúng ta thảo luận để cùng nhau tiến bộ mà, vì vậy nếu khi tìm hiểu gặp thắc mắc mình sẽ mở ra luồng mới về "C căn bản" hoặc "tìm hiểu về vdk" chẳng hạn, okie ? wink

Không có nhận xét nào:

Đăng nhận xét