Cổng Kết Nối - Glong Electronic

Xin Chào!

Đây là trang đang thử nghiệm và hoàn thiện nội dung, mong các bạn thông cảm

Mọi thắc mắc và góp ý xin gửi về mail: Nglongbs@gmail.com

Xin chân thành cảm ơn!


 
CLB ĐIỆN TỬ
Công khai group · 94 thành viên
Tham gia nhóm
 

Các bài tập về hiển thị led đơn

BT1: bật tắt led đơn bằng nút bấm

Sơ đồ mạch điện:

Cinque Terre

Yêu cầu:

- Khi không bấm nút (P1.4=1) thì led 1 sáng, led 2 tắt.

- Khi bấm nút (P1.4=0) thì led 2 sáng, led 1 tắt.

Mô phỏng hoạt động của yêu cầu:

Cinque Terre

Chương trình lập trình:


#include <REGX52.H>	//khai báo thư viện cho IC89S52
void main()
{
  P1_4=1;	// thiết lập mức cao cho chân P1_4 để làm chân input
  while(1)	// vòng lặp vô tận để chương trình chính được lặp đi lặp lại
  {
  if(P1_4==0)	// kiểm tra chân P1_4 có được tác động hay không? Tác động thì bằng 0 và thực hiện nhóm lệnh sau:
    {
	P0_0=1;		// tắt led 1 - set bit P0_0
	P0_1=0;		// bật led 2 - clear bit P0_1
    }
  else 			// thực hiện nhóm lệnh dưới đây nếu điều kiện của IF không được thỏa mãn: 
    {
	P0_0=0;		// bật led 1 - clear bit P0_0
	P0_1=1;		// tắt led 2 - set bit P0_1
    }
  }
}
	

- Trong đoạn code trên, việc bật tắt các led được sử dụng bằng lệnh set và clear từng bit. Ta có thể đơn giản thao tác này bằng việc sử dụng lệnh điều khiển thanh ghi như sau:


	P0_0=1;		// tắt led 1 - set bit P0_0
	P0_1=0;		// bật led 2 - clear bit P0_1
    

- Thay bằng:


	P0=0x01;	// ghi như thế này là theo ký hiệu của mã HEXA, tương ứng với các BIT của P0 như sau: MSB - 00000001 - LSB
			// điều này tương đương với P0_0=1 và P0_1 cho đến P0_7 đều bằng 0. Việc chuyển đổi này các bạn có thể dùng máy tính cho nhanh.
	

- Chương trình được viết lại:


#include <REGX52.H>	//khai báo thư viện cho IC89S52
void main()
{
  P1_4=1;	// thiết lập mức cao cho chân P1_4 để làm chân input
  while(1)	// vòng lặp vô tận để chương trình chính được lặp đi lặp lại
  {
  if(P1_4==0)	// kiểm tra chân P1_4 có được tác động hay không? Tác động thì bằng 0 và thực hiện nhóm lệnh sau:
    {
	P0=0x01;	// điều này tương đương với P0_0=1 và P0_1 cho đến P0_7 đều bằng 0.
    }
  else 			// thực hiện nhóm lệnh dưới đây nếu điều kiện của IF không được thỏa mãn: 
    {
	P0=0x02;	// điều này tương đương với P0_1=1 và P0_0, P0_2 cho đến P0_7 đều bằng 0.
    }
  }
}
	

Hi vọng sau bài học này các bạn có được chút thu hoạch cho mình.

Cám ơn và hẹn gặp lại!