Professional Documents
Culture Documents
CÂU 1:
VD:
#include <REGX51.H>
Void init(void)
SCON=0x50; // các bạn xem thêm tài liệu để biết các bit của SCON nhé.
Void main(void)
init();
while(TI==0);
TI=0;
SBUF=0x41;
}
CÂU 2:
_ 8051 có 6 ngắt: reset, ngắt ngoài 0, ngắt timer 0, ngắt ngoài 0, ngắt timer 0, ngắt
truyền thông nối tiếp.
+ Reset: ngắt xảy ra khi mới bật nguồn hay khi có tím hiệu ngắt trên chân
reset (khi có mức cao ít nhất 2 chu kỳ máy trên chân 9), khi xảy ra ngắt bộ đếm
chương trình nhảy về 0000h
+ Ngắt ngoài 0: xảy ra khi có tín hiệu ngắt trên chân INT0 (chân P3.2), khi
xảy ra ngắt bộ đếm chương trình đưa con trỏ đến địa chỉ 0003h
+ Ngắt timer 0: xảy ra khi cờ báo tràn TF0 lên 1, khi xảy ra ngắt bộ đếm
chương trình đưa con trỏ đến địa chỉ 000Bh
+ Ngắt ngoài 1: xảy ra khi có tín hiệu ngắt trên chân INT1 (chân P3.3), khi
xảy ra ngắt bộ đếm chương trình đưa con trỏ đến địa chỉ 0013h
+ Ngắt timer 1: xảy ra khi cờ báo tràn TF1 lên 1, khi xảy ra ngắt bộ đếm
chương trình đưa con trỏ đến địa chỉ 001Bh
+ Ngắt truyền thông: xảy ra khi cờ TI hoặc RI lên 1, khi xảy ra ngắt bộ đếm
chương trình đưa con trỏ đến địa chỉ 0023h
/*************************************************************/
CÂU 3:
_ 1 chu kỳ máy bằng 12 lần chu kỳ thạch anh (Tm=12*Txtal). Với Fxtal=12MHz
Txtal=1/12MHz Tm=1/1MHz = 1us.
+ 11.0592MHz: dùng khi truyền thông nối tiếp, tạo ra tốc độ baud chính xác,
phù hợp với tốc độ của máy tính.
/************************************************************/
CÂU 4:
- Chức năng I/O (xuất/nhập): Trong các hệ thống điều khiển đơn giản sử dụng bộ
nhớ bên trong không dùng bộ nhớ mở rộng bên ngoài thì port 0 được dùng làm các
đường điều khiển IO (Input- Output). khi dùng chức năng này thì Port 0 phải dùng
thêm các điện trở kéo lên(pull-up), giá trị của điện trở phụ thuộc vào thành phần
kết nối với Port. Khi dng lm ng vo, Port 0 phải được set mức logic 1 trước đó.
- Trong các hệ thống điều khiển lớn sử dụng bộ nhớ mở rộng bên ngoài thì port 0
có chức năng là bus địa chỉ và bus dữ liệu AD7 ÷ AD0. (Address: địa chỉ, data: dữ
liệu)
/*************************************************************/
CÂU 7:
Port1 (chân 1 – 8): chỉ có một chức năng là I/O, không dùng cho mục đích khác.
Port 1 đã có điện trở kéo lên nên không cần thêm điện trở ngoài.Khi dùng làm ngõ
vào, Port 1 phải được set mức logic 1 trước đó. Cổng ra tùy chọn là 0 hay 1.
/***************************************************************/
CÂU 15:
- Chức năng I/O (xuất / nhập): Port 2 đã có điện trở kéo lên nên không cần thêm
điện trở ngoài. Khi dùng làm ngõ vào, Port 2 phải được set mức logic 1 trước đó.
Cổng ra tùy chọn là 0 hay 1.
- Chức năng địa chỉ: dùng làm 8 bit địa chỉ cao khi cần bộ nhớ ngoài có
địa chỉ 16 bit. Khi đó, Port 2 không được dùng cho mục đích I/O.
/***************************************************************/
CÂU 3:
/*************************************************************/
CÂU 5:
Thanh ghi TMOD (TIMER MODE)
+nếu GATE0=0: khởi động bộ định thời bằng phần mềm(đưa TR0 lên mức
1)
+nếu GATE0=1: khởi động bộ định thời bằng phần cứng (đưa TR0 và chân
INT0 lên mức 1)
_ C/T0:
+C/T0=0: đếm bằng xung ngoài tại chân T0(P3.4). tức là khi có xung tác
động vào T0 thì TH0 và TL0 tăng lên 1 đơn vị.
+ C/T0=1: đếm bằng xung dao động nội. Tức là khi chu kỳ máy tăng thì
TH0 và TL0 tăng theo.
_ M10 và M00: 2 bit dùng để chọn chế độ.
/*****************************************************************/
CÂU 6:
8051 có 2 bộ định thời: timer0 và timer1. Chức năng giống nhau nên ta sẽ tìm hiểu
1 bộ timer0 còn timer1 tương tự.
_ Các thanh ghi liên quan đến timer0: TMOD, TCON, TH0,TL0.
+ TMOD dùng để chọn chế độ hoạt động cho timer (như trình bày ở câu 5)
+ TH0 và TL0: là 2 thanh ghi chứa giá trị đếm của timer0.
Ta chỉ xét 4 bit cao, còn 4 bit thấp dùng cho ngăt.
+ TF0: là cờ báo tràn timer0. Mỗi khi giá trị thanh ghi đếm tràn thì TF0 tự
động nhảy lên mức 1.
/*************************************************************/
CÂU 8:
Thanh ghi IE:
EX0: dùng cho ngắt ngoài 0. Nếu EX0=0 thì ngắt ngoài 0 ko đc sử dụng. Nếu
EX0=1 thì cho phép ngắt ngoài xảy ra khi có tín hiệu ngắt trên chân INT0.
/*****************************************************************/
CÂU 10:
VD:
#include <REGX51.H>
char dl;
Void init(void)
SCON=0x50; // các bạn xem thêm tài liệu để biết các bit của SCON nhé.
Void main(void)
init();
while(RI==0);
RI=0;
dl=SBUF;
+ vào ra cả cổng
+vào ra từng bít.
Để lập trình vào ra qua cổng. Ta xác định các chân trên Port là chân vào hay ra rồi
gán giá trị cho nó. Nếu là cổng vào thì ta phải đặt nên mức cao(1). Nếu là cồng ra
thì ta đặt nó ở mức thấp(0).
+ Phối hợp cả phương pháp vào và ra là kĩ thuật đọc sửa ghi. Vào ra cả cổng nhưng
muốn giữ nguyên 1 số bit.
/*******************************************************/
CÂU 12:
_ thiết lập giá trị đếm ban đầu cho timer qua thanh ghi THx và TLx. Nếu không thì
mặc định sẽ đếm từ 0.
VD
{
P2=TL1; //hiển thị số đếm được ra cổng P2
/**************************************************************/
CÂU 13:
_ Xác định tần số UART: tần số uart bằng tần số chu ký máy chia cho 32. Mà tần
số chu kỳ máy lại bằng tần số thạc anh chia cho 12.
Fuart=Fxtal:(12x32).
Baud= Fuart*2MOD/(256-val)
/*************************************************************/
CÂU 14:
- 2 bộTimer/counter 16 Bit.
- 6 nguồn ngắt.