Tải bản đầy đủ (.doc) (144 trang)

đồ án thiết kế mạch đo nhiệt độ

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 (1.61 MB, 144 trang )


Mục lục
Mục lục 1
Lời nói đầu 3
Chơng i 4
Nhiệm vụ và phơng hớng thực hiện 4
1.1. Nhiệm vụ của đồ án 4
1.2. Phân tích nhiệm vụ 4
1.3. Phơng hớng thực hiện 5
1.3.1. Lựa chọn thiết bị 5
1.3.2. Phơng hớng thiết kế 6
Chơng 2 8
Lựa chọn linh kiện thiết kế 8
và một số lý thuyết về chuyển đổi A/D 8
2.1. Lựa chọn linh kiện thiết kế 8
2.1.1. Giới thiệu vi mạch điều khiển AT90S8535 8
2.1.1.1. Cấu trúc của vi mạch AT90S8535 12
2.1.1.2. Tập thanh ghi đa năng của
à
C AT90S8535 13
2.1.1.3. Bộ số học và Logic - ALU 15
2.1.1.4. Đặc điểm các bộ nhớ trong của
à
C AT90S8535 15
2.1.1.5. Các chế độ địa chỉ của
à
C AT90S8535 17
2.1.1.6. Thời gian truy cập bộ nhớ và thời gian thực hiện lệnh .20
2.1.1.7. Không gian bộ nhớ I/O 21
2.1.1.8. Ngắt và xử lý ngắt trong
à


C AT90S8535 25
2.1.1.9. Các chế độ nghỉ của
à
C AT90S8535 34
2.1.1.10. Các mạch điều khiển trong
à
C AT90S8535 35
2.1.2. Module LCD (20x4 characters) 86
2.1.3. IC Max232 90
2.1.3.1. Giới thiệu chuẩn RS232 90
2.1.3.2. IC Max232 92
2.1.4. Cảm biến nhiệt LM335 94
2.2. Một số lý thuyết về chuyển đổi A/D 94
2.2.1. Khái niệm chung 94
2.2.2. Một số phơng pháp chuyển đổi AD 95
2.2.2.1. Phơng pháp chuyển đổi song song 96
2.2.2.2. Phơng pháp xấp xỉ liên tiếp. 96
2.2.2.3. Phơng pháp tích phân hai sờn dốc 97


Trang 1

Chơng 3 99
Thiết kế hệ thống phần cứng 99
3.1. Sơ đồ cấu trúc phần cứng của hệ thống 99
3.2. Sơ đồ ghép nối àC với module LCD 99
3.3. Sơ đồ ghép nối àC với module KeyPad 100
3.4. Sơ đồ ghép nối àC với cảm biến nhiệt LM335 101
3.4. Sơ đồ ghép nối àC với IC Max232 102
3.5. Sơ đồ kết nối nguồn nuôi cho vi mạch điều khiển 102

Chơng 4 104
thiết kế hệ thống phần mềm cho àC AT90S8535 104
4.1. Biểu đồ chức năng và lu đồ tổng thể của chơng trình điều
khiển àC 104
4.2. Lu đồ thuật toán của các chức năng chính 107
4.2.1. Chức năng giao tiếp với LCD controller 107
4.2.2. Chức năng điều khiển và hiển thị kết quả ADC 109
4.2.3. Chức năng giao tiếp với KeyPad 112
4.2.4. Chức năng truyền nhận dữ liệu nối tiếp với PC 117
Chơng 5 119
Thiết kế hệ thống phần mềm trên PC 119
5.1. Mục đích của phần mềm trên PC 119
5.2. Một số chức năng chính của chơng trình 120
5.3. Nhận xét và đánh giá 121
Kết luận 123
Phụ lục 124
Chơng trình điều khiển àC AT90S8535 124


Trang 2

Lời nói đầu
Ngày này, việc ứng dụng máy tính vào các kỹ thuật đo lờng và điều khiển
không còn mới vì khi các thiết bị, hệ thống đo lờng và điều khiển đợc ghép nối
với máy tính sẽ có thời gian thu thập và xử lý dữ liệu ngắn trong khi mức độ
chính xác vẫn đợc đảm bảo, nhng điều đáng quan tâm hơn cả là khả năng tự
động hoá trong việc thu thập và xử lý dữ liệu. Chính vì điều này làm cho máy
tính đợc ứng dụng trong hầu hết vào các lĩnh vực trong cuộc sống hàng ngày
đặc biệt là trong lĩnh vực công nghiệp.
Một bớc tiến quan trọng trong kỹ thuật vi xử lý là sự ra đời của các bộ vi

xử lý kỹ thuật số. Đây là một vi mạch điện tử có mật độ tích hợp cao bao gồm
rất nhiều các mạch số có khả năng nhận, xử lý và xuất dữ liệu. Đặc biệt là
quá trình xử lý dữ liệu đợc thực hiện theo một chơng trình là một tập hợp các
lệnh từ bên ngoài mà ngời sử dụng có thể thay đổi dễ dàng tùy thuộc vào từng
ứng dụng. Do đó một bộ vi xử lý có thể thực hiện đợc rất nhiều các yêu cầu
điều khiển khác nhau tuỳ thuộc vào nhu cầu sử dụng.
Sự ra đời của kỹ thuật vi xử lý là sự kết hợp giữa kỹ thuật phần cứng và
phần mềm đã làm cho hoạt động của các mạch điện tử trở nên mềm dẻo hơn
với những phần mềm rất linh hoạt mà ngời sử dụng có thể sửa chữa, thay đổi
hoặc bổ sung làm cho ứng dụng ngày càng trở nên hoàn thiện mà không cần
phải thiết kế lại toàn bộ ứng dụng.
Trong đồ án này, em sử dụng vi mạch điều khiển AT90S8535 của hãng
Atmel để thiết kế một mạch đo nhiệt độ đơn giản. Đây là một bộ vi xử lý 8 bit
năng lợng thấp (theo kiểu chíp CMOS) trên cơ sở cấu trúc RICS của hãng
Atmel, tốc độ xử lý dữ liệu của IC AT90S8535 rất cao (xấp xỉ 8 MISP tại tần
số 8MHz) cho phép hệ thống có thể đợc thiết kế tối u làm tăng tốc độ xử lý.
Do đó, nó cung cấp khả năng linh hoạt rất cao trong các ứng dụng nhúng. Vì
vậy, việc tìm hiểu cấu trúc và đặc tính của vi mạch điều khiển AT90S8535 có
thể giúp chúng ta sử dụng vi mạch điều khiển này cho các ứng dụng cần thiết.
Em xin chân thành cảm ơn thầy Bùi Quốc Anh đã tận tình hớng dẫn để
em hoàn thành đồ án này. Em cũng xin chân thành cảm ơn các anh ở trung
tâm NET.JSC đã giúp đỡ em trong suốt thời gian thực hiện đồ án. Tuy nhiên,
do trình độ còn nhiều hạn chế nên đồ án không thể tránh khỏi những thiếu
sót, vì vậy em rất mong đợc sự chỉ bảo của các thầy cô cũng nh của những ng-
ời đi trớc trong lĩnh vực này để đồ án của em hoàn thiện hơn qua đó em có
thể xây dựng đợc những ứng dụng trong thực tế.


Trang 3


Chơng i
Nhiệm vụ và phơng hớng thực hiện
1.1. Nhiệm vụ của đồ án.
Từ mục đích tổng quát của đề tài là thiết kế và xây dựng một hệ thống
đo nhiệt độ đơn giản, có thể phân tách ra thành các nhiệm vụ chính cần
thực hiện nh sau:
Thiết kế và xây dựng hệ thống ghép nối vi điều khiển (àC)
AT90S8535 với module LCD (4x20 character), keypad (16 keys), cảm
biến nhiệt LM335. Ngoài ra hệ thống còn phải có khả năng giao tiếp với
máy tính (PC) qua cổng RS 232.
Hình 1.1 : Sơ đồ tổng thể của hệ thống cần thiết kế

Thiết kế và xây dựng phần
mềm điều khiển àC để thu thập dữ liệu từ cảm biến nhiệt nhiệt LM335,
từ keypad hoặc từ PC. Xử lý dữ liệu nhận đợc để hiển thị trên LCD hoặc
truyền sang PC.
Xây dựng phần mềm trên PC để có thể giao tiếp đợc với àC qua
cổng RS 232
1.2. Phân tích nhiệm vụ.

Để có thể thiết kế và xây dựng đợc hệ thống nh trên cần phải thực
hiện các bớc sau :
Nghiên cứu và tìm hiểu bộ vi xử lý AT90S8535.
Tìm hiểu sự hoạt động của module LCD và cảm biến nhiệt LM 335.
Tìm hiểu sự hoạt động và phơng pháp mã hoá keypad để có thể
ghép nối với àC.
Tìm hiểu phơng pháp truyền thông sử dụng chuẩn RS 232.
Thiết kế sơ đồ mạch nối ghép giữa àC với LCD, keypad, IC LM335
và giữa àC với máy tính thông qua cổng RS 232.



Trang 4
LCD display
KeyPad
16
L335
àC +
I/O port
PC
RS 232

Lập trình phần mềm nạp cho àC để thực hiện các kết nối trên.
Viết phần mềm trên PC để giao tiếp với àC qua cổng RS 232.
Lắp giáp mạch đã thiết kế, chạy kiểm thử và đánh giá kết quả.
Viết báo cáo tốt nghiệp.
1.3. Phơng hớng thực hiện.
1.3.1. Lựa chọn thiết bị.
a) Lựa chọn vi điều khiển :
Trong thực tế có rất nhiều các họ vi xử lý khác nhau có thể sử dụng đợc
trong ứng dụng này nh họ vi điều khiển 8051 của Intel, 68hC11 của Motorola
hay họ vi điều khiển 8515 của ATMEL Tuy nhiên, trong đồ án sử dụng bộ
vi xử lý AT90S8535 của ATMEL, do đây là một sản phẩm mới của hãng
ATMEL nên việc tìm hiểu nó sẽ đem lại rất nhiều lợi ích trong việc thiết kế
các ứng dụng đo lờng và điều khiển. Về mặt cấu tạo nó cũng tơng tự nh bộ vi
xử lý AT90S8515 đã có từ khá lâu với 4 cổng I/O lập trình đợc. Nhng về mặt
công dụng thì bộ vi xử lý AT90S8535 đợc tích hợp nhiều chức năng hơn so
với bộ vi xử lý AT90S8515, đặc biệt trên àC AT90S8535 đợc tích hợp một bộ
ADC cho phép mỗi chân của port A đợc sử dụng là đầu vào cho bộ ADC, làm
cho việc sử dụng àC AT90S8535 trong các ứng dụng linh hoạt hơn rất nhiều
so với àC AT90S8515 đang đợc sử dụng rộng rãi tại Việt Nam.

b) Thiết bị hiển thị dữ liệu :
Đối với các loại dữ liệu đợc hiển thị dới dạng số thì giải pháp tối u là sử
dụng các LED 7 thanh do loại thiết bị hiển thị này có giá thành tơng đối rẻ.
Tuy nhiên, do ứng dụng không chỉ hiển thị chữ số (giá trị nhiệt độ) mà còn
phải hiển thị cả các ký tự trong bảng chữ cái, do đó lựa chọn thiết bị hiển thị
LCD vì loại thiết bị hiển thị này có khả năng hiển thị cả chữ cái và chữ số một
cách rõ nét. Mặc dù so với các loại đèn LED thì LCD có giá thành cao hơn,
nhng bù lại thiết bị hiển thị LCD có nhiều đặc tính u việt hơn hẳn so với các
loại đèn LED. Đặc biệt, thiết bị LCD cung cấp khả năng hiển thị dữ liệu vô
cùng linh hoạt do ta có thể điều khiển xuất dữ liệu một cách trực tiếp thông
qua tập lệnh điều khiển của vi mạch điều khiển và bộ mã ký tự sẵn có trong
CGRAM của LCD. Một điều cần quan tâm khác là thiết bị LCD tiêu tốn rất ít
năng lợng.
Trên thị trờng hiện nay có khá nhiều module LCD của các hãng khác
nhau nh Samsung, Hitachi, Motorola với nhiều loại kích thớc. Trong đồ án
sử dụng module LCD có kích thớc 4x20 characters với 16 chân ghép nối.
Không nhất thiết phải chọn hãng cung cấp vì các module LCD đều đợc xây
dựng theo cùng một tiêu chuẩn, do đó cách thức điều khiển và ghép nối các
module LCD thông dụng hiện nay cũng tơng tự nhau.


Trang 5

c) Thiết bị vào dữ liệu và điều khiển (Keypad) :
Để ngời sử dụng có thể giao tiếp đợc với hệ thống, cần phải ghép nối àC
với một module keypad. Do ứng dụng có thể làm việc với cả chữ cái và chữ số
nên ta sử dụng keypad loại 16 keys, trong đó mỗi một phím đợc thiết kế nh
một công tắc để có thể nhập đợc dữ liệu có dạng nh sau :
10 chữ số trong hệ thập phân từ 0 9.
26 chữ cái la tinh từ A Z.

Các phím điều khiển bao gồm : Send, Bspace,

,

,

/

, Clear.
Do số ký tự có thể đợc sử dụng cùng với các phím chức năng lớn hơn rất
nhiều so với tổng số phím sẵn có trên module keypad. Vì vậy, bắt buộc phải
sử dụng phơng pháp Multikey, tức là sử dụng phần mềm để mỗi một phím trên
module keypad có thể mã hoá đợc không ít hơn hai ký tự khác nhau. Bằng
cách này, với keypad có 16 phím ta có thể mã hoá đợc toàn bộ bảng chữ cái và
chữ số đồng thời vẫn có thể thực hiện đợc các chức năng điều khiển nh trình
bầy ở trên.
d) Giao tiếp giữa
à
C và PC :
Mặc dù hệ thống đợc thiết kế dựa trên àC AT90S8535 đã có thể làm việc
độc lập trong qua trình thu thập, xử lý và hiển thị dữ liệu tới ngời sử dụng mà
không cần có sự trợ giúp của PC. Tuy nhiên, trong hầu hết các ứng dụng đều
cần phải lu trữ lại dữ liệu mà nếu thực hiện việc này dựa trên àC AT90S8535
đòi hỏi rất nhiều kỹ thuật và chi phí. Trong khi đó, thao tác lu trữ dữ liệu trên
PC lại rất đơn giản, vì vậy giải pháp tối u nhất là sử dụng PC để làm nhiệm vụ
phức tạp này. Vấn đề còn lại chỉ là thao tác truyền dữ liệu cần lu trữ từ àC
sang PC, việc này đợc thực hiện khá đơn giản vì bản thân àC AT90S8535 đã
đợc tích hợp một bộ UART để sử dụng trong hoạt động truyền tin với các thiết
bị ở xa. Nh vậy, dựa vào mạch UART của àC ta có thể thực hiện truyền nhận
dữ liệu với PC theo chuẩn RS 232. Một vấn đề cần quan tâm khi ghép nối àC

với PC theo chuẩn RS 232 là sự tơng quan về mặt điện áp tín hiệu dạng TTL
của àC và điện áp tín hiệu dạng RS 232 của PC. Để thực hiện việc chuyển đổi
tín hiệu dạng TTL sang dạng tín hiệu RS 232 ta sử dụng IC Max232, IC này
có nhiệm vụ tạo ra tín hiệu 10
V
từ mức điện áp TTL để tạo sự tơng thích về
mức điện áp với chuẩn RS 232.
1.3.2. Phơng hớng thiết kế.
Từ sơ đồ tổng thể của hệ thống nh trên hình 1.1 và từ việc lựa chọn thiết
bị nh trình bầy ở trên, hệ thống cần thiết kế có thể đợc thể hiện nh trong sơ đồ
hình 1.2, trong đó :
Khối LCD display : Sử dụng module LCD sẵn có trên thị trờng đợc
ghép nối với àC để hiển thị các thông tin cần thiết cho ngời sử dụng.
Khối Keypad : Đợc nối ghép với àC để ngời sử dụng có thể nhập
dữ liệu hoặc điều khiển sự hoạt động của hệ thống. Module này đợc thiết
kế dới dạng các công tắc và sử dụng trực tiếp các đặc tính của các cổng
I/O lập trình đợc của àC để thực hiện mà không cần nguồn hỗ trợ bên
ngoài.


Trang 6

Khối LM 335 : Là một IC cảm biến nhiệt làm nhiệm vụ biến đổi
nhiệt độ môi trờng sang dạng điện áp để làm đầu vào cho bộ ADC của
àC làm việc.
Khối Max 232 : Sử dụng IC Max 232 ghép nối trợc tiếp với àC làm
nhiệm vụ trao đổi thông tin giữa àC và PC theo chuẩn RS 232.
Khối nguồn : Làm nhiệm vụ biến nguồn xoay chiều 220
V
sang

nguồn một chiều 5
V
ổn định để cấp nguồn cho các khối khác hoạt động.
Hình 1.2 : Sơ đồ khối thiết kế phần cứng


Trang 7
LCD display
Keypad
LM335
àC +
I/O port
Nguồn
Max 232

Chơng 2
Lựa chọn linh kiện thiết kế
và một số lý thuyết về chuyển đổi A/D
2.1. Lựa chọn linh kiện thiết kế.
2.1.1. Giới thiệu vi mạch điều khiển AT90S8535.
AT90S8535 là một vi mạch điều khiển năng lợng thấp 8 bit (công nghệ
chíp CMOS) trên cơ sở cấu trúc RICS của hãng ATMEL, nó thuộc họ vi điều
khiển AT90S/LS8535. Bằng cách thực hiện mỗi lệnh trong một đơn chu kỳ,
AT90S8535 có thể đạt tới 1 MIPS cho mỗi MHz cho phép hệ thống có thể đợc
thiết kế một cách tối u nhất sự tiêu thụ năng lợng làm tăng tốc độ xử lý. Về mặt
cấu tạo àC này cũng tơng tự nh àC AT90S8515 với 4 cổng I/O lập trình đợc, tuy
nhiên về mặt chức năng thì àC AT90S8535 đợc tích hợp thêm nhiều tính năng
mới mà àC AT90S8515 không có. Các đặc trng chính của àC AT90S8535 đợc
trình bầy dới đây :
8KB bộ nhớ chơng trình

512 byte EEPROM
512 byte SRAM
32 line (4 cổng) I/O lập trình đợc
32 thanh ghi đa năng 8 bit
8 kênh đầu vào ADC riêng biệt với 10 bit kết quả
2 bộ Timer/Counter 8 bit với bộ đếm độc lập và chế độ so sánh
1 bộ Timer/Counter 16 bit với bộ đếm độc lập và các chế độ PWM
1 bộ UART lập trình trao đổi thông tin nối tiếp
1 bộ Watchdog Time lập trình đợc với bộ tạo giao động trong
1 bộ so sánh analog
1 cổng phối ghép nối tiếp thiết bị ngoại vi SPI
3 chế độ làm việc là : Idle, Power-Save và Power-down
Nguồn cung cấp từ 4.0 - 6.0
V
, tần số làm việc 0 - 8MHz.
Vi mạch điều khiển AT90S8535 đợc chế tạo theo công nghệ chíp nhớ cố
định với mật độ cao. Bộ nhớ Flash ISP trên chíp cho phép bộ nhớ chơng trình
có thể đợc lập trình lại thông qua một cổng SPI phối ghép nối tiếp với thiết bị
ngoại vi. Ngoài ra, àC AT90SS8535 còn hỗ trợ cho việc lập trình thông qua
các công cụ pháp triển hệ thống nh C, assemblers


Trang 8

Vi điều khiển AT90S8535 có 4 cấu hình chân khác nhau là : PDIP (Có
40 chân), PLCC, TQFP, MLF (Có 44 chân). Sơ đồ chân của mỗi loại nh sau.
Hình 2.1 : Cấu hình chân của
à
C AT90S8535
Chức năng các chân của

à
C AT90S8535 nh sau :
VCC : Chân cấp nguồn 5
V
GND : Chân nối đất
RESET : Là đầu vào reset. Tín hiệu reset ở bên ngoài sẽ tạo ra bởi
mức thấp của trở kháng trên chân Reset. Xung reset dài quá 50ns sẽ tạo
ra tín hiệu reset. Xung ngắn hơn sẽ không đảm bảo phát sinh tín hiệu
reset.


Trang 9
PDIP
PLCC
TQFP MLF

XTAL1 : Là một đầu vào có tác dụng đảo chiều bộ khuếch đại tạo
dao động và là đầu vào của mạch điều khiển đồng hồ bên trong.
XTAL2 : Là đầu ra của tín hiệu đảo từ bộ khuếch đại tạo dao động

AVCC : Là chân cung cấp điện áp cho cổng A và bộ chuyển đổi
ADC, nếu ADC không đợc sử dụng thì chân này phải đợc nối với nguồn
5
V
(chân VCC), nếu ADC đợc sử dụng thì chân này phải đợc nối tới
nguồn 5
V
qua bộ lọc thông thấp.
AREF : Là đầu vào chuẩn của tín hiệu tơng tự cho bộ chuyển đổi
ADC. Để cho ADC hoạt động đợc, nguồn sử dụng cho chân này phải có

phạm vị từ 2
V
đến AVCC.
AGND : Chân nối đất của tín hiệu analog, nếu bo mạch có một mức
nối đất riêng của tín hiệu analog, thì chân này phải đợc nối tới mức nối
đất này. Nếu không có, chân này đợc nối tới chân GND.
Port A (PA7 PA0) : Là một cổng vào ra hai chiều 8 bit. Các chân
của cổng có thể cung cấp các trở kháng trong cho phép chọn từng bit.
Đệm ra của cổng A có khả năng kéo dòng lên tới 20mA và có thể điều
khiển trực tiếp sự hiển thị LED. Khi các chân PA0 đến PA7 đợc sử dụng
nh các cổng vào và ở mức thấp, chúng sẽ là đầu vào hiện thời nếu các
điện trở trong đợc kích hoạt. Cổng A cũng có thể đợc sử dụng nh những
đầu vào analog để đa tín hiệu tới bộ bộ chuyển đổi ADC. Các chân của
cổng A ở trạng thái không xác định khi reset, ngay cả khi đồng hồ không
hoạt động.
Port B (PB7 BP0) : Là một cổng vào ra hai chiều 8 bit với các trở
kháng trong. Đệm ra của cổng B có khả năng kéo dòng lên tới 20mA.
Khi là đầu vào, các chân của cổng B trong trạng thái trở kháng thấp sẽ là
đầu vào hiện thời nếu các điện trở trong đợc kích hoạt. Cổng B là cổng
cung cấp các chức năng khác nhau với những đặc tính đặc biệt của àC
AT90S8535. Các chân của cổng B ở trạng thái không xác định khi reset,
ngay cả khi đồng không hoạt động.
Port C (PC0 PC7) : Là một cổng vào ra hai chiều 8 bit với các trở
kháng trong. Đệm ra của cổng C có khả năng kéo dòng lên tới 20mA.
Khi là đầu vào, các chân của cổng C trong trạng thái trở kháng thấp sẽ là
đầu vào hiện thời nếu các điện trở đợc kích hoạt. Hai chân của cổng C có
thể đợc lựa chọn để sử dụng giống nh bộ tạo dao động cho bộ
Timer/Counter2. Các chân của cổng C ở trạng thái không xác định khi
reset, ngay cả khi đồng không hoạt động.
Port D (PD0 PD7) : Là một cổng vào ra hai chiều 8 bit với các trở

kháng trong. Đệm ra của cổng C có khả năng kéo dòng lên tới 20mA.
Khi là đầu vào, các chân của cổng D trong trạng thái trở kháng thấp sẽ
là đầu vào hiện thời nếu các điện trở đợc kích hoạt. Cổng D cũng cung
cấp những chức năng có đặc tính đặc biệt của àC AT90S8535. Các chân


Trang 10

của cổng D ở trạng thái không xác định khi reset, ngay cả khi đồng
không hoạt động.
Hình 2.2 : Sơ đồ khối vi mạch điều khiển AT90S8535


Trang 11

2.1.1.1. Cấu trúc của vi mạch AT90S8535.
Vi mạch điều khiển AT90S8535 có những phơng thức truy cập nhanh tới
tâp thanh ghi đa năng bao gồm 32 thanh ghi 8 bit với thời gian truy cập trong
một đơn chu kỳ đồng hồ. Điều này có nghĩa trong một đơn chu kỳ, một thao
tác của bộ ALU đợc thực hiện sẽ lấy hai toán hạng từ hai thanh ghi trong tập
thanh ghi, sau khi thao tác đợc thực hiện và kết qua trả sẽ đợc lu trở lại tập
thanh ghi trong một chu kỳ đồng hồ.
Sáu trong số 32 thanh ghi đa năng này có thể đợc sử dụng nh 3 thanh ghi
địa chỉ gián tiếp 16 bit trỏ đến không gian địa chỉ dữ liệu, làm cho phép tính
địa chỉ đạt đợc hiệu quả cao. Một trong 3 con trỏ địa chỉ này cũng đợc sử
dụng giống nh con trỏ địa chỉ tới vùng nhớ dữ liệu cố định. Các thanh ghi địa
chỉ này là các thanh ghi 16 bit X, Y, Z.
Hình 2.3 : Sơ đồ khối kiến trúc của
à
C AT90S8535

Bộ ALU cung cấp các chức năng tính toán số học và logic giữa các
thanh ghi hoặc giữa một hằng số và một thanh ghi. Những thao tác của một
thanh ghi đơn cũng đợc thực hiện trong bộ ALU. Sự hoạt động của ALU đợc
phân chia làm 3 loại chính là số học, logic và các chức năng bit.


Trang 12

Ngoài các chức năng của thanh ghi, các chế độ đánh địa chỉ bộ nhớ
thông thờng cũng có thể đợc sử dụng trên các tập các thanh ghi. Điều này đợc
thực hiện qua việc tập thanh ghi đợc gán 32 địa chỉ thấp nhất của không gian
địa chỉ dữ liệu ($00 $1F), Cho phép chúng có thể đợc truy nhập nh là là các địa
chỉ nhớ bình thờng.
Không gian vùng nhớ I/O bao gồm 64 địa chỉ ($20 $5F) dành cho các
chức năng điều khiển thiết bị ngoại vi của àC nh : Các thanh ghi điều khiển,
bộ Timer/Couter, bộ chuyển đổi ADC và các chức năng I/O khác. Vùng nhớ
I/O có thể đợc truy nhập trực tiếp hoặc gián tiếp thông qua tập các thanh ghi.
àC AT90S8535 sử dụng kiến trúc Harvard - với bộ nhớ và bus độc lập
cho chơng trình và dữ liệu. Bộ nhớ chơng trình đợc thực hiện với một
pipeline hai trạng thái. Trong khi một lệnh đang đợc thực hiện, lệnh tiếp
theo đợc nạp trớc từ bộ nhớ chơng trình. Cách thức này cho phép các lệnh liên
tiếp đợc thực hiện trong từng đơn chu kỳ đồng hồ. Bộ nhớ chơng trình là bộ
nhớ Flash cho phép nạp dữ liệu trong hệ thống.
Với những lệnh nhẩy và lệnh gọi, toàn bộ không gian địa chỉ 4K đợc truy
nhập trực tiếp. Hầu hết các lệnh của AVR đều có độ dài 16 bit. Mỗi địa chỉ bộ
nhớ chơng trình bao gồm một lệnh 16 bit hoặc 32 bit.
Mỗi một module ngắt có những thanh ghi điều khiển trong không gian
I/O với một bit cho phép ngắt chung đợc đặt trong thanh ghi trạng thái. Mỗi
ngắt khác nhau có một vector ngắt độc lập trong bảng vector ngắt ở tại vị trí
bắt đầu của bộ nhớ chơng trình. Mỗi ngắt khác nhau đều có mức độ u tiên

tuân theo vị trí vector ngắt của chúng. Địa chỉ của vector ngắt càng thấp, mức
độ u tiên càng cao. Khi xẩy ra ngắt, một chơng trình con phụ vụ ngắt đợc gọi,
địa chỉ trở về PC đợc đẩy vào ngăn xếp. Vùng nhớ ngăn xếp đợc cấp phát
trong vùng nhớ dữ liệu của SRAM và do đó, dung lợng của ngăn xếp bị giới
hạn bởi tổng dung lợng của SRAM và cách sử dụng thông thờng của SRAM.
Tất cả các chơng trình của ngời sử dụng phải đợc khởi đầu bằng con trỏ ngăn
xếp (SP) trong thủ tục reset (trớc khi các chơng trình con hoặc các ngắt đợc
thực thi). Con trỏ stack sử dụng 10 bit để truy nhập ghi/đọc trong không gian
I/O. 512 byte dữ liệu SRAM có thể đợc truy cập dễ dàng bởi 5 chế độ địa chỉ
khác nhau đợc cung cấp bởi àC AT90S8535.
Hình 2.4 : Bản đồ bộ nhớ của
à
C AT90S8535
2.1.1.2. Tập thanh ghi đa năng của àC AT90S8535.


Trang 13

Tất cả các thanh ghi trong tập thanh ghi của àC AT90S8535 khi thực một
hiện lệnh trong tập lệnh đều có thể đợc truy cập trực tiếp trong một đơn chu
kỳ đồng hồ. Ngoại trừ 5 lệnh trực tiếp SBCI, SUBI, CPI, ANDI, ORI giữa một
hằng số và một thanh ghi và lệnh LDI sử dụng để nạp tức thì hằng dữ liệu,
những lệnh này phải sử dụng các thanh ghi của nửa thứ hai trong tập thanh ghi
(từ R16 R31). Các lệnh còn lại đều có thể sử dụng bất kỳ thanh ghi nào trong
tập thanh ghi.
Hình 2.5 : Địa chỉ 32 thanh ghi đa năng của
à
C
Qua hình 2.5 có thể thấy, mỗi thanh ghi đều đợc gán một địa chỉ trong
không gian địa chỉ dữ liệu, chúng đợc đặt trong 32 vị trí đầu tiên của không

gian dữ liệu sử dụng. Mặc dù không đợc thực hiện một cách vật lý nh trong
SRAM, việc tổ chức bộ nhớ này cung cấp sự linh hoạt lớn trong việc truy nhập
tới các thanh ghi, nh các thanh ghi X, Y, Z có thể đợc thiết lập để trỏ tới bất
kỳ thanh ghi nào trong tập thanh ghi.
Các thanh ghi từ R26 R31 đợc thêm vào một số chức năng nhằm mở
rộng khả năng sử dụng của tập thanh ghi. Những thanh ghi này là những con
trỏ địa chỉ đợc sử dụng trong chế độ địa chỉ gián tiếp của không gian dữ liệu.
Ba thanh ghi địa chỉ gián tiếp là X, Y, Z đợc mô tả nh trong hình 2.6 :
Hình 2.6 : Mô tả các thanh ghi địa chỉ gián tiếp X, Y, Z
Trong các chế độ địa chỉ khác nhau, các thanh ghi này có chức năng điều
chỉnh linh hoạt đối với từng trờng hợp, tự động tăng, giảm hoặc không đổi.


Trang 14

2.1.1.3. Bộ số học và Logic - ALU.
Bộ ALU của àC AT90S8535 đợc nối trực tiếp với 32 thanh ghi đa năng.
Trong một đơn chu kỳ đồng hồ, các thao tác của ALU giữa các thanh ghi
trong tập thanh ghi đợc thực hiện và giữa một thanh ghi với một hằng số hoặc
trên một đơn thanh ghi. Các hoạt động của ALU đợc chia làm 3 loại chính là :
số học, logic và các phép toán trên bit.
2.1.1.4. Đặc điểm các bộ nhớ trong của àC AT90S8535.
a) Bộ nhớ chơng trình (Flash program memory) : Trong àC
AT90S8535 chứa đựng 8KB bộ nhớ Flash lập trình đợc dùng để lu trữ chơng
trình. Nó đợc tổ chức nh một bộ nhớ 4Kx16 bit để phù hợp với sự làm việc của
các lệnh có độ dài 16 hoặc 32 bit. Bộ nhớ Flash này có thể chịu đợc ít nhất
1000 chu kỳ ghi/xoá. Vì bộ đếm chơng trình (PC) của àC AT90S8535 có độ
dài 12 bit, do đó nó có thể mã hoá 4096 địa chỉ trong bộ nhớ chơng trình.
b) Bộ nhớ SRAM : 608 vị trí địa chỉ thấp nhất trong vùng nhớ dữ liệu
đợc dùng để địa chỉ hoá cho tập thanh ghi, bộ nhớ I/O và SRAM. 96 vị trí địa

chỉ đầu tiên là của tập thanh ghi và bộ nhớ I/O, 512 vị trí địa chỉ tiếp theo là
của bộ nhớ SRAM. Một địa chỉ bất kỳ trong trong không gian địa chỉ dữ liệu
SRAM đều có thể đợc xác định thông qua 5 chế độ địa chỉ khác nhau là : trực
tiếp, tơng đối, gián tiếp, gián tiếp với sự giảm trớc và gián tiếp với sự tăng sau.
Trong tập thanh ghi, các thanh ghi từ R26 tới R31 đợc sử dụng nh các thanh
ghi con trỏ địa chỉ gián tiếp.
ở chế độ địa chỉ trực tiếp có cho phép truy cập tới toàn bộ không gian dữ
liệu. Chế độ địa chỉ tơng đối cho phép xác định 63 vị trí địa chỉ từ địa chỉ cơ
sở cho bởi các thanh ghi Y hoặc Z. Khi sử dụng các chế độ thanh ghi gián
tiếp với sự tự động giảm trớc hoặc tăng sau, nội dung của các thanh ghi địa chỉ
X, Y và Z đều tự động tăng hoặc giảm sau khi thực hiện. 32 thanh ghi đa
năng, 64 thanh ghi I/O và 512 byte của bộ nhớ trong SRAM trong AT90S8535,
tất cả đều có thể đợc truy nhập thông qua các chế độ địa chỉ này.
Hình 2.7 : Tổ chức bộ nhớ SRAM của
à
C
c) Bộ nhớ EEPROM : àC AT90S8535 có 512 byte bộ nhớ EEPROM,
đợc tổ chức nh một không gian dữ liệu riêng biệt cho phép mỗi byte có thể đ-
ợc ghi/đọc. Bộ nhớ EEPROM có thể thực hiện ít nhất 100.000 chu kỳ ghi/xoá.
Sự truy nhập giữa EEPROM và àC đợc thực hiện thông qua các thanh ghi địa


Trang 15

chỉ, thanh ghi dữ liệu và thanh ghi điều khiển của EEPROM, các thanh ghi
này có thể đợc truy cập trong không gian I/O. Thời gian truy cập ghi
EEPROM trong phạm vi từ 2.5 đến 4 ms, tuỳ thuộc vào điện áp trên chân V
CC
.
EEPROM có một chức năng tự động tính thời gian cho phép phần mềm của

ngời sử dụng kiểm tra khi byte tiếp theo có thể đợc ghi/đọc. Một ngắt đặc biệt
kiểm tra sự sẵn sàng của EEPROM có thể đợc thiết lập để kích hoạt khi
EEPROM sẵn sàng tiếp nhận dữ liệu mới. Để ngăn cản việc ghi EEPROM
ngoài ý muốn, một quy trình ghi cụ thể phải đợc tuân theo. Khi đọc
EEPROM, àC bị tạm dừng trong 4 chu kỳ đồng hồ trớc khi lệnh tiếp theo đợc
thực hiện. Khi ghi EEPROM, àC tạm dừng trong 2 chu kỳ đồng hồ trớc khi
thực hiện lệnh tiếp theo.
Thanh ghi địa chỉ EEPROM : EEARH và EEARL

Các thanh ghi địa chỉ của EEPROM (EEARH và EEARL) chỉ định địa
chỉ của một byte trong không gian 512 byte EEPROM. Các byte dữ liệu của
EEPROM đợc địa chỉ hóa từ 0 đến 511.
Thanh ghi dữ liệu EEPROM : EEDR
Trong thao tác ghi của EEPROM, thanh ghi EEDR chứa dữ liệu đợc ghi
tới EEPROM theo địa chỉ đợc xác định bởi thanh ghi EEAR. Trong thao tác
đọc EEPROM, thanh ghi EEDR chứa dữ liệu đọc ra từ EEPROM tại địa chỉ
cho trong thanh ghi EEAR.
Thanh ghi điều khiển EEPROM : EECR
Bit 3 - EERIE : Bit cho phép sẵn sàng ngắt của EEPROM
Khi bit I trong thanh ghi SREG và bit EERIE đợc thiết lập, ngắt trạng thái
sẵn sàng của EPROM đợc cho phép. Khi bị xoá ngắt bị vô hiệu hoá. Ngắt trạng
thái sẵn sàng EEPROM tạo ra một ngắt cứng khi bit EEWE bị xoá.
Bit 2 - EEMWE : Bit cho phép thao tác ghi EEPROM
Bit EEMWE xác định có hay không sự thiết lập bit EEWE để gây ra thao
tác ghi EEPROM. Khi bit EEMWE đợc thiết lập, thì sự thiết lập của bit EEWE
sẽ ghi dữ liệu vào EEPROM tại địa chỉ đã lựa chọn. Nếu bit EEMWE là 0, thì sự


Trang 16


thiết lập của bit EEWE sẽ không có kết quả. Khi bit EEMWE đã đợc thiết lập
bởi phần mềm, phần cứng xoá bit này về 0 sau 4 chu kỳ đồng hồ.
Bit 1 - EEWE : Bit cho phép ghi EEPROM
Tín hiệu cho phép ghi EEPROM (EEWE) là một xung chọn ghi tới
EEPROM. Khi địa chỉ và dữ liệu đã đợc thiết lập phù hợp, bit EEWE phải đợc
thiết lập để ghi giá trị vào trong EEPROM. Bit EEEMWE phải đợc thiết lập
khi giá trị logic 1 đợc ghi vào bit EEWE, nếu không thì không xẩy ra thao tác
ghi EEPROM. Quy trình dới đây phải đợc tuân theo khi ghi EEPROM (thứ tự
của bớc 2 và 3 không cần quan tâm).
1. Đợi cho đến khi bit EEWE trở về 0
2. Ghi địa chỉ mới của EEPROM tới thanh ghi địa chỉ EEPROM (tuỳ chọn)
3. Ghi dữ liệu mới vào thanh ghi EEDR (tuỳ chọn)
4. Ghi giá trị logic 1 vào bit EEMWE trong thanh ghi EECR (Để có thể
ghi giá trị logic 1 vào bit EEMWE, thì bit EEWE phải đợc ghi là 0 trong cùng
một chu kỳ đồng hồ)
5. Trong vòng 4 chu kỳ đồng hồ sau khi thiết lập bit EEMWE, ghi giá trị
logic 1 tới bit EEWE.
Chú ý : Một ngắt giữa bớc 4 và 5 sẽ làm lỗi chu kỳ ghi, vì bit EEMWE
sẽ hết thời gian. Nếu một thủ tục ngắt truy xuất tới EEPROM trong khi một
ngắt khác cũng đang truy xuất EEPROM, thì nội dung của các thanh ghi
EEAR và EEDR sẽ bị thay đổi, gây lỗi ngắt truy xuất EEPROM. Để tránh
những vấn đề này cần xoá các cờ ngắt chung trong thời gian thực hiện 4 bớc
cuối cùng. Khi thời gian truy cập ghi kết thúc (2.5ms và V
CC
= 5V hoặc 4ms
và V
CC
= 2.7V), bit EEWE đợc xoá bởi phần cứng, Sử dụng phần mềm có thể
thăm dò bít này và đợi nó trở về không trớc khi thực hiện ghi byte tiếp theo.
Khi bit EEWE đã đợc thiết lập, àC tạm dừng trong 2 chu kỳ đồng hồ trớc khi

lệnh tiếp theo đợc thực hiện.
Bit 0 - EERE : Bit cho phép đọc EEPROM
Tín hiệu cho phép đọc EEPROM là xung chọn đọc đến EEPROM. Khi
địa chỉ phù hợp đợc thiết lập trong thanh ghi EEAR, bit EERE phải đợc thiết
lập. Khi bit EERE bị xoá bởi phần cứng, dữ liệu yêu cầu đợc tìm thấy trong
thanh ghi EEDR. Sự truy xuất đọc EEPROM cần một lệnh và không cần thăm
dò bit EERE. Khi bit EERE đã đợc thiết lập, àC tạm dừng trong 4 chu kỳ
đồng hồ trớc khi lệnh tiếp theo đợc thực hiện.
Ngời sử dụng cần phải thăm dò bit EEWE trớc khi bắt đầu thao tác đọc.
Nếu dữ liệu hoặc địa chỉ mới đợc ghi vào các thanh ghi vào/ra của EEPROM
khi một thao tác ghi đang diễn ra, thì thao tác ghi sẽ bị ngắt và kết quả không
đợc xác định.
2.1.1.5. Các chế độ địa chỉ của àC AT90S8535.
Vi mạch điều khiển AT90S8535 hỗ trợ các chế độ địa chỉ rất mạnh và
hiệu quả cao cho việc truy nhập tới bộ nhớ chơng trình (bộ nhớ Flash) và bộ


Trang 17

nhớ dữ liệu (SRAM, tập thanh ghi và bộ nhớ I/O). Dới đây là các chế độ địa
chỉ của àC AT90S8535 :
a) Địa chỉ trực tiếp một thanh ghi
Toán hạng đợc chứa trong thanh ghi d (Rd)
b) Địa chỉ trực tiếp hai thanh ghi
Các toán hạng đợc chứa trong thanh ghi r (Rr) và d (Rd).
Kết quả đợc lu trong thanh ghi d (Rd)
c) Địa chỉ I/O trực tiếp
Toán hạng địa chỉ chứa trong 6 bit LSB của từ lệnh,
n là địa chỉ của thanh ghi nguồn hoặc đích
d) Địa chỉ dữ liệu trực tiếp

16 bit địa chỉ dữ liệu đợc chứa trong 16 bit LSB của hai từ lệnh.
Rd/Rr chỉ rõ thanh ghi nguồn hoặc thanh ghi đích.
e) Địa chỉ dữ liệu tơng đối


Trang 18

Toán hạng địa chỉ là kết quả của nội dung thanh ghi Y hoặc Z
đợc cộng với địa chỉ chứa trong 6 bit LSB của từ lệnh (a)
f) Địa chỉ dữ liệu gián tiếp
Toán hạng địa chỉ là nội dung của thanh ghi X, Y hoặc Z
g) Địa chỉ dữ liệu gián tiếp giảm trớc
Nội dung các thanh ghi X, Y, Z giảm 1 trớc khi thực hiện
Toán hạng địa chỉ là nội dung đã giảm của thanh ghi X, Y, Z
h) Địa chỉ dữ liệu gián tiếp tăng sau
Thanh ghi X, Y hoặc Z đợc cộng 1 sau khi thực hiện.
Địa chỉ toán hạng là nội dung của thanh ghi X, Y hoặc Z trớc khi cộng
i) Địa chỉ cố định khi thực hiện lệnh LPM


Trang 19

Địa chỉ byte cố định đợc xác định bởi nội dung của thanh ghi Z.
15 bit MSB lựa chọn địa chỉ từ (0 4K), bit LSB cho phép
chọn byte thấp nếu LSB = 0 hoặc byte cao nếu đặt LSB = 1.
j) Địa chỉ gián tiếp trong bộ nhớ chơng trình với lệnh IJMP và ICALL
Chơng trình đợc tiếp tục thực hiện tại địa chỉ đợc chứa bởi thanh ghi Z
(Bộ đếm chơng trình (PC) đợc nạp với nội dung của thanh ghi Z)
k) Địa chỉ tơng đối của bộ nhớ chơng trình với lệnh RJMP và RCALL
Chơng trình đợc tiếp tục thực hiện tại địa chỉ PC + k + 1

Địa chỉ tơng đối k bắt đầu từ - 2048 tới 2047
2.1.1.6. Thời gian truy cập bộ nhớ và thời gian thực hiện lệnh.
àC AT90S8535 đợc điều khiển bởi đồng hồ hệ thống 0, đợc tạo trực tiếp
từ đồng hồ bên ngoài của chip và không sử dụng bộ chia thời gian trong.
Hình 2.8 mô tả quá trình tìm và thực hiện lệnh song song theo cấu trúc
Harvard và khái niệm tập thanh ghi truy nhập nhanh.
Hình 2.8: Quá trình tìm và thực hiện lênh song song
Hình 2.9 mô tả khái niệm thời gian thao tác trong của tập thanh ghi.
Trong một đơn chu kỳ đồng hồ, một thao tác sử dụng hai toán hạng trong hai
thanh ghi của ALU đợc thực hiện và kết quả đợc lu trở lại thanh ghi đích.


Trang 20

Hình 2.9: Hoạt động của ALU trong đơn chu kỳ đồng hồ
Sự truy nhập vào bộ nhớ SRAM đợc thực hiện trong hai chu kỳ đồng hồ
và đợc mô tả nh hình dới.
Hình 2.10 : Các chu kỳ truy cập bộ nhớ SRAM
2.1.1.7. Không gian bộ nhớ I/O.
Bảng 2.1 : Không gian I/O của
à
C AT90S8535
Địa chỉ I/O
(Địa chỉ SRAM)
Tên thanh
ghi/cổng
Chức năng
$3F ($5F) SREG
Thanh ghi trạng thái
$3E ($5E) SPH

địa chỉ byte cao của con trỏ Stack
$3D ($5D) SPL
Địa chỉ byte thấp của con trỏ Stack
$3B ($5B) GIMSK
Thanh ghi mặt nạ ngắt chung
$3A ($5A) GIFR
Thanh ghi cờ ngắt chung
$39 ($59) TIMSK
Thanh ghi mặt nạ ngắt của bộ Timer/Counter
$38 ($58) TIFR
Thanh ghi cờ ngắt của bộ Timer/Counter
$35 ($55) MCUCR
Thanh ghi điều khiển chung của MCU
$34 ($45) MCUSR
Thanh ghi trạng thái chung của MCU
$33 ($53) TCCR0
Thanh ghi điều khiển bộ Timer/Counter 0
$32 ($52) TCNT0
8 bit dữ liệu của bộ Timer/Counter 0
$2F ($4F) TCCR1A
Thanh ghi điều khiển A của bộ Timer/Counter 1
$2E ($4E) TCCR1B
Thanh ghi điều khiển B của bộ Timer/Counter 1
$2D ($4D) TCNT1H
Byte cao của bộ Timer/Counter 1
$2C ($4C) TCNT1L
Byte thấp của bộ Timer/Counter 1
$2B ($4B) OCR1AH
Byte cao của thanh ghi A so với đầu ra của Timer/Counter1
$2A ($4A) OCR1AL

Byte thấp của thanh ghi A so với đầu ra của Timer/Counter1
$29 ($49) OCR1BH
Byte cao của thanh ghi B so với đầu ra của Timer/Counter1
$28 ($48) OCR1BL
Byte thấp của thanh ghi B so với đầu ra của Timer/Counter1


Trang 21

$27 ($47) ICR1H
Thanh ghi lu trữ Byte cao của đầu vào Timer/Counter1
$26 ($46) ICR1L
Thanh ghi lu trữ Byte cao đầu vào của Timer/Counter1
$25 ($45) TCCR2
Thanh ghi điều khiển bộ Timer/Counter 2
$24 ($44) TCNT2
8 bit dữ liệu của bộ Timer/Counter 2
$23 ($43) OCR2
Thanh ghi so với đầu ra của bộ Timer/Counter 2
$22 ($42) ASSR
Thanh ghi trạng thái chế độ không đồng bộ
$21 ($41) WDTCR
Thanh ghi điều khiển mạch kiểm tra tuần tự bộ định thời gian
$1F ($3E) EEARH
Thanh ghi địa chỉ Byte cao của EEPROM
$1E ($3E) EEARL
Thanh ghi địa chỉ Byte thấp của EEPROM
$1D ($3D) EEDR
Thanh ghi dữ liệu EEPROM
$1C ($3C) EECR

Thanh ghi điều khiển EEPROM
$1B ($3B) PORTA
Thanh ghi dữ liệu, cổng A
$1A ($3A) DDRA
Thanh ghi điều hớng dữ liệu, cổng A
$19 ($39) PINA
Các chân vào của cổng A
$18 ($38) PORTB
Thanh ghi dữ liệu cổng B
$17 ($37) DDRB
Thanh ghi điều hớng dữ liệu, cổng B
$16 ($36) PINB
Các chân vào của cổng B
$15 ($35) PORTC
Thanh ghi dữ liệu cổng C
$14 ($34) DDRC
Thanh ghi điều hớng dữ liệu, cổng C
$13 ($33) PINC
Các chân vào của cổng C
$12 ($32) PORTD
Thanh ghi dữ liệu của cổng D
$11 ($31) DDRD
Thanh ghi điều hởng dữ liệu, cổng D
$10 ($30) PIND
Các chân vào của cổng D
$0F ($2F) SPDR
Thanh ghi dữ liệu cổng vào/ra của thiết bị ngoại vi
$0E ($2E) SPSR
Thanh ghi trạng thái của SPI
$0D ($2D) SPCR

Thanh ghi điều khiển SPI
$0C ($2C) UDR
Thanh ghi dữ liệu vào/ra của bộ UART
$0B ($2B) USR
Thanh ghi trạng thái UART
$0A ($2A) UCR
Thanh ghi điều khiển UART
$09 ($29) UBRR
Thanh ghi tốc độ baud của UART
$08 ($28) ACSR
Thanh ghi điều khiển và trạng thái của mạch so sánh Analog
$07 ($27) ADMUX
Thanh ghi lựa chọn của bộ dồn kênh ADC
$06 ($26) ADCSR
Thanh ghi điều khiển và trạng thái của bộ ADC
$05 ($25) ADCH
Thanh ghi dữ liệu byte cao của bộ ADC
$04 ($24) ADCL
Thanh ghi dữ liệu byte thấp của bộ ADC
Tất cả các cổng I/O của àC AT90S8535 và các thiết bị ngoại vi đều đợc
đặt trong gian cổng I/O. Các vị trí cổng I/O đợc truy nhập bởi lệnh IN và OUT
truyền dữ liệu giữa 32 thanh ghi đa năng và không gian I/O. Các thanh ghi I/O
có địa chỉ trong phạm vi từ $00 đến $1F có thể đợc truy nhập trực tiếp tới các
bit bằng cách sử dụng các lệnh SBI và CBI. Trong các thanh ghi này, giá trị
các bit đơn có thể đợc kiểm tra bằng cách sử dụng các lệnh SBIS và SBIC. Khi
sử dụng các lệnh I/O cụ thể IN và OUT, các địa chỉ I/O từ $00 đến $3F phải
đợc sử dụng. Khi xác định địa chỉ các thanh ghi I/O nh địa chỉ của SRAM,
phải thêm $20 vào các địa chỉ này.
Bảng 2.2 : Vị trí các bit trong các thanh ghi I/O
Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0



Trang 22

$3F ($5F) SREG I T H S V N Z C
$3E ($5E) SPH - - - - - - SP9 SP8
$3D ($5D) SPL SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0
$3C ($5C) Res
$3B ($5B) GIMSK INT1 INT0 - - - - - -
$3A ($5A) GIFR INTF1 INTF0
$39 ($59) TIMSK OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 - TOIE0
$38 ($58) TIFR OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 - TOV0
$37 ($57) Res
$36 ($56) Res
$35 ($55) MCUCR - SE SM1 SM0 ISC11 ISC10 ISC01 ISC00
$34 ($54) MCUSR - - - - - - EXTRF PORF
$33 ($53) TCCR0 - - - - - CS02 CS01 CS00
$32 ($52) TCNT0 Timer/Counter0 (8 Bits)
$31 ($51) Res
$30 ($50) Res
$2F ($4F) TCCR1A
COM1A
1
COM1A0 COM1B1 COM1B0 - - PWM11 PWM10
$2E ($4E) TCCR1B ICNC1 ICES1 - - CTC1 CS12 CS11 CS10
$2D ($4D) TCNT1H Timer/Counter1 – Counter Register High Byte
$2C ($4C) TCNT1L Timer/Counter1 – Counter Register Low Byte
$2B ($4B) OCR1AH Timer/Counter1 – Output Compare Register A High Byte
$2A ($4A) OCR1AL Timer/Counter1 – Output Compare Register A Low Byte
$29 ($49) OCR1BH Timer/Counter1 – Output Compare Register B High Byte

$28 ($48) OCR1BL Timer/Counter1 – Output Compare Register B Low Byte
$27 ($47) ICR1H Timer/Counter1 – Input Capture Register High Byte
$26 ($46) ICR1L Timer/Counter1 – Input Capture Register Low Byte
$25 ($45) TCCR2 - PWM2 COM21 COM20 CTC2 CS22 CS21 CS20
$24 ($44) TCNT2 Timer/Counter2 (8 Bits)
$23 ($43) OCR2 Timer/Counter2 Output Compare Register
$22 ($42) ASSR - - - - AS2 TCN2UB OCR2UB TCR2UB
$21 ($41) WDTCR - - - WDTOE WDE WDP2 WDP1 WDP0
$20 ($40) Res
$1F ($3F) EEARH EEAR8
$1E ($3E) EEARL EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0
$1D ($3D) EEDR EEPROM Data Register
$1C ($3C) EECR - - - - EERIE EEMWE EEWE EERE
$1B ($3B) PORTA PORTA7 PORTA6 PORTA5 PORTA4 PORTA3 PORTA2 PORTA1 PORTA0
$1A ($3A) DDRA DDA7 DDA6 DDA5 DDA4 DDA3 DDA2 DDA1 DDA0
$19 ($39) PINA PINA7 PINA6 PINA5 PINA4 PINA3 PINA2 PINA1 PINA0
$18 ($38) PORTB PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0
$17 ($37) DDRB DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0
$16 ($36) PINB PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0
$15 ($35) PORTC
PORTC
7
PORTC6 PORTC5 PORTC4 PORTC3
PORTC
2
PORTC1 PORTC0
$14 ($34) DDRC DDC7 DDC6 DDC5 DDC4 DDC3 DDC2 DDC1 DDC0
$13 ($33) PINC PINC7 PINC6 PINC5 PINC4 PINC3 PINC2 PINC1 PINC0
$12 ($32) PORTD
PORTD

7
PORTD6 PORTD5 PORTD4 PORTD3
PORTD
2
PORTD1 PORTD0
$11 ($31) DDRD DDD7 DDD6 DDD5 DDD4 DDD3 DDD2 DDD1 DDD0
$10 ($30) PIND PIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND1 PIND0
$0F ($2F) SPDR SPI Data Register
$0E ($2E) SPSR SPIF WCOL - - - - - -
$0D ($2D) SPCR SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0
$0C ($2C) UDR UART I/O Data Register
$0B ($2B) USR RXC TXC UDRE FE OR - - -
$0A ($2A) UCR RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8
$09 ($29) UBRR UART Baud Rate Register
$08 ($28) ACSR ACD - ACO ACI ACIE ACIC ACIS1 ACIS0
$07 ($27) ADMUX - - - - - MUX2 MUX1 MUX0


Trang 23

$06 ($26) ADCSR ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0
$05 ($25) ADCH - - - - - - ADC9 ADC8
$04 ($24) ADCL ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0
$03 ($20) Res
$02 ($22) Res
$01 ($21) Res
$00 ($20) Res
Res : Reserved
Một vài bit cờ trạng thái có thể đợc xoá bằng cách ghi trị 1 vào vị trí của
nó. Chú ý đối với các lệnh CBI và SBI sẽ có tác dụng trên tất cả các bit trong

thanh ghi I/O và thao tác ghi lại 1 vào bất kỳ cờ nào đã đợc thiết lập đồng
nghĩa với việc xoá cờ đó. Tuy nhiên, các lệnh CBI và SBI chỉ làm việc với các
thanh ghi có địa chỉ từ $00 đến $1F. Chức năng của mỗi bit trong các thanh
ghi sẽ đợc giới thiệu trong từng phần có liên quan, dới đây là hai thanh ghi
chính của vi mạch điều khiển AT90S8535.
Thanh ghi trạng thái
à
C : SREG
Thanh ghi trạng thái (Status register) của àC AT90S8535 có địa chỉ tại vị
trí $3F ($5F) trong không gian I/O đợc định nghĩa nh sau :
Bit 7 - I : Bit cho phép ngắt chung (Global Interrupt Enable)
Bit cho phép ngắt chung phải đợc thiết lập để cho phép các ngắt. Sau đó,
mỗi sự điều khiển ngắt cho phép riêng đợc thực hiện trong các thanh ghi điều
khiển độc lập. Nếu bit cho phép ngắt chung bị xoá, thì không có ngắt nào đợc
cho phép. Bit I đợc xoá bởi phần cứng sau khi một ngắt xảy ra và đợc thiết đặt
bởi lệnh RETI để cho phép các ngắt tiếp theo.
Bit 6 - T : Bit lu trữ sao chép (Bit Copy Storage)
Các lệnh sao chép bit BLD (BitLoaD) và BST (BitSTore) sử dụng bit T
nh là nguồn hoặc đích cho thao tác bit. Một bit của một thanh ghi trong tập
thanh ghi có thể sao chép vào trong bit T bằng lệnh BST và một bit trong T có
thể đợc sao chép vào một bit trong thanh ghi của tập thanh ghi bởi lệnh BLD.
Bit 5 - H : Bit cờ nhớ phụ (Half-carry Flag)
Cờ nhớ phụ H xác định số nhớ trong một số thao tác số học.
Bit 4 - S : Bit dấu (Sign Bit, S = N V)
Bit dấu S luôn là một phép logic NAND giữa cờ phủ định N và cờ tràn số
bù hai V.
Bit 3 - V : Bit cờ tràn bù hai (Twos Complement Oveflow Flag)
Cờ tràn số bù hai V hỗ trợ cho phép tính số bù hai.
Bit 2 - N : Bit cờ phủ định (Negative Flag)
Cờ phủ định N cho biết một kết quả âm từ một phép tính số học hoặc logic.

Bit 1 - Z : Bit cờ Zero (Zero Flag)
Cờ Zero Z cho biết một kết quả bằng không từ một phép tính số hoặc logic.
Bit 0 - C : Bit cờ nhớ (Carry Flag)
Cờ carry C xác định số nhớ trong một phép tính số hoặc logic.


Trang 24

Chú ý : Thanh ghi trạng thái không tự động đợc lu và khôi phục khi tham
gia vào một thủ tục ngắt hoặc khi trở về từ một thủ tục ngắt. Do đó, nó phải đợc thực
hiện bởi phần mềm.
Thanh ghi con trỏ ngăn xếp : SP
Con trỏ ngăn xếp của àC AT90S8535 đợc thực hiện nh hai thanh ghi 8
bit ở địa chỉ $3E($5E) và $3D($5D) trong không gian I/O. Do bộ nhớ SRAM
của AT90S8535 có $25F địa chỉ, do đó con trỏ SP cần sử dụng 10 bit để xác
định các vị trí địa chỉ cần thiết.
Con trỏ ngăn xếp SP trỏ tới vùng dữ liệu ngăn xếp trong SRAM nơi mà
một chơng trình con phuc vụ ngắt và ngắt đợc định vị. Không gian ngăn xếp
trong vùng dữ liệu SRAM phải đợc khai báo trong chơng trình trớc bất kỳ lời
gọi chơng trình con nào đợc thực hiện hoặc bất kỳ ngắt nào đợc cho phép. Con
trỏ ngăn xếp phải đợc thiết đặt ở những địa chỉ lớn hơn $60. SP giảm đi 1 byte
khi dữ liệu đợc đẩy vào Stack bởi lệnh PUSH và nó giảm đi 2 byte khi một địa
chỉ đợc đẩy vào Stack trong lời gọi chơng trình con hoặc ngắt. SP đợc tăng lên
1 byte khi dữ liệu đợc lấy ra khỏi Stack với lệnh POP và nó đợc tăng 2 byte
khi một địa chỉ đợc lấy ra từ Stack với lệnh trở về từ chơng trình con RET
hoặc lệnh trở về từ một ngắt RETI.
2.1.1.8. Ngắt và xử lý ngắt trong àC AT90S8535.
àC AT90S8535 cung cấp 16 nguồn gây ngắt khác nhau và một ngắt
Reset. Các ngắt này và ngắt Reset có một vector chơng trình độc lập trong
không gian bộ nhớ chơng trình. Tất cả các ngắt đợc gán với các bit cho phép

ngắt riêng và phải đợc thiết lập cùng với bit I trong thanh ghi SREG để cho
phép ngắt xảy ra.
Vị trí địa chỉ thấp nhất trong không gian bộ nhớ chơng trình đợc tự động
định nghĩa là địa chỉ của vector Reset, tiếp theo đó là địa chỉ của các vector
ngắt khác. Danh sách đầy đủ của các vector ngắt đợc thể hiện trong bảng 2.3,
bảng này cũng cho biết các cấp độ u tiên của các ngắt tuỳ theo vị trí địa chỉ
của vector ngắt của nó theo nguyên tắc, địa chỉ càng thấp thì mức độ u tiên
càng cao. RESET có mức u tiên cao nhất, tiếp theo là INT0 v.v
Bảng 2.3 : Địa chỉ của các vector ngắt trong
à
C AT90S8535
TT
Địa chỉ
vector ngắt
Nguồn gây ngắt Định nghĩa ngắt
1
$000 RESET
Reset và khởi động lại mạch Watchdog
2
$001 INT0
Yêu cầu ngắt từ bên ngoài cấp 0
3
$002 INT1
Yêu cầu ngắt từ bên ngoài cấp 1
4
$003 TIMER2 COMP
Ngắt thích ứng so sánh của T/C 2
5
$004 TIMER2 OVF
Ngắt tràn của T/C 2



Trang 25

×