MÔN HỌC
Ứng dụng Vi điều khiển
(Microcontroller Applications)
By Trần Văn Hùng
Mechatronics Dept
http://www.ntu.edu.vn/
Email: tvh42th@gmail.com
Tài liệu tham khảo
1.Microprofessors and microcpmputers hardware and softwware, Ronaid J.Tocci, Frank J.Ambrosio,
Prentice Hall, 2003
2.Interfacing Sensors To The Pc, Willis J.Tompkin, Jonh G.webster,Prentice Hall, 1998
3.Vi x ử lý, Văn Thế Minh, NXB Giáo Dục.
4. Họ vi điều khiển 8051, Tống Văn On.
5. Kỹ thuật Vi điều khiển AVR, Tống Văn On.
1
Nội dung chương trình
n Ch01: Các hệ đếm vàmã hoá
n Ch02: Hệ thống vi xử lý
n Ch03: Bộ nhớ
n Ch04: Họ vi điều khiển AVR
n Ch05: Ngôn ngữ lập trình CodevisionAVR
n Ch06: Input/Output
Các bài toán
1. Thiết kế mạch điềukhi ểnánhsángtheoch ươngtrình địnhtr ước
2. Thiết kế mạchtrangtrí b ằng đènLED
3. Thiết kế mạchnh ận dạng điểmph ục vụ (thêm ít nhất 2IC)
4. Thiết kế mạch đo lượng mưa
5. Thiết kế mạch điềukhi ểnnhi ệt độ không khí
6. Thiết kế mạch điều khiển nhiệt độ dung dịch
7. Thiết kế mạch đồng hồ điện tử
8. Thiết kế mạch tính thời gian cho các môn điền kinh
9. Thiết kế bảng quang báo
10. Thiết kế mạch khoá điện tử
11. Thiết kế mạch điều khiển thiết bị bằng remote
12. Kết nối bàn phím máy tính với VXL, hiển thị ký tự lên LCD
13. Thiết kế mạch điều khiển Robot chạy theo qũy đạo (sd motor bước)
14. Thiết kế mạch điều khiển tốc độ động cơ DC
15. Thiết kế mạch điều khiển góc quay của môtơ, ổn tốc cho motor.
2
Chương 1: Các hệ đếm vàmã hoá
n Các hệ đếm dùng trong máy tính
n Các phép toán số học đối với hệ hai
n Mã ASCII
1.1 Các hệ đếm dùng trong máy tính
1.1.1 Hệ mười và hệ hai
n Con người thìquen dùng h ệ cơ số mười (hệ mười)
n Máy tính thìch ỉ làm việc với hệ cơ số hai (hệ hai)
1011,01 = 1.23 + 0.22 + 1.21 + 1.20 + 0.2-1 + 1.2-2
MSB
LSB
n Nibble gồm 4 bit
3
0
n Byte gồm 8 bit
7
0
n Word gồm 16 bit
15
0
1
1234,56 = 1.103 + 2.102 + 3.101 + 4.100 + 5.10-1 + 6.10-2
1.1.1 Chuyển đổi giữa hệ mười và hệ hai
n Đổi hệ hai sang hệ mười
n Đổi hệ mười sang hệ hai
1011,012 = 1.23 + 0.22 + 1.21 + 1.20 + 0.2-1 + 1.2-2 = 11,2510
46 2
0
23 2
1
11 2
1
5 2
1
2 2
0
1 2
0
1
4610 = 1011102
1.1.1 Chuyển đổi giữa hệ mười và hệ hai (tiếp)
n Đổi số thập phân hệ mười sang hệ hai
Hình 1. Một cách đổi hệ mười sang hệ hai
0,125
x
2
=
0
,250
0,250
x
2
=
0
,500
0,500
x
2
=
1
,000
n Số BCD (số hệ mười mã hoá bằng hệ hai)
0,12510 = 0,0012
Số BCD thích hợp cho các thiế bị đo cóhi ển thị số ở đầu ra.
n Hệ mười sáu
123410 = 0001 0002 0003 0004BCD
2
123410 = 0100 1101 00102 = 4D216
1.2 Các phép toán số học đối với hệ hai
1.2.1 Phép cộng
ana(n-1) ... a2a1a0 + bmb(m-1) ... b2b1b0 = ckc(k-1) ... c2c1c0 (hệ cơ số x)
1101 1001
+
0001 1011
1111 0100
1.2.2 Phép trừ và số bùhai
a. Phép trừ
ci = (ai + bi + (ai-1 + bi-1)%x )/x Ví dụ cộng hệ hai
ana(n-1) ... a2a1a0 - bmb(m-1) ... b2b1b0 = ckc(k-1) ... c2c1c0 (hệ cơ số x)
1101 1001
-
0001 1011
1011 1110
1.2.2 Phép trừ và số bùhai ( tiếp)
b. Số bùhai
ci = (ai – Bi-1) – bi
ci = (ai – Bi-1 + x) – bi (nếu (ai – Bi-1) >= bi và Bi = 0)
(nếu (ai – Bi-1) < bi và Bi = 1) Ví dụ trừ hệ hai
Ta cóth ể thay phép trừ bằng phép cộng: cộng số bị trừ với đối số của số trừ.
Để tìm số bùhai c ủa một số A ta làm theo các bước sau:
+ Biểu diễn số A số hệ hai của nó.
+ Tìm số bù một (bùlogic ) của số đó (đảo bít).
1.2.3 Phép nhân
+ Cộng một vào số bù một ở trên để nhận được số bùhai c ủa A.
Ví dụ nhân 2 số hệ hai có độ dài 4 bít
1
1
1 0
0
0
0 ba
00
10
01
11 a.b
0
0
0
1 1
1
0
1
1
1
0
0
0
0000
3
1011
1
0
1 1 1 0 1 Bảng 1. Quy tắc phép nhân
1.2.2 Phép chia
b. Chia trực tiếp
Ví dụ: 35/5 = 7 1 1 0 1
0 0
1 1
1 1
b. Chia gián tiếp
Lấy số bị chia trừ đi số chia, kết quả sẽ là số bị chia của phép toán
tiếp theo, lặp lại đến khi số bị chia nhỏ hơn số chia hoặc bằng 0.
4
01
0
00
0
01
0
0
1
1
0
111
101
1
0
1
101
0
Chương2: H ệ thốngvi x ử lý
n Ưu vành ược điểm hệ nhúng
n Vi xử lý, vi điềukhi ển
n Các họ vi điềukhi ển
n Ngắtvà x ử lýng ắt
2.1 Tạisao l ại sử dụng hệ nhúng?
2.1.1 Ưu điểm
n Khả năngthíchnghicao
n Tínhlinh động
n Khả năngthay đổi dễ dàng
n Khả năngtái s ử dụngtàinguyên(th ư viện,…)
n Giáthành r ẻ
n . . .
2.1.2 Nhược điểm
n Tốc độ phản ứngch ậm
n Độ ổn địnhth ấp
n Không xử lý đượcgíatr ị liên tục
n . . .
1
2.2 Vi điềukhi ển, vi xử lý
Data bus
CPU
General-
Purpose
Micro-
processor
Address bus
RAM ROM I/O
PORT USB,
UARST,
I2C,… Timer,
Wdg,
ADC,
DAC,
…
TERMINOLOGY
single chip.
n Microcontroller vs. Microprocessor vs. Microcomputer
n A microprocessor is a central processing unit on a
peripheral I/O components and memory (RAM & ROM)
used to be called a “microcomputer.”
n A microprocessor combined with support circuitry ,
2
n A microprocessor where all the components mentioned
above are combined on the same single chip that the
microprocessor is on, is called a microcontroller.
2.3 Kiếntrúcvi điềukhi ển
n Đơn vị sử lý số học(ALU)
n Bộ nhớ
n Input
n Output
2.3.1 Đơn vị xử lý số học (ALU)
ữ liệu
n Đơn vị điềukhi ển
(kếtqu ảđượ c lưu lại)
General
Purpose
Registrers
ALU
3
n Thựchi ệnphéptoánvàphéplogic trên d
n Dữ liệucóth ể lấytrên b ộ nhớ hoặcI/O
n Kếtqu ả cóth ểđượ c đưarangoàiho ặcvào b ộ nhớ
2.3.2 Bộ nhớ
Program Memory
Data Memory
$000
$000
Program Flash
Data Memory
32 Gen. Purpose
Working Resisters
$0000
$001F
$0020
(4K x 16)
EEPROM
(512 x 8)
64 I/O Resisters
$005F
$0060
$1FF
Internal SRAM
(512 x 8)
$025F
$FFF
2.3.3 Input
n Lưu trữ lệnhhay d ữ liệu
n Cóth ểđể lưutr ữ dữ liệu tạmth ời
n Cóth ể ghi/đọc được bởi bộ điềukhi ển
bộ vi điềukhi ển
n Thiết bị chophépthôngtin và d ữ liệuvàobêntrong
2.3.4 Output
n Ví dụ: ADC, I2C, UART, …
thiết bị ngoạivi.
n Thiết bị chuyển đổithôngtin và d ữ liệu từ bộ nhớ ra
4
n Thiết bị ngoạivi: LED, LCD, máyin, …
2.3.5 Đơn vị điềukhi ển
n Cung cấpxungnh ịpvà điềukhi ểntínhi ệu
n Tìm nạp lệnhvà d ữ liệu
n Chuyển dữ liệu tới/từ I/O
n Giảimã l ệnh
n Thựchi ệnphéptính s ố học/logic
2.3.6 Một số họ vi điềukhi ển
n Đáp ứngtínhi ệungoài(Reset/Ng ắt)
n 8051, 89Cxx, 89Sxx, 89Dxx,…
n Vi điềukhi ển8051
n AVR 8 bít, AVR 16 bít,…
n Vi điềukhi ểnAVR
n PIC 8 bít, PIC 16 bít,…
n Vi điềukhi ểnPIC
n P8xCxx,…
n Vi điềukhi ểnMCUs c ủaPhilips
5
n …
2.3.6 Các họ vi điềukhi ển (tiếp–so sánh )
n Tốc độ xử lý (clock, clock cycle execution)
n Khả năngtích h ợp (ADC, DAC, UART, I2C,…)
n Dải điệnápho ạt động (Operating Voltages)
n Công suất đầura ( DC current per I/O pin)
n Khả năngch ốngnhi ễu (Noise Reduction)
n Tập lệnh (Instruction)
n Công suấtIC ( Power consumption)
2.4 Ngắtvà x ử lýng ắt (Interrupt)
2.4.1 Kháini ệm
n Ngắtlà s ự dừngth ựchi ệnch ươngtrìnhchính(CTC) để
thựchi ệnch ươngtrìnhcon ph ụ vụ ngắt(ctc)
Main Prog
ISRj
ISRi
n: IRQi
n + 1:
m: IRQj
m + 1:
iret
iret
6
n . . .
2.4.2 Cấutrúcng ắt
n Xuấthi ệnkhông đượcbáotr ước
n Phục vụ gầngi ốngch ươngtrìnhcon
n Tích hợpnhi ềulo ạing ắt
2.4.3 Xử lýng ắt
n Có ưutiênng ắt
ắt
n Xuấthi ệnvàchophépng
n Hoànthành l ệnhhi ện tại
n Lưu trữđị ach ỉ lệnhti ếptheovàong ăn xếp
n Nạp địach ỉ ISR vàoPC
n Thựchi ệnISR
n KếtthúcISR là l ệnhRETI
chươngtrìnhti ếp tụcth ựchi ện
7
n Khôi phục địach ỉ lệnhti ếptheotrongng ăn xếp,
2.4.4 Phânlo ạing ắt
Làvi ệc gọi1 ctc(Subroutine) đượcxây d ựngriêngmàctc
nàycòncóth ểđượ c gọi bởithi ết bị ngoạivi
n Ngắt mềm (software interrupt)
Trong một số CPU để bẫy/xử lýcác s ự kiệntrongkhith ực
hiện
n Ngắt cứng (hardware interrupt)
Do port pháttínhi ệu đếnCPU
n Ngắttrong ( internal interrupt)
Là vấn đề hay điềuki ện để CPU dừngcôngvi ệc đangth ực
hiện, tìm địach ỉ vàth ựchi ện1 ctc, đượcthi ết kếđể xử lý sự
kiệnnày.
8
n Ngoại lệ (exceptions)
Chương 3: B3: Bộộ nhnhớớ
Chương
nn BBộộ nhnhớớ bbáán dn dẫẫnn
nn GiGiảải mã đ
i mã địịa cha chỉỉ cho b
cho bộộ nhnhớớ
nn PhPhốối ghi ghéép bp bộộ nhnhớớ
nn MMởở rrộộng bng bộộ nhnhớớ
3.1 B3.1 Bộộ nhnhớớ bbáán dn dẫẫnn
nn CCáác nhc nhóóm tm tíín hin hiệệuu
nn ROM (
nn RAM (
read only memory))
ROM (read only memory
RAM (random access memory
random access memory))
Memory
RAM
Radom
Access
Memory
ROM
Programmable ROM
Read
Only
Memory
SRAM
Static RAM
DRAM
Dynamic RAM
Erasable PROM
PROM
EPROM
EEPROM
Electrically EPROM
1
CACHE
L1, L2, L3
3.1.1 Cáác nhc nhóóm tm tíín hin hiệệuu
3.1.1 C
Address
Data
A0
A1
A2
...
An
D0
D1
D2
...
Dm
WR
WE
CS
OE
Select IC
RD
Hình 3. Sơ đồ khối của bộ nhớ
a. Nhóóm tm tíín hin hiệệu đu địịa cha chỉỉ
a. Nh
ng chọọn ra m
n ra mộột ô nh
t ô nhớớ ccụụ ththểể
i đa bao nhiêu ô
nn SSốố đư đườờng đng địịa cha chỉỉ ssẽẽ quyquyếết đt địịnh cnh cóó ttốối đa bao nhiêu ô
nhnhớớ. V. Víí ddụụ ccóó m đư
m đườờng đng địịa cha chỉỉ vvậậy thy thìì ttốối đa
i đa 22mm ô nhô nhớớ..
nn CCóó ttáác dc dụụng ch
b. Nhóóm tm tíín hin hiệệu du dữữ liliệệuu
b. Nh
u ra củủa ROM v
a ROM vàà llàà vvàào/rao/ra đ đốối vi vớới RAMi RAM
nn ThưThườờng lng làà đ đầầu ra c
ch nhớớ thư thườờng cng cóó đ đầầu vu vàào/ra l
o/ra làà 3 tr3 trạạng th
ng tháái.i.
ng dây dữữ liliệệu quy
u quyếết đt địịnh đnh độộ ddàài ti từừ nhnhớớ ccủủa a
nn CCáác mc mạạch nh
mmỗỗi ô nh
2
nn SSốố đư đườờng dây d
i ô nhớớ..
c. Nhóóm tm tíín hin hiệệu chu chọọn vi mn vi mạạchch
c. Nh
trao đổổi di dữữ liliệệu.u.
ng đượợc nc nốối vi vớới đi đầầu ra c
u ra củủa ba bộộ
gigiảải mã đ
bus dữữ liliệệu cu củủa na nóó bbịị
i mã địịa cha chỉỉ..
nn Vi mVi mạạch không đư
treo (ởở trtrạạng th
treo (
ch không đượợc chc chọọn thn thìì bus d
ng cao).
ng tháái tri trởở khkhááng cao).
nn ChChọọn vi mn vi mạạch sch sẽẽ trao đ
nn CCáác tc tíín hin hiệệu nu nàày thưy thườờng đư
u khiểểnn
d. Nhóóm tm tíín hin hiệệu điu điềều khi
d. Nh
u ra bus.
Cho phéép dp dữữ liliệệu ra bus.
treo nếếu không c
u không cóó ttíín hin hiệệu điu điềều khi
u khiểển.n.
c/ghi.
u khiểển đn đọọc/ghi.
ng chỉỉ ccóó mmộột tt tíín hin hiệệu điu điềều khi
nn Cho ph
nn Bus dBus dữữ liliệệu bu bịị treo n
ch thườờng ch
nn MMạạch thư
3.1.2 ROM
3.1.2 ROM
i dung đã ghi sẵẵn chn chỉỉ đ đểể đ đọọc rac ra
n duy nhấấtt
t thông tin khi mấất đi
Không bịị mmấất thông tin khi m
t điệệnn
Address
Data
D0
D1
D2
...
Dm
A0
A1
A2
...
An
WR
WE
CS
OE
RD
Select IC
Hình 3. Bộ nhớ ROM
3
nn BBộộ nhnhớớ ccóó nnộội dung đã ghi s
nn ChChỉỉ nnạạp vp vàào mo mộột lt lầần duy nh
nn Không b
3.1.3 ROM cóó ththểể llậập trp trìình đư
3.1.3 ROM c
nh đượợcc
a. PROM (Programmable ROM
Programmable ROM))
a. PROM (
i gian truy cậập nhanh 120
250ns
p nhanh 120--250ns
n duy nhấất bt bằằng cng cáác đc đốốt cht chááy cy cáác cc cầầu chu chìì
nn ThThờời gian truy c
nn ChChỉỉ nnạạp mp mộột lt lầần duy nh
nn ĐiĐiệện n ááp khi l
p khi lậập trp trìình kho
nh khoảảng 10
ng 10--13V13V
VCC
A0
A1
Address
Bus
Address
decoder
A2
D2
D1
D0
erasable PROM))
b. EPROM (erasable PROM
b. EPROM (
ng 120 –– 450
p khoảảng 120
i gian truy cậập kho
450 nsns
nh khoảảng 10
ng 10--25V25V
ng tia cựực tc tíím.m.
i gian lậập trp trìình cho m
nh cho mộột ô nh
t ô nhớớ lâu (kho
ng 50ms)
lâu (khoảảng 50ms)
4
nn ThThờời gian truy c
nn ĐiĐiệện n ááp lp lậập trp trìình kho
nn NNóó ccóó ththểể đư đượợc xoc xoáá totoààn bn bộộ bbằằng tia c
nn ThThờời gian l
electrically EPROM))
c. EEPROM (electrically EPROM
c. EEPROM (
ng đơn vịị nhnhớớ bbằằng đi
ng điệện, không c
n, không cầần tia c
n tia cựực tc tíím.m.
nn XoXoáá ttừừng đơn v
i gian lậập trp trìình cho m
nh cho mộột ô nh
ng 5ms.
t ô nhớớ khokhoảảng 5ms.
nn ThThờời gian l
d. Flash memory
d. Flash memory
n Thời gian truy cập nhanh (khoảng 120ns).
n Thời gian ghi nhanh 10µs
5
n Xóa từng khối nhớ
3.1.4 RAM
3.1.4 RAM
n Bị mất dữ liệu khi mất điện.
n Thời gian truy cập nhanh (cólo ại 15ns).
R/W
Input buffers
Decoder
CS
t
u
p
n
i
6 line to 64 line
s
s
e
r
d
d
A
Output buffers
Hình 3. Cấu tạo bên trong của 64 x 4 RAM
Register 0
Register 0
Register 1
Register 1
Register 2
Register 2
..
..
..
Register 62
Register 62
Register 63
Register 63
3.1.4 RAM (titiếếpp))
3.1.4 RAM (
n Chế tạo đơn giản
n Dễ dàng bảo trì
n Thường được sử dụng trong hệ thống có bộ nhớ nhỏ
n SRAM (static RAM)
n Giáthành th ấp
n Đòi hỏi mạch phụ trợ
n Phải làm tươi (refresh) thường xuyên
n Thường được sử dụng trong hệ thống có bộ nhớ lớn
6
n DRAM (dynamic RAM)
3.2 Giảải mã đ
3.2 Gi
i mã địịa cha chỉỉ cho b
cho bộộ nhnhớớ
nn Phân đ
Phân địịnh không gian t
nh không gian tổổng th
ng thểể ththàành cnh cáác vc vùùng nh
c nhau
ng nhớớ khkháác nhau
nn ĐĐảảm bm bảảo to tíính đơn tr
nh đơn trịị ccủủa xung ch
a xung chọọnn
phòng (spare
nn Khi thi
Khi thiếết kt kếế thư thườờng cng cóó ddựự phòng (
mmàà không ph
i thiếết kt kếế llạại mi mạạch.ch.
không phảải thi
Tín hiệu địa chỉ
Các tín hiệu chon chip
Mạch giải
mã địa chỉ
Tín hiệu điều khiển
Hình 3. Mạch giải mã địa chỉ
spare) ) đđểể ccóó ththểể mmởở rrộộng ng
3.2.1 Giảải mã b
3.2.1 Gi
nn MMạạch gi
ch NAND
i mã bằằng cng cáác mc mạạch NAND
đơn giảản vn vớới đi đầầu ra h
i mã địịa cha chỉỉ đơn gi
ch giảải mã đ
u ra hạạn chn chếế
A0 – A10
D0 - D7
Memory
CE
OE
A11 – A19
RD
IO/M
Hình 3. Mạch giải mã đơn giản dùng NAND
7
3.2.2 Giảải mã b
3.2.2 Gi
nn LLàà mmạạch gi
ch 74138
i mã bằằng cng cáác mc mạạch 74138
i mã 3 đ đầầu vu vàào, o, 8 8 đđầầu rau ra
ch giảải mã 3
A0 – A12
Memory
D0 – D7
CE
OE
74LS138
15
A
Y0
14
Y1
B
A13 – A15
13
Y2
C
12
6
Y3
G2A
A16 – A18
11
RD
Y4
10
Y5
5
G2B
9
IO/M
Y6
4
7
Y7
G1
A19
Hình 3. Sơ đồ giải mã dùng 74LS138
3.2.2 Giảải mã b
3.2.2 Gi
i mã bằằng cng cáác mc mạạch 74138
ch 74138 ((titiếếpp))
duy nhấất mt mộột đt đầầu ra
u ra ởở mmứức tc tíích cch cựựcc
8
nn MMứức tc tíích cch cựực lc làà mmứức 0c 0
nn ChChỉỉ duy nh
3.2.3 Giảải mã d
3.2.3 Gi
ng ROM
i mã dùùng ROM
c năng như 74138
nn CCùùng mng mộột cht chứức năng như
74138
ch phụụ trtrợợ
nn GiGiảảm thim thiểểu su sốố mmạạch ph
A0 – A12
Memory
D0 – D7
CE
OE
15
Y0
A0
14
Y1
A1
13
Y2
A2
12
Y3
A3
A13 – A19
11
RD
Y4
A4
10
Y5
A5
9
Y6
A6
7
Y7
A7
G1
IO/M
Hình 3. Sơ đồ giải mã dùng PROM
i mã dùùng ROM (
ng ROM (titiếếpp))
ng 8 byte đ
byte đầầu tiên, c
u tiên, cáác byte kh
c byte kháác đc đềều chu chứứa ca cùùng ng
3.2.3 Giảải mã d
3.2.3 Gi
nn ChChỉỉ ssửử ddụụng 8
t giáá trtrịị FFhFFh
mmộột gi
CCáác đc đầầu vu vààoo
AA66
AA44
AA22
00
11
11
CCáác đc đầầu rau ra
OO55
OO22
11
11
GG
00 AA77
00 AA11
00 AA00
00 AA55
11 AA33
11 OO77
00 OO66
11 OO44
11 OO33
11 OO11
11 OO00
11
00 00 00 00 11 11 11 11 11 11 00 11 11 11 11 11 11
00 00 00 11 00
11
11 11
11 11
11 11
11 11
11 11
11 00
11 11
00 11
11 11
11 11
11 11
11
00
00 00
00 00
11 11
00 11
00 11 11 11 11 11 11 11 11 00 11 11 11
00 00 11 00 11 11 11 11 11 11 11 11 11 11 00 11 11
00 00 11 11 00 11 11 11 11 11 11 11 11 11 11 00 11
00 00 11 11 11 11 11 11 11 11 11 11 11 11 11 00
9
00 11
CCáác đc địịa cha chỉỉ khkháác c 11 11 11 11 11 11 11 11
3.3 Ghéép np nốối bi bộộ nhnhớớ
3.3 Gh
nn ĐĐịịnh đnh địịa cha chỉỉ ccáác ô nh
c ô nhớớ..
Dung lượợng bng bộộ nhnhớớ..
nn Dung lư
nn TTốốc đc độộ bbộộ nhnhớớ ko đ
ko đááp p ứứng đươc t
ng đươc tốốc đc độộ VĐK th
VĐK thìì ta ph
ta phảải ci cóó
mmạạch tăng thêm chu k
ch tăng thêm chu kỳỳ đ đợợii
A0 – A11
D0 – D7
Bộ tạo xung trễ
Memory
Ready
CS
CE
OE
74LS138
F8000-F8FFF
15
A
Y0
14
B
Y1
A12 – A14
A15 – A19
13
C
Y2
12
6
Y3
G2A
11
RD
Y4
10
Y5
5
IO/M
G2B
9
Y6
4
7
FF000-FFFFF
G1
Y7
+Vcc
Hình 3. Phối ghép bộ nhớ
3.3 Ghéép np nốối bi bộộ nhnhớớ ((titiếếpp))
3.3 Gh
nn SSửử ddụụng bng bộộ ddồồn kênh đ
n kênh đểể gigiảảm sm sốố chân
chân, , tăng dung lư
tăng dung lượợng bng bộộ
nhnhớớ lênlên
-------
A0/A7
A6/A13
CAS
7 bit
Column address register
A7 A8 A9 A10 A11 A12 A13
RAS
Column address decoder
-----------
R/W
A0/ A7 – A6/A13
128 x 128
Cell array
Data in
Row
address
decoder
|
|
|
|
|
|
|
|
7 bit
Row
address
register
A0
A1
A2
A3
A4
A5
A6
Data out
Hình 3. Kiến trúc của bộ nhớ 4116
10
3.4 M3.4 Mởở rrộộng bng bộộ nhnhớớ
3.4.1 M3.4.1 Mởở rrộộng kng kíích thư
ch thướớc ô nh
c ô nhớớ
Address bus (AB0 –AB 3)
R/W
CS
A3
A2
A1
A0
A3
A2
A1
A0
R/W
R/W
RAM-0
16 x 4
RAM-1
16 x 4
CS
CS
I/03
I/02
I/01
I/00
I/03
I/02
I/01
I/00
Data bus (DB0 –DB 7)
Hình 3. Kết hợp hai bộ nhớ 16 x 4 thành 16 x 8
3.4.1 M3.4.1 Mởở rrộộng kng kíích thư
ch thướớc ô nh
c ô nhớớ ((titiếếpp))
Address bus (AB0 –AB 10)
R/W
R/W
R/W
R/W
RAM-0
2K x 8
RAM-1
2K x 8
RAM-2
2K x 8
RAM-3
2K x 8
CS
CS
CS
CS
I/00 -I/0 7
I/08 -I/0 15
I/016 -I/0 23
I/024 -I/0 31
Data bus (DB0 –DB 31)
Hình 3. Kết hợp bốn bộ nhớ 2K x 8 thành 2K x 32
11
3.4.2 M3.4.2 Mởở rrộộng dung lư
ng dung lượợng nh
ng nhớớ
Address bus (AB0 –AB 3)
R/W
AB4
A3
A2
A1
A0
A3
A2
A1
A0
R/W
R/W
RAM-0
16 x 4
RAM-1
16 x 4
CS
CS
I/03
I/02
I/01
I/00
I/03
I/02
I/01
I/00
Data bus (DB0 –DB 3)
Hình 3. Kết hợp hai bộ nhớ 16 x 4 thành 32 x 4
12
Chương 4: Họ vi điều khiển AVR
n Giới thiệu chung
n Các chức năng điều khiển
n Tập lệnh vàngôn ng ữ lập trình
4.1 Giới thiệu chung
n Khoảng hơn 100 lệnh, hầu hết thực hiện một chu kỳ máy
n 32 thanh ghi đa năng 8 bit
n Cóth ể lên tới 16 MIPS tại tần số 16MHz
n AVR -Ki ến trúc RISC
n 8..256K Flash Mem cho chương trình, ghi/xoá được 10.000
lần
n 512..4K Byte EEPROM, ghi/xoá100.000
n 512…8K Byte SRAM
1
n Bộ nhớ :
4.1 Giới thiệu chung (tiếp)
n Các modul vào ra (I/O moduls)
n ADC 10bit và từ 8..16 kênh Analog
n 1 đến 2 Programmable UART
n Master/Slave ISP Serial Interface
n 3..4 Timer/Counter: 1 x 16 bit, 2 x 8 bit
n WatchDog Timer
n Analog Comparator
n PWM
n Công suất (Power Management):
-3 ch ế độ nghỉ (Sleep Mode):
n Idle : 1.9 mA
n Power-Down: <1µA
n PowerSave
n (chế độ chạy bình thường: 6mA)
4.1 Giới thiệu chung (tiếp)
– Điện áp làm việc :
n Vcc 4.0-6.0V với AT90S8535
n Vcc 2.7-6.0V với AT90LS8535
– Tần số CLOCK
n 0-8MHz với AT90S8535
n 0-4MHz với AT90LS8535
n 0-16MHz với Atmegaxx
2
4.1 Giới thiệu chung (tiếp)
4.1.1 Các bộ nhớ
Program Memory
Data Memory
Data Memory
$000
$000
$0000
32 Gen. Purpose
Working Resisters
Program Flash
$001F
$0020
(4K x 16)
EEPROM
(512 x 8)
64 I/O Resisters
$005F
$0060
$1FF
Internal SRAM
(512 x 8)
$025F
$FFF
3
4.1.1 Các bộ nhớ (tiếp)
ZL
ZH
Register File
R1
R2
…
R30
R31
Data Address Space
$0000
$0001
…
$001E
$001F
I/O Register
$00
$01
…
$3E
$3F
$0020
$0021
…
$005E
$005F
Internal SRAM
$0060
$0061
…
$085E
$085F
4.1.2 Các thanh ghi đa năng
a. Các thanh ghi đa năng
n Bao gồm 32 thanh ghi 8 bit
n Được thực hiện trực tiếp từ ALU
n Các cặp thanh ghi R26, 27; R28, 29; R30, 31 tạo thành các thanh
ghi 16 bit
4
SRAM Organization
b. Các thanh ghi ngăn xếp
về sau khi phục vụ chương trình con ngắt và chương
trình con
n Để lưu trữ dữ liệu tam thời, vị tríbi ến và địa chỉ trở
c. Các thanh ghi trạng thái
n Luôn trỏ vào đỉnh của ngăn xếp
n Ngăn xếp luôn bắt đầu từ vị trícao c ủa bộ nhớ
phục vụ ngắt
5
n Chứa thông tin hiện tại của CPU
n Có8 bit ch ứa thông tin
n Thông tin có thể bị thay đổi khi có chương trình con
d. Thanh ghi che ngắt và cờ ngắt
e. Thanh ghi điều khiển
n Cho phép hay không cho phép một ngắt bất kỳ
n Thông báo khi cóng ắt, nếu ngắt đó đã được phép
n Thanh ghi che ngắt được thiết lập bằng phần mềm
n Truy cập bộ nhớ SRAM
n Chế độ ngủ
n Chế độ ngắt ngoài
6
n Cho phép điều khiển toàn bộ vi điều khiển
n Chức năng này gồm:
f. Một số thanh ghi khác
4.1.3 Ngắt và xử lý ngắt
Vector No.
ProgramAddress
Source
Interrupt Difinition
1
$000
Reset
2
3
4
5
6
7
8
9
10
11
12
$002
$004
$006
$008
$00A
$00C
$00E
$010
$012
$014
$016
INT0
INT1
INT2
TIMER2 COMP
TIMER2 OVF
TIMER1 CAPT
TIMER1 COMPA
TIMER1 COMPB
TIMER1 OVF
TIMER0 COMP
TIMER0 OVF
External Pin, Power-on Reset, Brown-out Reset,
Watchdog Reset and JTAG AVR Reset
External Interrupt Request 0
External Interrupt Request 1
External Interrupt Request 2
Timer/Counter2 Compare Match
Timer/Counter2 Overflow
Timer/Counter1 Capture Event
Timer/Counter1 Capture Match A
Timer/Counter1 Capture Match B
Timer/Counter1 Overflow
Timer/Counter0 Compare Match
Timer/Counter0 Overflow
13
$018
SPI, STC
Serial Transfer Complete
14
15
16
$01A
$01C
$01E
USART, RXC
USART, UDRE
USART, TXC
USART, Rx Complete
USART Data Register Empty
USART, Tx Complete
17
$020
ADC
ADC Conversion Complete
18
$022
EE_RDY
EEPROM Ready
19
$024
ANA_COMP
Analog Comparator
20
$026
TWI
Two-wire Serial Interface
21
$028
SPM_RDY
Store Program Memory Ready
7
n Thanh ghi trạng thái bộ xử lý
n Các thanh ghi điều khiển timer/counter0
n Các thanh ghi điều khiển timer/counter1
n Thanh ghi điều khiển Watchdog
n Các thanh ghi điều khiển vào ra EEPROM
n Các thanh ghi điều khiển SPI
n Các thanh ghi điều khiển UART
n Các thanh ghi điều khiển bộ ADC
4.1.3 Ngắt và xử lý ngắt (tiếp)
n 16 vectơ ngắt (2 Byte)
n Từ địa chỉ $000 trong bộ nhớ chương trình
n Ngắt cóch ỉ số thấp, độ ưu tiên càng cao
n Mỗi ngắt có một bít cho phép ngắt riêng
n Để sử dụng một ngắt thìbit này ph ải thiết lập cùng
với cờ I (Global Interrupt Enable) trong thanh ghi
SREG được thiết lập
trình con phực vụ ngắt
4.1.3 Ngắt và xử lý ngắt (tiếp)
6
5
4
3
2
1
0
7
n Mất 4 chu kỳ đồng hồ để vào (hoặc ra khỏi) chương
T
H
S
V
N
Z
C
I
SREG
Bit
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
$3F ($5F)
0
0
0
0
0
0
0
0
Read/Write
n I –Global Interrupt Enable
n T –Bit Copy Storage
n H –Haft Carry Flag
n S –Sign Bit S = N V
n V –Overflow Flag
n N –Negative Flag
n Z –Zero Flag
n C –Carry Flag
8
Initial Value
4.2 Các chức năng điều khiển
n Timer/Counter
n WatchDog Timer
n Các cổng vào ra
n ADC
n UART
4.2.1 Timer/Counter
Có3 b ộ đếm/định thời gian
n T/C0 :
n 8 bit
n Nguồn đồng hồ từ mạch chia thời gian hoặc từ chân T0
(theo sườn lên/xuống)
n Ngắt tràn
n EEPROM
n 16 bit
n Nguồn đồng hồ từ mạch chia thời gian hoặc từ chân T1
(theo sườn lên/xuống)
n Cóng ắt tràn, ngắt thích ứng so sánh vàng ắt cho phép bắt
tín hiệu từ chân ICP
9
n T/C1:
4.2.1 Timer/Counter (tiếp)
n 8 bit
n Nguồn đồng hồ từ mạch chia thời gian hoặc từ dao động
bên ngoài (chân TOSC1 vàTOSC2 n ối với tụ thạch
anh 32768Hz)
n Cóng ắt tràn vàng ắt thích ứng so sánh
n Cho phép đưa tín hiệu ra chân OC2 khi cótín hi ệu thích
ứng so sánh
4.2.2 WatchDog Timer
Reset
Watchdog Timer
Processor
Restart
Clock
10
n T/C2:
4.2.2 WatchDog Timer (tiếp)
Reset lại
n Hoạt động từ bộ dao động độc lập trên chip
n Lệnh WDR để Reset lại WatchDog Timer
n Sau khoảng thời gian > time_out chương trình sẽ bị
7
6
5
4
3
2
1
0
Bit
─
─
─
WDTOE
WDE
WDP2
WDP1
WDP0
WDTCR
$21 ($41)
R
R
R
R/W
R/W
R/W
R/W
R/W
Read/Write
0
0
0
0
0
0
0
0
Initial Value
4.2.2 WatchDog Timer (tiếp)
n Thanh ghi điều khiển: WDTCR
WDP2
WDP1
WDP0
Number of WDT
Oscillator Cycles
0
0
0
16K
Typical Time_out
at Vcc = 3.0V
17.1ms
Typical Time_out
at Vcc = 5.0V
16.3ms
0
0
1
32K
34.3ms
32.5ms
0
1
0
64K
68.5
65ms
0
1
1
128K
0.14s
0.13s
1
0
0
256K
0.27s
0.26s
1
0
1
512K
0.55s
0.52s
1
1
0
1M
1.1s
1.0s
1
1
1
2M
2.2s
2.1s
11
n WDP2, WDP1, WDP0 : xác định thời gian time_out
4.2.2 Các cổng vào ra
4.2.2 Các cổng vào ra (tiếp)
n Thanh ghi dữ liệu : PORTA
n Thanh ghi điều khiển hướng dữ liệu : DDRA
n Thanh ghi địa chỉ các chân vào : PINA
n Có4 c ổng vào ra 8 bit PA, PB, PC, PD
n Mỗi cổng đều có3 thanh ghi (8 bit), ví d ụ cổng A :
thể vừa cóbit vào v ừa cóbit ra)
n bit DDRAi=1, chân PAi làchân ra ( = PORTAi)
n bit DDRAi=0, chân PAi làchân và o (= PINAi)
12
n Cho phép thao tác vào ra trên từng bít (một cổng có
4.2.2 Các cổng vào ra (tiếp)
4.2.3 ADC
n Phải định nghĩa cổng trước khi sử dụng
n Khả năng chịu tải cao (Isink khoảng 20mA/Pin)
n Vào ra ba trạng thái
n Cókh ả năng vào tương tự
n Pull_up, I = 33µA÷160µA
n Độ phân giải tối đa 10 bit, xấp xỉ liên tiếp
n Độ chính xác tuyệt đối đến ±2 LSB
n Thời gian chuyển đổi: 65-260 µs, 13 chu kỳ cho một lần
chuyển đổi
n 2 chế độ hoạt động: chuyển đổi đơn vàchuy ển đổi tự do
n Đặc điểm:
n Thanh ghi dữ liệu: ADCL, ADCH
13
n Các thanh ghi
4.2.3 ADC (tiếp)
n Thanh ghi chọn kênh : ADMUX
7
6
5
4
3
2
1
0
Bit
REFS1
REFS0
ADLAR
MUX4
MUX3
MUX2
MUX1
MUX0
ADMUX
$21 ($41)
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Read/Write
0
0
0
0
0
0
0
0
Initial Value
n Thanh ghi điều khiển trạng thái: ADCSRA
5
4
3
2
1
0
7
6
Bit
ADEN
ADSC
ADATE
ADIF
ADIE
ADPS2
ADPS1
ADPS0
ADCSRA
$21 ($41)
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Read/Write
0
0
0
0
0
0
0
0
Initial
Value
4.2.4 USART
n Đặc điểm:
n Truyền song công
n Truyền đồng bộ hoặc không đồng bộ
n Master hoặc Slave cấp xung nhịp
n Khuân dạng dữ liệu đa dạng (5=>9 bit dữ liệu, 1 hoặc 2
bít dừng)
n Kiểm tra bit chẵn lẻ bằng phần cứng
n Tự phát hiện lỗi tràn dữ liệu, khung dữ liệu lỗi
n Khả năng lọc nhiễu
n 3 ngắt truyền, nhận vàtruy ền hết
n Nhiều chế độ kết nối
n Khả năng nhân đôi tốc độ truyền thông
14
4.2.4 USART (tiếp)
n Các thanh ghi
n Thanh ghi tốc độ Baud : UBRR
BaudRate =
Fclk
16 * (UBRR + 1)
n VD: fck = 4MHz,cần tốc độ 14400bps
n UBRR =16 (16.3), tốc độ thực tế là14705bps, l ỗi 2.1%
n Không nên sử dụng tốc độ có lỗi > 1%
4.2.4 USART (tiếp)
n Thanh ghi dữ liệu: UDR (gồm hai thanh ghi độc lập cócùng
địa chỉ vào ra): chứa dữ liệu nhận vàtruy ền
n Thanh ghi điều khiển vàtr ạng thái: UCSR
(Control and Status Register)
7
6
5
4
3
2
1
0
Bit
RXC
TXC
UDRE
FE
DOR
PE
U2X
MPCM
UCSRA
$0B ($2B)
R/W
R
R/W
R
R
R
R
R/W
Read/Write
0
0
0
1
0
0
0
0
Initial Value
7
6
5
4
3
2
1
0
Bit
RXCIE
TSCIE
UDRUE
RXEN
TXEN
UCSZ2
RXB8
TXB8
UCSRB
$0A ($2A)
R
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Read/Write
0
0
0
0
0
0
0
0
Initial Value
15
4.2.4 USART (tiếp)
Hoạt động:
hoặc cả hai, có sử dụng ngắt hay không?
n Thiết lập tốc độ truyền, 8/9 bit dữ liệu, truyền/nhận
n Đưa byte dữ liệu cần truyền vào UDR
n Đợi đến khi UDRE = 1 (hoặc sử dụng ngắt) thìtruy ền tếp
byte tiếp theo
4.2.4 USART (tiếp)
n Truyền dữ liệu:
(IDLE)
Sp1 [Sp2]
(St/IDLE)
n Nhận dữ liệu:
n Đợi đến khi cờ RXC=1 (hoặc sử dụng ngắt) báo hiệu nhận
được byte dữ liệu
n Kiểm tra cờ FE và OR
n Đọc byte dữ liệu từ UDR
16
St 0 1 2 3 4 [5] [6] [7] [8] [P]
4.2.5 EEPROM
n EERIE (EEPROM Ready Intr En)
n EEMWE (EEPROM Master Write En) : cho phép ghi. Bit này
sẽ tự động bị xoásau 4 chu k ỳ đồng hồ
n EEWE (EEPROM Write En) : khi bit này được thiết lập và
EEMWE=1 thìthao tác ghi m ới được thực hiện
n EERE (EEPROM Read En): cho phép đọc
n EEPROM. Khi đọc xong, bit này sẽ tự động bị xoávàCPU s ẽ
dừng 4 chu kỳ đồng hồ trước khi lệnh tiếp theo được thực hiện
4.2.5 EEPROM (tiếp)
n Đợi đến khi EEWE=0
n Ghi địa chỉ mới vào EEARL vàEEARH
n Ghi dữ liệu mới vào EEDR
n Ghi mức logic 1 vào bit EEMWE và mức logic 0 vào
EEWE đồng thời
n Trong vòng 4 chu kỳ đồng hồ sau ghi giátr ị logic 1 vào
EEWE
17
n Quy trình ghi:
4.2.6 SPI (Serial Peripheral Interface)
4.2.6 SPI (Serial Peripheral Interface –ti ếp)
n Truyền song công
n Chọn chế độ chủ hoặc tớ
n Bit cao hoặc bit thấp truyền trước
n Bảy bít thiết lập tốc độ truyền
n Cờ ngắt truyền hết
n Cờ bảo vệ xung đột ghi
n Đánh thúc từ chế độ nghỉ
n Chế độ nhân đôi tốc độ
18
4.2.7 So sánh tín hiệu tương tự (Analog Comparator)
n Mạch so sánh tín hiệu tương tự: so sánh tín hiệu
analog giữa hai chân AIN1 vàAIN2
4.1 Giới thiệu chung (tiếp)
U1
J5
+5V
MOSI
MISO
SCK
Reset
1
2
3
4
5
6
MOSI
MISO
SCK
1
2
3
4
5
6
7
8
40
39
38
37
36
35
34
33
Program
PB0/XCK/T0
PB1/T1
PB2/INT2/AIN0
PB3/OC0/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
PA0/ADC0
PA1/ADC1
PA2/ADC2
PA3/ADC3
PA4/ADC4
PA5/ADC5
PA6/ADC6
PA7/ADC7
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/OC1B
PD5/OC1A
PD6/ICP
PD7/OC2
PC0/SCL
PC1/SDA
PC2/TCK
PC3/TMS
PC4/TDO
PC5/TDI
PC6/TOSC1
PC7/TOSC2
C4
22p
11
12
GND
XTAL2
CON8
10
Y1
8MHz
C5
+5V
VCC
13
XTAL1
+5V
22p
R1
10K
30
AVCC
S1
Reset
9
RESET
+5V
31
AGND
Reset
+
C3
4.7u
32
AREF
ATMEGA32
19
4.3 Tập lệnh vàngôn ng ữ lập trình
4.3.1 Tập lệnh
n 109 lệnh
n Toán học vàlogic (22)
n Lệnh rẽ nhánh (34)
n Lệnh chuyển đổi dữ liệu (31)
n Lệnh bít vàki ểm tra bít (31)
4.3.1 Tập lệnh (tiếp)
Các chế độ định địa chỉ
20
n Địa chỉ trực tiếp (Direct Addressing)
n Địa chỉ qua chỉ số (Indexed Addressing)
n Địa chỉ tức thời (Immediate Addressing)
n Địa chỉ tương đối (Relative Addressing)
n ….
4.3.2 Một số ngôn ngữ lập trình
nAVR Assembler
nAVR Edit 3.5 (lập trình C)
nCodeVisionAVR (lập trình C)
21
5: CodevisionAVR
Chương 5: CodevisionAVR
Chương
nn IDE (
Integrated Development Environment))
IDE (Integrated Development Environment
Compiler))
nn TrTrìình dnh dịịch (ch (Compiler
nn HHààm thư vi
m thư việện (n (Library Functions)
Library Functions)
nn TTựự đ độộng sinh mã (
Automatic Program Generator))
ng sinh mã (Automatic Program Generator
Hình 5. Giao diện chính của CodevisionAVR
1
5.1 IDE
5.1 IDE
5.1.1 File
5.1.1 File
o file
nn TTạạo file
nn MMởở filefile
nn ChChỉỉnh snh sửửaa
5.1.2 Project
5.1.2 Project
t project
nn TTạạo mo mộột project
Project
nn MMởở Project
nn LưuLưu
Thêm chúú ththíích/di
ch/diễễn gin giảảii
nh cho Project
nn CCấấu hu hìình cho Project
nn Thêm ch
Quan sáát chương trr
t chương trrìình dnh dịịchch
2
nn Quan s
5.1.3 Công cụụ
5.1.3 Công c
debugger))
nn GGỡỡ rrốối (i (debugger
programmer))
nn LLậập trp trìình (nh (programmer
Terminal
nn Terminal
Configuring))
nn CCấấu hu hìình (nh (Configuring
5.1.4 Thiếết lt lậập môi trư
5.1.4 Thi
p môi trườờngng
ng quan
nn TTổổng quan
nn SoSoạạn thn thảảoo
nn HiHiệện ln lỗỗii
nn ĐưĐườờng dng dẫẫn trn trìình gnh gỡỡ llỗỗii
3
nn CCấấu hu hìình nnh nạạpp
5.2 Trìình dnh dịịchch
5.2 Tr
n Tiền xử lý
n Chúthích
n Từ khoá
n Dữ liệu chuẩn, dữ liệu tự định nghĩa
n Hằng, biến
n Chuyển kiểu
n Phép toán
n Hàm
n Con trỏ
n Thanh ghi I/O
n Truy cập EEPROM
n Ngắt
n Assembly
5.3 H5.3 Hààm chum chuẩẩnn
m IO chuẩẩnn
char getchar
nn HHààm IO chu
nn char
(void)
getchar(void)
nn void
void putchar
Returns a character received by the UART, using polling.
Returns a character received by the UART, using polling.
(char c)
putchar(char c)
nn ……
Transmits the character c using the UART, using polling.
Transmits the character c using the UART, using polling.
nn unsigned char
unsigned char cabs
nn unsigned int
nn HHààm tom toáán hn họọcc
(signed char x)
cabs(signed char x)
returns the absolute value of the byte x.
returns the absolute value of the byte x.
(int x)
unsigned int absabs(int x)
returns the absolute value of the integer x.
returns the absolute value of the integer x.
nn ……
4
nn LCDLCD
(unsigned char addr, unsigned char data)
lcd_write_byte (unsigned char addr, unsigned char data)
nn void
nn unsigned char
nn void
void lcd_write_byte
write a byte to the LCD character generator or display RAM
write a byte to the LCD character generator or display RAM
unsigned char lcd_read_byte
(unsigned char addr);
lcd_read_byte(unsigned char addr);
read a byte from the LCD character generator or display RAM
read a byte from the LCD character generator or display RAM
void lcd_gotoxy
(unsigned char x, unsigned char y);
lcd_gotoxy(unsigned char x, unsigned char y);
set the LCD display position x=0..39 y=0..3
set the LCD display position x=0..39 y=0..3
. . .
nn . . .
nn void
void i2c_init
unsigned char i2c_start
nn unsigned char
nn II22CC
(void)
i2c_init(void)
this function initializes the I2C bus.
this function initializes the I2C bus.
(void)
i2c_start (void)
2C bus is
issues a START condition. Returns 1 if bus is free or 0 if the I2C bus is
issues a START condition. Returns 1 if bus is free or 0 if the I
nn void
busy.
busy.
(void)
i2c_stop (void)
void i2c_stop
issues a STOP condition.
issues a STOP condition.
nh thờờii
so sáánh tương t
nh tương tựự
ng sinh mã
5.4 T5.4 Tựự đ độộng sinh mã
c thông sốố
nn CCàài đi đặặt ct cáác thông s
p RAM ngoààii
nn ThiThiếết lt lậập RAM ngo
nn ThiThiếết lt lậập cp cổổng vng vàào rao ra
nn ThiThiếết lt lậập ngp ngắắtt
nn ThiThiếết lt lậập bp bộộ đ đếếmm//đđịịnh th
nn ThiThiếết lt lậập UART/USART
p UART/USART
nn ThiThiếết lt lậập bp bộộ so s
p ADC
nn ThiThiếết lt lậập ADC
nn ThiThiếết lt lậập SPI
p SPI
nn ThiThiếết lt lậập USI
p USI
nn ThiThiếết lt lậập Ip I22CC
nn ThiThiếết lt lậập LCD
p LCD
. . .
nn . . .
5
. . .
nn . . .
6: Input/Output
Chương 6: Input/Output
Chương
nn TTổổngng quanquan
nn MMộộtt ssốố vvíí ddụụ vvàào/rao/ra
nn LLậậpp trtrììnhnh điđiềềuu khikhiểểnn thithiếếtt bbịị
nn ThiThiếếtt bbịị vvààoo rara chuchuẩẩnn
TTổổngng quanquan
nn VVààoo rara ssốố
VVààoo nnốốii titiếếpp
VVààoo rara song
nn VVààoo rara tương
song
song song
tương ttựự
ADCADC
DACDAC
1
8051
VVààoo rara ccủủaa 8051
VVààoo rara ccủủaa AVRAVR
2
4x4
BBàànn phphíímm 4x4
S901
S902
S903
S904
K0
K1
K2
K3
K4
S911
S912
S913
S914
K5
S921
S922
S923
S924
K6
S931
S932
S933
S934
K7
BBàànn phphíímm 4x44x4
nn ĐĐọọcc bbàànn phphíímm
rung
nn ChChốốngng rung
3
Key Board
Key Board
Key Board
Key Board
( chip thoâng
nhau ttöøöø babaøønn phphíímm nanaøøyy ññeeáánn babaøønn phphíímm
thoâng duduïïngng gogoààmm 8048, 8049, 6868
8048, 8049, 6868 vavaøø
byte cucuûûaa nonoùù neneááuu cacaàànn. . TaTaáátt cacaûû vievieääcc giaogiao
AT keyboard gogoààmm momoäätt ma ma tratraäänn lôlôùùnn cacaùùcc phphíímm, , tataáátt cacaûû
ñöñöôôïïcc giagiaùùmm sasaùùtt bôbôûûii momoäätt boboää xxöûöû lylyùù onon--board.
board. BoBoää xxöûöû lylyùù
khakhaùùcc biebieäätt nhau
khakhaùùcc( chip
6805) nhnhööngng tataáátt chuchuùùngng côcô babaûûnn lalaøømm giogioáángng momoäätt vievieääcc : :
6805)
GiaGiaùùmm sasaùùtt nhnhööõngõng phphíímm ñöñöôôïïcc nhanhaáánn / / thathaûû vavaøø gôgôûûii ddööõõ
lielieääuu ttööôngông xxöùöùngng tôtôùùii mamaùùyy chuchuûû. . BoBoää xxöûöû lylyùù nanaøøyy chaêmchaêm
sosoùùcc tataáátt cacaûû ddööõõ lielieääuu rara vavaøø ññeeäämm babaáátt ccöùöù ddööõõ lielieääuu nanaøøoo vavaøøoo
boboää ññeeäämm 1616--byte
PS/2 protocol.
tietieáápp gigiööõaõa mamaùùyy chuchuûû vavaøø babaøønn phphíímm duduøøngng PS/2 protocol.
4
nn AT keyboard