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
à
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 124Trang 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
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.
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.
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
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
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ở
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
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
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
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
Đị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
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/Counter1Trang 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 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
$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
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.
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