You are on page 1of 8

8051

1.SỰ MÔ TẢ CHUNG:
Họ VDK AT89S52 được sản xuất theo tiêu chuẩn sau:
 8k byte bộ nhớ chương trình (on –chip flash)
 256 byte bộ nhớ dữ liệu hay còn gọi là bộ nhớ truy cập ngẫu
nhiên(RAM)
 32 cổng vào ra(I/O)
 2 con trỏ dữ liệu
 3 bộ định thời /bộ đếm(timers/counters 0,1,2)
 Một kiến trúc ngắt hai mức 6 vectơ ngắt (ngắt ngoài 0/ngắt
tràn time0/ngắt ngoài 1/ngắt tràn time1/ngắt cổng vào ra
nối tiếp/ngắt tràn time2/ngắt ngoài 2)
 Có cổng vào ra nối tiếp
 Bộ tạo dao động trong chip…
2.NHỮNG CẤU HÌNH CHỦ CHỐT(HAY DẠNG ĐÓNG GÓI):
3.SƠ ĐỒ KHỐI:
4.MÔ TẢ CÁC CHÂN:
 VCC chân cấp nguồn 5v cho vđk (40)
 GND chân nối đất (20)
 PORT0 cổng hai chiều 8 bit mỗi cổng là một chân trên
chíp,các cổng có thể làm cổng vào hoặc cổng ra (gồm các
chân từ3239), ngoài ra port0 còn có thêm chức năng bus
dữ liệu bus địa chỉ(AD0AD7)làm nhiệm vụ lấy dữ liệu từ
rom hoặc ram ngoại nếu kết nối bộ nhớ ngoài đồng thời P0
còn làm nhiệm vụ định địa chỉ bộ nhớ ngoài
 PORT1 port này chỉ có chức năng xuất nhập(I/O)(gồm các
chân từ18)
 PORT2 port này có chức năng xuất nhập(I/O) ngoài ra còn
làm nhiệm vụ kết nối bộ nhớ chương trình bên
ngoài(A8A11) (gồm các chân từ 2128)
 PORT3 cũng có chức năng xuất nhập I/O,ngoài ra ứng với
mỗt chân có một chức năng riêng sau:
Bit tên chức năng
P3.0 RXD ngõ vào nhận dữ liệu nối tiếp
P3.1 TXD ngõ vào xuất dữ liệu nối tiếp
P3.2 INT0 ngõ vào ngắt cứng thứ 0
P3.3 INT1 ngõ vào ngắt cứng thứ 1
P3.4 T0 ngõ vào của time/coute thứ 0
P3.5 T1 ngõ vào của time/coute thứ 1
P3.6 WR ngõ vào điểu khiển ghi dữ
liệu bộ nhớ ngoài
P3.7 RD ngõ vào đọc dữ liệu bộ nhớ
Ngoài
Gồm các chân từ 1017
 Chân reset (RST) dùng để thiết lập trạng thái cho vdk,khi
cấp nguồn cho vdk 8051 thì các chân của vdk đều là ngõ
vào(chân số 9).
 Chân XTAL1&XTAL2(18&19)được dùng để nhận nguồn xung
clock từ bên ngoài,thường ghép nối với thạch anh
 PSEN dùng để truy xuất bộ nhớ chương trình bên ngoài(chân
29), chân này khi không sử dụng bỏ trống
 ALE chân cho phép chốt địa chỉ(chân 30),chân này chỉ sử
dụng khi ghép nối với bộ nhớ bên ngoài nếu không sử dụng
thì bỏ trống
 Chân EA chân này được dùng để xác định chương trình thực
hiện dược lấy từ rom nội hay rom ngoại và được xác định
như sau:nếu chân này nối với vcc thì lấy từ rom nội ngược
lại nối mass thì lấy từ rom ngoại(chân 31)
Chú ý:đối với họ vdk 8051 khi đưa mức logic 1 ra một chân nào đó của
vdk thì điện áp tại chân đó thường từ 2,45v đồng thời dòng điện bơm
ra trên chân đó khoảng 60µ a đây là một nhược điểm của họ vdk 8051
và được cải thiện khi sử dụng các họ vdk khác như PIC,AVR nhưng họ
vdk này lại có khă năng nuốt dòng lớn I=1,6ma
5.TỔ CHỨC BỘ NHỚ(Memory Organization)
Phần không gian
địa chỉ cho bộ
nhớ chương
trìnhcòn trống
Phần không
bằng 64 kbyte
gian địa chỉ
trừ đi lượng bộ
cho bộ nhớ dữ
nhớ chương
liệu ghép thêm
trình onchip
bên ngoài có
dung lương Bộ nhớ dữ liệu
Bộ nhớ chương
bằng 64 kbyte onchip
trình onchip

Đối với loại chip AT89S52 thì dung


lương bộ Bộ
nhớnhớ
onchip flashtrình
chương 8kbyte

Bộ nhớ

Bộ nhớ dữ liệu

Bộ nhớ chương trình có địa chỉ từ 0x00000xFFFF (64kbyte) khi


sử dụng ta phải nối chân EA lên vcc như đã trình bày ở trên,đây là nơi
lư trữ chương trình do người lập trình nạp vào
Bộ nhớ dữ liệu gồm hai loại:volatile(mất nội dung khi mất
nguồn nuôi),no- volatile(không mất nội dung khi mất nguôn
nuôi),đốivới loại chip 8x52 có dung lượng 256 byte,chip 8x51 có dung
lượng là 128 byte

6.CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT VÀ CÁC VẤN ĐỀ LIÊN QUAN
6.1-NGẮT(interrupt)
Định nghĩa:ngắt là một yêu cầu mà các ngoại vi on-chip hoặc
off-chip gửi tới CPU khi một sự kiện nào đó xảy ra,mỗi ngoại vi có một
kểu gây ngắt riêng.
Ngắt có 2 loại:ngắt đồng bộ và ngắt xen kẽ
-Ngắt đông bộ:khi hai sự kiện ngắt xảy ra tại cùng một
thời điểm.lúc này để xét ngắt nào được thực hiện trước căn
cứ vào mức ưu tiên giữa các ngắt,mưc ưu tiên này do nhà
sx chip đưa ra
-ngắt xen kẽ:khi ngắt này đang xảy ra thì có một hoặc một
vài ngắt khác cũng xảy ra,để xét ngắt nào được ưu tiên
trước ta phải xét mức ưu tiên giữa các ngắt giống như ngắt
đồng bộ
Vd ngắt đồng bộ:Hùng và Lượng đều đưa dt ra để gọi điện
cho Khương tại cùng một thời điểm.
Vd ngắt xen kẽ:đang ăn cơm thì có điện thoại của gia đình
Chíp AT89x52 có 6 nguyên nhân gây ra ngắt và sắp xếp theo
mưc ưu tiên là:
1. ngắt ngoài 0 là sự thay đổi tín hiệu trên chân INT0
2. ngắt timer/counter 0 ngắt xảy ra khi timer/counter 0
tràn
3. ngắt ngoài 1 là sự thay đổi tín hiệu trên chân INT1
4. ngắt timer/counter1 ngắt xảy ra khi timer/counter1
tràn
5. ngắt cổng nối tiếp xảy ra khi truyền hoặc nhận xong
một khung dữ liệu
6. ngắt timer/counter2 xảy ra khi timer/counter1 tràn
6.2Các thanh ghi chức năng đặc biệt cơ bản:IE,IP,TMOD,TCON,SCON
a. thanh ghi cho phép ngắt IE

EA - ET2 ES ET1 EX1 ET0 EX0


_Giải thích thứ tự ưu tiên các bít ngắt:
EA-bit cho phép hoặc cấm tất cả các ngắt
EA=1 cho phép tất cả các ngắt
EA=0 cấm tất cả các ngắt
ET2-bit cho phép ngắt tràn timer 2 (khi = 1)
ES-bit cho phép ngắt cổng truyền thông nối tiếp(khi = 1)
ET1- bit cho phép ngắt tràn timer 1 (khi = 1)
EX1- bit cho phép ngắt ngoài 1(khi = 1)
ET1- bit cho phép ngắt tràn timer 0 (khi = 1)
EX0- bit cho phép ngắt ngoài 0(khi = 1)
_Để thực hiện ngắt thì DK:EA=1 va thứ tự ưu tiên các ngắt là
EX0>ET0>EX1>ET1>ES>ET2
_Khi xảy ra ngắt đồng bộ thì ta phải dựa vào thanh ghi IE để xác định
mức ưu tiên giữa các ngắt
thanh ghi đặt mức ưu tiên ngắt IP
- - PT2 PS PT1 PX1 PT0 PX0

_ Giải thích thứ tự ưu tiên các bít ngắt:


PT2 bit ưu tiên ngắt tràn timer 2
PS bit ưu tiên ngắt truyền thông nối tiếp
PT1 bit ưu tiên ngắt tràn timer 1
PX1 bit ưu tiên ngắt ngoài 1
PT0 bit ưu tiên ngắt tràn timer0
PX0 bit ưu tiên ngắt ngoài 0
_Thanh ghi này chỉ sử dụng trong trường hợp xẩy ra ngắt xen kẽ,việc
xác định thứ tự ưu tiên giữa các ngắt ta làm như sau:
Khi CPU đang xử lý ngắt A mà ngắt B xay ra thì CPU sẽ thực hiện
_tiếp tục xử lý ngắt A nếu mức ưu tiên ngắt B thấp hơn ngắt A
_dừng việc xử lý ngắt A lại chuyển sang xử lý ngắt B nếu mức ưu
tiên ngắt B cao hơn ngắt A
_Mức ưu tiên trong thanh ghi IP đượcxếp PX0>PT0>PX1>PT1>PS>PT2
Mức ưu tiên cao khi các bít này=1,thấp khi =0
c. thanh ghi liên quan đến bộ
định thời và bộ đếm:
Một số định nghĩa:
-khi đếm xung nhip bên trong CPU gọi là bộ định thời vì
nếu ta biết được số xung đã xảy ra thì ta có thể xác định được chính
xác thời gian đã xảy ra ( gọi là timer)
-khi đếm xung nhịp bên ngoài thường là xung nhịp không
đều đặn gọi là bộ đếm sự kiện counter
-khi có một xung đếm xảy ra thì timer/counter sẽ tự động
tăng lên 1 đơn vị
-giá trị đếm được lưu vào trong 2 thanh ghi TH&TL mỗi
thanh ghi có ghí trị là 8 bit,TL la byte thấp còn TH là byte cao.khi giá
trị đếm không đủ chứa trong thanh ghi thì xảy ra hiện tượng tràn hay
con gọi là ngắt tràn timer/counter
Thanh ghi điều khiển TMOD,hay còn gọi là thanh ghi quy định cấu
hình cho timer/counter0&1
GATE C/T M1 M0 GATE C/T M1 M0

Timer/counter1 Timer/counter0
_bit GATE quy định timer/counter dừng hay đếm
.Khi GATE=1 timer/counter sẽ đếm khi bit TRx=1(TCON)và tín
hiệu ngắt ngoài x ở mức cao
.Khi GATE=0 timer/counter sẽ đếm hay dừng phụ thuộc vào
trạng thái của bit TRx trong thanh ghi TCON
.thông thường chọn bit GATE=0
_bit C/T bit lựa chọn xung nhịp đếm
.C/T=0 xung nhip đếm là xung nhịp CPU(timer)
.C/T=1 xung nhịp đếm là xung nhịp bên ngoài(counter)
_bit M1:M0 =0:0 chế độ định thời 13 bit (không dùng)
=0:1 chế độ định thời 16 bit giá trị đếm tối đa
là2^16=65355 khi tràn thì cờ báo tràn TFx trong thanh
ghiTCON tự động bằng 1 sau đó tự động đưa về 0
=1:0 chế độ tự động nạp lại 8 bit chế độ này byte thấp
TLx hoạt động định thời 8 bít còn byte cao THx làm nhiệm
vụ lưu trữ giá trị nạp lại
=1:1 chế độ định thới chia sẻ ít dùng
Thanh ghi điều khiển TCON
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
.Bit TFx là cờ báo tràn,khi giá trị đếm của timer/counter vượt quá giá
trị cho phép thì bit này = 1
.Bit TRx là bít cho phép dừng hay chạy bộ định thời 1 chạy,0 dừng
.Bit IEx cờ ngắt ngoài 1&0
.Bit ITx điều khiển ngắt cạnh hoặc mức bằng 1 ngắt khi sườn đếm
xuống và ngược lại

d. thanh ghi SCON thanh ghi


lên quan đến cổng vào ra nối
tiếp
Họ vdk 8051 có một cổng vào ra nối tiếp,dữ liệu được truyền
thông qua chân TXD-P3.1 dữ liệu được nhận thông qua chân RXD-
P3.0,dữ liệu truyền và nhận hoàn toàn độc lập với nhau do vậy ta
có thể đồng thời truyền và nhận dữ liệu đặc tính này gọi là song
công(full duplex)
Dữ liệu truyền và nhận đều được lư trữ trong thanh ghi SBUF
có dung lượng 8 bit
Liên quan đến việc điều khiển truyền và nhận dữ liệu thông
qua cổng vào ra nối tiếp có thanh ghi điều khiển SCON
SM0 SM1 SM2 REN TB8 RB8 TI RI
• SM0:SM1 = 0-1=mode1:đây là chế độ dị bội 8 bit ,clock
thay đổi được tùy ý(chế độ dị bội là chế độ mà thiết bị truyền và
thiết bị nhận có clock khác nhau không liên quan tới
nhau(asynchronous),còn chế độ đồng bộ là chế độ mà thiết bị
truyền và thiết bị nhận có cùng clock hay cùng xung
nhịp(synchronous)).ngoài ra còn các chế độ khác ít dùng đến nên
tôi không đưa ra các bạn có thể tìm hiểu thêm.
• SM2 là bít cho phép giao tiếp chế độ đa vi xử lý,trong các
chế độ thông thường thì SM2=0
• REN =1cho phép nhận dữ liệu,=0không cho phép nhận dữ
liệu
• TB8,RB8 liên quan đến chế độ truyền nhận dữ liệu 9 bit nếu
ta dùng chế độ 8 bit thì không cần quan tâm tới hai bít này
• TI cờ báo ngăt truyền
khi = 1 báo hiệu một khung dữ liệu đã được truyền xong,cờ này
không tự xóa về 0 khi chương trình phục vụ ngắt thực hiện,sự
dụng phải xóa bằng lệnh
• RI cờ báo ngắt nhận
khi = 1 báo hiệu một khung dữ liệu đã được nhận đủ,cờ này
không tự xóa về 0 khi chương trình phục vụ ngắt thực hiện,sử
dụng phải xóa bằng lệnh
Trong việc truyền dữ liệu thông qua cổng vào ra nối tiếp ta
phải xác định tốc độ truyền(baud rate)
Baud rate trong chế độ mode 1 có thể thay đổi được nhờ
timer1
Nếu sử dụng timer1 để tạo baud rate cần:
− Timer1 phải được hoạt động ở chế độ 2(auto-reload)
− Không sử dụng ngắt tràn timer1
− Giá trị nạp lại được ghi vào thanh ghi TH1
− Công thức tính:
Baud rate=(2^smod * tần số thạch anh)/(32*12*[256-TH1]
Trong đó smod=0,tần số thạch anh thường lấy 11.0592 để
giá trị baud rate tròn số
Vd: TH1 = 253 thì baud rate=9600

+ Tính chu kỳ máy ta kết nối thạch anh có tần số f=12MHzchu


kỳ máy Tck=12/(12*10^6)=10^-6 (s)=1µ s
Chú ý:khi giao tiếp với máy tinh ta thường kết nối thạch anh có trị
số f=11.0592 MHz

You might also like