You are on page 1of 74

Kiến trúc

Ngoại vi là các thành phần ngoài Core( GPIO, Timer,…)


Mức 0:dải 0-0,4V
Mức 1:dải 2-2,4V
Điều kiện trao đổi dữ liệu:
Địa chỉ
Vì các thiết bị có các mức hoạt động khác nhau( 2 dải điện áp cùng đưa lên 1
đường dây_ đường truyền dữ liệu chung).
Khi 1 thiết bị gửi dữ liệu, phải vô hiệu hóa( tách các thiết bị ra khỏi hệ thống)
Khái niệm đầu ra 3 trạng thái
Bộ đệm 3 trạng thái

Trạng thái cao trở giúp vật cách ly điện


Đầu vào n bít đầu ra có 1 đầu tích cực để kích hoạt trạng thái hoạt động
Giữa uP phải có bộ decoder đầu vào là địa chỉ, đầu ra là tín hiệu cho phép làm
việc
Các thành phần chính trong Memmory: Mảng nhớ, địa chỉ, bộ giải mã

WR(write): cho phép ghi


OE( output enable): cho phép đọc
Thao tác ghi:
Cung cấp địa chỉ ô nhớ để ghi
Đưa dữ liệu lên đường truyền chung
Thao tác đọc:
Gửi thông tin địa chỉ đọc
Data-> bộ đệm( kênh dữ liệu) dữ liệu thường trực trên kênh
Set OE, WR
Vi xử lý: Microprocessor(uP)
Vi điều khiển: Microcontroler(uC)
Bộ adc : https://dientuviet.com/bo-chuyen-doi-tuong-tu-sang-so-adc/
Logic khả trình
PLA
PAL
PROM
Cấu tríc hệ vi xử lý
CPU gồm:
-ALU
2 đầu vào, 1 đầu ra

-Resgister:
+Registers( Lưu trữ): Gồm các D(Flip-Flop)
+Nhóm thanh ghi dùng chung(Thanh ghi tổng A)
+Nhóm thanh ghi chức năng đặc biệt
Thanh ghi đếm chương trình PC( Program Counter)
Chứa địa chỉ của lệnh tiếp theo trong bộ nhớ
PC tự động tăng nội dung khi thực hiện 1 lệnh
Độ dài của PC tùy thuộc vào từng bộ vxl> độ dài vxl
PC là bộ nhớ chương trình( khác với nhớ dữ liệu)
PC có n bit -> truy cập tối đa( 2^n-1) bit
Thanh ghi IR( thanh ghi lệnh Instruction Register)( gồm 1 khối giải mã lệnh )
Lưu thông tin, nội dung lệnh đang thực hiện
Gồm: Opcode( đầu vào decoder giải mã lệnh): n bit ( tối đa 2^n lệnh )
Address
Thanh ghi địa chỉ bộ nhớ MAR( memmory address register)
Độ dài: bằng độ dài thanh ghi PC
Đầu ra nối với các bus địa chỉ( address bus)
Nội dung: lấy từ các thanh ghi khác( PC, SP, thanh ghi chỉ số, địa chỉ đữ liệu
lệnh )
Thanh ghi đệm bộ nhớ MBR( memmory buffer register)
Lưu trữ thông tin dc gửi đi or nhận được từ mem với vxl thông qua data bus
MBR liên kết vs các thanh ghi trong uP thông qua Internal Bus
Interal Bus  MBR  Data Bus
Thanh ghi trạng thái SR( Status register)( Flag Register)
Thanh ghi con trỏ ngăn xếp SP ( Stack Pointer) quy tắc LIFO
Có thể là vùng nhớ, or 1 mảng thanh ghi
Lưu trũ thông tin( cất địa chỉ trở về chương trình chính từ ctrinh con or trình
phục vị ngắt )
Khi khởi tạo sẽ có giá trị đỉnh của ngăn xếp( do nhà sản xuất cấp )
Thay đổi khi cất giữ or khôi phục
Lệnh tác động đến ngăn xếp( lệnh CALL, RETURN, INT( Reti), Push, Pop)
Thanh ghi dữ liệu tạm thời Temp1, Temp2
Không truy cập bởi các câu lệnh trong chương trình
Truy cập trung gian
-CU( Control Unit)
3 thành phần liên kết qua Internal Bus
Điều khiển hoạt động
Điều khiển các tính toán trong khối ALU
Điều khiển sự trao đổi thông tin
Đầu ra bộ giải mã lệnh đưa vào đầu vào khối CU
Đầu ra CU quyết định hoạt động( điều khiển ghi độc, tính toán , gửi các xung
điều khiển để tác động lên bộ nhớ, thiết bị ngoại vi, nhận tín hiệu từ các ngoại
vi)
System Bus
Tập hợp các đường dây mang thông tin
-Address Bus
Độ dài
Bus 1 chiều cpu ->
-Data Bus
Độ dài: tùy thuộc uP
2 chiều
-Control Bus
2 chiều

Chu trình thực hiện lệnh


Tìm lệnh , giải mã lệnh , thực hiện lệnh
PC-> MAR-> address bus
uP->mem (read)
MBR<-mem(databus)
IR<- MBR( Internal Bus)
PC<- PC+1
Chuyển nd từ A-> Temp1
Sau khi tính toán -> Internal Bus-> A
Các kiểu đinh địa chỉ
Định địa chỉ thanh ghi:
-Dùng để truye xuấtd dữ liệu trong các thanh ghi bên trong
Định địa chỉ trực tiếp
-Mottj toán hạng chứa địa chỉ lệnh của ô nhớ dùng dữ liệu
-Toán hạng còn lại có thể là thanh ghi( không được là ô nhớ )
Định địa chỉ gián tiếp qua thnah ghi
-Một toán hạng là 1 thanh ghi đc sử dụng để chứa địa chỉ của ô nhớ dữ liệu
-Toán hạng còn lại là thanh ghi, ko dc là ô nhứo

Định địa chỉ tức thì

Tổ chức vào ra dữ liệu


Dữ liệu trao đổi với các I/O
Thăm dò

Ngắt

Sự tham gia: PC, SP


Cách xác định nguồn báo ngắt
DMA

Khối DMAC điều khiển trực tiếp mem vs I/O


Khi DMAC hoạt động thì VXL ngắt ra nhường đường bus cho DMAC

Cấu trúc máy tính


VDK 8051

Mở rộng bộ nhớ phụ thuộc vào thanh ghi PC( 16 bit)


AD: address + data
Chân P0 vừa truyền thông tin về địa chỉ và dữ liệu, tạo ra bus địa chỉ, dữ liệu
Khi kết nối vs bộ nhớ bên ngoài, phải có phần tử tách 2 thành phần từ P0 để
phân biệt address vs data
P2 : byte địa chỉ cao của bus địa chỉ 16bit ( bộ nhớ ngoài)
EA: External Access( truy xuất bên ngoài)

Điện áp chênh lệch trên 2 đầu AL1 vs AL2 tạo biến dạng cơ học trên thạch anh(
hiệu ứng áp điện được sinh ra )
Nguyên lý tạo xung vuông bằng thạch anh:
https://www.electronics-tutorials.ws/oscillator/crystal.html
https://vi.wikipedia.org/wiki/Dao_%C4%91%E1%BB%99ng_tinh_th
%E1%BB%83
Bộ nhớ chương trình

Lưu trữ ngắt


Rom on chip( bộ nhớ chương trình)

Địa chỉ từ 80H-> FFH


Trạng thái 1 vài thanh ghi đặc biệt
Các băng thanh ghi đều có 8 thanh ghi R0-R7
Thanh ghi trạng thái PSW
Vùng đánh địa chỉ theo bit có thể truy cập tới từng bit
Lệnh theo sau là bit
Setb
Clr
Không gian 30H-> 7FH là vùng không gian người dùng lưu trữ
Kết nối 8051 với bộ nhớ bên ngoài

Ghép nối

EA=0 thì toàn bộ chương trình dc truy cập bên ngoài


Bộ latch để chốt địa chỉ
EA=1 truy xuất ưu tiên Rom on Chip trc
Ghép nối dữ liệu bên ngoài
Mem địa chỉ 11 bit ( 8bit thấp P0, 3 bit cao P2)(2kB=2^11 byte)
Các thanh ghi có chức năng đặc biệt SFR

Những thanh ghi ở cột đầu tiên có thể truy xuất tới từng bit
P0.0; TCON.2;….
Thanh ghi PSW( program status word)
Cờ CY: nhớ
AC: cờ nhớ từ bit3 -> bit 4
OV: cờ báo tràn
P: cờ chẵn lẻ số bit 1 trong thanh ghi A
Thanh ghi con trỏ ngăn xếp

Các lệnh tác động:


CALL; RET; RETI;
PUSH; POP;
Khởi tạo SP=07H;
Thanh ghi DPTR=DPL+DPH( data pointer high+low)

Các thanh ghi cổng


Thanh ghi Timer
Các thanh ghi truyền tin
Thanh ghi ngắt
Cấu trúc cổng I/O
Mỗi một cổng đều có bộ chốt, input bufer( bộ đệm vào ), output driver
Cổng P0 ko có trở treo nên khi sử dụng phải kết nối điện trở treo bên ngoài
Ghi ghi 1 ra cổng, trans sẽ khóa, lúc này chân thực hiện tddocj trạng thái ngoại
vi bên ngoài
Chế độ định địa chỉ
Lập trình hợp ngữ Assembly
Sau lệnh END chương trình ko dc thực hiện

Bắt đầu từ 30H để tránh trùng vbaof chương trình ngắt


Chương trình ngắt
Khai báo địa chỉ ngắt
Nếu chương trình >8byte thì phải di chuyển chương trình ngắt tới vùng không
gian khác

Viết chương trình con


Định đại chỉ gián tiếp chỉ dc dùng trên thanh ghi R0 và R1
JZ rel : bước nhảy ô nhớ
Nhóm lệnh rẽ nhánh
Ngắt và lập trình
5 vecto ngắt

Đều là các ngắt che được


Ngắt ngoài, lập trình ngắt ngoài
Tạo trễ dùng DJNZ

Delay=254*T*2
Cũng có thể tạo trễ bằng timer
Bộ Timer, Counter

Thanh ghi hoạt động ở 2 chế độ Timer/ Counter


Thanh ghi
Bit Gate quyết định bộ T/C khởi động bằng cách nào
Cờ tràn TF
chú ý các bước nạp lại giá trị khởi tạo i
Lập trình ngắt Timer
Ví dụ
Chú ý chương trình ngắt timer < 8byte
Cách viết ko sử dụng ngắt
Vào ra số

Các cách chuyển dữ liệu song song sang nối tiếp


Thanh ghi dịch(PISO-SIPO)
MuX-DEMUX
Phương thức truyền
Chế độ truyền
Chuẩn truyền tin RS232
Cờ Ti được dựng lên khi 1 byte dữ liệu được truyền hết
Cờ Ri được dựng lên khi nhận đủ 1 byte dữ liệu trong thanh ghi SBUF
Trong chế độ thanh ghi dịch
Tx cung cấp xung clock để dịch bit
Rx để truyền và nhận dữ liệu
Gửi chuỗi ASCII liên tục

Cờ Ri và Ti chỉ dc xóa = phần mềm


Ghép nối
Ghép nối với ADC
Khi đọc xong EOC sẽ set 1
Ghép nối với LED

You might also like