DKS_GROUP Microcontroller Training Center
3.7. Điều khiển out cả cổng:
Nếu các bạn nhàm chán với việc điều khiển từng chân 1 viết code rất tốn cơng các bạn có thể xuất giá trị ra cả cổng.
Trước hết các bạn cần nắm các điều như sau:
- 1 cổng có 8 bit tổ hợp 8bit có 28 = 256 trạng thái. Khi các bạn đưa ra cổng 1 giá trị a(thập phân) từ 0 đến 255 thì số a sẽ được đổi ra hệ nhị phân rồi đưa ra các bit( chân) của cổng. Ví dụ:
Nếu có lệnh: P1=1; vì 1(10) = 0000 0001(2) nên chân P1_0(bit 0) sẽ bằng 1(5V) còn lại các từ P1_1(bit 1) đến P1_7(bit 7) sẽ bằng 0(0V).
P1=10; vì 10(10) = 0000 1001(2) thì sẽ có P1_0 và P1_3 bằng 1(5V) còn lại các chân khác sẽ là 0(0V).
- Các bạn có thể đưa ra cổng 1 giá trị số hex từ 0 đền ff tương ứng từ 0 đến 255. Các số cơ sở trong hệ hex.
(HEX)0 1 2 3 4 5 6 7 8 9 A B C D E F
(10) 10 11 12 13 14 15
Cách đổ số hex ra số thập phân: có số hex : N(16)=abf1 đổi ra hệ số 10 N(10)=1.160 + 15.161+ 11.162+ 10.163= Bấm máy tính hộ nhé.
Đổi số nhị phân sang hex: Gộp 4 số nhị phân thành 1 số hex
Ví dụ: 0010 0001(2) = 21(16) 4 số đầu có bit 1 = 1 nên 1x21= 2 4 số sau có bit 0 =1 nên 1x20=1.
“Các bạn thấy vất vả với phần này dù bạn có hiểu hay không hiểu 1 lát nữa sẽ biết cách làm liền.”
Cách đưa ra như sau:
Ví dụ lệnh P1=1; tương đương với P1=0x01; P1=10; tương đương với P1=0x0A;
Chương trình xuất ra cả cổng tương đương với chương trình điều khiển 8 led từng cái 1 như sau:
DKS_GROUP Microcontroller Training Center
P1=0x01;// Bat led 1
tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 1
tre(1000);// Tre 1 khoang thoi gian P1=0x02;// Bat led 2
tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 2
tre(1000);// Tre 1 khoang thoi gian P1=0x04;// Bat led 3
tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 3
tre(1000);// Tre 1 khoang thoi gian P1=0x08;// Bat led 4
tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 4
tre(1000);// Tre 1 khoang thoi gian P1=0x10;// Bat led 5
tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 5
tre(1000);// Tre 1 khoang thoi gian P1=0x20;// Bat led 6
tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 6
tre(1000);// Tre 1 khoang thoi gian P1=0x40;// Bat led 7
tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 7
tre(1000);// Tre 1 khoang thoi gian P1=0x80;// Bat led 8
tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 8
tre(1000);// Tre 1 khoang thoi gian }
}
Như vậy gõ code vẫn mỏi tay lắm để đạt được mục đích 8 đèn nháy liên tiếp các bạn có thể làm như sau:
/******************Ham chinh****************************/ void main(void)
{
unsigned char n; // Khai bao them bien n cho vong for while(1)// Lap vo han
{