Professional Documents
Culture Documents
Huong Dan Lap Trinh C Va Keil C TNA Edited Ver 1 PDF
Huong Dan Lap Trinh C Va Keil C TNA Edited Ver 1 PDF
Tên_biến sau này sẽ được sử dụng như một kiểu dữ liệu mới và có thể dùng để
khai báo các biến khác
Ví dụ: typedef int m5[5];
Dùng tên m5 khai báo hai biến tên a và b có kiểu dữ liệu là
mảng 1 chiều 5 phần tử: m5 a,b;
typedef struct {
Khai báo các biến thành phần;
} Tên_kiểu_cấu_trúc;
Khai báo:
Biến_1 = Biến_2;
Trong đó Biến_2 có thể là giá trị xác định cũng có thể là biến.
1.2.2.2. Phép toán số học
Phép toán Ý nghĩa Ví dụ
+ Phép cộng X=a+b
- Phép trừ X=a-b
* Phép nhân X=a*b
/ Phép chia lấy phần nguyên X=a/b
(a=9, b=2 → X=4)
% Phép chia lấy phần dư a%b
(a=9, b=2 → X=1)
1.2.2.3. Phép toán Logic
AND: &&
OR: ||
NOT: !
1.2.2.4. Các phép toán so sánh:
Phép toán Ý nghĩa Ví dụ
> So sánh lớn hơn a >b VD: 4>5 các giá trị 0
>= So sánh lớn hơn hoặc bằng a>=b VD: 6>=2 các giá trị 1
< So sánh nhỏ hơn a<b VD: 6<7 các giá trị 1
<= So sánh nhỏ hơn hoặc bằng a<=b VD: 8<=5 các giá trị 0
1.2.2.5. Phép toán thao tác Bit
Phép toán Ý nghĩa Ví dụ
& Phép và (AND) Bit_1 & Bit_2
| Phép hoặc (OR) Bit_1 | Bit_2
! Phép đảo (NOT) !Bit_1
^ Phép hoặc loại trừ (XOR) Bit_1 ^ Bit_2
<< số bit cần dịch Dịch trái – một hoặc nhiều bit a<<3
>> số bit cần dịch Dịch phải – một hoặc nhiều bit a>>4
~ Lấy bù theo bit ~a
1.2.2.6. Phép toán kết hợp
Phép toán Ví dụ
+= a+=5 <=> a=a+5
-= a-=5 <=> a=a-5
*= a*=5 <=> a=a*5
/= a/=5 <=> a=a/5
%= a%=5 <=> a=a%5
- Ví dụ:
#include<regx51.h>
#include<string.h> Khai báo chỉ thị tiền xử lý
#sbit NUT_ON P1^0
Ở cách 1 nếu tên_macro chưa được định nghĩa “Đoạn chương trình” sẽ được
dịch ngược lại “Đoạn chương trình” sẽ bị bỏ qua.
if (dieu_kien)
{
// Đoạn chương trình
}
Giải thích: nếu dieu_kien đúng thì xử lí các câu lệnh bên trong còn sai thì bỏ qua.
Cấu trúc:
if (dieu_kien)
{
// Đoạn chương trình 1
}
else
{
// Đoạn chương trình 2
}
Giải thích: nếu dieu_kien đúng thì xử lí “Đoạn chương trình 1” bên trong còn sai
thì xử lý “Đoạn chương trình 2”.
switch (bien)
{
case gia_tri_1: {//các câu lệnh break;}
case gia_tri_2: {//các câu lệnh break;}
case gia_tri_3: {//các câu lệnh break;}
……………………………………...
case gia_tri_n: {//các câu lệnh break;}
}
while (dieu_kien)
{
// các câu lệnh
}
Giải thích: kiểm tra điều kiện đúng thì thực hiện các câu lệnh, nếu điều kiện sai
thì thoát khỏi vòng lặp.
1.3.5. Vòng lặp không xác định do while:
Cấu trúc:
do
{
// các câu lệnh
}
while (dieu_kien);
Giải thích: thực hiện các câu lệnh sau đó kiểm tra điều kiện nếu đúng thì lặp lại
thực hiện tiếp, nếu sai thì thoát khỏi vòng lặp.
- Hàm ngắt không được phép trả lại giá trị hay truyền tham biến vào hàm.
- Tên hàm bất kì.
- Interrupt là từ khóa chỉ hàm ngắt.
- Nguồn ngắt từ 0 tới 5 theo bảng vector ngắt.
STT Interrupt Flag Vector Address
- System Reset RST 0000H
0 External 0 IE0 0003H
1 Timer 0 TF0 000BH
2 External 1 IE1 0013H
3 Timer 1 TF1 001BH
4 Serial Port RI or TI 0023H
5 Timer 2 TF2 or EXF2 002BH
- Không tính ngắt reset hệ thống, bắt đầu tính từ ngắt ngoài 0.
- Băng thanh ghi trên RAM, chọn từ 0 đến 3.
- Tạo 1 project mới, vào menu Project → chọn New uVision Project… :
- Chọn vi điều khiển ATMEL AT89S52 OK chọn câu trả lời NO khi
được hỏi “Copy standard 8051 startup code to project and add file to project” vì ta
không cần copy đoạn mã khởi tạo 8051 của chương trình Keil C.
- Chọn file chương trình và có phần mở rộng .C đã tạo bước trên Add Close.
- Thay đổi kích thước font chữ trong cửa sổ soạn thảo: Chọn menu Edit
Configuration Chọn Colors & Fonts 8051: Editor C Files Text Font
Size:15.
- Trong trường hợp cần tìm hiểu các định nghĩa sẵn có của phần mềm ta bấm phím
phải chuột trên dòng chữ <REGX51.H> Open document <REGX51.H>.
Để hiển thị các ngõ vào ra, các thanh ghi ta chọn menu Peripherals I/O Ports
Port 0 ….
Ta có kết qua là 1 cửa sổ nhỏ Parallel Port xuất hiện, đó là ngõ vào ra giúp ta mô
phỏng port 0 của vi điều khiển. Dấu tick tương đương ngõ vào/ra ở mức cao (5V),
ngược lại ở mức thấp 0V. Trong menu Peripherals còn có các thành phần ngoại vi khác
như timer, interrupt, serial.
* Lưu ý: Để cho phép hiển thị hay không phần lệnh ASM khi biên dịch ta cho
menu View Disassembly Windows.