Tải bản đầy đủ (.pdf) (20 trang)

đồ án thiết kế chế tạo và điều khiển tay máy, chương 6 pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (480.74 KB, 20 trang )

Thiết kế, chế tạo và điều khiển tay máy Trang 31

6
VI XỬ LÝ
AVR AT90S2313

6.1 GIỚI THIỆU CHUNG VỀ HỌ VI XỬ LÝ AVR
AVR là vi xử lý chuẩn CMOS 8bit tiêu thụ ít năng lượng, được chế tạo dựa
trên cấu trúc AVR RISC (Reduced Instruct Set Computers), đây là cấu trúc có
tốc độ xử lý cao hơn nhiều so với các vi xử lý được chế tạo dựa trên cấu trúc
CISC (Complex Instruct Set Computers). Bởi vì mỗi một chu kỳ máy của AVR
bằng với tần số hoạt động của thạch anh, trong khi với vi xử lý họ 8051 thì mỗi
chu kỳ máy bằng tần số của thạch anh chia cho 12.

6.1.1 Đặc tính kỹ thuật của AVR-AT90S2313
- Tập lệnh gồm 118 lệnh. Hầu hết mỗi lệnh được thực hiện trong một chu
kỳ máy.
- 32×8 thanh ghi (R0→R31).
- 2Kb flash ROM để chứa chương trình, cho phép xóa nạp 1000 lần.
- 128 bytes SRAM.
- 128 bytes EEPROM, cho phép ghi xóa 100000 lần.
- Cho phép cấm truy cập nội dung Flash ROM va EEPROM.
- Một bộ đònh thời và bộ đếm 8bit.
- Một bộ đònh thời và bộ đếm 16bit, bộ phát xung PWM 8,9 hoặc 10 bit.
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 32

- Bộ so áp.
- Watchdog timer có thể lập trình được.
- Lập trình trực tiếp thông qua chuẩn giao tiếp SPI.


- Hỗ trợ tốc độ BAUD cao.
- Chế độ tiết kiệm năng lượng.
- 15 chân xuất nhập.
- Điện áp hoạt động 4,0– 6,0V.
6.1.2 Sơ đồ chân


+ Mô tả các chân:
- VCC: Chân cấp điện (5V).
- GND: Chân nối đất (0V).
- PORTB (PB7 PB0):
Port B là port xuất nhập hai chiều 8-bit với các điện trở kéo lên bên trong.
PB0 và PB1 cũng là các ngõ vào dương (AIN0) và âm (AIN1) của bộ so áp. Bộ
đệm xuất của Port B có thể kéo dòng đến 20mA. Port B sẽ ở trạng thái high-Z
khi bò Reset hoặc ngay cả khi ngắt xung clock.
- PORT D (PD6 PD0):
Port D cũng tương tự như Port B nhưng chỉ có 7 pin xuất nhập hai chiều.
- RESET:
Ngõ vào Reset. Mức thấp ở chân này trong hơn 50ns sẽ reset chip.
- XTAL1:
Ngõ vào khuếch đại đảo của mạch dao động.
- XTAL2:
Ngõ ra khuếch đại đảo của mạch dao động.
6.2 CẤU TRÚC CỦA AVR
Vi xử lý AVR-AT90S2313 có kiến trúc kiểu RISC. Tập thanh ghi truy xuất
nhanh của nó bao gồm 32 x 8 bit thanh ghi với thời gian truy xuất bằng một xung
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 33


clock. Điều này có nghóa là trong thời gian một xung clock, đơn vò số học ALU
(Arithmetic Logic Unit) sẽ thực thi một lệnh, kết quả được lưu ngược lại vào các
thanh ghi. ALU hỗ trợ các phép tính số học và logic giữa các thanh ghi hay giữa
một hằng số với một thanh ghi. Các lệnh trên một thanh ghi đơn cũng có thể
được thực thi trong ALU.
Sáu trong số 32 thanh ghi đó được dùng như là 3 thanh ghi con trỏ đòa chỉ
16-bit, điều này sẽ được nói rõ hơn ở phần sau.
Bộ nhớ xuất nhập bao gồm 64 đòa chỉ cho CPU kết nối với các thiết bò
ngoại vi: thanh ghi điều khiển, bộ đònh thời/bộ đếm, bộ chuyển đổi A/D, và một
số chức năng xuất nhập khác. Bộ nhớ xuất nhập có thể được truy xuất trực tiếp.
Họ AVR cũng có kiến trúc Harvard: tách rời vùng nhớ và các bus cho
chương trình và dữ liệu.


Hình 6.1 Không gian vùng nhớ của AVR – AT90S2313
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 34


Hình 6.2 Cấu trúc của AVR AT90S2313

6.2.1 Thanh ghi (register)
Về cấu trúc thì AVR AT90S2313 có 32 thanh ghi 8bit được truy cập trong
một chu kỳ máy. Có 6 trong 32 thanh ghi được sử dụng như 3 thanh ghi con trỏ
16 bit để đònh đòa chỉ dữ liệu (X,Y,Z). Và một trong 3 thanh ghi này còn được sử
dụng làm con trỏ trỏ đến một bảng dữ liệu trong hàm tìm kiếm (look up).

GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng


Thiết kế, chế tạo và điều khiển tay máy Trang 35


Hình 6.3 Đòa chỉ thanh ghi
Hầu hết trong tập lệnh của AVR đều cho phép dùng toàn bộ thanh ghi.
Chỉ trừ các lệnh sau SBCI, SUBI, CPI, ANDI, ORI, LDI là các lệnh thao tác trên
một thanh ghi với một hằng số, chỉ cho phép dùng các thanh ghi từ R16-R31.
6.2.2 Bộ đònh thời (timer)
AT90S2313 cung cấp 2 timer, một timer 8-bit và một timer 16-bit, đều có
khả năng thay đổi tốc độ tràn bằng cách lấy tần số thạch anh chia cho 8, 64, 256,
1024.

Hình 6.4 Sơ đồ khối Timer

6.2.3 UART
Một số đặc tính về bộ thu phát không đồng bộ của AT90S2313
• Hộ trợ rất nhiều tốc độ BAUD.
• Cho tốc độ BAUD cao ngay cả với tần số thạch anh thấp.
• Khung truyền 8 hoặc 9 bit.
• Chế độ lọc nhiễu.
• Cờ kiểm tra nếu dữ liệu trong bộ đệm bò ghi đè.
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 36

• Cờ kiểm tra lỗi khung truyền.
• Cờ kiểm tra lỗi Start bit.
• Hỗ trợ ba ngắt riêng biệt: ngắt khi truyền xong, ngắt khi bộ đệm dữ
liệu rỗng, ngắt khi nhận xong.
6.2.3.1 Bộ truyền dữ liệu



Hình 6.5 Sơ đồ khối của bộ truyền UART
Dữ liệu cần truyền được cất vào trong thanh ghi dữ liệu UDR. Dữ liệu trong
thanh ghi này được chuyển tới thanh ghi dòch để truyền đi trên chân TxD.
Nếu bộ đệm truyền rỗng thì cờ UDRE trong thanh ghi USR được set. Khi
truyền xong thì cờ TXC trong thanh ghi USR được set.
Cờ TXEN trong thanh ghi UCR là cờ cho phép truyền. Khi cờ này được
reset thì chân PD1 (TxD) có thể được sử dụng như một chân xuất nhập bình
thường. Và khi cờ này được set, thì bộ truyền sẽ được nối với chân PD1 để trở
thành chân TxD.
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 37

6.2.3.2 Bộ nhận dữ liệu

Hình 6.6 Sơ đồ khối bộ nhận UART
Bộ nhận lấy mẫu trên chân RxD ở tần số gấp 16 lần tốc độ BAUD. Điều
này có nghóa là trong thời gian của 1 bit dữ liệu thì bộ nhận sẽ lấy mẫu 16 lần.
Trong khi đường truyền rảnh, mẫu lấy ở mức logic 0 thì được hiểu là cạnh xuống
của start-bit, và chu trình kiểm tra start-bit được bắt đầu.
Ta chọn mẫu lần thứ 1 biểu thò cho mẫu 0. Ta xét mẫu thứ 8, 9 và 10, nếu
hơn hai trong ba mẫu này ở mức logic 1 thì startbit được coi như là một nhiễu và
bộ nhận sẽ chờ một start-bit mới.
Nếu một start-bit được kiểm tra là đúng, thì quá trình lấy mẫu tương tự
được tiếp tục với từng bit dữ liệu kế theo.


Hình 6.7 Khung truyền dữ liệu UART

Khi stop-bit đến bộ nhận, phải có ít nhất 2 trong 3 mẫu ở logic 1 thì bit đó
mới được hiểu là stopbit. Nếu có hơn 2 mẫu là logic 0 thì cờ FE (Framing Error)
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 38

trong thanh ghi USR được set. Vì vậy trước khi đọc thanh ghi UDR, người sử
dụng nên kiểm tra cờ FE.
Dữ liệu vẫn được chuyển vào thanh ghi UDR và cờ RXC trong thanh ghi
USR được set cho dù việc kiểm tra stop-bit có lỗi hay không. Thật ra, UDR được
chia thành 2 thanh ghi riêng biệt: một cho bộ nhận và một cho bộ truyền.
Và nếu trong khi đang nhận về một ký tự mà thanh ghi UDR không được
đọc về từ lần nhận trước thì cờ OR (OverRun) trong UCR sẽ được set. Điều này
có nghóa là dữ liệu trong lần nhận trước đã được dòch vào trong thanh ghi dòch đã
không được chuyển vào UDR và bò mất. Cờ OR được cập nhật khi mà dữ liệu
trong UDR được đọc. Vì thế, người sử dụng nên kiểm tra cờ này sau khi đọc
UDR để chắc rằng dữ liệu không bò ghi đè do tốc độ BAUD quá cao hay CPU
quá tải.
Khi mà cờ RXEN trong thanh ghi UCR được reset, thì bộ nhận bò vô hiệu
hóa. Tức là chân PD0 (RxD) có thể dùng như là một chân xuất nhập bình
thường. Khi cờ này được set, bộ nhận sẽ được nối với chân PD0 và chân này trở
thành chân RxD.
6.2.4.3 Các thanh ghi liên quan

• Thanh ghi dữ liệu UDR (The UART I/O Data Register)

Thanh ghi UDR thật ra có 2 thanh ghi riêng biệt cùng có chung một đòa chỉ
I/O. Khi ghi lên thanh ghi này, thì UDR là thanh ghi dữ liệu của bộ truyền. Khi
đọc từ UDR, thì lúc này UDR lại là thanh ghi dữ liệu của bộ nhận.
• Thanh ghi trạng thái USR (UART Status Register)


Thanh ghi USR là một thanh ghi chỉ đọc, nó cung cấp thông tin trạng thái
UART.
 Bit 7 – RXC (UART Receive Complete)
Bit này được set khi một ký tự được chuyển từ thanh ghi
dòch vào UDR. RXC được xóa khi UDR được đọc.
 Bit 6 – TXC (UART Transmit Complete)
Bit này được set khi mà toàn bộ ký tự (bao gồm cả
stop-bit) trong thanh ghi dòch được đẩy ra và không có dữ
liệu mới nào được ghi vào trong UDR.
 Bit 5 – UDRE (UART Data Register Empty)
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 39

Bit này được set khi một ký tự trong UDR được chuyển
vào thanh ghi dòch. Việc set cờ này báo hiệu rằng bộ truyền
đã rỗng và đã sẵn sàng để phát ký tự tiếp theo.
UDRE được set trong suốt quá trình reset.
 Bit 4 – FE (Framing Error)
Bit này được set nếu một lỗi khung truyền được tìm
thấy; ví dụ như: stop-bit của ký tự đang nhận là 0.
Bit này sẽ được xóa khi mà stopbit của dữ liệu nhận
được là 1.
 Bit 3 – OR (Overrun)
Bit này được set nếu một lỗi ghi đè dữ liệu được phát
hiện. Ví dụ như: khi một ký tự đang ở trong UDR không
được đọc trước khi một ký tự khác được dòch vào thanh ghi
dòch của bộ nhận.
Cờ OR được xóa khi dữ liệu được nhận và chuyển tới

UDR.

• Thanh ghi điều khiển UCR (UART Control Register)

 bit 7 – RXCIE: Cho phép ngắt nhận khi hoàn tất.
Nếu bit này được set thì khi bit RXC trong thanh ghi RXC
lên một thì chương trình phục ngắt sẽ được thực hiện.
 bit 6 – TXCIE: Cho phép ngắt truyền khi hoàn tất.
Nếu bit này được set thì khi bit TXC trong thanh ghi USR
lên một thì chương trình phục vụ ngắt sẽ được thực hiện.
 bit 5 – UDRIE: Cho phép ngắt khi bộ đệm rỗng.
Nếu bit này được set thì khi bit UDRE trong thanh ghi USR
lên một thì chương trình phục vụ ngắt sẽ được thực hiện.
 bit 4 – RXEN: Cho phép nhận.
Bit này cho phép bộ nhận hoạt động khi được set. Khi bit
này đang ở mức 0, thì các cờ trạng thái TXC, OR, FE không thể
được set. Nếu các cờ này được set, thì việc reset RXEN không
làm cho các cờ này bò xóa.
 bit 3 – TXEN: Cho phép truyền
Bit này cho phép bộ truyền hoạt động khi được set. Trong
khi đang truyền một ký tự mà bit cho phép truyền bò reset, thì
bộ truyền vẫn tiếp tục truyền cho đến hết ký tự đang truyền.
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 40

 bit 2 – CHR9: Khung dữ liệu 9 bit
Khi bit này được set thì khung dữ liệu sẽ là 9 bit kể cả start
bit và stop-bit. Bit thứ 9 sẽ được đọc và ghi bằng cách sử dụng
bit RXB8 và TXB8 tương ứng trong thanh ghi UCR. Bit thứ 9

này có thể coi như một stop-bit mở rộng hoặc bit kiểm tra
parity.
 bit 1 - RXB8: Receive Data Bit 8
RXB8 là bit thứ 9 của ký tự nhận được khi CHR9 được set.
 bit 0 – TXB8: Transmit Data Bit 8
TXB8 là bit thứ 9 của ký tự nhận được khi CHR9 được set.
6.2.4.4 Cách đònh tốc độ BAUD

Tốc độ BAUD được xác đònh theo công thức sau:

)1UBRR(16
f
BAUD
CK
+
=

 BAUD: tốc độ BAUD.
 f
CK
: tần số thạch anh sử dụng.
 UBRR: thanh ghi chứa giá trò xác đònh tốc độ BAUD (0-
255).
Với một số thạch anh chuẩn, các tốc độ BAUD thông thường được cho
trong bảng sau, chú ý rằng với các tốc độ BAUD có phần trăm sai số hơn 1%
không nên sử dụng:
Bảng 6.1 Bảng các tốc độ BAUD thông dụng


GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng


Thiết kế, chế tạo và điều khiển tay máy Trang 41


• Thanh ghi tốc độ BAUD – UBRR

Thanh ghi UBRR là thanh ghi 8 bit qui đònh tốc độ BAUD.
6.3 CÁC LỆNH CỦA AT90S2313 SỬ DỤNG TRONG LUẬN VĂN
 ADC – Cộng với cờ Carry
Cộng hai thanh ghi với cờ C, sau đó kết quả được lưu vào thanh ghi
đích Rd.
Số byte 2
Số chu kỳ 1
Mã đối tượng 0001 11rd dddd rrrr
Cú pháp

ADC Rd, Rr
(0 ≤ d ≤ 31, 0 ≤ r ≤ 31)
Hoạt động
Rd ← Rd+Rr+C
Các cờ ảnh hưởng Z, C, N, V, H.

 ADIW – Cộng trực tiếp 1 thanh ghi 16bit với một số
Cộng một cặp thanh ghi với một số từ 0-63, kết quả lưu vào cặp
thanh ghi. Lệnh này dùng cho 4 cặp thanh ghi cao nhất.
Số byte 2
Số chu kỳ 2
Mã đối tượng 1001 0110 KKdd KKKK
Cú pháp


ADIW Rd+1:Rd, K
(d ∈ {24,26,28,30}, 0≤ K ≤ 63)
Hoạt động
Rd+1:Rd ← Rd+1:Rd + K
Các cờ ảnh hưởng Z, C, N, V, S.
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 42


 AND – And logic
Thực hiện phép and logic nội dung giữa hai thanh ghi Rd và Rr, kết
quả lưu vào thanh ghi Rd.
Số byte 2
Số chu kỳ 1
Mã đối tượng 0010 00rd dddd rrrr
Cú pháp

AND Rd, Rr
(0 ≤ d ≤ 31, 0 ≤ r ≤ 31)
Hoạt động
Rd ← Rd * Rr
Các cờ ảnh hưởng Z, N, V.

 BREQ – Nhảy nếu bằng
Lệnh này sẽ thực hiện nếu cờ Z được set
Số byte 2
Số chu kỳ 1/2
Mã đối tượng 1111 00kk kkkk k001
Cú pháp


BREQ k
(-64 ≤ k ≤ 63)
Hoạt động
If Rd=Rr (Z=1) then PC← PC+k+1, else PC ← PC+1

 BRNE – Nhảy nếu không bằng
Lệnh này sẽ được thực hiện nếu cờ Z được reset
Số byte 2
Số chu kỳ 1/2
Mã đối tượng 1111 01kk kkkk k001
Cú pháp

BRNE k
(-64 ≤ k ≤ 63)
Hoạt động
If Rd≠Rr (Z=0) then PC← PC+k+1, else PC ← PC+1

 BRCS – Nhảy nếu cờ Carry được set
Lệnh này sẽ thực hiện khi cờ Carry được set
Số byte 2
Số chu kỳ 1/2
Mã đối tượng 1111 00kk kkkk k000
Cú pháp
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 43


BRCS k

(-64 ≤ k ≤ 63)
Hoạt động
If C=1 then PC← PC+k+1, else PC ← PC+1

 CP – So sánh
So sánh nội dung thanh ghi Rd và Rr. Lệnh này không làm thay đổi
nội dung thanh ghi.
Số byte 2
Số chu kỳ 1
Mã đối tượng 0001 01rd dddd rrrr
Cú pháp

CP Rd, Rr
(0 ≤ d ≤ 31, 0 ≤ r ≤ 31)
Hoạt động
Rd - Rr
Các cờ ảnh hưởng Z, C, N, V, H

 CPI – So sánh
So sánh nội dung thanh ghi Rd với một hằng số K. Lệnh này không
làm thay đổi nội dung thanh ghi.
Số byte 2
Số chu kỳ 1
Mã đối tượng 0011 KKKK dddd KKKK
Cú pháp

CPI Rd, K
(16 ≤ d ≤ 31, 0 ≤ K ≤ 255)
Hoạt động
Rd - K

Các cờ ảnh hưởng Z, C, N, V, H.

 CPSE – So sánh và bỏ qua nếu bằng
So sánh nội dung thanh ghi Rd và Rr, và bỏ qua lệnh kế tiếp nếu
Rd=Rr. Lệnh này không làm thay đổi nội dung thanh ghi.
Số byte 2
Số chu kỳ 1/2
Mã đối tượng 0001 00rd dddd rrrr
Cú pháp

CPSE Rd, Rr
(0 ≤ d ≤ 31, 0 ≤ r ≤ 31)
Hoạt động
If Rd = Rr then PC ← PC + 2 (hoặc 3), else PC ← PC + 1

GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 44

 IN – Lưu giá trò của một vò trí I/O vào thanh ghi
Lưu dữ liệu từ một thiết bò xuất nhập (như Port, Timer…) vào thanh
ghi Rd.
Số byte 2
Số chu kỳ 1
Mã đối tượng 1011 0AAd dddd AAAA
Cú pháp

IN Rd,A
(0 ≤ d ≤ 31, 0 ≤ A ≤ 63)
Hoạt động

Rd ← I/O(A)

 LD – Nạp gián tiếp nội dung vào thanh ghi thông qua thanh ghi con trỏ
(X, Y, Z).
Nội dung các thanh ghi con trỏ X, Y, Z có thể không đổi hoặc có thể
tăng hoặc giảm một đơn vò sau khi lệnh được thực thi. Chú ý rằng chỉ có
nội byte thấp của thanh ghi được cập nhật, còn byte cao thì không.
Số byte 2
Số chu kỳ 2
Mã đối tượng
Khi sử dụng thanh ghi con trỏ X
(1) 1001 000d dddd 1100
(2) 1001 000d dddd 1101
(3) 1001 000d dddd 1110

Khi sử dụng thanh ghi con trỏ Y
(4) 1000 000d dddd 1000
(5) 1001 000d dddd 1001
(6) 1001 000d dddd 1010

Khi sử dụng thanh ghi con trỏ Z
(7) 1000 000d dddd 0000
(8) 1001 000d dddd 0001
(9) 1001 000d dddd 0010

Cú pháp
(1)
LD Rd, X
( 0 ≤ d ≤ 31)
(2)

LD Rd, X+
( 0 ≤ d ≤ 31)
(3)
LD Rd, -X
( 0 ≤ d ≤ 31)

GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 45

(4)
LD Rd, Y
( 0 ≤ d ≤ 31)
(5)
LD Rd, Y+
( 0 ≤ d ≤ 31)
(6)
LD Rd, -Y
( 0 ≤ d ≤ 31)

(7)
LD Rd, Z
( 0 ≤ d ≤ 31)
(8)
LD Rd, Z+
( 0 ≤ d ≤ 31)
(9)
LD Rd, -Z
( 0 ≤ d ≤ 31)


Hoạt động
(1) Rd ← (X)
(2) Rd ← (X) X ← X+1
(3) X ← X-1 Rd ← (X)
Cơ chế hoạt động tương tự với Y và Z

 LDI – Nạp giá trò trực tiếp
Nạp một hằng số 8-bit trực tiếp vào thanh ghi từ 16 đến 31
Số byte 2
Số chu kỳ 1
Mã đối tượng 1110 KKKK dddd KKKK
Cú pháp

LDI Rd, K
(16 ≤ d ≤ 31, 0 ≤ K ≤ 255)
Hoạt động
Rd ← K

 MOV – Sao chép thanh ghi
Lệnh này sao chép nội dung của thanh ghi Rr vào thanh ghi Rd.
Thanh ghi Rr không thay đổi trong khi thanh ghi Rd được lưu giá trò của
thanh ghi Rr.
Số byte 2
Số chu kỳ 1
Mã đối tượng 0010 11rd dddd rrrr
Cú pháp

MOV Rd,Rr
(0 ≤ d ≤ 31, 0 ≤ r ≤ 31)
Hoạt động

Rd ← Rr

 ORI – Or với một hằng số
Thực hiện phép OR logic giữa một thanh ghi Rd và một hằng số, kết
quả lưu vào thanh ghi Rd.
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 46

Số byte 2
Số chu kỳ 1
Mã đối tượng 0110 KKKK dddd KKKK
Cú pháp

ORI Rd,K
(16 ≤ d ≤ 31, 0 ≤ K ≤ 255)
Hoạt động
Rd ← Rd v K
Các cờ ảnh hưởng: Z, N, V.

 RJMP – Nhảy không điều kiện
Nhảy đến một đòa chỉ trong khoảng PC – 2K + 1 đến PC + 2K
(Word). Với ngôn ngữ Assembler, thì K được thay bằng một nhãn.
Số byte 2
Số chu kỳ 1
Mã đối tượng 1100 kkkk kkkkk kkkkk
Cú pháp

RJMP k
(-2K ≤ k ≤ 2K)

Hoạt động
PC ← PC + k + 1

 SBIS – Bỏ qua nếu bit trong thanh ghi I/O được set
Lệnh này kiểm tra một bit lẻ trong một thanh ghi I/O và bỏ qua lệnh
kế tiếp nếu bit đó được set. Lệnh này chỉ thực hiện với các thanh ghi I/O
thấp.
Số byte 2
Số chu kỳ 1
Mã đối tượng 1001 1011 AAAA Abbb
Cú pháp

SBIS A,b
(0≤ A ≤ 31, 0 ≤ b ≤ 7)
Hoạt động
If I/O(A.b) = 1 then PC ← PC + 2( or 3) else PC ← PC + 1

 SBIW – Trừ một hằng số (16 bit)
Lấy một cặp thanh ghi trừ một hằng số (0-63), kết quả lưu vào cặp
thanh ghi đó.
Số byte 2
Số chu kỳ 2
Mã đối tượng 1001 0111 KKdd KKKK
Cú pháp
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 47


SBIW Rd+1:Rd,K

(d∈{24,26,28,30}, 0 ≤ K ≤ 63)
Hoạt động
Rd+1:Rd ← Rd+1:Rd -K
Các cờ ảnh hưởng: Z, N, V, S, C.

 ST – Lưu nội dung một thanh ghi vào ô nhớ được con trỏ dữ liệu trỏ tới
(X,Y,Z).
Nội dung các thanh ghi con trỏ X, Y, Z có thể không đổi hoặc có thể
tăng hoặc giảm một đơn vò sau khi lệnh được thực thi. Chú ý rằng chỉ có
nội byte thấp của thanh ghi được cập nhật, còn byte cao thì không.
Số byte 2
Số chu kỳ 2
Mã đối tượng
Khi sử dụng thanh ghi con trỏ X
(1) 1001 001r rrrr 1100
(2) 1001 001r rrrr 1101
(3) 1001 001r rrrr 1110

Khi sử dụng thanh ghi con trỏ Y
(4) 1000 001r rrrr 1000
(5) 1001 001r rrrr 1001
(6) 1001 001r rrrr 1010

Khi sử dụng thanh ghi con trỏ Z
(7) 1000 001r Rrrr 0000
(8) 1001 001r Rrrr 0001
(9) 1001 001r Rrrr 0010

Cú pháp
(1)

ST X, Rr
( 0 ≤ r ≤ 31)
(2)
ST X+, Rr
( 0 ≤ r ≤ 31)
(3)
ST -X, Rr
( 0 ≤ r ≤ 31)

(4)
ST Y, Rr
( 0 ≤ r ≤ 31)
(5)
ST Y+, Rr
( 0 ≤ r ≤ 31)
(6)
ST -Y, Rr
( 0 ≤ r ≤ 31)

(7)
ST Z, Rr
( 0 ≤ r ≤ 31)
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 48

(8)
ST Z+, Rr
( 0 ≤ r ≤ 31)
(9)

ST -Z, Rr
( 0 ≤ r ≤ 31)

Hoạt động
(2) (X) ← Rr
(4) (X) ← Rr X ← X+1
(5) X ← X-1 (X) ← Rr
Cơ chế hoạt động tương tự với Y và Z

 STS – Lưu giá trò trực tiếp vào biến
Lưu một byte từ một thanh ghi vào trong bộ nhớ (RAM nội).
Số byte 4
Số chu kỳ 2
Mã đối tượng 0110 001d dddd 0000
kkkk kkkk kkkk kkkk
Cú pháp

STS k,Rr
(0 ≤ r ≤ 31, 0 ≤ k ≤ 65535)
Hoạt động
(k) ← Rr

 Chú ý đối với các lệnh không đề cập đến các cờ ảnh hưởng, nghóa là các
lệnh đó không ảnh hưởng đến các cờ.
6.4 NẠP DỮ LIỆU NỐI TIẾP
Chương trình có thể được nạp vào chip bằng chuẩn SPI trong khi chân
RESET được kéo xuống mass. Chuẩn SPI dùng 3 chân: SCK, MOSI (nhập) và
MISO (xuất). Sau khi chân RESET được kéo xuống mass, thì lệnh cho phép lập
trình cần được thực hiện trước khi thực hiện việc xoá và nạp chương trình.


Hình 6.8 Sơ đồ mạch đổ chương trình cho chip
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 49

Đối với EEPROM thì không cần thực hiện lệnh xóa vì điều này sẽ được
thực hiện tự động. Lệnh xóa làm toàn bộ nội dung thành FFh.

Hình 6.9 Giản đồ xung cho quá trình đổ dữ liệu vào chip
 Quá trình nạp chip
a) Cấp nguồn cho chip (Vcc và GND) trong khi chân RESET và SCK xuống
mass.
b) Chờ ít nhất 20ms và cho phép nạp nối tiếp bằng cách gởi lệnh cho phép nạp
tới chân MOSI (PB5).
c) Nếu thiếu sự đồng bộ thì các lệnh nạp nối tiếp sẽ không được thực hiện. Khi
đã có sự đồng bộ, thì byte thứ hai (53h) sẽ được gởi ngược trở lại trong khi
byte thứ ba đang của lệnh cho phép nạp được gởi. Cho dù byte gởi về thứ hai
(53h) có đúng hay không thì tất cả 4 byte cũng phải được truyền đi. Trong
trường hợp byte thứ hai (53h) không được gởi về thì ta cấp một xung dương
cho chân SCK và sau đó ta lại tiếp tục truyền lại lệnh lập trình. Quá trình này
sẽ được lập đi lập lại trong 32 lần, nếu không thành công coi như việc lập
trình chip bò hủy.
d) Nếu lệnh xóa chip được thực hiện (khi lập trình Flash ROM) thì ta chờ t
WD-
ERASE
(tối thiểu 8ms) sau lệnh này, tiếp tục cấp một xung dương cho chân
RESET rồi quay lại bước hai.
e) Flash ROM và EEPROM được nạp từng byte một bằng cách cung cấp vừa đòa
chỉ vừa dữ liệu trong cùng một lệnh ghi thích hợp. Đối với vùng nhớ trong
EEPROM, thì lệnh xóa sẽ được thực hiện một cách tự động trước khi dữ liệu

mới được ghi vào. Có thể sử dụng việc đọc các byte dấu hiệu trước khi
truyền lệnh kế tiếp hoặc nếu không thì ta chờ t
WD-PROG
(tối thiểu 4ms)
f) Bằng lệnh đọc ta có thể đọc lại nội dung trong bất kỳ ô nhớ nào thông qua
chân MISO (PB6) để kiểm tra lại dữ liệu đã ghi.
g) Khi kết thúc việc đổ chương trình, chân RESET được đưa lên mức cao để bắt
đầu chế độ hoạt động bình thường.
Bảng 6.2 Các lệnh dùng trong nạp chương trình cho chip
Mã lệnh
Lệnh
Byte 1 Byte 2 Byte 3 Byte 4
Ghi chú
Cho phép
nạp
1010 1100 0101 0011 xxxx xxxx xxxx xxxx
Lệnh thực thi
khi chân
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 50

RESET → 0V
Xóa chip 1010 1100 100x xxxx xxxx xxxx xxxx xxxx
Xóa Flah và
EEPROM
Lệnh đọc
Flash ROM
0010 H000 xxxx xxaa bbbb bbbb oooo oooo
Đọc dữ liệu o

từ flash ROM
tại đòa chỉ a:b
Ghi vào
Flash ROM
0100 H000 xxxx xxaa bbbb bbbb iiii iiii
Ghi dữ liệu i
vào Flash
ROM tại đòa
chỉ a:b
Lệnh đọc
EEPROM
1010 0000 xxxx xxxx xbbb bbbb oooo oooo
Đọc dữ liệu o
từ EEPROM
tại đòa chỉ b
Ghi vào
EEPROM
1100 0000 xxxx xxxx xbbb bbbb iiii iiii
Ghi dữ liệu I
vào EEPROM
tại đòa chỉ b
Ghi bit
khóa
1010 1100
111x x
21
x
xxxx xxxx xxxx xxxx
Ghi bit khóa.
1,2=0 thì khóa

chương trình
Đọc các
byte dấu
hiệu
0011 0000 xxxx xxxx xxxx xxbb oooo oooo
Đọc các byte
dấu hiệu o tại
đòa chỉ b
 Chú thích:
- a = bit đòa chỉ cao
- b = bit đòa chỉ thấp
- H = 0 – byte thấp, 1 – byte cao
- o = dữ liệu nhận về
- i = dữ liệu nạp vào
- x = không quan tâm
- 1 = bit khóa 1
- 2 = bit khóa 2
6.5 KẾT LUẬN
Chương này chúng ta đã nắm khá rõ cấu trúc, cách lập trình cũng như các
đặc tính nổi trội của chip AT90S2313. Dựa vào những điều này chúng ta có thể
lập trình điều khiển các động cơ RC-Servo. Chương sau sẽ nói khái quát về họ vi
xử lý MCS-51, cụ thể là vi xử lý AT89C2051.

GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

×