Simulacrum, từ simulacrum Latin, là một sự bắt chước, giả mạo hoặc hư cấu. Khái niệm này được liên kết với mô phỏng, đó là hành động mô phỏng .Một...
Lập trình C trong CodeVisionAVR – Thiết Kế Mạch Điện Tử
1. Khai báo thư viện
Ta sử dụng khai báo #include, VD: #include
Khai báo này báo cho trình biên dịch biết lấy file thư viện trong thư mục mặc định của CAVR
Cách 2 là #include “adc.h” Khai báo này trình biên dịch sẽ tìm file trong thư mục Project của ta.
2. Khai báo tên thay thế
Bạn đang đọc: Lập trình C trong CodeVisionAVR – Thiết Kế Mạch Điện Tử
Ta sử dụng khai báo #define BUT PINC.5 Từ BUT sẽ thay cho PINC.5, tương tự ta có thể khai báo bất kỳ dữ liệu nào bạn muốn #define Time 400 ………….
3. Khai báo kiểu dữ liệu biến
Kiểu |
Số Byte |
Khoảng giá trị |
Char | 1 | -128 – +127 |
Unsigned char | 1 | 0 – 255 |
Int | 2 | -32768 – +32767 |
Unsigned int | 2 | 0 – 65535 |
Long | 4 | -2147483648 – +2147483647 |
Unsigned long | 4 | 0 – 4294967295 |
Float | 4 |
VD: unsigned char time; hoặc unsigned int dem=1000; (Gán giá trị ban đầu cho biến, mặc định = 0)
Khai báo nhiều biến chung một kiểu dữ liệu unsigned char x=10, y=1, z, t;
Lưu ý : Khi sử dụng biến nếu giá trị vượt quá được cho phép sẽ bị tràn và không lưu dc ví dụ như ta khai báo kiểu 8 bit unsigned char mà ta muốn lưu giá trị 257 là bị tràn, ta phải dùng kiểu 16 bit để chứa giá trị trên
4. Khai dữ liệu mảng
– Mảng 1 chiều: unsigned char led[10];
– Mảng 2 chiều:unsigned char led[2][10]; Công thức dữ liệu: 2×10 dữ liệu
– Mảng 3 chiều: unsigned char led[5][2][10]; Công thức dữ liệu: 5x2x10 dữ liệu – Phức tạp ít sử dụng trong lập trình
… … … … … … .Chọn bộ nhớ lưu mảng, mặc định trong trình biên dịch luôn luôn là RAM nếu bạn không khai báo gì cho nó, để tiết kiệm ngân sách và chi phí tài nguyên RAM cho những biến khác ta sẽ cho những mảng cố định và thắt chặt vào trong ROM, chú ý quan tâm chỉ mảng cố định và thắt chặt mà ta không đổi khác tài liệu trong quy trình sử dụng .
Rất đơn giản ta thêm chữ flash vào trước khai báo ta sẽ được như sau: flash unsigned char led[10];
Truy suất mảng trong code khá là đơn giản, dữ liệu đầu tiên mang giá trị 0 vì 0 là bắt đầu chứ không phải là 1 đâu nha, VD: PORTD=led[0]; xuat gia tri đầu tiên của mảng
Với mảng 2 chiều cũng tương tự ta xuất theo công thức (trục x,y) PORTD=led[1][2]; xuat gia tri thứ 13 của mảng theo khai báo led[2][10]
Nghe có vẻ hơi khó hiểu chỗ này đúng k, ta hiểu đơn giản như sau nhóm 10 dữ liệu lại thành một nhóm lớn ở đây có 2 nhóm lớn, mỗi nhóm lớn sẽ có 10 dữ liệu bên trong như vậy ta sẽ truy suât led[1][2] tức lấy nhóm lớn thứ 2 và dữ liệu trong nhóm nằm ở vị trí thứ 3 trong mảng.
5. Khai báo bộ nhớ EEPROM
Đây là khai báo đặc biệt quan trọng chỉ có trong CodeVisionAVR những ứng dụng khác không tương hỗ, với những viết sau những bạn không cần phải viết hàm lưu tài liệu vào EEPROM nội của AVR nữa mà trình biên dịch sẽ tự động hóa thao tác này .Đơn giản nó chỉ là một biến, tức ta cho thể đọc và ghi vào biến này như những biến thông thường .
Khai báo như sau: eeprom unsigned char abc;
Thật là đơn giản đúng không, lúc này ta chỉ cần viết abc = 123; lưu giá trị 123 vào eeprom nội, vậy đọc ra thì sẽ như thế nào. Quá đơn giản: data = abc; data là biến lưu trong RAM và data sẽ mang giá trị 123
Còn bạn muốn chỉ định địa chỉ thì thêm @địa_chỉ VD eeprom unsigned char abc@0x02;
6. Khai báo chân giao tiếp xuất nhập
Trong AVR mỗi PORT của nó có tới 3 thanh ghi tinh chỉnh và điều khiển : DDRx, PINx, PORTx Trong khi 8051 chỉ có 1, PIC có 2 đảm nhiệm điều hướng và xuất nhập tài liệu .– Trong đó DDRx là thanh ghi điều hướng, set lên 1 cho bit nào là chân đó làm OUTPUT và set 0 là INPUT– Thanh ghi PINx là thanh ghi lấy tài liệu về dùng cho INPUT, ta sẽ đọc tài liệu từ thanh ghi này– Thanh ghi PORTx là thanh ghi xuất tài liệu ra chân vi tinh chỉnh và điều khiển, ta sẽ ghi mức logic vào đâyVD :DDRD = 0 xff ; PORT D làm OUTPUTPORTD = 0 xff ; Xuất mức 1 ra 8 chân của PORT Dabc = PIND ; Đọc trạng thái logic trên PORT D lưu vào biến abc
Ta có thể sử dụng trở câu nội của AVR trong trường hợp làm INPUT bằng cách khai báo set:
DDRD = 0x00;
PORTD = 0xff;
Nếu không sử dụng trở câu hàng loạt chân AVR sẽ ở trạng thái hở. Khác hẳn với 8051 chỉ P0 là hở
CodeVisionAVR cho phép bạn set bit cho từng chân của PORT
Xem thêm: Tin học 12 Bài 12: Các loại kiến trúc của hệ cơ sở dữ liệu | Hay nhất Giải bài tập Tin học 12
VD : PIND. 6, PORTD. 2, DDRC. 3
Các bạn có thể tìm hiểu thêm một số cách set bit trong thanh ghi cũng như kiểm tra bit nào đó trong một thanh ghi VD: while(!(UCSRA & (1<
Related
Source: https://vh2.com.vn
Category : Tin Học