152
Phm Đức Long Bmôn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GING MÔN HC VI XLÝ VÀ LP TRÌNH HP NGMC LC Trang Ch¬ng 1. Giíi thiÖu chung 1.1 Sù ra ®êi vμ ph¸t triÓn cña c¸c bé vi xö lý 4 1.2 S¬ ®å khèi cÊu tróc vμ ho¹t ®éng cña hÖ vi xö lý 4 Ch¬ng 2. Bé nhí b¸n dÉn 2.1 Ph©n lo¹i bé nhí 6 2.1.1 Bé nhí cè ®Þnh (ROM, PROM) 7 2.1.2 Bé nhí b¸n cè ®Þnh (EPROM, EEPROM, FLASH) 8 2.1.3 Bé nhí ®äc ghi (SRAM, DRAM) 10 2.1.4 Bé nhí ngoμi 10 2.2 Ph©n cÊp bé nhí 10 2.3 CÊu tróc cña m¹ch nhí tÜnh SRAM 2.3.1 Giíi thiÖu c«ng nghÖ 12 2.3.2 CÊu tróc m¹ch nhí SRAM 12 2.3.2.1 Bit nhí 12 2.3.2.2 Thanh ghi 14 2.3.2.3 Bé gi¶i m· 15 2.3.2.4 M¹ch nhí SRAM (C¸c thμnh phÇn, quy tr×nh ®äc ghi, biÓu ®å thêi gian) 18 2.3.3 ThiÕt kÕ thÎ nhí SRAM 19 2.4 CÊu tróc cña m¹ch nhí DRAM 19 Ch¬ng 3. C¸c bé vi xö lý và vi điu khin 3.1 Giíi thiÖu bé vi xö lý 8 bit tæng qu¸t 23 3.2 Bé vi xö lý 8 bit (8086/8088) 3.2.1 S¬ ®å khèi bé vi xö lý 8 bit 23 3.2.2 C¸c thanh ghi ca 8086/88 24 3.2.3 BiÓu ®å thêi gian cña chu kú ®äc ghi sè liÖu 27 3.2.5 GhÐp nèi c¸c ch©n tÝn hiÖu 8088 30 3.2.6 HÖ lÖnh cña bé vi xö lý 8 bit 31 3.3 Giíi thiÖu c¸c bé vi xö lý tiªn tiÕn dòng 80x86 Thái Nguyên 8-2008 1

Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Embed Size (px)

Citation preview

Page 1: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

MỤC LỤC

Trang

Ch−¬ng 1. Giíi thiÖu chung

1.1 Sù ra ®êi vµ ph¸t triÓn cña c¸c bé vi xö lý 4 1.2 S¬ ®å khèi cÊu tróc vµ ho¹t ®éng cña hÖ vi xö lý 4

Ch−¬ng 2. Bé nhí b¸n dÉn

2.1 Ph©n lo¹i bé nhí 6

2.1.1 Bé nhí cè ®Þnh (ROM, PROM) 7

2.1.2 Bé nhí b¸n cè ®Þnh (EPROM, EEPROM, FLASH) 8

2.1.3 Bé nhí ®äc ghi (SRAM, DRAM) 10

2.1.4 Bé nhí ngoµi 10

2.2 Ph©n cÊp bé nhí 10

2.3 CÊu tróc cña m¹ch nhí tÜnh SRAM

2.3.1 Giíi thiÖu c«ng nghÖ 12

2.3.2 CÊu tróc m¹ch nhí SRAM 12

2.3.2.1 Bit nhí 12 2.3.2.2 Thanh ghi 14 2.3.2.3 Bé gi¶i m· 15 2.3.2.4 M¹ch nhí SRAM (C¸c thµnh phÇn, quy tr×nh ®äc ghi, biÓu ®å thêi gian) 18

2.3.3 ThiÕt kÕ thÎ nhí SRAM 19

2.4 CÊu tróc cña m¹ch nhí DRAM 19

Ch−¬ng 3. C¸c bé vi xö lý và vi điều khiển

3.1 Giíi thiÖu bé vi xö lý 8 bit tæng qu¸t 23

3.2 Bé vi xö lý 8 bit (8086/8088)

3.2.1 S¬ ®å khèi bé vi xö lý 8 bit 23 3.2.2 C¸c thanh ghi của 8086/88 24 3.2.3 BiÓu ®å thêi gian cña chu kú ®äc ghi sè liÖu 27 3.2.5 GhÐp nèi c¸c ch©n tÝn hiÖu 8088 30 3.2.6 HÖ lÖnh cña bé vi xö lý 8 bit 31

3.3 Giíi thiÖu c¸c bé vi xö lý tiªn tiÕn dòng 80x86

Thái Nguyên 8-2008 1

Page 2: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

3.4 Vi ®iÒu khiÓn 8x51/52 80

3.5 Vi ®iÒu khiÓn thÕ hÖ míi AVR 3.5.1. Giíi thiÖu chung vÒ AVR 96 3.5.2. Bus I2C vµ SPI 103 3.5.3. AVR 90S8535 105

3.6 C¸c hÖ thèng trªn mét chip cã kh¶ n¨ng t¸i cÊu h×nh (SoC) 3.6.1. SoC lµ g×? 105 3.6.2. Giíi thiÖu PSoC 108 3.6.3. PSoC CY8C29446 108

Ch−¬ng 4. C¸c bé ®iÒu khiÓn vµ ghÐp nèi d÷ liÖu

4.1. Vµo/ ra sè liÖu ®iÒu khiÓn b»ng ng¾t

4.1.1 Nguyªn lý vµo/ra ®iÒu khiÓn b»ng ng¾t 117

4.1.2 Bé ®iÒu khiÓn ng¾t PIC (8259) 119

4.1.3 Ng¾t trong m¸y tÝnh IBM/PC 126

4.2. Vµo/ra sè liÖu ®iÒu khiÓn b»ng th©m nhËp bé nhí trùc tiÕp DMA

4.2.1 Nguyªn lý vµo/ ra b»ng DMA 127

4.2.2 Bé th©m nhËp bé nhí trùc tiÕp DMAC (8237) 129

4.2.3 Sö dông bé ®iÒu khiÓn DMAC trong hÖ vi xö lý 132

4.3. Bé ®Õm lËp tr×nh ®−îc

4.3.1 S¬ ®å khèi bé ®Õm lËp tr×nh ®−îc (8254) 132

4.3.2 C¸c chÕ ®é lµm viÖc cña bé ®Õm lËp tr×nh 133

4.3.3 Sö dông bé ®Õm trong hÖ vi xö lý 135

4.4. Phèi ghÐp vµo ra nèi tiÕp

4.4.1 Nguyªn lý vµo/ ra nèi tiÕp 136

4.4.2 M¹ch thu ph¸t th«ng tin nèi tiÕp UART 139

4.5. Phèi ghÐp víi thiÕt bÞ vµo/ra qua cæng song song

4.5.1 GhÐp nèi song song ®¬n gi¶n 147

4.5.2 M¹ch phèi ghÐp vµo/ra song song lËp tr×nh ®−îc PPI 8255A

4.5.2.1 C¸c khèi cña PPI 148 4.5.2.2 C¸c tÝn hiÖu cña PPI 148 4.5.2.3 C¸c chÕ ®é lµm viÖc cña PPI 149 4.5.2.5 GhÐp nèi PPI trong hÖ vi xö lý 149

Thái Nguyên 8-2008 2

Page 3: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Ch−¬ng 5 ThiÕt kÕ hÖ thèng vi xö lý 5.1 ThiÕt kÕ phÇn cøng 150 5.2 ThiÕt kÕ phÇn mÒm 150

5.2.1 ROM Mapping 5.2.2 RAM Mapping 5.2.3 ThiÕt kÕ c¸c ch−¬ng tr×nh hÖ thèng 5.2.4 ThiÕt kÕ c¸c ch−¬ng tr×nh øng dông

Thái Nguyên 8-2008 3

Page 4: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Ch−¬ng 1. GIỚI THIỆU CHUNG

1.1 Sù ra ®êi vµ ph¸t triÓn cña c¸c bé vi xö lý

• Bé vi xö lý lµ 1 thµnh phÇn kh«ng thÓ thiÕu ®−îc trong c¸c hÖ thèng tÝnh to¸n m¸y vi tÝnh.

• Sù ph¸t triÓn:

− ThÕ hÖ 1 (1971 - 1973): Bé vi xö lý ®Çu tiªn ra ®êi 1971 lµ 4004 s¶n phÈm cña h·ng Intel 4 bit sè liÖu, 12 bit ®Þa chØ. TiÕp theo lµ 4040, 8008... §Æc ®iÓm chung:

+ Sö dông c«ng nghÖ PMOS ( lç trèng)

+ Tèc ®é thùc hiÖn lÖnh 10-60µs. Tèc ®é xung ®ång hå 0.1 ®Õn 0.8 MHz

+ TËp lÖnh ®¬n gi¶n

− ThÕ hÖ 2 (1974-1977): ThÕ hÖ c¸c vi xö lý 8 bit nh− 6800, 8080, 8085...cã thÓ qu¶n lý 64KB bé nhí. §Æc ®iÓm:

+ Sö dông c«ng nghÖ NMOS (Cã mËt ®é phÇn tö trªn mét ®¬n vÞ diÖn tÝch lín h¬n PMOS)

+ Tèc ®é thùc hiÖn lÖnh 1-8µs. Tèc ®é xung ®ång hå 1-5MHz

− ThÕ hÖ 3(1978-1982): Thêi kú c¸c vi xö lý 16 bit 8086/80186/80286 hoÆc 68000.

+ Cã tËp lÖnh ®a d¹ng h¬n

+ Kh¶ n¨ng ph©n biÖt bé nhí cao h¬n: 1-16MB bé nhí 64KB thiÕt bÞ ngo¹i vi

+ S¶n xuÊt b»ng c«ng nghÖ HMOS (HMOS, XMOS, VMOS: c¶i tiÕn cña NMOS)

+ Tèc ®é 0.1 - 1µs. Xung ®ång hå 5-10MHz

− ThÕ hÖ 4(1983 - nay): Thêi kú c¸c bé vi xö lý 32 bit nh− 80386/486/PI,PII,PIII, PIV víi c¸c kü thuËt tiªn tiÕn pipeline, cache, vitual memory, HT...TÊt c¶ ®Òu cã bé ®ång xö lý to¸n häc, bé qu¶n lý bé nhí MMU.

1.2 S¬ ®å khèi cÊu tróc vµ ho¹t ®éng cña hÖ vi xö lý

− Bé vi xö lý lµ 1 thµnh phÇn kh«ng thÓ thiÕu ®−îc ®Ó x©y dùng c¸c hÖ thèng tÝnh to¸n, m¸y vi tÝnh. Nh−ng bé vi xö lý cßn ph¶i kÕt hîp víi c¸c thµnh phÇn kh¸c ®Ó t¹o nªn hÖ vi xö lý

− S¬ ®å d−íi ®©y lµ s¬ ®å tæng qu¸t cña c¸c hÖ vi xö lý kinh ®iÓn ¸p dông cho c¸c hÖ nhá vµ c¸c m¸y tÝnh ®êi ®Çu. C¸c m¸y tÝnh hiÖn nay cã cÊu tróc kh¸c h¬n.

Thái Nguyên 8-2008 4

Page 5: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

In

AbusDbus

I/O

M

CPU

Out

Cbus

• CPU (Central Processing Unit): Bé n·o cña m¸y tÝnh gåm c¸c m¹ch vi ®iÖn tö cã ®é tÝch hîp rÊt cao (hµng triÖu tranzito trong 1 chip). Nã gåm cã c¸c phÇn:

+ CU (Control Unit): Khèi ®iÒu khiÓn cã chøc n¨ng: ®äc m· lÖnh d−íi d¹ng tËp hîp c¸c bit 0/1 tõ c¸c « nhí trong bé nhí. Gi¶i m· c¸c lÖnh thµnh d·y c¸c xung ®iÒu khiÓn ®Ó ®iÒu khiÓn c¸c khèi kh¸c thùc hiÖn nh− ®iÒu khiÓn ALU,

®iÒu khiÓn ra ngoµi µPC

+ ALU (Arithmetic Logic Unit): Khèi tÝnh to¸n sè häc vµ logic: Tæ hîp c¸c m¹ch logic ®iÖn tö phøc t¹p cho phÐp thùc hiÖn c¸c thao t¸c trªn c¸c thanh ghi nh− +, -, *, /, AND, OR, NOT...

+ Registers: C¸c thanh ghi

− Mét CPU cã thÓ cã nhiÒu thanh ghi:

+ Thanh ghi con trá lÖnh IP (bé ®Õm ch−¬ng tr×nh) chøa ®Þa chØ cña lÖnh s¾p thùc hiÖn: C¸c ch−¬ng tr×nh m¸y tÝnh lµ tËp hîp cña c¸c lÖnh. CPU sÏ lÊy tõng lÖnh ra ®Ó ch¹y. §Ó ®iÒu khiÓn chÝnh x¸c viÖc thùc hiÖn nµy cÇn cã mét bé ®Õm ch−¬ng tr×nh.

+ C¸c thanh ghi kh¸c: C¸c thanh ghi ®o¹n, thanh ghi lÖch, thanh ghi con trá vµ chØ sè, thanh ghi cê... lµ c¸c thanh ghi ®¶m nhiÖm c¸c chøc n¨ng nhÊt ®Þnh trong ho¹t ®éng cña bé vi xö lý (SÏ nghiªn cøu kü qua VXL 8086/8088)

• Bé nhí (Memory): Cã hai lo¹i chÝnh

− ROM: Chøa c¸c ch−¬ng tr×nh vµ sè liÖu cè ®Þnh, chóng kh«ng bÞ mÊt khi ng¾t ®iÖn cung cÊp cho vi m¹ch nhí ROM. Ch−¬ng tr×nh khëi ®éng m¸y tÝnh, c¸c ch−¬ng tr×nh vµo ra c¬ së th−êng ®−îc chøa trong ROM.

− RAM: Khi ng¾t ®iÖn nguån nu«i vi m¹ch RAM néi dung l−u tr÷ trong nã sÏ bÞ mÊt. RAM l−u gi÷ mét phÇn ch−¬ng tr×nh hÖ thèng, mét sè sè liÖu cña hÖ thèng, c¸c ch−¬ng tr×nh øng dông, c¸c kÕt qu¶ trung gian cña qu¸ tr×nh tÝnh to¸n, xö lý.

Thái Nguyên 8-2008 5

Page 6: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

• ThiÕt bÞ vµo/ra(I/O): §©y lµ khèi t¹o kh¶ n¨ng giao tiÕp gi÷a hÖ vi xö lý vµ bªn

ngoµi. Do ®Æc ®iÓm cña c¸c thiÕt bÞ ngoµi vµ hÖ trung t©m (Gåm CPU+Bé nhí) ho¹t ®éng cã sù kh¸c nhau vÒ tèc ®é lµm viÖc, møc vËt lý ®iÖn, ph−¬ng thøc nªn cÇn cã bé phèi ghÐp ®Öm, ®¶m b¶o cho c¸c khèi thiÕt bÞ ngoµi giao tiÕp ®−îc víi hÖ trung t©m. Bé ghÐp gi÷a bus hÖ thèng vµ thiÕt bÞ ngoµi gäi lµ cæng. Mçi cæng cã mét ®Þa chØ x¸c ®Þnh.

• HÖ thèng bus: Lµ tËp hîp c¸c ®−êng d©y dÉn ghÐp nèi c¸c ch©n ®Þa chØ, d÷ liÖu, c¸c ch©n tÝn hiÖu ®iÒu khiÓn cña 3 khèi ®· nªu trªn.

− Abus: Nèi c¸c ®−êng d©y ®Þa chØ cña CPU víi 2 khèi M vµ I/O. Kh¶ n¨ng ph©n biÖt ®Þa chØ cña CPU phô thuéc sè ch©n ®Þa chØ cña nã. Sè nµy cã thÓ lµ 16, 20, 24, 36 ch©n. ChØ cã CPU míi cã kh¶ n¨ng ph¸t ra tÝn hiÖu ®Þa chØ - Cã mét thiÕt bÞ n÷a cã thÓ ph¸t ra tÝn hiÖu ®Þa chØ lµ DMAC (DMA Controller).

− Dbus: Dïng ®Ó vËn chuyÓn d÷ liÖu. §é réng cña nã 8, 16, 32, 64 bit. Dbus cã tÝnh 2 chiÒu. C¸c phÇn tö cã ®Çu ra nèi th¼ng víi bus d÷ liÖu ®Òu ph¶i ®−îc trang bÞ ®Çu ra 3 tr¹ng th¸i ®Ó cã thÓ lµm viÖc b×nh th−êng víi bus nµy.

− Cbus: Gåm nhiÒu ®−êng d©y tÝn hiÖu kh¸c nhau. Mçi tÝn hiÖu cã 1 chiÒu x¸c ®Þnh. C¸c tÝn hiÖu trªn Cbus bao gåm c¸c tÝn hiÖu ®iÒu khiÓn tõ CPU nh− ®/k ®äc viÕt, tÝn hiÖu tr¹ng th¸i tõ bé nhí, thiÕt bÞ ngo¹i vi b¸o cho CPU nh− INTR, HOLD...

• Ho¹t ®éng cña hÖ: Ch−¬ng tr×nh vµ d÷ liÖu ®−îc chøa trong bé nhí ngoµi ®−îc ®−a vµo bé nhí trong (RAM). Sau ®ã ®−îc CPU lÊy dÇn ra ®Ó xö lý. CPU thùc hiÖn:

+ LÊy lÖnh

+ Gi¶i m· lÖnh

+ ®iÒu khiÓn thùc hiÖn lÖnh §ã lµ mét vßng lÆp, trong qu¸ tr×nh thùc hiÖn vßng lÆp ®ã nÕu cã t¸c ®éng ng¾t hoÆc

yªu cÇu DMA CPU sÏ ®¸p øng c¸c yªu cÇu nµy sau ®ã l¹i quay trë laÞ chu tr×nh ho¹t ®éng chÝnh.

Ch−¬ng 2. BỘ NHỚ BÁN DẪN 2.1 Ph©n lo¹i bé nhí

− Bé nhí dïng ®Ó l−u tr÷ lÖnh vµ d÷ liÖu

− Bé nhí ®−îc x©y dùng tõ c¸c phÇn tö nhí c¬ b¶n, mçi phÇn tö lµ mét bit th«ng tin.

Thái Nguyên 8-2008 6

Page 7: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Bé nhí b¸n dÉn Ngoµi

Cè ®Þnh B¸n cè ®Þnh §äc/Ghi

ROM DRAMSRAMFLASHEEPROMEPROM PROM

Bé nhí

2.1.1 Bé nhí cè ®Þnh (ROM, PROM)

D1 D0

§Çu ra D3 D2 D1

C¸c « nhí ®Þa chØ

0 0

0 1 1 0 1 1 NÕu cã diot: §Çu ra =1. NÕu kh«ng cã diot: §Çu ra = 0

Thái Nguyên 8-2008 7

Page 8: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

CS=1. §Çu ra khi ®Þa chØ ®óng b»ng 1, ®¶o ®i b»ng 0. §Çu tiªn c¸c cÇu ch× cßn nguyªn. NÕu vÉn cßn cÇu ch×: ®iot th«ng ®Çu ra di = 0 NÕu c¾t cÇu ch×, kh«ng bÞ sôt ¸p ®Çu ra di = 1

2.1.2 Bé nhí b¸n cè ®Þnh (EPROM, EEPROM, FLASH)

• EPROM (Erasable Programmable ROM): Cã cÊu t¹o ®Æc biÖt dùa trªn nguyªn t¾c lµm viÖc cña tranzito tr−êng cã cùc ®iÒu khiÓn và thêm cửa nổi. ViÖc n¹p ch−¬ng tr×nh cho EPROM ®−îc thùc hiÖn b»ng ®iÖn. Xo¸ ch−¬ng tr×nh b»ng tia cùc tÝm, do tia cùc tÝm ¶nh h−ëng ®Õn cùc nguån vµ cùc m¸ng. Bộ nhớ EPROM có thể ghi lại được. Ký hiÖu 27xxx

Trong « nhí dïng tranzito nµy, cùc cöa ®−îc nèi víi ®−êng tõ, cùc m¸ng nèi víi ®−êng bit vµ cùc nguån nèi víi nguån chuÈn ®−îc coi lµ nguån cho møc logic 1. Kh¸c víi tranzito MOS b×nh th−êng, ë ®©y cã thªm 1 cöa gäi lµ cöa næi; §ã lµ mét vïng vËt liÖu ®−îc thªm vµo gi÷a líp c¸ch ®iÖn cao nh− h×nh trªn. NÕu cöa næi kh«ng cã ®iÖn tÝch th× kh«ng cã ¶nh h−ëng g× tíi cùc cöa ®iÒu khiÓn vµ tranzito ho¹t ®éng b×nh th−êng. Tøc lµ khi d©y tõ ®−îc kÝch ho¹t (cùc cöa cã ®iÖn tÝch d−¬ng) th×

hv

File oxide File oxide

n-Sounce n-Drain

Sounce DrainGate

Floating Gate

Control Gate

H×nh : CÊu tróc cña 1 EPROM

Thái Nguyên 8-2008 8

Page 9: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

tranzito th«ng, cùc m¸ng vµ cùc nguån ®−îc nèi víi nhau qua kªnh dÉn vµ d©y bit cã møc logic 1. NÕu cöa næi cã c¸c ®iÖn tö trong ®ã víi c¸c ®iÖn tÝch ©m, chóng sÏ ng¨n tõ tr−êng ®iÖn ®iÒu khiÓn cña cùc ®iÒu khiÓn vµ dï d©y tõ cã ®−îc kÝch ho¹t th× còng kh«ng thÓ ph¸t ra tr−êng ®ñ m¹nh víi cùc cöa ®iÒu khiÓn ®Ó lµm th«ng tranzito. Lóc nµy ®−êng d©y bit kh«ng ®−îc nèi víi nguån chuÈn vµ « nhí ®−îc coi nh− gi÷ gi¸ trÞ logic 0.

ViÖc n¹p c¸c ®iÖn tö vµo cöa næi , tøc lµ t¹o ra c¸c « nhí cã gi¸ trÞ logic 0, ®−îc thùc hiÖn bëi c¸c xung ®iÖn cã ®é dµi cì 50 ms vµ ®é lín +20V khi ®Æt vµo cùc cöa vµ cùc m¸ng. Lóc ®ã c¸c ®iÖn tÝch mang cã n¨ng l−îng lín sÏ ®i qua líp c¸ch ®iÖn gi÷a ®Õ vµ cöa næi. Chóng tÝch tô trong vïng cöa næi vµ ®−îc gi÷ ë ®©y sau khi xung ch−¬ng tr×nh t¾t. §ã lµ do cöa næi ®−îc c¸ch ®iÖn cao víi xung quanh vµ c¸c ®iÖn tö kh«ng cã ®ñ n¨ng l−îng sau khi l¹nh ®i, ®Ó cã thÓ v−ît ra ngoµi líp c¸ch ®iÖn ®ã n÷a. Chóng sÏ ®−îc gi÷ l¹i ë ®©y trong mét thêi gian dµi (kho¶ng 10 n¨m). §Ó xãa th«ng tin, ph¶i chiÕu tia tö ngo¹i vµo chip nhí. Nh÷ng ®iÖn tö ë ®©y ®−îc hÊp thô n¨ng l−¬ng nh¶y lªn møc n¨ng l−îng cao, chóng sÏ rêi cöa næi nh− c¸ch th©m nhËp vµo ®ã. Trong chip EPROM cã mét cöa sæ b»ng th¹ch anh chØ ®Ó cho ¸nh s¸ng tö ngo¹i ®i qua khi cÇn xãa sè liÖu trong bé nhí.

• EEPROM (Electric Erasable PROM): Cã cÊu t¹o t−¬ng tù EPROM nh−ng n¹p xo¸ b»ng ®iÖn. Ký hiÖu 28xxx (ví dụ vi mạch EEPROM 2864, 28128). �i�m khác c�a EEPROM lµ mét líp kªnh mµng máng «xit gi÷a vïng cöa næi tr¶i xuèng d−íi ®Õ vµ cùc m¸ng gi÷ vai trß quan träng. C¸c líp c¸ch ®iÖn kh«ng thÓ lý t−ëng ®−îc, c¸c líp ®iÖn tÝch mang cã thÓ thÊm qua líp ph©n c¸ch víi mét x¸c suÊt thÊp. X¸c suÊt nµy t¨ng lªn khi bÒ dµy cña líp gi¶m ®i vµ ®iÖn thÕ gi÷a hai cùc ë hai mÆt cña líp c¸ch ®iÖn t¨ng lªn. Muèn phãng c¸c ®iÖn tÝch trong vïng cöa næi, mét ®iÖn thÕ (-20V) ®−îc ®Æt vµo cùc cöa ®iÒu khiÓn vµ cùc m¸ng. Lóc nµy c¸c ®iÖn tö ©m trong cöa næi ®−îc ch¶y vÒ cùc m¸ng qua kªnh mµng máng «xit vµ sè liÖu l−u gi÷ ®−îc xãa ®i. §iÒu chó ý lµ ph¶i l−u ý lµm sao cho dßng ®iÖn tÝch nµy ch¶y kh«ng qu¸ l©u, v× nÕu kh«ng vïng cöa næi nµy l¹i trë nªn ®iÖn tÝch d−¬ng lµm cho ho¹t ®éng cña trazito kh«ng ®−îc ë tr¹ng th¸i b×nh th−êng(1).

C¸c chÝp ROM hiÖn nay cã thêi gian th©m nhËp cì tõ 120-150 ns dµi h¬n nhiÒu thêi gian ®ã trong c¸c chip nhí RAM.

• Flash ROM: CÊu t¹o t−¬ng tù EEPROM sö dông víi ®iÖn ¸p thÊp h¬n. Ký hiÖu 29xxx, 39xxx

Thái Nguyên 8-2008 9

Page 10: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

2.1.3 Bé nhí ®äc ghi (SRAM, DRAM)

+ Bé nhí RAM tÜnh lµ SRAM (Static RAM) th−êng ®−îc x©y dùng trªn c¸c m¹ch ®iÖn tö flip – flop.

+ Bé nhí RAM ®éng lµ DRAM (Dynamic RAM) ®−îc x©y dùng trªn c¬ së c¸c ®iÖn tÝch ë tô ®iÖn. Bé nhí nµy ph¶i ®−îc håi phôc néi dung ®Òu ®Æn, nÕu kh«ng néi dung sÏ mÊt theo sù rß ®iÖn tÝch trªn tô. EDORAM, VRAM, SDRAM, SGRAM ®Òu RAM ®éng. C¸c bé nhí DRAM th−êng tho¶ m·n c¸c yªu cÇu khi cÇn bé nhí cã dung l−îng lín. Khi cÇn cã tèc ®é truy xuÊt lín th× l¹i ph¶i dïng c¸c bé nhí SRAM víi gi¸ thµnh ®¾t h¬n; c¶ hai lo¹i nµy ®Òu bị mất thông tin khi nguån ®iÖn nu«i bÞ mÊt, V× lý do nµy, c¸c ch−¬ng tr×nh dïng cho viÖc khëi ®éng PC nh− BIOS th−êng ph¶i n¹p trong c¸c bé nhí ROM.

2.1.4 Bé nhí ngoµi Bé nhí chÝnh b»ng vËt liÖu b¸n dÉn trªn b¶n m¹ch chÝnh kh«ng thÓ l−u tr÷

mét khèi l−îng rÊt lín c¸c th«ng tin, do vËy cÇn ph¶i cã thªm c¸c thiÕt bÞ nhí bªn ngoµi nh− b¨ng giÊy ®ôc lç b¨ng cassette, trèng tõ, ®Üa tõ, ®Üa quang laser. Nh÷ng thiÕt bÞ l−u tr÷ d÷ liÖu ë ngoµi nh− vËy ®−îc gäi lµ bé nhí khèi (mass storage) hay gäi lµ nhí ngoµi. ThiÕt bÞ nhí khèi th«ng dông nhÊt lµ ®Üa tõ. §Üa tõ lµ mét tÊm ®Üa trßn máng lµm b»ng chÊt dÎo mylar, hoÆc b»ng thñy tinh cøng hoÆc b»ng kim lo¹i cøng, trªn cã phñ mét líp bét tõ tÝnh «xit s¾t tõ. §Üa tõ sö dông kü thuËt ghi tõ ®Ó l−u tr÷ gi÷ liÖu, ®ã lµ viÖc ®Þnh h−íng c¸c domain tõ ®Ó t¹o ra c¸c bit th«ng tin 0 vµ 1. Khi ®· ghi lªn ®Üa, d÷ liÖu cã thÓ tån t¹i c¶ khi c¾t ®iÖn PC. Tuy nhiªn gièng nh− b¨ng tõ, d÷ liÖu cò còng cã thÓ xãa ®i thay thÕ bëi d÷ liÖu míi nhiÒu lÇn.

Kỹ thuật điện tử tương lai sẽ cho phép có các khối nhớ dung lượng lớn hoàn toàn bằng vi mạch thay thế đĩa từ- hiện nay đã có các mạch nhớ bán dẫn với dung lượng tới vài GB. 2.2 Ph©n cÊp bé nhí CPU

Registers

Cache

Bé nhí

chÝnh

Bé nhí

ngoµi Bé nhí ¶o: Trong c¸c hÖ VXL hiÖn ®¹i ®−îc t¹o nªn bëi Cache, M vµ Bé nhí ngoµi.

Thái Nguyên 8-2008 10

Page 11: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN

11

BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Bé nhí th−êng ®−îc tæ chøc gåm nhiÒu vi m¹ch nhí ®−îc ghÐp l¹i víi nhau ®Ó cã ®é dµi tõ vµ tæng sè tõ cÇn thiÕt. Nh÷ng chip nhí ®−îc thiÕt kÕ sao cho cã ®Çy ®ñ chøc n¨ng cña mét bé nhí:

• Mét ma trËn nhí gåm c¸c « nhí, mçi « nhí øng víi mét bit nhí.

• M¹ch logic gi¶i m· ®Þa chØ « nhí.

• M¹ch logic cho phÐp ®äc néi dung « nhí.

• M¹ch logic cho phÐp viÕt néi dung « nhí.

• C¸c bé ®Öm vµo, bé ®Öm ra vµ bé nhí më réng. C¸ch tæ chøc ®¬n gi¶n nhÊt lµ tæ chøc theo tõ víi sù chän tuyÕn tÝnh. Mét ma

trËn nhí nh− vËy cã ®é dµi cña cét b»ng sè l−îng tõ W vµ ®é dµi cña hµng b»ng sè l−îng bit B trong mét tõ. Bé chän tõ gi¶i m· mét tõ W, nghÜa lµ gi¶i m· ®Ó cã mét ®Çu ra duy nhÊt cho mçi tõ trong bé nhí. Râ rµng ph−¬ng ph¸p chän tuyÕn tÝnh cã thêi gian th©m nhËp ng¾n nh−ng cÇn mét bé gi¶i m· lín khi tæng sè tõ lín, lµm t¨ng gi¸ thµnh s¶n phÈm.

KÝch th−íc cña phÇn gi¶i m· ®Þa chØ sÏ gi¶m ®i khi tæ chøc ma trËn nhí vµ phÇn logic chän tõ W cho phÐp gi¶i m· hai b−íc. Ma trËn nhí sö dông gi¶i m· hai b−íc øng víi tõ vËt lÝ vµ tõ logic. Tõ vËt lÝ bao gåm sè l−îng bit trong mét hµng cña ma trËn. Tõ logic bao gåm sè l−îng bit t−¬ng øng víi mét tõ logic nhËn biÕt ®−îc vµ göi ra cïng mét bé gi¶i m·. CÇn hai bé gi¶i m·: Mét bé gi¶i m· hµng ®Ó chän mét tõ vËt lý vµ mét bé gi¶i m· cét gåm 1 vµi m¹ch dån kªnh chän mét tõ logic tõ mét tõ vËt lý ®· chän. Mét tõ vËt lý chia S tõ logic. Bé gi¶i m· hµng lµ bé gi¶i m· chän 1 tõ W, mµ B=W/S vµ bé chän cét chøa B bé dån mét ®−êng tõ S.

§Öm vµo

Gi¶i m· hµng 1 tõ

128

Ma trËn rom

128 X 128

§Öm ra

8 Bé gi¶i m· cét 1

tõ 16

Gi¶i m· hai b−íc cho ma trËn ROM 128x128 8

8

12

127 7

CS

A7-A104

A0-A6

07…01 Thái Nguyên 8-2008

Page 12: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Ở trªn lµ ví dô vÒ s¬ ®å ROM dung l−îng 2048x8 bit, tæ chøc theo gi¶i m·

hai b−íc. Ma trËn nhí lµ 128x128 bit, nh− vËy cã 128 = 27 tõ vËt lÝ. Mét tõ vËt lÝ nh− vËy ®−îc chän bëi 7 ®−êng d©y ®Þa chØ tõ A0-A6. Bé gi¶i ®Þa chØ hµng chän 1 hµng tõ 128 hµng. Mét tõ vËt lÝ ®−îc chia thµnh 128/8=16 nhãm 8 bit. Nh− vËy, nh÷ng bé gi¶i m· cét gåm 8 bé dån kªnh mét ®−êng tõ 16 ®−êng ®Ó cung cÊp mét tõ logic 8 bit. Nh÷ng bit ®Þa chØ tõ A7-A10 ®iÒu khiÓn nh÷ng bé gi¶i m· cét. Tr−êng hîp ®Æc biÖt khi sè phÇn tö trong mét tõ vËt lÝ b»ng sè bit trong 1 tõ vËt lÝ thi ®ã lµ bé nhí tæ chøc theo bit nghÜa lµ mçi tõ logic cã ®é dµi 1 bit.

C¸c bé ®Öm ra ®¶m b¶o kh«ng nh÷ng møc logic mong muèn vµ cung cÊp ®ñ dßng ®iÖn mµ cßn cã ®Çu ra collector hë hoÆc 3 tr¹ng th¸i cho phÐp nèi chung ®Çu ra cña mét vµi chip víi nhau. Bé ®Öm ra ®−îc ®iÒu khiÓn bëi 1 hay nhiÒu ®Çu vµo nh− chän m¹ch CS, cho phÐp CE hay cho phÐp më ®Çu ra 3 tr¹ng th¸i OE.

2.3 CÊu tróc cña m¹ch nhí tÜnh SRAM

2.3.1 Giíi thiÖu c«ng nghÖ CÊu tróc m¹ch ®iÖn cña RAM phô thuéc vµo c«ng nghÖ chÕ t¹o. Cã mét sè c«ng nghÖ chÕ t¹o th«ng dông:

− Mức điện áp chuẩn TTL:

+ Qui ®Þnh 2 møc 0/1.("0"...., "1"....)

+ §iÖn ¸p sö dông 5V

− MOS: C«ng nghÖ ®¬n cùc (Metal Oxit Semi Conductor)

− ECL(M¹ch logic ghÐp cùc ph¸t - Emitor Coupler Logic), I2L, SOS

− Các khối nhớ NOR Flash

2.3.2 CÊu tróc m¹ch nhí SRAM

2.3.2.1 Bit nhí

• Bit nhí Mçi phÇn tö nhí c¬ b¶n 1 bit lµ 1 m¹ch F-F (Flip-Flop) cã hai tr¹ng th¸i c©n b»ng æn ®Þnh ®Ó biÓu diÔn hai gi¸ trÞ nhÞ ph©n 0 vµ 1. Khi phÇn tö nhí ®· ®−îc thiÕt lËp gi¸ trÞ th× nã nhí m·i gÝa trÞ ®ã cho ®Õn khi thiÕt lËp tr¹ng th¸i míi.

Thái Nguyên 8-2008 12

Page 13: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

§Þa chØ hµng cét Xi, Yi

CS WE

M¹ch F-F

§Çu vµo d÷ liÖu Din §Çu ra d÷ liÖu Dout

D÷ liÖu ®−îc ®−a vµo Din, lÊy ra Dout X¸c ®Þnh ®Þa chØ Xi, Yi WE: ®iÒu khiÓn ®äc viÕt; tuú theo tÝn hiÖu ®−a ®Õn lµ 0 hay 1 mµ cho phÐp viÕt vµo hay ®äc ra CS (Chipselect): TÝn hiÖu chän chip. Mét bé nhí cã thÓ do nhiÒu chip nhí t¹o nªn. Khi CPU lµm viÖc víi chip nhí nµo th× nã sÏ kÝch ho¹t tÝn hiÖu chän chip cña chip nhí ®ã. TÝn hiÖu nµy th−êng t¸c ®éng ë møc thÊp.

Rn Sn Qn+1 Q/n+1

0 0 Qn Q/n

0 1 1 0 1 0 0 1 1 1 x x

Một bit nhớ F-F RS sử dụng tranzixtor phân cực

Một bit nhớ F-F RS sử dụng tranzixtor trường

Thái Nguyên 8-2008 13

Page 14: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Ghi:

+ Dây từ = 0 + Đưa dữ liệu vào dây bit. Giả sử là "1" + Dây từ =1 → TI/O 1 thông → D1 của T1 =1 → T2 thông D2 = 0 → G của T1 =

0 → T1 không thông và duy trì ngay cả khi dữ liệu không đặt trên dây bit + Dây từ =0. Dữ liệu được ghi trong bit nhớ

Đọc: + Trước khi đọc đây từ = 0 + Dây từ = 1. T1, T2 thông đưa dữ liệu ra dây bit.

2.3.2.2 Thanh ghi

• Thanh ghi: Lµ nhãm c¸c phÇn tö nhí cã liªn hÖ víi nhau cïng ho¹t ®éng nhí 1 ®¬n vÞ nhí:

− Thanh ghi nhí tõ

− Thanh ghi dÞch

− Cã c¸c lo¹i thanh ghi 8 bit, 16 bit, 32 bit...mçi bit lµ 1 phÇn tö nhí c¬ b¶n C¸c thanh ghi lµm nhiÖm vô nhí t¹m thêi mét tõ nhÞ ph©n th−êng ®−îc x©y

dùng tõ c¸c flip-flop. C¸c bé xö lý th−êng cã mét tËp thanh ghi ®−îc sö dông ®Ó chøa t¹m d÷ liÖu hoÆc c¸c chØ thÞ trong qu¸ tr×nh thi hµnh ch−¬ng tr×nh. C¸c thanh ghi nh− vËy cÇn cã kh¶ n¨ng ho¹t ®éng ë tèc ®é cao h¬n c¸c thanh ghi kh¸c ®−îc sö dông trong bé nhí chÝnh. H×nh d−íi m« t¶ thanh ghi ®Öm 4 bit, sö dông flip-flop D chuyÓn m¹ch bëi s−ên d−¬ng cña xung ®ång hå.

LOAD

H×nh : Thanh ghi ®Öm

Thái Nguyên 8-2008 14

Page 15: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

+ Xi (i=1..3) lµ c¸c bit cña word X cÇn nhí, khi s−¬n xung d−¬ng ®Çu tiªn ®i tíi, word ®−îc nhí vµo trong thanh ghi lµ Q3Q2Q1Q0=X3X2X1X0, hay viÕt lµ Q=X. Tõ nhÞ ph©n cã thÓ lÊy ra ë ®Çu ra Q3Q2Q1Q0.

+ CLR lµ ®Çu vµo tÝn hiÖu ®iÒu khiÓn xo¸ néi dung thanh ghi, tÝch cùc ë møc cao, nghÜa lµ khi CLR lµ cao th× tÊt c¶ c¸c flip-flop bÞ xo¸ vµ tõ ®−îc nhí trë thµnh Q=0.

+ LOAD lµ ®Çu vµo ®iÒu khiÓn tÝch cùc ë møc cao, khi LOAD = 0 c¸c bit kh«ng thÓ ®i vµo c¸c flip-flop, ®ång thêi qua NOT ®−êng d©y kia sÏ cã møc cao, lµm cho c¸c gi¸ trÞ ë ®Çu ra cña c¸c flip-flop ®−a ng−îc l¹i lèi vµo, t¹i c¸c s−ên d−¬ng cña xung ®ång hå chóng sÏ l¹i ®−îc ghi l¹i vµo trong flip-flop, nãi c¸ch kh¸c khi LOAD=0 th× thanh ghi kh«ng thay ®æi néi dung.

+ Khi LOAD=1 c¸c bit cña X ®−îc ®−a tíi lèi vµo cña flip-flop, khi s−ên d−¬ng cña xung ®ång hå ®i tíi chóng sÏ ®−îc ghi vµo trong thanh ghi.

2.3.2.3 Bé gi¶i m·

• Bé gi¶i m· §é dµi 1 « nhí th−êng lµ 8bit(1byte). Trong mét vi m¹ch nhí cã nhiÒu « nhí. Mçi mét « nhí khi ghÐp víi hÖ vi xö lý sÏ cã mét ®Þa chØ x¸c ®Þnh. CPU muèn lµm viÖc víi « nhí nµo nã sÏ ®−a ra tÝn hiÖu ®Þa chØ cña « nhí ®ã. Qua bé gi¶i m· ®Þa chØ, « nhí ®ã ®−îc chän chÝnh x¸c, sau ®ã cho phÐp ®äc/viÕt trªn « nhí ®ã. Bªn trong 1 vi m¹ch nhí TÝn hiÖu ®Þa chØ TÝn hiÖu ®iÒu khiÓn D÷ liÖu WR RD CS

Bé gi¶i

m· ®Þa chØ

¤ nhí 0¤ nhí 1... ... ¤ nhí N

Chän « nhí 0

Chän « nhí N

Thái Nguyên 8-2008 15

Page 16: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Bé gi¶i m· ®Þa chØ gióp ta chän ®−îc « nhí nµo trong vi m¹ch ®Ó lµm viÖc

§Çu vµo bé gi¶i m· cã n bit ®Þa chØ sÏ ph©n biÖt ®−îc 2n tr¹ng th¸i → sÏ ph©n biÖt ®−îc 2n « nhí. NÕu 1 « nhí 8 bit cã thÓ hiÖn nh− sau §Þa chØ « nhí Néi dung

« sè 0 0000 0101 « nhí 1 11110100

... ... §Ó ®äc hay ghi « nhí cÇn cã thªm c¸c tÝn hiÖu : RD: §äc « nhí C¸c tÝn hiÖu nµy th−êng dïng møc thÊp WR: Ghi vµo « nhí Khi cÇn cã dung l−îng « nhí lín h¬n cÇn ghÐp nhiÒu vi m¹ch nhí. Khi ®ã ®Ó chän vi m¹ch nhí nµo l¹i cÇn cã mét bé gi¶i m· ®Þa chØ n÷a ®Ó chän ®−îc vi m¹ch cÇn thiÕt. VD: X©y dùng bé nhí 4KB tõ 4 vi m¹ch 1 KB CS0 CS1 ............ CSN

Bé gi¶i m· ®Þa chØ

Vi m¹ch nhí sè 0

Vi m¹ch nhí sè 1

Vi m¹ch nhí sè N

A10, A11

A bus

C bus RD A0.. A9

A0.. A9

A0.. A9 Abus Chän « nhí Gi¶i thÝch ho¹t ®éng CPU muèn lµm viÖc víi vi m¹ch nhí nµo th× nã ph¸t ra tÝn hiÖu ®Þa chØ qua Abus, c¸c tÝn hiÖu ®Þa chØ qua bé gi¶i m· ®Þa chØ sÏ kÝch ho¹t c¸c tÝn hiÖu CS t−¬ng øng ®Ó chän ®−îc vi m¹ch cÇn thiÕt. C¸c tÝn hiÖu ®Þa chØ còng ®−îc ®−a vµo tõng vi m¹ch nhí ®Ó chän ra « nhí cÇn thiÕt.

− ThiÕt bÞ ngo¹i vi ®−îc dµnh 1 sè ®Þa chØ ë vïng thÊp (víi m¸y tÝnh theo kiÕn tróc IBM-PC vïng nµy gåm 1KB). Nh− vËy sÏ cã nh÷ng « nhí trong vïng thÊp nµy cã

Thái Nguyên 8-2008 16

Page 17: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

®Þa chØ trïng víi ®Þa chØ cña thiÕt bÞ ngo¹i vi. §Ó kh«ng x¸y ra sù nhÇm lÉn gi÷a c¸c « nhí vµ thiÕt bÞ ngo¹i vi cã ®Þa chØ trïng nhau, ng−êi ta sö dông thªm tÝn hiÖu IO/M khi gi¶i m· ®Þa chØ. Còng ®Þa chØ ®ã nh−ng nÕu IO/M = 0 lµ ®Þa chØ cña « nhí, IO/M =1 lµ ®Þa chØ cña thiÕt bÞ ngo¹i vi.

− C¸c m¹ch gi¶i m· ®Þa chØ ®−îc t¹o nªn b»ng c¸c vi m¹ch sè Gi¶i m· cho 1 vi m¹ch nhí:

2716

CE OE

°

A0..A10

A11

A12

TÝn hiÖu ®Þa chØ

D÷ liÖu ra

2716

CE OE

°

A19 IO/M

Gi¶i m· cho nhiÒu vi m¹ch nhí

− Vi m¹ch sö dông khi gi¶i m· cÇn nhiÒu ®Çu ra th−êng dïng 74LS138 Giải mã cho 3 vi mạch ROM 2764 địa chỉ ô nhớ đầu là F0000h

ABC

G2A

G

Y3

°°

Y0

Y1

Y2

Y4

YA18

A17

A16

IO/M

A19

°°°°°

A0 .. A12 2764

°

2764

° °OE OE

2764

GGG

A B C

74138

A13 OE

A14

A15

T

2A2A

Y6 5

Y7

°°°

2B1

hái Nguyên 8-2008 17

Page 18: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Vi m¹ch cã 8 ®Çu ra gi¶i m· t¸c ®éng ë møc thÊp tõ Y0 ®Õn Y7 . ViÖc chän dÇu ra gi¶i m· nµo do tæ hîp tÝn hiÖu c¸c ch©n A, B, C. §Ó vi m¹ch ho¹t ®éng tÝn hiÖu ë c¸c ch©n G2A, G2B, G1 ph¶i ®¶m b¶o ®ång thêi nh− sau:

G2A=0 G2B=0 vµ G1=1

B¶ng t¸c ®éng cña vi m¹ch

VÝ dô sö dông vi m¹ch 74138 gi¶i m· cho 3 vi m¹ch ROM 2764, ®Þa chØ cña « nhí ®Çu tiªn lµ FA000h tøc lµ 1111 1110 0000 0000 0000

A19 A0 C B A Cã nhiÒu ph−¬ng ¸n ®Ó gi¶i m· cho mét yªu cÇu cô thÓ khi sö dông 74138. Cho c¸c

vÝ dô

2.3.2.4 M¹ch nhí SRAM (C¸c thµnh phÇn, quy tr×nh ®äc ghi, biÓu ®å thêi gian)

• M¹ch nhí SRAM

Thái Nguyên 8-2008 18

Page 19: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

2.3.3 ThiÕt kÕ thÎ nhí SRAM

CS

D0-D7

WEOE

A0-A10§Þa chØ

D÷ liÖu Cho phÐp ®−a d÷ liÖu ra

Cho phÐp ghiChon chip

Bé nhí SRAM

Mạch nhớ SRAM thường được thiết kế cho các hệ vi xử lý nhỏ. Dữ liệu ban đầu là: Dung lượng cần thiết, tốc độ truy nhập. Từ các số liệu này chọn được loại vi mạch SRAM và số lượng chip. Tiếp theo xây dựng bộ giải mã địa chỉ ngoài. Có thể dùng các vi mạch AND, OR, NOT, NAND hoặc vi mạch chuyên dụng 74138, 74 154,... để xây dựng bộ giải mã. 2.4 CÊu tróc cña m¹ch nhí DRAM PhÇn tö nhí DRAM

§Ó bè trÝ ®−îc sè ph©n tö nhí lín nhÊt trong mét vi m¹ch, mçi ph©n tö nhí ph¶i ®−îc chÕ t¹o sao cho ®¬n gi¶n nhÊt. PhÇn tö nhí RAM ®éng (DRAM) mµ chóng ta sÏ t×m hiÓu chØ cÇn 1 tranzito cho 1 bit th«ng tin, v× thÕ cã thÓ bè trÝ víi mËt ®é rÊt cao vµ cã gi¸ thµnh rÎ. Trong ph©n tö nhí nµy ng−êi ta thay flip-flop b»ng mét tô ®iÖn C, gi¸ trÞ nhí trong phÇn tö nhí nµy chÝnh lµ ®iÖn tÝch n¹p trªn tô ®iÖn. Ta cã thÓ sö dông tr¹ng th¸i tô ®−îc n¹p, tøc lµ trªn tô ®iÖn C cã mét ®iÖn ¸p lín h¬n mét gi¸ trÞ nhÊt ®Þnh nµo ®ã, biÓu diÔn gi¸ trÞ 1 cña bit, cßn tr¹ng th¸i kh«ng ®−îc n¹p biÓu diÔn gi¸ trÞ 0. Nguyªn lý cÊu t¹o cña mét phÇn tö DRAM ®−îc minh häa ë h×nh d−íi:

Thái Nguyên 8-2008 19

Page 20: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Tô ®iÖn CD©y bit

D©y tõ

S

G

D

Tranzito T

PhÇn tö nhí DRAM 1 bit

Bé nhí RAM ®éng Bé nhí DRAM ®−îc tæ chøc thµnh mét ma trËn nhí, trong ®ã d©y tõ lµ mét

trong c¸c d©y hµng cña ma trËn, cßn d©y bit lµ mét trong nh÷ng d©y cét cña ma trËn. PhÇn tö nhí ®−îc ®Æt ë giao ®iÓm cña c¸c d©y hµng vµ cét. Tranzito T lµ mét tranzito tr−êng (fet) ®ãng vai trß mét chuyÓn m¹ch ®iÖn tö. T cã ba cùc lµ cùc cæng G (Gate), cùc m¸ng D (Drain) vµ cùc nguån S (Sourne), trong ®ã G lµ cùc ®iÒu khiÓn, D sÏ ®−îc nèi víi S khi G cã møc ®iÖn ¸p cao so víi S, ng−îc l¹i ®iÖn trë gi÷a D vµ S rÊt lín.

Qu¸ tr×nh ghi: Khi d©y tõ cã møc tÝch cùc, T ë tr¹ng th¸i më, nèi tô ®iÖn C víi d©y bit. NÕu thao t¸c lµ ghi th× gi¸ trÞ cÇn ghi ph¶i ®Æt trªn d©y bit. NÕu gi¸ trÞ ®ã lµ 1 th× tô C sÏ ®−îc n¹p tíi ®iÖn ¸p t−¬ng øng víi gi¸ trÞ 1 trªn d©y bit, cßn nÕu gi¸ trÞ ®ã lµ 0 th× tô ®iÖn C sÏ bÞ phãng hÕt ®iÖn tÝch.

Qu¸ tr×nh ®äc: ViÖc ®äc phøc t¹p h¬n ghi do ®iÖn tÝch trªn tô C øng víi gi¸ trÞ cÇn ®äc rÊt nhá. Tr−íc khi ®Æt d©y tõ lªn møc tÝch cùc, cÇn ph¶i ®Æt lªn gi©y bit ®iÖn ¸p b»ng 1/2 møc chªnh lÖch gi÷a ®iÖn ¸p øng víi møc 1 vµ ®iÖn ¸p øng víi møc 0. §iÖn ¸p trªn tô sÏ lµm cho ®iÖn ¸p d©y bit thay ®«i mét chót theo chiÒu h−íng t¨ng hoÆc gi¶m tuú thuéc vµo bit ®ã lµ 1 hay 0. Sù thay ®æi nhá cña ®iÖn ¸p trªn d©y bit sÏ ®−îc truyÒn tíi ®Çu vµo cña mét bé khuÕch ®¹i nh¹y, t¹i ®Çu ra cña nã ta nhËn ®−îc ®iÖn ¸p t−¬ng øng víi gi¸ trÞ cña bÝt chøa trªn tô.

Qu¸ tr×nh lµm t−¬i: Ta ®Òu biÕt mäi tô ®iÖn ®Òu cã mét ®iÖn trë rß vµ tranzito T m¾c nèi tiÕp víi nã dï ë tr¹ng th¸i cÊm còng cã mét ®iÖn trë dß nhÊt ®Þnh, cho nªn sau khi ®−îc n¹p, ®iÖn tÝch trªn tô liªn tôc bÞ phãng, sau mét thêi gian nhÊt ®Þnh sÏ bÞ mÊt th«ng tin mµ C chøa. ChÝnh v× vËy ph¶i n¹p ®iÖn cho tô C tr−íc khi ®iÖn ¸p trªn tô gi¶m thÊp h¬n mét ng−ìng nµo ®ã, viÖc nµy ®−îc gäi lµ “lµm t−¬i” (refresh). §Ó

Thái Nguyên 8-2008 20

Page 21: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

lµm t−¬i « nhí DRAM, cÇn ph¶i ®äc néi dung cña nã råi viÕt l¹i. ViÖc lµm t−¬i ph¶i ®−îc tiÕn hµnh theo chu kú nhÊt ®Þnh, gäi lµ chu kú lµ t−¬i.

Trong c¸c chip DRAM tr−íc ®©y m¹ch ®iÖn bæ sung ®Ó thùc hiÖn lµm t−¬i th−êng ë ngoµi chip nhí. Ngµy nay c¸c m¹ch ®iÖn lµm t−¬i ®−îc chÕ t¹o ngay bªn trong chip nhí, nhê vËy mµ lo¹i nµy võa cã dung l−îng cao võa cã giao diÖn ®¬n gi¶n, chóng ®−îc gäi lµ quasi-static RAM.

Chip nhí DRAM l−u gi÷ th«ng tin rÊt lín do ®ã còng cÇn rÊt nhiÒu ch©n cho tÝn hiÖu ®Þa chØ. §Ó lµm gi¶m bít sè ch©n ®Þa chØ trªn mét vi m¹ch nhí, ng−êi ta th−êng chia ®Þa chØ ra 2 nhãm: ®Þa chØ hµng vµ ®Þa chØ cét råi dån kªnh chóng trªn c¸c ch©n ®Þa chØ, ®ång thêi cung cÊp thªm c¸c tÝn hiÖu cho phÐp chèt gi÷ riªng rÏ ®Þa

chØ hµng ( RAS ) vµ cét (CAS ) ë bªn trong vi m¹ch nhí.

WEOE

CAS RAS

A0-A7

D0-D3

§Þa chØ D÷ liÖu

Cho phÐp ®−a d÷ liÖu ra Cho phÐp ghi

Xung cho phÐp chèt ®Þa chØ

Xung cho phÐp chèt ®Þa chØ

H×nh : Bé nhí

Thái Nguyên 8-2008 21

Page 22: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

§c cét §c hµng Kh«ng quan t©m

S¬ ®å ®äc d÷ liÖ

RAS

CAS

A0-A7

CS

WR

Data

§c cét §c hµng

RAS

CAS

A0-A7

CS

WR

Data

S¬ ®å ghi d÷ li

Thái Nguyên

Do

u tõ chip DRAM

Kh«ng quan t©m

DIN

Öu vµo chip DRAM

8-2008 22

Page 23: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Ch−¬ng 3. CÁC BỘ VI XỬ LÝ VÀ VI ĐIỀU KHIỂN

3.1 Giíi thiÖu bé vi xö lý 8 bit tæng qu¸t

3.2 Bé vi xö lý 8 bit (8086/8088)

3.2.1 S¬ ®å khèi bé vi xö lý 8 bit

alu

di si bp sp dx cx bx ax

ES

ipSS

DSCS

Bus d÷ liÖu

Bus trong cña CPU 8 bit d÷ liÖu 20 bit ®Þa

chØ

Logic ®iÒu khiÓn BUS

Khối điều khiển của EU

C¸c thanh ghi t¹m thêi

Thanh ghi cê

Bus d÷ liÖu ALU (16 bit)

§Öm lÖnh (hµng ®îi lÖnh)

C¸c thanh gh®o¹n vµ con

trá lÖnh

i C¸c thanh ghi con trá vµ

chØ sè

C¸c thanh gh®a n¨ng

i ∑

Bus ®Þa chØ 20 bit

Bus

ngoµi

Thái Nguyên 8-2008 23

Page 24: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

8088 cã 2 khèi: Khèi phèi ghÐp bus BIU vµ khèi thùc hiÖn lÖnh EU

• BIU: ChÞu tr¸ch nhiÖm ®−a ®Þa chØ ra bus vµ trao ®æi d÷ liÖu víi bus

• EU: Bªn trong cã:

− CU( Control Unit): thùc hiÖn gi¶i m· lÖnh thµnh d·y xung ®iÒu khiÓn ®Ó ®iÒu khiÓn bªn trong vµ bªn ngoµi CPU

− ALU: Dïng ®Ó thùc hiÖn thao t¸c cña c¸c phÐp to¸n

− Khi ho¹t ®éng EU cung cÊp th«ng tin vÒ ®Þa chØ cho BIU ®Ó BIU ®äc lÖnh vµ d÷ liÖu cßn EU th× gi¶i m· lÖnh vµ thùc hiÖn lÖnh.

• Bé nhí ®Öm lÖnh trong BIU: C¸c bé vi xö lý ®Çu tiªn ho¹t ®éng theo nguyªn lý nèi tiÕp:

+ NhËn lÖnh

+ Gi¶i m· lÖnh

+ Thùc hiÖn lÖnh Trong mét thêi ®iÓm nhÊt ®Þnh CPU chØ cã thÓ lµm 1 trong 3 viÖc trªn, do vËy cã

nh÷ng thêi ®iÓm nhiÒu bé phËn cña CPU nhµn rçi; ch¼ng h¹n khi ®ang gi¶i m· lÖnh th× bus kh«ng dïng ®Õn, bé ALU kh«ng sö dông...®iÒu nµy lµm tèc ®é ho¹t ®éng cña CPU kh«ng cao

Khi cã bé ®Öm lÖnh cã thÓ thùc hiÖn c¬ chÕ xö lý xen kÏ. Bé ®Öm lÖnh lµm viÖc theo kiÓu "vµo tr−íc, ra tr−íc " FIFO. C¸c lÖnh cø nhËn vÒ ®−a vµo ®Öm lÖnh råi lÊy dÇn ra xö lý, kh«ng mÊt thêi gian chê lÊy lÖnh sau khi thùc hiÖn.

TH

TH

TH

THTH

GM

GM

GM

GMGM GM TH

NL

NL

NL

NL NLNL

3.2.2 C¸c thanh ghi của 8086/88

Sè « nhí mµ 8088 qu¶n lý ®−îc lµ 220 = 1024.210 bytes = 1MB nh−ng thanh ghi trong 8088 chØ cã ®é dµi 16 bit nh− vËy chØ l−u gi÷ ®−îc 216 tr¹ng th¸i ®Þa chØ hay 64 KB . Muèn l−u gi÷ ®−îc 220 ®Þa chØ « nhí cÇn ph¶i sö dông 2 thanh ghi theo c¬ chÕ segment:offset ( Thanh ghi ®o¹n: Thanh ghi lÖch) §Þa chØ vËt lý = Thanh ghi ®o¹n * 16 + Thanh ghi lÖch

Thái Nguyên 8-2008 24

Page 25: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

VÝ dô cÆp thanh ghi CS:IP sÏ chØ ra ®Þa chØ cña lÖnh s¾p thùc hiÖn trong ®o¹n m·. NÕu t¹i 1 thêi ®iÓm nµo ®ã ta cã CS=F000h vµ IP = FFF0h th× ®Þa chØ cña « nhí vËt lý sÏ lµ: CS:IP ~ F000h * 16 + FFF0h = F0000h + FFF0h = FFFF0h CS : thanh ghi ®o¹n m· IP: thanh ghi con trá lÖnh T−¬ng tù víi c¸c thanh ghi d÷ liÖu : DS: Thanh ghi ®o¹n d÷ liÖu C¸c thanh ghi offset cã thÓ lµ DI, SI, BX... B¶n ®å bé nhí cña 8086: FFFFF PhÇn 1MB cô thÓ nh− bªn (§Þa chØ vËt lý) F0000 C0000 A0000 (0000:0400) (0000)0000: Mét ch−¬ng tr×nh khi n¹p vµo trong b

- Vïng chøa m· ch−¬ng tr×nh (- Vïng chøa d÷ liÖu vµ kÕt qu¶ - Vïng ng¨n xÕp (stack) ®Ó qu¶

§Þa chØ offst C¸c « nhí

§Çu ®o¹n

§Þa chØ ®Çu ®o¹n - Segment

Vïng dµnh cho c¸c ch−¬ng tr×nh øng dông

Hai file Èn cña DOS

B

RAM mµn h×nh

Thái N

d÷ liÖu cña DOS vµ BIOS

é nhí n»mCode segtrung gian lý c¸c t

B¶ng v

guyên 8-

IOS

00400 00000

ë 4 vïng(®o¹n): ment) n cña ch−¬ng tr×nh (Data segment) h«ng sè cña bé vi xö lý khi gäi

ector ng¾t

2008 25

Page 26: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

ch−¬ng tr×nh con hoÆc trë vÒ tõ ch−¬ng tr×nh con.(Stack segment) - Vïng d÷ liÖu phô (Extra segment)

C¸c thanh ghi ®o¹n 16 bit chØ ra ®Þa chØ ®Çu (segment) cña 4 ®o¹n trong bé nhí. - CS: Code Segment - DS: Data Segment - SS: Stack Segment - ES: extra Segment

Néi dung c¸c thanh ghi ®o¹n x¸c ®Þnh ®Þa chØ cña « nhí n»m ë ®Çu ®o¹n(®Þa chØ c¬ së). §Þa chØ cña c¸c « nhí kh¸c n»m trong ®o¹n tÝnh ®−îc b»ng c¸ch céng thªm vµo ®Þa chØ c¬ së 1 gi¸ trÞ gäi lµ ®Þa chØ lÖch (ofset) C¸c thanh ghi cña hä 80x86 nh− sau:

Thanh ghi con trá lÖnh IP kÕt hîp CS chØ ra ®Þa chØ lÖnh s¾p thùc hiÖn C¸c thanh ghi d÷ liÖu: AX,BX,CX,DX C¸c thanh ghi con trá, chØ sè: SP,BP,SI,DI C¸c thanh ghi ®o¹n: CS,DS,SS,ES C¸c thanh ghi cã ®é dµi 16 bit gåm 8 bit phÇn thÊp vµ 8 bit phÇn cao

VD: AX gåm AH vµ AL, BX gåm BH vµ BL... Thanh ghi cê - Thanh ghi cê:

+ B¸o tr¹ng th¸i cña kÕt qu¶ c«ng viÖc + Cho c¸ch thøc ®iÒu khiÓn CPU

x x x x 0 D I T S Z x A x P x C

Cã c¸c bit cê chÝnh: + Cê nhí C: Khi C=1 phÐp tÝnh cã nhí cã m−în + Cê nhí phô A: Dïng A=1 khi cã céng hay trõ sè BCD + Cê rçng Z: Z=1 th× kÕt qu¶ = 0 + Cê dÊu S: S=1 ACC ©m + Cê Parity: P=1 Khi sè bit 1 cña ACC ch½n + Cê trµn O: O=1 khi kÕt qu¶ kh«ng biÓu diÔn næi trong thanh ghi + Cê cho phÐp ng¾t: I=1 cho phÐp ng¾t + Cê h−íng thao t¸c D: Víi lo¹i d÷ liÖu d¹ng chuçi D=1 : Lïi

§Ó xem c¸c thanh ghi ho¹t ®éng ra sao ta cã thÓ dïng ch−¬ng tr×nh debug víi lÖnh T( Ch¹y tõng b−íc) vµ lÖnh R(xem c¸c thanh ghi)

Thái Nguyên 8-2008 26

Page 27: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Ch¼ng h¹n: C:\debug file.exe ↵ Ta còng cã thÓ dïng 1 ch−¬ng tr×nh Pascal ®¬n gi¶n sau ®Ó xem ho¹t ®éng cña c¸c thanh ghi: uses crt; begin Repeat asm xor ax,ax

mov al,1 add al,5 sub al,3 ...

end; until keypressed end. Ên Alt+D råi vµo môc Registers. Sau ®ã Ên nh¶ phÝm F7 ®Ó ch¹y ch−¬ng tr×nh vµ xem c¸c thanh ghi trong CPU ®ang ho¹t ®éng ra sao. Sè l−îng c¸c thanh ghi vµ ®é lín cña chóng trong c¸c bé CPU hiÖn ®¹i ngµy cµng ®−îc t¨ng lªn còng lµ 1 yÕu tè lµm cho c¸c bé vi xö lý nµy ho¹t ®éng nhanh h¬n. Dung l−îng c¸c thanh ghi trong 1 sè vi xö lý hiÖn ®¹i: Tõ m¸y 386 c¸c thanh ghi ®a n¨ng vµ thanh ghi cê cã ®é lín gÊp ®«i (32 bit) C¸c thanh ghi ®o¹n (4 thanh ghi) ®é lín vÉn lµ 16 bit

3.2.3 BiÓu ®å thêi gian cña chu kú ®äc ghi sè liÖu

Trong tr−êng hîp b×nh th−êng mét chu kú ®äc/ghi cña CPU kÐo dµi 4 chu kú

®ång hå. C¸c chu kú ®−îc d¸nh dÊu lµ T1-T4. NÕu CPU lµm viÖc víi tÇn sè ®ång hå

5MHz th× mét chu kú ®ßng hå kÐo dµi T=200 ns vµ mét chu kú bus kÐo dµi 800 ns.

Thái Nguyên 8-2008 27

Page 28: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

A

A

Mét chu kú cña bus

AD0

W

Chu kú

®−êng ®

DT/ R ,

Chu kú

trªn D0

liÖu nÕ

READY

ngo¹i v

CLK

8-A15

A/S 16/S3-

A19/S6

DEN

TÝn hiÖu tr¹ng th¸i§Þa chØ

§Þa chØ æn ®Þnh

D÷ liÖu ghiA/D - AD7

Twr

§Þa chØ

RTgi÷W

ALE

H×nh : C¸c tÝn hiÖu cña CPU 8088 trong chu kú ghi ®¬n gi¶n ho¸

T1

Trong chu kú nµy ®Þa chØ cña bé nhí hay thiÕt bÞ ngo¹i vi ®−îc ®−a trªn c¸c

Þa chØ, hoÆc ®Þa chØ/d÷ liÖu vµ ®Þa chØ/tr¹ng th¸i. C¸c tÝn hiÖu ®iÒu khiÓn ALE,

IO/ M còng ®−îc ®−a ra ®Ó hoµn tÊt viÖc gi÷ th«ng tin ®Þa chØ nµy.

T2

Chu kú nµy CPU ®−a ra c¸c tÝn hiÖu ®iÒu khiÓn RD vµ WR , DEN vµ tÝn hiÖu

-7 nÕu ®ã lµ lÖnh ghi. DEN th−êng ®−îc dïng ®Ó më c¸c bé ®Öm cña bus d÷

u chóng ®−îc dïng trong hÖ. T¹i cuèi chu kú T2 CPU lÊy mÉu tÝn hiÖu

®Ó xö lý trong chu kú tiÕp theo khi nã ph¶i lµm viÖc víi bé nhí hoÆc thiÕt bÞ

i

Thái Nguyên 8-2008 28

Page 29: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

CLK

Mét chu kú cña bus

D÷ liÖu ®äc§Þa chØ

ALE

ADR/S A16/S3-A19/S6

ADR/A8-A15

ADR/D AD0- AD7

§Þa chØ æn ®ÞnhTgi÷W

§Þa chØ TÝn hiÖu tr¹ng th¸i

TrDRD

Chu k

chu k

Nªu t

sau ch

thùc h

tÊt viÖ

Chu k

míi. T

vµo bé

DEN

H×nh : C¸c tÝn hiÖu cña CPU 8088 trong chu kú ®äc ®¬n gi¶n ho¸

ú T3

CPU dµnh thêi gian cho bé nhí hay thiÕt bÞ ngo¹i vi truy xuÊt d÷ liÖu. NÕu lµ

ú ®äc d÷ liÖu th× t¹i cuèi chy kú T3 CPU sÏ lÊy mÉu tÝn hiÖu cña bus d÷ liÖu.

ai cuèi chu kú T2 mµ CPU ph¸t hiÖn ra tÝn hiÖu READY=0 th× CPU tù xen vµo

u kú T3 mét sè chu kú ®Ó t¹o chu kú ®îi TW = n*T nh»m kÐo dµi thêi gian

iÖn lÖnh, t¹o ®iÒu kiÖn cho bé nhí hoÆc thiÕt bÞ ngo¹i vi cã ®ñ thêi gian hoµn

c ghi ®äc d÷ liÖu.

ú 4

Trong chu kú nµy c¸c tÝn hiÖu trªn bus ®−îc gi¶i tho¸t ®Ó chuÈn bÞ cho chu kú

Ýn hiÖu WR trong khi chuyÓn tr¹ng th¸i tõ 0 lªn 1 sÏ kÝch ho¹t qu¸ tr×nh ghi

nhí hay thiÕt bÞ ngo¹i vi.

Thái Nguyên 8-2008 29

Page 30: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

3.2.5 GhÐp nèi c¸c ch©n tÝn hiÖu 8088

+ D0 - AD7: C¸c ch©n dån kªnh cña bus A/D phÇn thÊp

+ A8..A15: C¸c bit phÇn cao cña bit ®Þa chØ

+ A16..A19: 4 ®−êng dån kªnh cña bus C/A cao

+ INTR: TÝn hiÖu yªu cÇu ng¾t che ®−îc

+ NMI: TÝn hiÖu ng¾t kh«ng che ®−îc: Tín hiệu ngắt từ lỗi cổng, lỗi bộ nhớ, lỗi RAM CMOS.

+ RESET: TÝn hiÖu khëi ®éng l¹i 8088: Khi chân này ở mức cao trong 4 clk CPU sẽ khởi động lại

+ CLK: TÝn hiÖu xung nhÞp ®ång hå.

+ READY: t/h vào, b¸o cho CPU biÕt t×nh tr¹ng s½n sµng cña thiÕt bÞ ngo¹i vi

+ RD: Xung cho phÐp ®äc

+ WR: Xung cho phÐp viÕt

+ IO/M: TÝn hiÖu ph©n biÖt lµm viÖc víi bé nhí hay thiÕt bÞ ngo¹i vi

+ INTA: ChÊp nhËn ng¾t

+ HOLD: Yªu cÇu treo CPU

+ HLDA: Tín hiệu ra, chÊp nhËn treo cho qu¸ tr×nh DMA

Thái Nguyên 8-2008 30

Page 31: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

+ DT/R: Tín hiệu ra điều khiển các đệm 2 chiều của bus dữ liệu để chọn chiều

chuyển vận của dữ liệu trên bus D. Chân này ở trạng thái cao khi vi xử lý chấp nhận treo.

+ MIN/MAX: Ở chế độ MIN chân này nối thẳng +5V không qua điện trở. Trong chế độ min có thể hoạt động như 8085.

+ Các bit trạng thái: S6 = 0 liên tục, S5 phản ảnh giá trị bit IF của thanh ghi cờ, S3 và S4 phối hợp với nhau để chỉ ra việc truy nhập thanh ghi đoạn.

S4 S3 Truy nhập đến 0 0 Đoạn dữ liệu phụ 0 1 Đoạn ngăn xếp 1 0 Đoạn mã hoặc không đoạn nào 1 1 Đoạn dữ liệu

+ DEN: Tín hiệu ra tác động ở mức thấp, báo cho bên ngoài biết lúc này trên bus

dồn kênh AD có dữ liệu ổn định. Chân này ở trạng thái trở kháng cao khi vi xử lý chấp nhận treo.

ALE: Xung cho phÐp chèt ®Þa chØ. Khi ALE=1 bus dån kªnh sö dông cho ®Þa chØ. Khi CPU treo th× ALE=0.

3.2.6 HÖ lÖnh cña bé vi xö lý 8 bit

← D¹ng thøc cña lÖnh M« t¶ ®−îc trong mçi lÖnh cÇn cã c¸c th«ng tin liªn quan ®Õn c«ng viÖc ph¶i thùc hiÖn Mét lÖnh víi tÊt c¶ c¸c lo¹i vi xö lý ®Òu bao gåm 2 phÇn c¬ b¶n:

• M· lÖnh: M· lÖnh th−êng lµ 1 byte, nghÜa lµ cã thÓ cã tíi 256 lÖnh kh¸c nhau trong tËp lÖnh cña bé vi xö lý. Trong 1 sè bé vi xö lý cã thÓ dïng 2 byte cho m· lÖnh, nh−ng byte thø 2 kh«ng dïng hÕt c¸c bit, nghÜa lµ cã thÓ m· ho¸ gÇn 216 lÖnh kh¸c nhau.

• C¸c ®Þa chØ cña to¸n h¹ng To¸n h¹ng cã thÓ lµ néi dung c¸c thanh ghi bªn trong bé vi xö lý, cã thÓ lµ néi dung c¸c « nhí VD: ADD AL, BL

Thái Nguyên 8-2008 31

Page 32: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

ADD AL, 7 ADD AL, [1020h] C¸ch thøc ghi lÖnh

( ViÕt lÖnh nh− thÕ nµo ?) Ng«n ng÷ m¸y dïng tËp hîp c¸c tÝn hiÖu 0/1 m¸y tÝnh lµm viÖc víi c¸c tÝn hiÖu nµy. §Ó viÕt lÖnh ta cã thÓ dïng hÖ 2 hoÆc 16 . Ph¸t triÓn h¬n dïng ng«n ng÷ gîi nhí, dïng ng«n ng÷ bËc cao.

{ Tõ ng«n ng÷ bËc cao → assembly → ng«n ng÷ m¸y } Gi÷a c¸c kh©u biÓn ®æi lµ c¸c ch−¬ng tr×nh dÞch Ng«n ng÷ m¸y 10111010 00000011 1011 0000 10001001 BAh 03h B0h 89h Hîp ng÷ mov DX,0303 mov al,89 Pascal PORT[$303]:=$89; C¸ch m· ho¸ lÖnh cña 8088

M· lÖnh gåm 3 phÇn:

Opcode + dÞch chuyÓn + d÷ liÖu trùc tiÕp hoÆc ®Þa chØ trùc tiÕp

Op.code

1 0 0 0 1 0 D W Mod Reg Disp H Disp L M/R

Bit D dïng ®Ó chØ h−íng ®i cña d÷ liÖu

D = 1 Data -> Reg

D = 0 Data <- Reg

Reg: chØ ra nhê c¸c bÝt vïng Reg

W = 0 lµ kiÓu Byte

W = 1 lµ kiÓu Word

Thái Nguyên 8-2008 32

Page 33: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

W=1 W=0 M∙ reg

ax al 000

Bx Bl 011

Cx Cl 001

Dx Dl 010

Sp Ah 100

Di Bh 111

Bp Ch 101

Si Dh 110

2 bit MOD cïng víi 3 bit R/M (thanh ghi/ bé nhí) t¹o ra 5 bit dïng ®Ó chØ ra chÕ ®é ®Þa chØ cho c¸c to¸n h¹ng c©u lÖnh.

B¶ng : Phèi hîp MOD vµ R/W ®Ó t¹o ra c¸c chÕ ®é ®Þa chØ

\mod 00 01 10 11

Mr W=1 W=0

000 [bx]+[si] [bx]+[si]+d8 [bx]+[si]+d16 Al ax

001 [bx]+[di] [bx]+[di]+d8 [bx]+[di]+d16 cl cx

010 [bp]+[si] [bp]+[si]+d8 [bp]+[si]+d16 Dl dx

011 [bp]+[di] [bp]+[di]+d8 [bp]+[di]+d16 bl bx

100 [si] [si]+d8 [si]+d16 ah sp

101 [di] [di]+d8 [di]+d16 ch bp

110 d16 (®/c tt) [bp] +d8 [bp]+d8 DH SI

111 [bx] [bx]+d8 [bx]+d16 Bh Di

ChÕ ®é bé nhí ChÕ ®é Reg

Thái Nguyên 8-2008 33

Page 34: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Ghi chó:

+ d8 disp 8 bit, d16 disp 16 bit

+ C¸c gi¸ trÞ trong cét 2,3,4 lµ c¸c ®Þa chØ hiÖu dông (EA) sÏ ®−îc céng

víi DS ®Ó t¹o thµnh ®Þa chØ vËt lý (riªng BP ph¶i ®−îc céng víi SP)

vÝ dô1: Mov CL,[BX]

chuyÓn néi dung « nhí cã ®Þa chØ n»m ë thanh ghi BX

10010 10 00 001 111

Opcode [BX] M· ho¸ CLChuyÓn tíi thanh ghi

vÝ dô 2: Mov 0F3H[SI],CL

100010 00 00 001 111 11110011

Opcode [SI] M· ho¸ CLChuyÓn tõ thanh ghi

d8 = F3H

C¸c chÕ ®é ®Þa chØ ChÕ ®é ®Þa chØ lµ c¸ch CPU t×m thÊy to¸n h¹ng cho c¸c lÖnh cña nã khi ho¹t ®éng. Mét lÖnh th−êng cã 0 ®Õn 3 to¸n h¹ng( Tuú theo lo¹i CPU) M· lÖnh To¸n h¹ng MOV A, B ; 2 to¸n h¹ng INC A ; A=A+1 ; 1to¸n h¹ng NOP ; 0 to¸n h¹ng ADD R1,R2,R3 ; 3to¸n h¹ng VD : CJNE A,#20h, Nh·n Cã c¸c chÕ ®é sau:

• ChÕ ®é ®Þa chØ thanh ghi: Trong chÕ ®é nµy dïng c¸c thanh ghi bªn trong CPU ®Ó chøa d÷ liÖu cÇn thao t¸c.

Thái Nguyên 8-2008 34

Page 35: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

VD: MOV BX,AX ; ChuyÓn néi dung ax vµo bx MOV DS,AX ; ChuyÓn néi dung ax vµo ds

• ChÕ ®é ®Þa chØ tøc th×: Trong chÕ ®é nµy: To¸n h¹ng ®Ých lµ 1 thanh ghi hay 1 « nhí, to¸n h¹ng nguån lµ 1 h»ng sè. Cã thÓ dïng chÕ ®é ®Þa chØ nµy ®Ó n¹p d÷ liÖu cÇn thao t¸c trùc tiÕp vµo bÊt cø thanh ghi nµo( trõ thanh ghi ®o¹n vµ thanh ghi cê) VD:

MOV CL,100 MOV AX,0FFh MOV DS, AX

• ChÕ ®é ®Þa chØ trùc tiÕp: Trong chÕ ®é nµy 1 to¸n h¹ng chøa ®Þa chØ lÖch cña « nhí dïng chøa d÷ liÖu, cßn to¸n h¹ng kia chØ cã thÓ lµ thanh ghi mµ kh«ng ®−îc lµ « nhí ( Kh«ng ph¶i lµ to¸n h¹ng mµ lµ ®Þa chØ cña to¸n h¹ng) VD: mov al,[1230h] ; ChuyÓn néi dung « nhí DS:123 vµo al MOV [4560h],CX ; ChuyÓn néi dung CX vµo « nhí DS: 4560 vµ DS:4561

• ChÕ ®é ®Þa chØ gi¸n tiÕp qua thanh ghi Trong chÕ ®é nµy 1 to¸n h¹ng lµ 1 thanh ghi ®−îc sö dông ®Ó chøa ®Þa chØ lÖch cña « nhí chøa d÷ liÖu, cßn to¸n h¹ng kia chØ cã thÓ lµ thanh ghi mµ kh«ng ®−îc lµ « nhí VD:

MOV AL,[BX] ; ChuyÓn néi dung « nhí cã ®Þa chØ DS:BX vµo AL MOV [SI], CL ; ChuyÓn néi dung CL vµo « nhí cã ®Þa chØ DS:SI MOV [DI],AX ; ChuyÓn néi dung AX vµo 2 « nhí liªn tiÕp cã ®Þa chØ DS:DI vµ DS:(DI+1)

• ChÕ ®é ®Þa chØ t−¬ng ®èi c¬ së Trong chÕ ®é nµy c¸c thanh ghi c¬ së nh− BX vµ BP vµ c¸c h»ng sè biÓu diÔn c¸c gi¸ trÞ dÞch chuyÓn ®−îc dïng ®Ó tÝnh ®Þa chØ hiÖu dông cña ¸c to¸n h¹ng trong c¸c vïng nhí DS vµ SS VD: MOV CX, [BX]+10 ; ChuyÓn néi dung 2 « nhí cã ®Þa chØ DS:[BX+10] vµ DS:[BX+11] vµo CX HoÆc MOV CX,[BX+10] MOV CX,10[BX] ; Gièng trªn MOV AL,[BP]+5 ;ChuyÓn néi dung « nhí SS:(BP+5) vµo AL

Thái Nguyên 8-2008 35

Page 36: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

• ChÕ ®é ®Þa chØ t−¬ng ®èi chØ sè

Trong chÕ ®é nµy c¸c thanh ghi chØ sè nh− SI vµ DI vµ c¸c h»ng sè biÓu diÔn c¸c gi¸ trÞ dÞch chuyÓn ®−îc dïng ®Ó tÝnh ®Þa chØ cña to¸n h¹ng trong vïng nhí DS VD: MOV AX, [SI]+10 ;ChuyÓn néi dung 2 « nhí liªn tiÕp cã ®Þa chØ DS:(SI+10) vµ DS:(SI+11) vµo AX hoÆc MOV AX,(SI+10) MOV CL,[DI]+5 ; ChuyÓn néi dung « nhí DS:(DI+5) vµo CL

• ChÕ ®é ®Þa chØ t−¬ng ®èi chØ sè c¬ së KÕt hîp hai chÕ ®é ®Þa chØ chØ sè vµ c¬ së ta cã chÕ ®é ®Þa chØ chØ sè c¬ së VD: MOV AX,[BX][SI]+8 ;ChuyÓn néi dung 2 « nhí liªn tiÕp cã ®Þa chØ DS:(BX+SI+8) vµ DS:(BX+SI+9) vµo AX TËp lÖnh cña 8088

• Xung ®ång hå clk lµ g×? C¸c thµnh phÇn trong 1 vi xö lý khi ho¹t ®éng ®−îc ®ång bé víi nhau theo mét

xung nhÞp gièng nh− trong mét chiÕc thuyÒn ®ua c¸c tay chÌo chÌo theo nhÞp cña ng−êi cÇm chÞch ®øng ®Çu thuyÒn. Xung nhÞp cµng cao tèc ®é xö lý cña vi xö lý cµng cao. Mét lÖnh m¸y cã thÓ tèn mét ®Õn vµi chôc xung nhÞp. VD: lÖnh mov tèn 4 xung nhÞp, lÖnh loop tèn 17 xung nhÞp, lÖnh RET tèn 16 xung nhÞp...Mçi mét xung nhÞp gäi lµ 1 clk (clock = xung ®ång hå). C¸c vi xö lý hiÖn nay(1/2008) ®· ®¹t ®Õn tèc ®é trªn 4GHz (Trªn 4 tû clk trªn gi©y). • MSB - LSB

− Trong 1 ®¬n vÞ d÷ liÖu (byte hay word) th× bit cã ý nghÜa nhÊt gäi lµ MSB (Most signification bit)

− Bit Ýt cã ý nghÜa nhÊt gäi lµ LSB (Lest signification bit)

• Mét sè lÖnh hay dïng

+ ADD: Céng hai to¸n h¹ng Viết lệnh: ADD đích, gốc Thực hiện: Đích ← Đích + Gốc Ví dụ: add ax,bx

+ AND: Vµ 2 to¸n h¹ng Viết lệnh: AND đích, gốc

Thái Nguyên 8-2008 36

Page 37: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Thực hiện: Đích ← Đích AND Gốc theo bit Ví dụ: Nội dung của AL là 03h Nội dung của BL là 13h and al,bl cho kết quả là 03h cất trong AL

+ CALL: Gäi ch−¬ng tr×nh con Viết lệnh: CALL tên chương trình con

+ CLC: Xo¸ cê nhí CF ← 0 + CLI: Che c¸c ng¾t che ®−îc

IF ← 0 + CMP: so s¸nh 2 byte hay 2 tõ

Viết lệnh: CMP đích, gốc Thực hiện: So sánh gốc với đích. Thường dùng để tạo điều kiện cho lệnh nhảy.

+ DEC: Gi¶m to¸n h¹ng ®Ých ®i 1 Viết lệnh: DEC Đích

Thực hiện: Giảm đích đi một đơn vị Ví dụ: AL đang là 12. Lệnh dec al sẽ cho kết quả al bằng 11. + DIV: Chia 2 sè kh«ng cã dÊu

Viết lệnh: DIV gốc Thực hiện:

o Nếu gốc là số 8 bit: AX/gốc, số bị chia phải là số không dấu 16 bit để trong AX. Sau khi chia AL ← thương, AH ← số dư

o Nếu gốc là số 16 bit: DXAX/gốc. Số bị chia phải là số không dấu 32 bit để trong cặp thanh ghi DXAX. Sau khi chia: AX ← thương, DX ← số dư.

+ HLT Dừng: Khi gặp lệnh này các hoạt động của 8088 bị tạm dừng. Để thoát khỏi trạng thái dừng chỉ có thể tác động vào các chân INTR, NMI hoặc RESET.

+ IN: §äc d÷ liÖu tõ cæng vµo thanh chøa Acc Viết lệnh: IN Acc, Port

Thực hiện: Acc ← Port. Đọc nội dung của cổng Port vào thanh chứa. Khi địa chỉ cổng > ffh cần đưa địa chỉ cổng qua thanh ghi DX.

Thái Nguyên 8-2008 37

Page 38: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

+ INC: T¨ng to¸n h¹ng ®Ých lªn 1

Viết lệnh: INC Đích Thực hiện: Tăng đích lên một đơn vị Đích ← Đích +1 Ví dụ: AL đang là 12. Lệnh inc al sẽ cho kết quả nội dung của al tăng lên 1 là 13. + IRET: Trë vÒ tõ ch−¬ng tr×nh con phôc vô ng¾t

+ JA/JNBE, JAE/JNB/JNC, JB/JC/JNAE, JBE/JNA, JE/JZ, JG/JNLE, JGE/JNL, JL, JNGE, JLE/JNG

A: Above - Cao hơn, ở phía trên E: Equal - Bằng, tương đương B: Below - Ở dưới, thấp hơn G: Great than - Lớn hơn Less than - nhỏ hơn JZ: Nhảy nếu kết quả bằng 0 JC: Nhảy nếu có cờ nhớ JAE: Nhảy nếu cao hơn hoặc bằng JBE: Nhảy nếu thấp hơn hoặc bằng

... + JMP: Nhảy vô điều kiện ®Õn mét ®Ých nµo ®ã + LEA: N¹p ®Þa chØ hiÖu dông vµo thanh ghi Viết lệnh LEA Đích, gốc Thực hiện: Đích thường là một trong các thanh ghi BX, CX, DX, BP, DI, SI hoặc là địa chỉ offset của một biến mảng, chuỗi. + LOOP: LÆp ®o¹n ch−¬ng tr×nh Viết lệnh: LOOP nhãn Thực hiện: Số lần lặp trong CX, sau mỗi lần thực hiện CX tự giảm đi 1. Khi cx = 0 ra khỏi vòng lặp Ví dụ: Hiện 5 ký tự ‘A’

mov cx, 5 hien: mov dl, ‘A’ mov ah, 2 int 21h loop hien

Thái Nguyên 8-2008 38

Page 39: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

+ MOV: Di chuyÓn byte hay tõ Viết lệnh: MOV đích, gốc Thực hiện: Copy nội dung của gốc vào đích Ví dụ:

mov al, 7 mov bl, 5 mov al, bl

Sau đoạn lệnh này nội dung của al và bl đều bằng 5 + MUL: Nh©n sè kh«ng dÊu Viết lệnh: MUL gốc Thực hiện: Tuỳ theo độ dài của toán hạng gốc có hai trường hợp

o Nếu gốc là số 8 bit để trong AL: AL * gốc, số bị nhân là số 8 bit để trong AL. Sau khi nhân AX ← tích.

o Nếu gốc là số 16 bit: AX*gốc. Số bị nhân phải là số 16 bit trong AX. Sau khi nhân DXAX ← tích.

Ví dụ:

mov al,7 mov bl,5 mul bl; AL = 35

+ NOP: Kh«ng lµm g× trong 8 clk + OR: HoÆc 2 to¸n h¹ng Viết lệnh: OR đích, gốc Thực hiện: Lấy nội dung của gốc OR với nội dung của gốc theo bit, kết quả cất vào đích Ví dụ:

mov ax, 001fh mov bx, 1f00h or ax, bx; kết quả AX bằng 1f1fh

+ OUT: §−a d÷ liÖu tõ Acc ra cæng Viết lệnh: OUT Port, Acc

Thái Nguyên 8-2008 39

Page 40: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Thực hiện: Port ← Acc. Đưa nội dung của thanh chứa ra Port. Khi địa chỉ cổng > ffh cần đưa địa chỉ cổng qua thanh ghi DX. + POP: LÊy l¹i 1 tõ tõ ®Ønh ng¨n xÕp Viết lệnh: POP đích Thực hiện: Đích ← {SP} SP ← SP + 2 + PUSH: CÊt 1 tõ vµo ng¨n xÕp Viết lệnh: PUSH gốc Thực hiện: gốc → {SP} SP ← SP - 2 + RCL: Quay tr¸i qua cê nhí Viết lệnh: RCL đích, CL Thực hiện: LSB MSBCF

Sau khi quay 1 lần nội dung cờ CF mang nội dung cũ của MSB. Nếu số lần quay trong CL là 9 thì kết quả không thay đổi + RCR: Quay phải qua cê nhí

LSB MSBCF Viết lệnh: RCR đích, CL Thực hiện: RCR đích, CL Sau khi quay 1 lần nội dung cờ CF mang nội dung cũ của LSB. Nếu số lần quay trong CL là 9 thì kết quả không thay đổi. + RET: Trë vÒ tõ ch−¬ng tr×nh con + ROL: Quay vßng sang tr¸i

MSBCF Viết lệnh: ROL đích, CL LSB

Thực hiện: MSB được đưa vào cờ CF và LSB. Nếu sau 8 lần quay kết quả không đổi. Sau 4 lần quay thì 2 nibble bị đổi chỗ. + ROR: Quay vßng sang ph¶i CF MSB LSB

Viết lệnh: ROR đích, CL

Thái Nguyên 8-2008 40

Page 41: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Thực hiện: LSB được đưa vào cờ CF và MSB. Nếu sau 8 lần quay kết quả không đổi. Sau 4 lần quay thì 2 nibble bị đổi chỗ. + SAL: DÞch tr¸i sè häc Viết lệnh: SAL đích, CL SHL đích, CL Toán hạng đích có thể tìm được theo các chế độ địa chỉ khác nhau Thực hiện:

MSBCF LSB 0

Thực hiện phép nhân 2 số không dấu + SAR: DÞch ph¶i sè häc Viết lệnh: SAR đích, CL Toán hạng đích có thể tìm được theo các chế độ địa chỉ khác nhau Thực hiện: Sau mỗi lần dịch phải MSB được giữ lại. Thực hiện phép chia 2 số có dấu

CFMSB LSB

+ SHR Dịch phải logic Viết lệnh: SAL đích, CL SHL đích, CL Toán hạng đích có thể tìm được theo các chế độ địa chỉ khác nhau

MSB LSB CFThực hiện: 0

Thực hiện phép chia cho 2 của số không dấu + STI: LËp cê cho phÐp ng¾t

IF ← 1 + SUB: Trõ 2 to¸n h¹ng Viết lệnh: SUB đích, gốc Thực hiện: đích ← đích - gốc

Thái Nguyên 8-2008 41

Page 42: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Ví dụ:

mov al,9 mov bl,3 sub bl,al; bl = 6

+ TEST: Vµ 2 to¸n h¹ng ®Ó t¹o cê Viết lệnh: TEST đích, gốc Thực hiện: Lấy gốc thực hiện phép ‘VÀ’ với đích. Nội dung toán hạng không thay đổi chỉ dùng để tạo cờ kiểm tra. Xoá CF, OF. Cập nhật PF, SF, ZF. + WAIT: CPU nghỉ và chê tÝn hiÖu mức thấp tõ ch©n TEST hoÆc INTR + XCHG: Tr¸o néi dung 2 to¸n h¹ng XCHG đích, gốc

xchg ah, al; Tráo đổi nội dung ah và al + XOR: HoÆc lo¹i trõ 2 to¸n h¹ng Viết lệnh: XOR đích, gốc Thực hiện phép XOR theo bit giữa hai toán hạng. Kết quả cất vào đích.

Ví dụ: XOR AX, AX; xoá thanh ghi AX LËp tr×nh hîp ng÷ víi 8088

• Giíi thiÖu khung cña ch−¬ng tr×nh hîp ng÷

− CÊu tróc cña 1 lÖnh hîp ng÷ Tªn M· lÖnh C¸c to¸n h¹ng Chó gi¶i TIEP: AND AL,20h ; KiÓm tra bit 5 cña thanh ghi LSR

+ Tr−êng tªn: Chøa tªn nh·n, tªn biÕn, tªn thñ tôc. Kh«ng ®−îc chøa dÊu c¸ch, kh«ng b¾t ®Çu b»ng sè

+ Tr−êng m· lÖnh:

+ Tr−êng to¸n h¹ng

+ Tr−êng chó gi¶i: Lêi gi¶i thÝch ph¶i lµ nghÜa bãng kh«ng dïng nghÜa ®en.

− D÷ liÖu cho ch−¬ng tr×nh hîp ng÷

+ Lo¹i sè: HÖ 2, 10, 16. NgÇm ®Þnh lµ hÖ 10. NÕu dïng hÖ 2 hoÆc 16 ph¶i thªm ký tù b¸o hiÖu. VD:

MOV AL, 10 ; §−a vµo AL sè 10 MOV AL, 10h; §−a vµo AL sè 16 MOV AL, 10b; §−a vµo AL sè 2

Thái Nguyên 8-2008 42

Page 43: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

+ Lo¹i ký tù: Gåm ký tù ®¬n vµ ký tù chuçi

− BiÕn vµ h»ng

+ BiÕn byte: Tªn DB Gi¸ trÞ khëi ®Çu B1 DB 7 C1 DB '$'

+ BiÕn tõ: Tªn DW Gi¸ trÞ khëi ®Çu B1 DW 64

+ BiÕn m¶ng: M DB 2,4,5,9,12,3

+ BiÕn kiÓu x©u ký tù tb DB 'A nho hon B$'

+ H»ng cã tªn: CR EQU 0Dh; carriage return LF EQU 0Ah; line feet

− Khung cña 1 ch−¬ng tr×nh hîp ng÷ Khung cña ch−¬ng tr×nh EXE

Một ch−¬ng tr×nh EXE khi n¹p vµo trong bé nhí sÏ n»m trong 4 đoạn, ®Þa chØ ®Çu cña mçi ®o¹n chøa trong 4 thanh ghi ®o¹n, trong khi ch−¬ng tr×nh COM chØ nằm trong 1 ®o¹n. .Model Quy m« sö dông bé nhí .Stack KÝch th−íc .Data Khai b¸o d÷ liÖu .Code Main proc ; Khëi t¹o ®o¹n d÷ liÖu

mov Ax,@data mov ds,ax

; c¸c lÖnh cña thñ tôc chÝnh, c¸c lêi gäi ch−¬ng tr×nh con ; trë vÒ DOS dïng hµm 4Ch cña INT21h

mov ah,4ch int 21h

Thái Nguyên 8-2008 43

Page 44: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Main endp CTC1 proc ; c¸c lÖnh cña ch−¬ng tr×nh con 1 RET CTC1 endp CTC2 proc ; c¸c lÖnh cña ch−¬ng tr×nh con 2 RET CTC2 endp END MAIN

Khung cña ch−¬ng tr×nh COM .Model tiny .Code ORG 100h START: JMP Continue ; §Þnh nghÜa cho c¸c biÕn vµ h»ng ®Ó t¹i ®©y Main proc ; c¸c lÖnh cña ch−¬ng tr×nh chÝnh INT 20h Main endp END START

• C¸ch t¹o vµ cho ch¹y 1 ch−¬ng tr×nh hîp ng÷ C¸c b−íc:

+ So¹n m· nguån

+ DÞch ra file .OBJ b»ng MASM.EXE hoÆc TASM.EXE

+ Liªn kÕt c¸c tÖp OBJ b»ng LINK.EXE hoÆc TLINK.EXE

+ Ch¹y thö

• C¸c cÊu tróc lËp tr×nh c¬ b¶n trong Assembly

− CÊu tróc tuÇn tù: Lµ cÊu tróc th«ng dông vµ ®¬n gi¶n nhÊt. Trong cÊu tróc nµy c¸c lÖnh s¾p xÕp tuÇn tù, lÖnh nä tiÕp lÖnh kia

LÖnh 1 LÖnh 2 ... LÖnh N

Thái Nguyên 8-2008 44

Page 45: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

− CÊu tróc lùa chän

VD: cmp al, 0 ; AL kh¸c 0 ? jne GAN ; NÕu kh«ng th× g¸n lu«n inc al ; NÕu AL = 0 th× t¨ng al lªn 1

GAN: mov BL, AL RA: .....

− CÊu tróc CASE VD: CMP AL,0 JE

§iÒu kiÖn §iÒu kiÖn

C«ng viÖc C«ng viÖc1 C«ng viÖc2

S § S

§

IF - THEN IF - THEN - ELSE

BiÓu thøc

C«ng viÖc 1 C«ng viÖc 2 C«ng viÖc N

Gi¸ trÞ 2Gi¸ trÞ 1 Gi¸ trÞ N

Thái Nguyên 8-2008 45

Page 46: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

− CÊu tróc for-do

C«ng viÖc

Khëi ®Çu bé ®Õm

Gi¶m bé ®Õm ®i 1

Bé ®Õm = 0?

§

S

− CÊu tróc while-do

®iÒu kiÖn

c«ng viÖc

S

§

− CÊu tróc repeat-until

c«ng viÖc

®iÒu kiÖn S

§

Thái Nguyên 8-2008 46

Page 47: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

• Một số hàm, ngắt hay được sử dụng trong lập trình hợp ngữ

Hàm 1 của ngắt INT 21H: Nhập ký tự vào từ bàn phím Vào: AH=1 Ra: AL = mã ASCII của ký tự AH = 0 khi ký tự gõ vào là phím chức năng Hàm 2 của ngắt INT 21H: Hiện một ký tự lên màn hình Vào: AH = 2 DL: Mã ASCII của ký tự cần hiện Hàm 9 của ngắt INT 21H: Vào: AH = 9

DX: Địa chỉ lệch của chuỗi ký tự cần hiển thị Hàm 4CH của ngắt INT 21H: Vào: AH = 4Ch

• Chuyển đổi giữa mã ASCII của ký tự số và giá trị số Khi chúng ta nhập một ký tự số vào từ bàn phím của máy tính mã ASCII của nó được đặt trong thanh ghi AL và đây không phải là giá trị số. Nếu muốn tính toán với giá trị của con số nhập vào chúng ta phải đổi mã ASCII đó ra giá trị số bằng cách trừ đi 30H (do giá trị thực của con số và mã ASCII của nó cách nhau 30h trong bảng mã ASCII). Ngược lại khi muốn hiện một giá trị số đã có trong thanh ghi ta lại phải đổi giá trị số đó ra mã ASCII của nó bằng cách OR với giá trị 30H. • Các ví dụ:

Ví dụ 1. Viết ra màn hình câu chào “Hello!” file chao.asm

.model small

.stack 100

.data tp db 'Hello!$' .code

main proc mov Ax,@data Mov ds,ax

Thái Nguyên 8-2008 47

Page 48: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

mov ah,9 lea dx,tp int 21h mov ah,4ch int 21h

main endp end main

Ví dụ 2. Hiện bảng mã ASCII

file ascii.asm .model small .stack 20 .data tb db 'Bang ma ASCII$' .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb int 21h xor dx,dx mov cx,255 mov ah,2 lap: int 21h inc dl push dx mov dl,' '; tạo khoảng cách int 21h pop dx loop lap mov ah,4ch

Thái Nguyên 8-2008 48

Page 49: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

int 21h main endp end main

Ví dụ 3. Nhập ký tự từ bàn phím. Kiểm tra xem ký tự nhập có phải là ký tự số không?

file kt_sochu.asm .model small .stack 20 .data tb1 db 'nhap ky tu $' tb2 db 'day khong phai la ky tu so $' .code main proc mov ax,@data mov ds,ax nhaplai:mov ah,9 lea dx,tb1 int 21h mov ah,1 tiep:int 21h cmp al,30h jb sai cmp al,39h jg sai jmp tiep sai:mov ah,9 lea dx,tb2 int 21h jmp nhaplai ra:mov ah,4ch int 21h

Thái Nguyên 8-2008 49

Page 50: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

main endp end main

Ví dụ 4. Nhập hai số vào từ bàn phím. So sánh hai số. file so_sanh1.asm

.model small

.stack 20

.data tb1 db 'nhap a= $' tb2 db 'nhap b= $' tb3 db ' a > b $' tb4 db ' a < b $' tb5 db 'a=b$' .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h mov ah,1 int 21h sub al,30h mov bl,al mov ah,9 lea dx,tb2 int 21h mov ah,1 int 21h sub al,30h cmp al,bl je a_bang_b jnl b_to jmp b_nho

Thái Nguyên 8-2008 50

Page 51: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

a_bang_b: mov ah,9 lea dx,tb5 int 21h jmp ra b_to:mov ah,9 lea dx,tb4 int 21h jmp ra b_nho:mov ah,9 lea dx,tb3 int 21h ra:mov ah,4ch int 21h main endp end main

Ví dụ 5. Tính tổng (hiệu) hai số có kết quả nhỏ hơn 10 nhập vào từ bàn phím file cong.asm

.model small

.stack 20

.data tb1 db 'nhap so a = $' tb2 db 'nhap so b = $' tb3 db 'tong 2 so la: $' .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h mov ah,1 ; nhap a int 21h sub al,30h ; doi ra so

Thái Nguyên 8-2008 51

Page 52: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

mov bl,al mov ah,9 lea dx,tb2 int 21h mov ah,1 ; nhap b int 21h sub al,30h ; doi ra so add al,bl mov dl,al or dl,30h ; doi ra ma ASCII mov bl,dl ; cat vao BL de con su dung DX mov ah,9 lea dx,tb3 int 21h mov dl,bl mov ah,2 int 21h ; hien tong ra mov ah,4ch int 21h main endp end main

Ví dụ 6. Hiện một mảng phần tử trong bộ nhớ Có một mảng m có n phần tử trong bộ nhớ. Để hiện mảng m làm các bước sau:

+ Đưa đầu mảng m → DX → SI (hoặc DI) + Chuyển ô nhớ chứa phần tử thứ nhất vào DL + Hiện + Tăng SI (hoặc DI) lên 1 trỏ vào phần tử tiếp theo + Cho dấu ‘ ‘ (dấu cách) vào + Lặp n lần

file hien_arr.asm .model small .stack 20

Thái Nguyên 8-2008 52

Page 53: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

.data tb db 'gia tri cua mang$' m db 7,4,5,7,2,8 .code main proc mov ax,@data mov ds,ax lea dx, m mov cx,6 mov di,dx lap: mov dl,[di] or dl,30h mov ah,2 inc di int 21h mov dl,' '; dấu cách int 21h loop lap mov ah,4ch int 21h main endp end main

Ví dụ 7. Tìm max file tim_max.asm

.model small

.stack 20

.data tb db 'max = $' m db '3','4','5','7','2','8' .code main proc mov ax,@data

Thái Nguyên 8-2008 53

Page 54: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

mov ds,ax lea dx, m lap:mov si,dx mov di,si mov al,[di] mov cx,5 tiep:inc si cmp al,[si] jg timtiep; neu van to hon lam tiep mov di,si ; neu khong doi cho mov al,[di] ; roi lam tiep timtiep:loop tiep mov dl,al push dx mov ah,9 lea dx,tb int 21h pop dx mov ah,2 int 21h mov ah,4ch int 21h main endp end main • Chương trình con Lợi ích của chương trình con:

+ Cho phép sử dụng lại các đoạn mã có công dụng giống nhau nhiều lần trong nhiều chương trình.

+ Mã nguồn của chương trình gọn hơn. Ví dụ 8. Viết chương trình thực hiện cộng, nhân, chia 2 số nhập vào từ bàn phím

(có kết quả <10). Các chương trình nhập, hiển thị, cộng, nhân, chia viết ở dạng chương trình con.

Thái Nguyên 8-2008 54

Page 55: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

file ctcong.asm

.model small .stack 20 .data

tb1 db 'a=$' tb2 db 'b=$' tb3 db 'a+b=$'

tb4 db 'cong bam 1, nhan bam 2, chia bam 3 $' tb5 db 'a*b =$' tb6 db 'a/b=$'

.code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h call nhap push ax mov ah,9 lea dx,tb2 int 21h call nhap mov bl,al; so b trong bl

mov ah,9 lea dx,tb4 int 21h mov ah,1 int 21h cmp al,31h je tinhcong cmp al,32h je tinhnhan

Thái Nguyên 8-2008 55

Page 56: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

cmp al,33h je tinhchia

tinhcong: pop ax call cong push ax mov ah,9 lea dx,tb3 int 21h pop ax call hienketqua jmp ra

tinhnhan: pop ax call nhan push ax mov ah,9 lea dx,tb5 int 21h pop ax call hienketqua jmp ra

tinhchia: pop ax call chia push ax mov ah,9 lea dx,tb6 int 21h pop ax call hienketqua jmp ra

ra: mov ah,4ch int 21h

main endp nhap proc

Thái Nguyên 8-2008 56

Page 57: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

;Thuc hien nhap kys tu so, roi doi ra so ; RA: AL chua so nhap tu ban phim mov ah,1 int 21h sub al,30h ret nhap endp cong proc ;VAO: AL: Chua so a BL: Chua so b ;RA : AL chua ket qua phep cong add al,bl or al,30h ret cong endp hienketqua proc ;VAO: AL chua ket qua phep cong mov dl,al mov ah,2 int 21h ret hienketqua endp nhan proc ;VAO: AL: so bi nhan BL: so nhan ;RA: ket qua trong AX . voi so <10 trong AL mul bl or al,30h ret nhan endp chia proc ;thuc hien a/b ;VAO AL: ra BL:b ;RA:AL chua ket qua mov ah,0

Thái Nguyên 8-2008 57

Page 58: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

div bl or al,30h ret chia endp END MAIN

Chương trình chính và chương trình con chứa trong các tệp khác nhau

Các chương trình con chúng ta có thể viết ngay dưới chương trình chính trong cùng một file mã nguồn, khi đó chương trình con được viết ra chỉ có thể dùng cho chương trình chính cũng trong file đó. Để có thể sử dụng chương trình con trong nhiều chương trình chính khác nhau chúng ta có thể viết các chương trình con để trong các file khác nhau. Khi sử dụng chỉ cần khai báo INCLUDE tên file và đường dẫn file chứa chương trình con ở sau chương trình chính. Chú ý rằng tên của file chứa chương trình con không được trùng với tên của chương trình con mà nó chứa.

Ví dụ 9. Có thể viết lại ví dụ 8. Các chương trình con được chứa trong các file khác nhau và không trong file chương trình chính. Chương trình con nhap trong file ‘vao.asm’. Chương trình con cong trong file ‘add.asm’ , Chương trình con hienketqua trong file ‘display.asm’. Chương trình con nhan trong file ‘mul.asm’. Chương trình con chia trong file ‘div.asm’. Các file chứa chương trình con đặt trong cùng thư mục chứa file chương trình chính. Trong phần khai các chương trình con bây giờ chỉ cần INCLUDE...

.model small .stack 20 .data

tb1 db 'a=$' tb2 db 'b=$' tb3 db 'a+b=$'

tb4 db 'cong bam 1, nhan bam 2, chia bam 3 $' tb5 db 'a*b =$' tb6 db 'a/b=$'

.code main proc

Thái Nguyên 8-2008 58

Page 59: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h call nhap push ax mov ah,9 lea dx,tb2 int 21h call nhap mov bl,al; so b trong bl

mov ah,9 lea dx,tb4 int 21h mov ah,1 int 21h cmp al,31h je tinhcong cmp al,32h je tinhnhan cmp al,33h je tinhchia

tinhcong: pop ax call cong push ax mov ah,9 lea dx,tb3 int 21h pop ax call hienketqua jmp ra

tinhnhan: pop ax

Thái Nguyên 8-2008 59

Page 60: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

call nhan push ax mov ah,9 lea dx,tb5 int 21h pop ax call hienketqua jmp ra

tinhchia: pop ax call chia push ax mov ah,9 lea dx,tb6 int 21h pop ax call hienketqua jmp ra

ra: mov ah,4ch int 21h main endp

include vao.asm include add.asm include display.asm include mul.asm include div.asm

END MAIN Truyền tham số trong chương trình con:

+ Truyền tham số qua thanh ghi: Các chương trình chính và chương trình con hoặc giữa các chương trình con truyề tham số cho nhau qua thanh ghi. Nếu truyền giữa hai chương trình con thì giá trị trong thanh ghi là đầu ra của một chương trình con sẽ là đầu vào của một chương trình con khác.

Thái Nguyên 8-2008 60

Page 61: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Ví dụ 10.

Đây là một phần của ví dụ 8. Chương trình gồm 3 chương trình con nhập số, tính cộng và hiển thị. Tham số được truyền qua thanh ghi AL .model small .stack 20 .data tb1 db 'a=$' tb2 db 'b=$' tb3 db 'a+b=$' .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h call nhap push ax mov ah,9 lea dx,tb2 int 21h call nhap mov bl,al; so b trong bl tinhcong: pop ax; lấy a ra call cong push ax mov ah,9 lea dx,tb3 int 21h pop ax call hienketqua ra: mov ah,4ch int 21h

Thái Nguyên 8-2008 61

Page 62: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

main endp nhap proc ;Thuc hien nhap kys tu so, roi doi ra so ; RA: AL chua so nhap tu ban phim mov ah,1 int 21h sub al,30h ret nhap endp cong proc ;VAO: AL: Chua so a BL: Chua so b ;RA : AL chua ket qua phep cong add al,bl or al,30h ret cong endp hienketqua proc ;VAO: AL chua ket qua phep cong mov dl,al mov ah,2 int 21h ret hienketqua endp END MAIN

+ Truyền tham số qua ô nhớ-biến: Ví dụ 11.

Cũng vẫn yêu cầu tính tổng 2 số a, b và chúng ta vẫn viết chương trình thành 3 chương trình con

.model small .stack 20 .data s db ? tb1 db 'a=$'

Thái Nguyên 8-2008 62

Page 63: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

tb2 db 'b=$' tb3 db 'a+b=$' .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h call nhap push ax mov ah,9 lea dx,tb2 int 21h call nhap mov bl,al; so b trong bl tinhcong: pop ax; lấy a ra call cong push ax mov ah,9 lea dx,tb3 int 21h pop ax call hienketqua ra: mov ah,4ch int 21h main endp nhap proc ;Thuc hien nhap kys tu so, roi doi ra so ; RA: AL chua so nhap tu ban phim mov ah,1 int 21h sub al,30h

Thái Nguyên 8-2008 63

Page 64: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

ret nhap endp cong proc ;VAO: AL: Chua so a BL: Chua so b ;RA : s chua ket qua phep cong add al,bl or al,30h mov s,al ret cong endp hienketqua proc ;VAO: s chua ket qua phep cong mov dl,s mov ah,2 int 21h ret hienketqua endp END MAIN

+ Truyền tham số qua ô nhớ có địa chỉ do thanh ghi chỉ ra: Ví dụ 12.

.model small .stack 100 .data tb1 db 'go vao 2 so co tong nho hon 10: $' tb2 db 13,10, 'TONG CUA ' so1 db ? db ' va ' so2 db ? db ' la : ' sum db -30h,'$' .code main proc

Thái Nguyên 8-2008 64

Page 65: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h mov ah,1 int 21h mov so1,al mov dl,',' mov ah,2 int 21h mov ah,1 int 21h mov so2,al lea si,so1 lea di,so2 lea bx,sum call add2so lea dx,tb2 mov ah,9 int 21h mov ah,4ch int 21h main endp add2so proc mov al,[si] add al,[di] add [bx],al ret add2so endp END MAIN

Thái Nguyên 8-2008 65

Page 66: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

+ Truyền tham số qua ngăn xếp:

Ví dụ 13. .model small .stack 100 .data

tbao1 db 'go vao 2 so tong nho hon 10$' tb2 db 13,10,' tong cua' so1 db ? db ' va' So2 db ? db ' la' sum db,-30h,'$'

.code main proc

mov ax, @data mov ds,ax mov ah,9 la dx,tbao1 int 21h mov ah,1; Nhập So1 int 21h mov so1,al push ax mov dl,',' mov ah,2 int 21h mov ah,1; Nhập So2 int 21h mov so2,al push ax; Cất vào ngăn xếp để truyền call add2so add sum,al; Lưu kết quả để hiển thị mov ah,9

Thái Nguyên 8-2008 66

Page 67: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

lea dx,tbao2 int 21h mov ah,4ch int 21h

main endp add2so proc

;tinh tong 2 so ;vao: ngan xep luc ke tu dinh ;dia chi tro ve ;so hang 2 ;so hang 1 ;Ra: ax chua ket qua push bp; Cất BP mov bp,sp; BP chỉ vào đỉnh ngăn xếp mov ax,[bp+6]; Lấy ký tự của So1 add ax,[bp+4]; Cộng với ký tự của So2 pop bp ; Lấy lại BP ret 4; Trở về và bỏ qua 4 byte

add2so endp END MAIN • Nhập và hiện các số thập phân lớn Nhập số thập phân Để nhập số thập phân phải đổỉ chuỗi các chữ số ASCII thành dạng biểu diễn nhị phân của một số thập phân. Thuật toán:

Tổng = 0 Nhập một chữ số ASCII từ bàn phím

Repeat Đổi ký tự vừa nhập thành giá trị số nhị phân (GTS) Tổng = tổng*10 + GTS Nhập tiếp ký tự số

Until nhập ký tự Enter

Thái Nguyên 8-2008 67

Page 68: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Ví dụ mô tả thuật toán: Chẳng hạn chúng ta nhập số 123. Quá trình như sau:

Tổng = 0 Nhập ‘1’ Đổi ‘1’ → số 1 Tổng = 10*0 + 1 Nhập ‘2’ Đổi ‘2’ → số 2 Tổng = 10*1 + 2 = 12 Nhập ‘3’ Đổi ‘3’ → số 3 Tổng = 10*12 + 3 = 123

Thuật toán được thể hiện thành chương trình con in_dec chứa trong file ‘in_deci.asm’ có nội dung như sau: ; Chuong trinh con nhap so vao tu ban phim gioi han -32768 den 32767 ; VAO: khong RA: gia tri so nhi phan trong AX in_dec proc push bx push cx push dx bat_dau: ;mov ah,2 ;mov dl,'?'; in ra dau hoi de biet duong ma nhap ;int 21h xor bx,bx ; bx chua tong xor cx,cx mov ah,1 int 21h ; ky tu vao trong al cmp al,'-' ;co phai dau am khong? je dautru ;dung thiet lap dau tru cmp al,'+' je daucong jmp tieptuc ;tiep tuc xu ly cac ky tu dautru:mov cx,1 daucong:

Thái Nguyên 8-2008 68

Page 69: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

int 21h tieptuc: cmp al,'0' jnge khong_phai_so cmp al,'9' Jnle khong_phai_so and ax,000fh ; doi thanh chu so push ax ; cat vao ngan xep mov ax,10 mul bx ; ax=tong*10 pop bx ; phuc hoi chu so add bx,ax ;tong=tong*10+chu so mov ah,1 int 21h cmp al,13 ; da phai enter? jne tieptuc ; neu khong phai thi nhap tiep mov ax,bx ; luu so vao ax or cx,cx ; co phai so am khong? je ra neg ax ; neu la so am doi so trong ax ra so am ra: pop dx pop cx pop bx ret khong_phai_so: mov ah,2 mov dl,0dh; int 21h mov dl,0ah int 21h jmp bat_dau in_dec endp

Thái Nguyên 8-2008 69

Page 70: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Hiện số thập phân Số nhị phân 13 = 0000 1101 Số bù 1 của 13 = 1111 0010 (đảo bit) Số bù 2 của 13 = Số bù 1 + 1 = 1111 0010 + 1 1111 0011 Khảo sátt: Giả sử trong AX có số 24168. Nếu: chia 24168/10 được 2416 dư 8 chia 2416/10 được 241 dư 6 chia 241/10 được 24 dư 1 Viết ngược được 24168 chia 24/10 được 2 dư 4 chia 2/10 được 0 dư 2 Từ đây chúng ta có các thuật cơ sở sau: Thuật toán 1:

đếm = 0 Repaet Chia số bị chia cho 10 Cất số dư vào ngăn xếp đếm = đếm +1 Until thương số = 0

Thuật toán 2: For đếm do

Lấy chữ số từ ngăn xếp Đổi ra ký tự Đưa ra màn hình

End for Thuật toán đưa ra một số thập phân trong thanh ghi AX If 1. Nếu AX <0 thì: 2. In ra dấu ‘-‘ 3. Thay nội dung của AX = số bù 2 của nó End If

Thái Nguyên 8-2008 70

Page 71: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

4. Lấy dạng biểu diễn thập phân các chữ số trong AX 5. Đổi số sang ký tự rồi đưa ra màn hình. Thuật toán được thể hiện thành chương trình con out_dec chứa trong file ‘out_deci.asm’ out_dec proc

;in ra noi dung cua ax duoi dang so thap phan co dau ;vao: AX ;ra: khong push ax push bx push cx push dx or ax,ax; ax<0? jge doi_ra_day; neu khong la so am thi doi ra day ky tu he 10 ; neu khong am thi

push ax mov dl,'-' mov ah,2 int 21h pop ax neg ax ; ax = -ax doi_ra_day: xor cx,cx; dem = 0 mov bx,10; so chi = 10 chia: xor dx,dx; chuan bi word cao cho so bi chia div bx ;ax thuong so, dx chua so du push dx ; cat so du vao ngan xep inc cx or ax,ax; thuong so bang khong chu ci bang khong ; khi tat ca cac bit = 0 va luc do phep OR = 0 jne chia mov ah,2 hien: pop dx

Thái Nguyên 8-2008 71

Page 72: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

or dl,30h int 21h loop hien ;ra pop dx pop cx pop bx pop ax ret out_dec endp Với hai thủ tục in_dec và out_dec chúng ta có thể sử dụng trong nhiều chương trình như một số ví dụ sau:

Ví dụ 14. Cộng hai số lớn file add_big.asm

.model small

.stack 100

.data tb1 db 'nhap a=$' tb2 db 13,10,'nhap b=$' tb3 db 13,10,'s= $' .code main proc mov ax,@data mov ds,ax lea dx,tb1 mov ah,9 int 21h call in_dec push ax mov ah,9 lea dx,tb2 int 21h

Thái Nguyên 8-2008 72

Page 73: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

call in_dec mov bx,ax pop ax add bx,ax; s = a+ b trong BX mov ah,9 lea dx,tb3 int 21h mov ax,bx call out_dec mov ah,4Ch int 21h main endp

include in_deci.asm include out_deci.asm

end main

Ví dụ 15. Tính giai thừa (Chương trình tính đến 7!)

file giaithua.asm .model small .stack 100 .data tb1 db 'n= $' tb2 db 13,10,'n!= $' gt dw ? .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h xor ax,ax

Thái Nguyên 8-2008 73

Page 74: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

call in_dec mov cx,ax; cx = N mov ax,1 nhan: mul cx loop nhan push ax mov ah,9 lea dx,tb2 int 21h pop ax call out_dec mov ah,4ch int 21h main endp

include in_deci.asm include out_deci.asm

end main Ví dụ 16. Tính biểu thức a2 + b2

file tong_bph.asm ;Cac so nhap vao a va b <=127 .model small .stack 100 .data tb1 db 'a=$' tb2 db 13,10,'b=$' tb3 db 13,10,'abp+bbp = $' .code main proc mov ax,@data mov ds,ax mov ah,9 lea dx,tb1 int 21h

Thái Nguyên 8-2008 74

Page 75: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

call in_dec mul al push ax mov ah,9 lea dx,tb2 int 21h call in_dec mul al mov bx,ax mov ah,9 lea dx,tb3 int 21h pop ax add bx,ax mov ax,bx call out_dec mov ah,4ch int 21h main endp

include in_deci.asm include out_deci.asm

end main • Phèi ghÐp hîp ng÷ víi c¸c ng«n ng÷ bËc cao

− Cã thÓ phèi hîp hîp ng÷ víi c¸c ng«n ng÷ bËc cao nh−: pascal, C, delphi, VC++

− Cã thÓ ghÐp c¸c flie ch−¬ng tr×nh hîp ng÷ ®· dÞch ra file .OBJ víi c¸c ng«n ng÷ bËc cao hoÆc chÌn c¸c ®o¹n hîp ng÷ trùc tiÕp vµo m· nguån cña c¸c ng«n ng÷ bËc cao trªn (c¸ch th«ng dông):

+ Víi pascal vµ delphi c¸c ®o¹n hîp ng÷ chÌn gi÷a c¸c tõ kho¸ asm ... c¸c lÖnh hîp ng÷ end;

+ Víi C vµ VC++ cã thÓ chÌn gi÷a c¸c dÊu

Thái Nguyên 8-2008 75

Page 76: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

{ ... c¸c lÖnh hîp ng÷ }

hoÆc tr−íc mçi dßng hîp ng÷ cã dÊu _asm Ví dụ 17. Tính tổng a + b

uses crt; var a,b,sum: integer; Begin

clrscr; Writeln( 'a =');readln(a); Writeln( 'b =');readln(b);

asm mov ax,a mov bx,b add ax,bx mov sum,ax end;

Writeln(‘a + b =’,sum); readln;

End. Ví dụ 18. So sánh 2 số

uses crt; var a,b: integer; Procedure tohon; Begin Write ('a > b'); End; Procedure behon; Begin Write ('a < b'); End; Procedure bang; Begin Write ('a = b'); End; BEGIN clrscr; Writeln( 'a =');readln(a); Writeln( 'b =');readln(b);

Thái Nguyên 8-2008 76

Page 77: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

asm mov ax,a mov bx,b cmp ax,bx jb @1 je @3 @2: call tohon jmp @ra @3: call bang jmp @ra @1: call behon @ra: end; readln; END.

Viết kiểu tách hợp ngữ và ngôn ngữ bậc cao thành các tệp khác nhau: Với C + Các nhãn dùng chung (tên hằng, tên biến, tên chương trình con...) của các tệp

Pascal và hợp ngữ phải hiểu nhau thông qua sử dụng các lệnh điều khiển khi dịch chương trình PUBLIC và EXTERNAL cho C và EXTRN cho hợp ngữ

+ Bất kỳ một khai báo nào của C đều là dùng chung (cho phép các modul khác được dùng nhãn mà modul C khai báo) nên không cần khai thêm PUBLIC.

+ muốn sử dụng một nhãn ngài nào thì C phải khai báo external với cú pháp: external kiểu tên nhãn;

+ Với modul Assembly phải khai báo PUBLIC với các nhãn cho phép các modul ngoài dùng với cú pháp sau:

PUBLIC tên nhãn khai báo kiểu nhãn

+ Muốn sử dụng một nhãn đã khai báo PUBLIC ở modul ngoài (cho phép) thì modul Assembly phải khai báo EXTRN (xin phép dùng) với cú pháp sau:

+ EXTRN ten_nhãn: kiểu

Thái Nguyên 8-2008 77

Page 78: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

+ Thêm dấu gạch chân trước các nhãn dùg chung trong modul ngon ngữ

Assembly Giá trị quay lại của hàm: unsigned char, char, enum, unsigned short, short, unsigned int, int trong AX, unsigned long, long trong DX:AX

Ví dụ 19. Viết chương trình so sánh hai số nguyên (từ -32768 đến 32767) theo kiểu đa tệp: Modul C nhập hai số từ bàn phím, gọi chương trình con viết bằng hợp ngữ, hiện giá trị số bé ra màn hình. Modul hợp ngữ thực hiện so sánh hai số.

Tệp C (tên f1.cpp ở thư mục C:\USER ) #include <stdio.h> #include <conio.h> int so1, so2; external int MIN() void main(void) { clrscr(); printf(“\nVao so thu nhat”); scanf(“%d,&so1); printf(“\nVao so thu hai”); scanf(“%d,&so2); printf(“\n So be trong hai so là:%d”,MIN()); getch(); } Tệp Assembly (tên f2.ASM ở thư mục C:\USER ) .model small .data EXTRN _so1: WORD, _so2: WORD .code PUBLIC _MIN _MIN Proc mov AX, so1 mov BX, so2 cmp AX,BX

Thái Nguyên 8-2008 78

Page 79: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

jl L1 xchg AX,BX L1: ret _MIN endp END Với Pascal + Các nhãn dùng chung (tên hằng, tên biến, tên chương trình con...) của các tệp

Pascal và hợp ngữ phải hiểu nhau thông qua sử dụng các lệnh điều khiển khi dịch chương trình PUBLIC và EXTERNAL cho Pascal và EXTRN cho hợp ngữ

+ Bất kỳ một khai báo nào của Pascal đều là dùng chung nên không cần khai thêm PUBLIC. Pascal chỉ còn khai báo external với các chương trình con nằm ở modul ngoài

− Với chương trình con là thủ tục thì dạng khai báo như sau: procedure ten_thu_tuc ([đối số]); external;

− Với chương trình con là dạng hàm thì dạng khai báo như sau: function ten_thu_tuc ([đối số]): kiểu ; external; Ví dụ 20. Viết chương trình so sánh hai số nguyên (từ -32768 đến 32767)

theo kiểu đa tệp: Modul Pascal nhập hai số từ bàn phím, gọi chương trình con viết bằng hợp ngữ, hiện giá trị số bé ra màn hình. Modul hợp ngữ thực hiện so sánh hai số.

Tệp Pascal (tên f1.pas ở thư mục C:\USER ) Program so_sanh; uses crt; var so1, so2: integer; {$F+} Các chỉ thị dịch của Pascal function MIN: integer; external; {$L C:\USER\f2.obj} $L: Chỉ thị liên kết file .OBJ của Pascal {$F-} Begin clrscr;

Thái Nguyên 8-2008 79

Page 80: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

write(‘Hay vao so thu nhat’);readln(so1);

write(‘Hay vao so thu hai’);readln(so2); writeln(‘So be trong hai so la: ,MIN); readln;

End. Tệp Assembly (tên f2.ASM ở thư mục C:\USER ) .model large; Viết đa tệp với Pascal quy mô phải là HUGE, LARGE hoặc MEDIUM .data EXTRN so1: WORD, so2: WORD .code PUBLIC MIN MIN Proc mov AX, so1 mov BX, so2 cmp AX,BX jl L1 xchg AX,BX L1: ret MIN endp END Tệp f2.ASM phải dịch ra .OBJ để cùng thư mục 3.3 Giíi thiÖu c¸c bé vi xö lý tiªn tiÕn dòng 80x86

3.4 Vi ®iÒu khiÓn 8x51/52 Ph©n biÖt chip vi xö lý vµ chip vi ®iÒu khiÓn Bé vi xö lý: Lµm chøc n¨ng xö lý vµ tÝnh to¸n. ChØ riªng mét chip vi xö lý th×

kh«ng thÓ t¹o nªn mét hÖ thèng cã kh¶ n¨ng tÝnh to¸n vµ xö lý (hÖ vi xö lý) mµ cßn cÇn thªm c¸c chip nhí, chip ngo¹i vi, truyÒn tin, ... Chip vi xö lý vÝ dô 8088, 8086, Pentium I, II, III, IV... Chip vi ®iÒu khiÓn: Kh¸c víi c¸c chip vi xö lý chip vi ®iÒu khiÓn ®· lµ mét hÖ

thèng tÝnh to¸n trong mét chip (System on chip). Trong mét chip vi ®iÒu khiÓn ngoµi CPU ra ®· cã s½n bé nhí ROM, RAM, c¸c cæng vµo ra song song, nèi tiÕp, cæng truyÒn tin, c¸c bé ®Õm - ®Þnh thêi gian... gióp cho ng−êi sö dông

Thái Nguyên 8-2008 80

Page 81: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

thuËn tiÖn vµ dÔ dµng khi øng dông vi ®iÒu khiÓn gi¶i quyÕt c¸c bµi to¸n ®iÒu khiÓn trong thùc tÕ. Mét lo¹i vi ®iÒu khiÓn rÊt th«ng dông hiÖn nay lµ vi ®iÒu khiÓn hä 8x51/52 nh− 8031, 8032, 8051, 8052, 8951, 8952... vµ c¸c vi ®iÒu khiÓn thÕ hÖ sau nh− PIC16F84. C¸c vi ®iÒu khiÓn thÕ hÖ míi AVR nh− 90S8515, 90S8535...víi nhiÒu tÝnh n¨ng −u viÖt h¬n, tèc ®é xö lý nhanh h¬n

8051 lµ vi ®iÒu khiÓn ®Çu tiªn cña hä vi ®iÒu khiÓn ®−îc Itel chÕ t¹o. §Æc tÝnh kü thuËt c¬ b¶n nh− sau :

- Lµ vi ®iÒu khiÓn 8 bit - Kh¶ n¨ng ®Þa chØ ho¸:

+64K bé nhí ch−¬ng tr×nh +64K bé nhí d÷ liÖu

- Cã 128 bytes nhí RAM trong - Cã 2 Time/Counters - 1 Cæng nèi tiÕp, 4 cæng vµo ra song song - Cã bé ®iÒu khiÓn ng¾t logic víi 5 nguån ng¾t - 22 thanh ghi cã chøc n¨ng ®Æc biÖt SFR (Special function registers) 8051cã thÓ ®¸nh ®Þa chØ 64K bé nhí d÷ liÖu ngoµi vµ 64K bé nhí ch−¬ng tr×nh ngoµi.

Thái Nguyên 8-2008 81

Page 82: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

S¬ ®å khèi cña vi ®iÒu khiÓn 8051 Frequency Reference Counters Osilator 4096 bytes 128 bytes Two 16 bit And Program Data Timer/Event Timing Memory Memory Counter 8051 C P U 64 byte bus Programmable Programmable expansion I / O Serial Port Full Control Duplex UART Shifter Interrupts Control Parallel Ports Serial Serial Address Data Bus Input Output

and I/O pins

Vi ®iÒu khiÓn 8051 cã cæng nèi tiÕp n»m trªn chip. Chøc n¨ng quan träng cña cæng nèi tiÕp lµ biÕn ®æi d÷ liÖu tõ song song thµnh nèi tiÕp ®Ó ®Èy lªn ®−êng truyÒn vµ biÕn ®æi d÷ liÖu vµo tõ nèi tiÕp thµnh song song. ViÖc truy nhËp phÇn cøng cña cæng nèi tiÕp th«ng qua c¸c ch©n TxD vµ RxD cña 8051 vµ ®ã còng lµ 2 bit cña Port 3:

P3.1 (TxD) lµ ch©n 11 P3.0 (RxD) lµ ch©n 10

Cæng nèi tiÕp cña 8051 cã thÓ truyÒn 2 chiÒu ®ång thêi (full duplex) vµ ký tù cã thÓ ®−îc nhËn vµ l−u tr÷ trong bé ®Öm trong khi ký tù thø 2 ®· ®−îc nhËn vµ nÕu CPU ®äc ký tù thø nhÊt tr−íc khi ký tù thø hai ®−îc nhËn th× d÷ liÖu kh«ng bÞ mÊt . Cã 2 thanh ghi chøc n¨ng ®Æc biÖt (Special Function Register)®Ó phÇn mÒm qua ®ã truy nhËp cæng nèi tiÕp lµ SBUF vµ SCON. SBUF (Serial port buffer) cã ®Þa chØ

Thái Nguyên 8-2008 82

Page 83: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

99h ®−îc xem nh− 2 buffer. Khi ghi d÷ liÖu vµo SBUF lµ truyÒn d÷ liÖu cßn khi ®äc d÷ liÖu tõ SBUF lµ nhËn d÷ liÖu tõ ®−êng truyÒn SCON (Serial port Control register) cã ®Þa chØ 98h lµ thanh ghi cã thÓ ®¸nh ®Þa chØ theo tõng bit bao gåm bit tr¹ng th¸i vµ bit ®iÒu khiÓn. Bit ®iÒu khiÓn x¸c lËp chÕ ®é ®iÒu khiÓn cho cæng nèi tiÕp vµ bit tr¹ng th¸i cho biÕt ký tù ®−îc truyÒn hay lµ ®−îc nhËn Bit tr¹ng th¸i ®−îc kiÓm ta b»ng phÇn mÒm hoÆc lËp tr×nh ®Ó g©y ra ng¾t. 8051 cã 4 chÕ ®é ho¹t ®éng, viÖc chän chÕ ®é ho¹t ®éng b»ng c¸ch x¸c lËp c¸c bit SM0 vµ SM1 cña thanh ghi SCON. Cã 3 chÕ ®é ho¹t ®éng truyÒn kh«ng ®ång bé, mçi ký tù truyÒn hoÆc nhËn theo tõng khung víi bit start vµ stop t−¬ng tù RS232 cña m¸y vi tÝnh. Cßn chÕ ®é thø 4 ho¹t ®éng nh− 1 thanh ghi dÞch ®¬n gi¶n. a.Thanh ghi dÞch 8 bit (Mode 0). Mode 0 ®−îc chän b»ng c¸ch ghi 0 vµo bit SM0 vµ SM1 cña thanh ghi SCON, x¸c lËp cæng nèi tiÕp ho¹t ®éng nh− thanh ghi dÞch 8 bit. D÷ liÖu vµo vµ ra nèi tiÕp qua RxD vµ TxD theo nhÞp ®ång hå. 8 bit ®−îc truyÒn vµ nhËn víi bit thÊp nhÊt (lest significant :LSB)®−îc truyÒn ®Çu tiªn.Tèc ®é baud ®−îc ®Æt b»ng 1/12 tèc ®é ®ång hå. Trong chÕ ®é nµy ta kh«ng nãi ®Õn RxD vµ TxD. §−êng RxD ®−îc dïng cho c¶ truyÒn vµ nhËn d÷ liÖu cßn ®−êng TxD ®−îc dïng cho tÝn hiÖu clock ViÖc truyÒn d÷ liÖu ®−îc khëi ®Çu b»ng c¸ch ghi d÷ liÖu vµo thanh ghi SBUF, d÷ liÖu ®−îc dÞch ra tõng bit ra ngoµi qua ch©n RxD (P3.0) cïng víi xung ®ång hå ®−îc göi ra ngoµi qua ®−êng TxD (P3.1). Mçi bit ®−îc truyÒn qua RxD trong 1 chu kú m¸y. ViÖc nhËn d÷ liÖu ®−îc khëi ®Çu khi bit cho phÐp nhËn (REN) ®−îc x¸c lËp lªn bit 1 vµ bit RI ph¶i xo¸ vÒ 0. Nguyªn t¾c chung lµ x¸c lËp bit REN lóc b¾t ®Çu ch−¬ng tr×nh ®Ó khëi t¹o c¸c tham sè cña cæng nèi tiÕp vµ xo¸ bit RI ®Ó b¾t ®Çu c«ng viÖc nhËn d÷ liÖu. Khi RI ®−îc xo¸, xung ®ång hå ®−îc ghi ra ch©n TxD, b¾t ®Çu chu kú m¸y tiÕp theo vµ d÷ liÖu ®−îc ®−a vµo ch©n RxD. Mét kh¶ n¨ng cña chÕ ®é thanh ghi dÞch lµ cã thÓ më réng ®−êng ra cña 8051. Thanh ghi dÞch chuyÓn ®ái nèi tiÕp thµnh song song cã thÎ kÕt nèi víi c¸c ®−êng TxD vµ RxD cung cấp thªm 8 ®−êng ra. b. 8 bit UART víi tèc ®é baud cã thÓ thay ®æi ®−îc (mode1). ë mode 1 cæng nèi tiÕp cña 8051 ho¹t ®éng nh− lµ UART 8 bit víi tèc ®é baud cã thÓ thay ®æi ®−îc. UART (Universal Asynchronous Receiver/Transmitter) lµ 1 thiÕt bÞ nhËn vµ truyÒn d÷ liÖu nèi tiÕp, mçi ký tù ®−îc truyÒn b¾t ®Çu b»ng bit start(tr¹ng th¸i thÊp ) sau ®ã

Thái Nguyên 8-2008 83

Page 84: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

lµ c¸c bit d÷ liÖu cña ký tù ®−îc truyÒn, parity bit ®Ó kiÓm tra lçi ®−êng truyÒn vµ cuèi cïng lµ bit stop (tr¹ng th¸i cao). Mét chøc n¨ng quan träng cña UART lµ chuyÓn ®æi d÷ liÖu song song thµnh nèi tiÕp ®Ó truyÒn vµ chuyÓn ®æi nèi tiÕp thµnh song song ®Ó nhËn. Trong mode nµy, 10 bit d÷ liÖu ®−îc truyÒn qua TxD vµ nhËn vµo qua RxD vµ viÖc truyÒn còng t−¬ng tù nh− mode 0, start bit lu«n b»ng 0 sau ®ã ®Õn 8 bit d÷ liÖu (LSB ®Çu tiªn ) vµ cuèi cïng lµ stop bit. Bit TI cña SCON ®−îc lËp b»ng 1 khi bit stop ë ch©n TxD. Trong qu¸ tr×nh nhËn stop bit ®−îc ®−a vµo bit RB8 cña thanh ghi SCON vµ tèc ®é truyÒn ®−îc ®Æt b¬Ø timer1. ViÖc ®ång bé thanh ghi dÞch cña cæng nèi tiÕp ë mode 1, 2, 3 ®−îc ®iÒu khiÓn bëi Counter víi ®Çu ra counter lµ nhÞp ®ång hå ®iÒu khiÓn tèc ®é baud cßn ®Çu vµo cña counter ®−îc chän b»ng phÇn mÒm. c.9 bit UART víi tèc ®é baud cè ®Þnh (mode 2). Mode ®−îc chän b»ng c¸ch ®Æt bit SM1=1 vµ SM0=0, cæng nèi tiÕp cña 8051 sÏ ho¹t ®éng nh− UART 9 bit cã tèc ®é baud cè ®Þnh . 11bit sÏ ®−îc truyÒn vµ nhËn qua TxD vµ RxD : 1 start bit, 9bits d÷ liÖu vµ stop bit. Trong khi truyÒn bit thø 9 sÏ ®−îc ®Æt vµo TB8 cña thanh ghi SCON cßn trong khi nhËn bit thø 9 sÏ ®−îc ®Æt vµo bit RB8. Tèc ®é baud cña mode 2 cã thÓ lµ 1/32 hoÆc 1/64 xung nhÞp ®ång hå. d.9 bit UART víi tèc ®é baud cã thÓ thay ®æi ®−îc (mode 3). Mode 3 t−¬ng tù nh− mode 2 nh−ng tèc ®é baud ®−îc lËp tr×nh vµ ®−îc cung cÊp b»ng timer. Trong thùc tÕ c¶ 3 mode 1, 2, 3 lµ t−¬ng ®−¬ng nhau chØ kh¸c nhau ë chç tèc ®é baud ë mode 2 lµ cè ®Þnh cßn mode 1 vµ mode 3 cã thÓ thay ®æi ®−îc vµ sè l−îng bit d÷ liÖu cña mode 1 lµ 8 bit cßn mode 2 vµ mode 3 lµ 9 bit.

• Cho phÐp nhËn (Receiver enable) Bit cho phÐp nhËn (REN) cña thanh ghi SCON ph¶i ®−îc lËp b»ng phÇn mÒm ®Ó cho phÐp nhËn d÷ liÖu. ViÖc nµy ®−îc tiÕn hµnh lóc b¾t ®Çu ch−¬ng tr×nh khi cæng nèi tiÕp, timer/counter,... ®−îc khëi t¹o. Cã 2 c¸ch x¸c lËp bit nµy: SETB REN hoÆc MOV SCON,#xxx1xxxxb (Trong ®ã x cã thÓ lµ 0 hoÆc 1 tuú theo yªu cÇu cña ch−¬ng tr×nh).

• Cê ng¾t (Interrupt flag) Hai bit RI vµ TI trong thanh ghi SCON ®−îc lËp lªn 1 b»ng phÇn cøng vµ ph¶i ®−îc xo¸ vÒ 0 b»ng phÇn mÒm. RI ®−îc x¸c lËp khi bit cuèi cïng cña d÷ liÖu ®−îc nhËn vµ nã cho biÕt r»ng ®· kÕt thóc truyÒn 1 byte d÷ liÖu (receiver buffer full) nã ®−îc test b»ng ch−¬ng tr×nh ®Ó g©y ra ng¾t. NÕu ch−¬ng tr×nh muèn nhËn d÷ liÖu tõ 1

Thái Nguyên 8-2008 84

Page 85: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

thiÕt bÞ nèi víi cæng nèi tiÕp nã ph¶i chê cho ®Õn khi RI ®−îc lËp sau ®ã xo¸ RI vµ ®äc d÷ liÖu tõ SBUF . VÝ dô: WAIT : JNB RI,WAIT ;test RI vµ chê cho ®Õn khi ®−îc lËp CLR RI ;xo¸ RI MOV A,SBUF ; §äc d÷ liÖu tõ SBUF T−¬ng tù bit TI ®−îc lËp khi bit cuèi cïng cña d÷ liÖu ®−îc truyÒn vµ nã cho biÕt r»ng ®· truyÒn xong (Transmit buffer empty). NÕu ch−¬ng tr×nh muèn göi d÷ liÖu ®Õn thiÕt bÞ nèi qua cæng nèi tiÕp nã ph¶i kiÓm tra xem ký tù tr−íc ®ã ®· göi ch−a, nÕu ch−a göi nã ph¶i chê ®Õn khi göi xong míi ®−îc göi . VÝ dô: WAIT: JNB TI,WAIT ; KiÓm tra vµ chê ®Õn khi TI set CLR TI ; NÕu set th× xo¸ TI MOV SBUF,A ; Göi d÷ liÖu vµo SBUF ®Ó truyÒn.

Hệ vi xử lý sử dụng 8051 có bộ nhớ ngoài

Thái Nguyên 8-2008 85

Page 86: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

CÁC NHÓM LỆNH CỦA 89C51

Tập lệnh của 8051 được chia thành 5 nhóm: - Số học. - Luận lý. - Chuyển dữ liệu. - Chuyển điều khiển. - Rẽ nhánh. Bảng 15. Các chi tiết thiết lập lệnh

Rn Thanh ghi R0 đến R7 của bank thanh ghi được chọn. Data 8 bit địa chỉ vùng dữ liệu bên trong. Nó có thể là vùng RAM dữ

liệu trong (0-127) hoặc các thanh ghi chức năng đặc biệt. @Ri 8 bit vùng RAM dữ liệu trong (0-125) được đánh giá địa chỉ

gián tiếp qua thanh ghi R0 hoặc R1. #data Hằng 8 bit chức trong câu lệnh. #data 16 Hằng 16 bit chứa trong câu lệnh. Addr16 16 bit địa chỉ đích được dùng trong lệnh LCALL và LJMP. Addr11 11 bit địa chỉ đích được dùng trong lệnh LCALL và AJMP. Rel Byte offset 8 bit có dấu được dùng trong lệnh SJMP và những

lệnh nhảy có điều kiện. Bit Bit được định địa chỉ trực tiếp trong RAM dữ liệu nội hoặc các

thanh ghi chức năng đặc biệt.

Nhóm lệnh xử lý số học Bảng 16. Lệnh xử lý số học

ADD A,Rn (1byte 1 chu kỳ máy) : cộng nội dung thanh ghi Rn vào thanh ghi A.

ADD A,data (21): Cộng trực tiếp 1 byte vào thanh ghi A. ADD A,@Ri (11): Cộng gián tiếp nội dung RAM chứa tại địa chỉ được khai

báo trong Ri vào thanh ghi A. ADD A,#data (21): Cộng dữ liệu tức thời vào A. ADD A,Rn (11): Cộng thanh ghi và cờ nhớ vào A.

Thái Nguyên 8-2008 86

Page 87: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

ADD A,data (21): Cộng trực tiếp byte dữ liệu và cờ nhớ vào A. ADDC A,@Ri (11): Cộng gián tiếp nội dung RAM và cờ nhớ vào A. ADDC A,#data

(21): Cộng dữ liệu tức thời và cờ nhớ vào A.

SUBB A,Rn (11): Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và cờ nhớ.

SUBB A,data (21): Trừ trực tiếp A cho một số và cờ nhớ. SUBB A,@Ri (11): Trừ gián tiếp A cho một số và cờ nhớ. SUBB A,#data (21): Trừ nội dung A cho một số tức thời và cờ nhớ. INC A (11): Tăng nội dung thanh ghi A lên 1. INC Rn (11): Tăng nội dung thanh ghi Rn lên 1. INC data (21): Tăng dữ liệu trực tiếp lên 1. INC @Ri (11): Tăng gián tiếp nội dung vùng RAM lên 1. DEC A (11): Giảm nội dung thanh ghi A xuống 1. DEC Rn (11): Giảm nội dung thanh ghi Rn xuống 1. DEC data (21): Giảm dữ liệu trực tiếp xuống 1 DEC @Ri (11): Giảm gián tiếp nội dung vùng RAM xuống 1. INC DPTR (12): Tăng nội dng con trỏ dữ liệu lên 1. MUL AB (14): Nhân nội dung thanh ghi A với nội dung thanh ghi B. DIV AB (14): Chia nội dung thanh ghi A cho nội dung thanh ghi B. DA A (11): hiệu chỉnh thập phân thanh ghi A.

Nhóm lệnh luận lý

Bảng 17. Lệnh luận lý ANL A,Rn (11): AND nội dung thanh ghi A với nội dung thanh ghi Rn. ANL A,data (21): AND nội dung thanh ghi A với dữ liệu trực tiếp. ANL A,@Ri (11): AND nội dung thanh ghi A với dữ liệu gián tiếp trong

RAM. ANL A,#data (21): AND nội dung thanh ghi với dữ liệu tức thời. ANL data,A (21): AND một dữ liệu trực tiếp với A. ANL data,#data

(32): AND một dữ liệu trực tiếp với A một dữ liệu tức thời.

Thái Nguyên 8-2008 87

Page 88: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

ANL C,bit (22): AND cờ nhớ với 1 bit trực tiếp. ANL C,/bit (22): AND cờ nhớ với bù 1 bit trực tiếp. ORL A,Rn (11): OR thanh ghi A với thanh ghi Rn. ORL A,data (21): OR thanh ghi A với một dữ liệu trực tiếp. ORL A,@Ri (11): OR thanh ghi A với một dữ liệu gián tiếp. ORL A,#data (21): OR thanh ghi A với một dữ liệu tức thời. ORL data,A (21): OR một dữ liệu trực tiếp với thanh ghi A. ORL data,#data

(31) :OR một dữ liệu trực tiếp với một dữ liệu tức thời.

ORL C,bit (22): OR cờ nhớ với một bit trực tiếp. ORL C,/bit (22): OR cờ nhớ với bù của một bit trực tiếp. XRL A,Rn (11): XOR thanh ghi A với thanh ghi Rn. XRL A,data (21): XOR thanh ghi A với một dữ liệu trực tiếp. XRL A,@Ri (11): XOR thanh ghi A với một dữ liệu gián tiếp. XRL A,#data (21): XOR thanh ghi A với một dữ liệu tức thời. XRL data,A (21): XOR một dữ liệu trực tiếp với thanh ghi A. XRL data,#data

(31): XOR một dữ liệu trực tiếp với một dữ liệu tức thời.

SETB C (11): Đặt cờ nhớ. SETB bit (21): Đặt một bit trực tiếp. CLR A (11): Xóa thanh ghi A. CLR C (11): Xóa cờ nhớ. CPL A (11): Bù nội dung thanh ghi A. CPL C (11): Bù cờ nhớ. CPL bit (21): Bù một bit trực tiếp. RL A (11): Quay trái nội dung thanh ghi A. RLC A (11): Quay trái nội dung thanh ghi A qua cờ nhớ. RR A (11): Quay phải nội dung thanh ghi A. RRC A (11): Quay phải nội dung thanh ghi A qua cờ nhớ. SWAP (11): Quay trái nội dung thanh ghi A 1 nibble (1/2byte).

Thái Nguyên 8-2008 88

Page 89: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Nhóm lệnh chuyển dữ liệu

Bảng 18. Lệnh chuyển dữ liệu MOV A,Rn (11):Chuyển nội dung thanh ghi Rn vào thanh ghi A. MOV A,data (21): Chuyển dữ liệu trực tiếp vào thanh ghi A. MOV A,@Ri (11): Chuyển dữ liệu gián tiếp vào thanh ghi A. MOV A,#data (21): Chuyển dữ liệu tức thời vào thanh ghi A. MOV Rn,data (22): Chuyển dữ liệu trực tiếp vào thanh ghi Rn. MOV Rn,#data (21): Chuyển dữ liệu tức thời vào thanh ghi Rn. MOV data,A (21): Chuyển nội dung thanh ghi A vào một dữ liệu trực

tiếp. MOV data,Rn (22): Chuyển nội dung thanh ghi Rn vào một dữ liệu trực

tiếp. MOV data,data (32): Chuyển một dữ liệu trực tiếp vào một dữ liệu trực tiếp. MOV data,@Ri (22): Chuyển một dữ liệu gián tiếp vào một dữ liệu gián

tiếp. MOV data,#data (32): Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp. MOV @Ri,A (11): Chuyển nội dung thanh ghi A vào một dữ liệu gián

tiếp. MOV @Ri,data (22): Chuyển một dữ liệu trực tiếp vào một dữ liệu gián tiếp. MOV @Ri,#data (21): Chuyển dữ liệu tức thời vào dữ liệu gián tiếp. MOV DPTR,#data

(32): Chuyển một hằng 16 bit vào thanh ghi con trỏ dữ liệu.

MOV C,bit (21): Chuyển một bit trực tiếp vào cờ nhớ. MOV bit,C (22): Chuyển cờ nhớ vào một bit trực tiếp. MOV A,@A+DPTR

(12): Chuyển byte bộ nhớ chương trình có địa chỉ là@A+DPRTvào thanh ghi A.

MOVC A,@A+PC

(12): Chuyển byte bộ nhớ chương trình có địa chỉ là @A+PC vào thanh ghi A.

MOVX A,@Ri (12): Chuyển dữ liệu ngoài (8 bit địa chỉ) vào thanh ghi A. MOVX A,@DPTR

(12): Chuyển dữ liệu ngoài (16 bit địa chỉ) vào thanh ghi A.

MOVX @Ri,A (12): Chuyển nội dung A ra dữ liệu ngoài (8 bit địa chỉ).

Thái Nguyên 8-2008 89

Page 90: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

MOVX @DPTR,A

(12): Chuyển nội dung A ra dữ liệu bên ngoài (16 bit địa chỉ).

PUSH data (22): Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP. POP data (22): Chuyển dữ liệu trực tiếp vào ngăn xếp và giảm SP. XCH A,Rn (11): Trao đổi dữ liệu giữa thanh ghi Rn v2 thanh ghi A. XCH A,data (21): Trao đổi giữa thanh ghi A và một dữ liệu trực tiếp. XCH A,@Ri (11): Trao đổi giữa thanh ghi A và một dữ liệu gián tiếp. XCHD A,@R (11): Trao đổi giữa nibble thấp (LSN) của thanh ghi A và

LSN của dữ liệu gián tiếp.

Nhóm lệnh chuyền điều khiển Bảng 19. Lệnh chuyển điều khiển

ACALL addr11 (22): Gọi chương trình con dùng địa chì tuyệt đối. LCALL addr16 (32): Gọi chương trình con dùng địa chỉ dài. RET (12): Trở về từ lệnh gọi chương trình con. RETI (12): Trở về từ lệnh gọi ngắt. AJMP addr11 (22): Nhảy tuyệt đối. LJMP addr16 (32): Nhảy dài. SJMP rel (22):Nhảy ngắn. JMP @A+DPTR (12): Nhảy gián tiếp từ con trỏ dữ liệu. JZ rel (22): Nhảy nếu A=0. JNZ rel (22): Nhảy nếu A không bằng 0. JC rel (22): Nhảy nếu cờ nhớ được đặt. JNC rel (22): Nhảy nếu cờ nhớ không được đặt. JB bit,rel (32): Nhảy tương đối nếu bit trực tiếp được đặt. JNB bit,rel (32):Nhảy tương đối nếu bit trực tiếp không được đặt. JBC bit,rel (32): Nhảy tương đối nếu bit trực tiếp được đặt, rồi xóa bit. CJNE A,data,rel (32): So sánh dữ liệu trực tiếp với A và nhảy nếu không

bằng. CJNE A,#data,rel (32): So sánh dữ liệu tức thời với A và nhảy nếu không

bằng. CJNE (32): So sánh dữ liệu tức thời với nội dung thanh ghi Rn và

Thái Nguyên 8-2008 90

Page 91: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Rn,#data,rel nhảy nếu không bằng. CJNE @Ri,#data,rel

(32): So sánh dữ liệu tức thời với dữ liệu gián tiếp và nhảy nếu không bằng.

DJNZ Rn,rel (22): Giảm thanh ghi Rn và nhảy nếu không bằng. DJNZ data (32): Giảm dữ liệu trực tiếp và nhảy nếu không bằng.

Các lệnh rẽ nhánh

Có nhiều lệnh để điều khiển lên chương trình bao gồm việc gọi hoặc trả lại từ chương trình con hoặc chia nhánh có điều kiện hay không có điều kiện. Tất cả các lệnh rẽ nhánh đều không ảnh hưởng đến cờ. Ta có thể định nhảy đến nơi cần nhảy mà không cần đưa rõ địa chỉ, trình biên dịch sẽ đặt địa chỉ nơi cần nhảy tới vào đúng khẩu lệnh đã đưa ra. Bảng 20. Lệnh nhảy có điều kiện

<condition> Jump_if_not<condition> Jump_if <condition> C=1 JNC rel JC rel Bit=1 JNB bit,rel JB bit,rel/JNC bit,rel A=0 JNZ rel JZ rel Rn=0 DJNZ Rn,rel Direct=0 DJNZ direct,rel A direct CJNE A,direct,rel A#data CJNE A,#data,rel Rn#data CJNE Rn,#data,rel @Ri#data CJNE @Ri,#data,rel

Nhảy không có điều kiện a. Cấu trúc “repeat… until”

Repeat <action> Until <condition>

Ngôn ngữ Assembly: LOOP: <action>

Thái Nguyên 8-2008 91

Page 92: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

JUMP_if_not_<condition>,LOOP

b. Cấu trúc “while… do” while <condition> do <action>

Ngôn ngữ Assembly: LOOP: JUMP_if_not_<condition>,DO SJMP STOP DO: <action> SJMP LOOP STOP: ...

c. Cấu trúc “if… then… else” if <condition> then <action 1> else <action 2>

Ngôn ngữ Assembly JUMP_if_not_<condition>,ELSE <action 1> SJMP DONE ELSE: <action 2> DONE: ...

d. Cấu trúc “case… of…” case P1 of #11111110b: P2.0 = 1 #11111101b: P2.1 = 1 #11111011b: P2.2 = 1 else P2 = 0 end

Ngôn ngữ Assembly CJNE P1,#11111110b, SKIP1 SETB P2.0

Thái Nguyên 8-2008 92

Page 93: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

SJMP EXIT SKIP1: CJNE P1,#11111101b,SKIP2 SETB P2.1 SJMP EXIT SKIP2: CJNE P1,#11111011b,SKIP3 SETB P2.2 SJMP EXIT SKIP3: MOV P2,#0 EXIT: ...

Sau đây là sự tóm tắt từng hoạt động của lệnh nhảy. JC rel : Nhảy đến “rel” nếu cờ Carry C = 1. JNC rel : Nhảy đến “rel” nếu cờ Carry C = 0. JB bit, rel : Nhảy đến “rel” nếu (bit) = 1. JNB bit, rel : Nhảy đến “rel” nếu (bit) = 0. JBC bit, rel : Nhảy đến “rel” nếu bit = 1 và xóa bit. ACALL addr11 : Lệnh gọi tuyệt đối trong page 2K. (PC) (PC) + 2 (SP) (SP) + 1 ((SP)) (PC7PC0) (SP) (SP) + 1 ((SP)) (PC15PC8) (PC10PC0) page Address. LCALL addr16 : Lệnh gọi dài chương trình con trong 64K. (PC) (PC) + 3 (SP) (SP) + 1 ((SP)) (PC7PC0) (SP) (SP) + 1 ((SP)) (PC15PC8) (PC) Addr15Addr0. RET : Kết thúc chương trình con trở về chương trình chính. (PC15PC8) (SP) (SP) (SP) - 1 (PC7PC0) ((SP))

Thái Nguyên 8-2008 93

Page 94: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

(SP) (SP) -1. RETI : Kết thúc thủ tục phục vụ ngắt quay về chương trình chính

hoạt động tương tự như RET. AJMP Addr11 : Nhảy tuyệt đối không điều kiện trong 2K. (PC) (PC) + 2

(PC10PC0) page Address. LJMP Addr16 : Nhảy dài không điều kiện trong 64K

Hoạt động tương tự lệnh LCALL. SJMP rel :Nhảy ngắn không điều kiện trong (-128 127) byte

(PC) (PC) + 2 (PC) (PC) + byte 2

JMP @ A + DPTR : Nhảy không điều kiện đến địa chỉ (A) + (DPTR) (PC) (A) + (DPTR)

JZ rel : Nhảy đến A = 0. Thực hành lệh kế nếu A = 0. (PC) (PC) + 2 (A) = 0 (PC) (PC) + byte 2

JNZ rel : Nhảy đến A 0. Thực hành lệnh kế nếu A = 0. (PC) (PC) + 2 < > 0 (PC) (PC) + byte 2

CJNE A, direct, rel : So sánh và nhảy đến A direct (PC) (PC) + 3 (A) < > (direct) (PC) (PC) + Relative Address. (A) < (direct) C = 1 (A) > (direct) C = 0 (A) = (direct). Thực hành lệnh kế tiếp

CJNE A, # data, rel : Tương tự lệnh CJNE A, direct, rel. CJNE Rn, # data, rel : Tương tự lệnh CJNE A, direct, rel. CJNE @ Ri, # data, rel : Tương tự lệnh CJNE A, direct, rel. DJNE Rn, rel : Giảm Rn và nhảy nếu Rn 0.

(PC) (PC) + 2 (Rn) (Rn) -1 (Rn) < > 0 (PC) (PC) + byte 2.

DJNZ direct, rel : Tương tự lệnh DJNZ Rn, rel.

Thái Nguyên 8-2008 94

Page 95: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Các lệnh dịch chuyển dữ liệu Các lệnh dịch chuyển dữ liệu trong những vùng nhớ nội thực thi 1 hoặc 2 chu

kỳ máy. Mẫu lệnh MOV <destination>, <source> cho phép di chuyển dữ liệu bất kỳ 2 vùng nhớ nào của RAM nội hoặc các vùng nhớ của các thanh ghi chức năng đặc biệt mà không thông qua thanh ghi A.

Vùng Ngăn xếp của 8951 chỉ chứa 128 byte RAM nội, nếu con trỏ ngăn xếp SP được tăng quá địa chỉ 7FH thì các byte được PUSH vào sẽ mất đi và các byte POP ra thì không biết rõ.

Các lệnh dịch chuyển bộ nhớ nội và bộ nhớ ngoại dùng sự định vị gián tiếp. Địa chỉ gián tiếp có thể dùng địa chỉ 1 byte (@ Ri) hoặc địa chỉ 2 byte (@ DPTR). Tất cả các lệnh dịch chuyển hoạt động trên toàn bộ nhớ ngoài thực thi trong 2 chu kỳ máy và dùng thanh ghi A làm toán hạng DESTINATION.

Việc đọc và ghi RAM ngoài (RD và WR) chỉ tích cực trong suốt quá trình thực thi của lệnh MOVX, còn bình thường RD và WR không tích cực (mức 1). Tất cả các lệnh dịch chuyển đều không ảnh hưởng đến cờ. Hoạt động của từng lệnh được tóm tắt như sau:

PUSH direct : Cất dữ liệu vào ngăn xếp (SP) (SP) + 1 (SP) (Drirect) POP direct : Lấy từ ngăn xếp ra direct

(direct) ((SP)) (SP) (SP) - 1

XCH A, Rn : Đổi chổ nội dung của A với Rn (A) (Rn)

XCH A, direct : (A) (direct) XCH A, @ Ri : (A) ((Ri)) XCHD A, @ Ri : Đổi chổ 4 bit thấp của (A) với ((Ri))

(A3A0) ((Ri3Ri0))

Các lệnh xen vào (MiCSellamous Intstruction): NOP : Không hoạt động gì cả, chỉ tốn 1 byte và 1 chu kỳ máy. Ta dùng để

delay những khoảng thời gian nhỏ.

Thái Nguyên 8-2008 95

Page 96: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

3.5 Vi ®iÒu khiÓn thÕ hÖ míi AVR

3.5.1. Giíi thiÖu chung vÒ AVR Vi điều khiển AVR là sản phẩm của công ty Atmel (Hoa kỳ), là một bộ xử lý có kiến trúc kiểu Harvard: có bộ nhớ chương trình và một bộ nhớ dữ liệu tách biệt. Bộ vi điều khiển AVR có nhiều khả năng mới để giảm năng lượng tiêu thụ. Đây là một trong những ưư điểm lớn của họ vi điều khiển này. Sau đây là một số đặc điểm, tính năng kỹ thuật của AVR Atmega 16.

- Atmega 16 là vi điều khiển 8 bit- có 32 thanh ghi đa năng 8 bit. - Tốc độ vi xử lý lên đến 8 triệu lệnh trên 1 giây ở tần số 8 MHz. Có nghĩa là 1 chu kì máy dùng 1 chu kì thạch anh. - Bộ nhớ flash 16 kbyte lập trình được ngay trên hệ thống, chịu được 10000 chu kì viết xoá.

- Bộ nhớ SRAM 1 kbyte - Bộ nhớ EEPROM 512Byte lập trình được ngay trên hệ thống, chịu được 100.000 chu kì viết xoá. - Lập trình khoá để bảo mật dữ liệu trong bộ nhớ chương trình flash và EEPROM. + Các tính năng ngoại vi:

- Bộ định thời /đếm 8 bit với bộ chia tần riêng. - Một bộ định thời /đếm 16 bit với bộ chia tần riêng, chế độ so sánh tín hiệu. Chế độ bắt tín hiệu và bộ điều biến độ rộng xung PWM kép 8,9,10 bit.

- Bộ so sánh tương tự có sẵn trên chíp. - Bộ định thời Watchdog lập trình được có sẵn trên chíp . - UART nối tiếp lập trình đựơc - Giao tiếp bus I2C - Giao tiếp SPI

Các tính năng đặc biệt của AVR ATMega16: - Chế độ tiêu thụ ít năng lương và giảm năng lượng tiêu thụ

- Các nguồn ngắt trong và ngoài. + Các đặc tính :

- Công nghệ xử lý CMOS tốc độ cao, tiêu thụ ít năng lương. - Hoạt động tĩnh hoàn toàn.

- Mức tiêu thụ năng lượng ở 4MHz, 3V, 25 độ C : - Chế độ hoạt đọng tích cực : 3,0mA - Chế độ chờ: 1,0 mA - Chế độ làm giảm năng lượng tiêu thụ : < 1uA

Thái Nguyên 8-2008 96

Page 97: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

- Vào ra và cách đóng vỏ :

- 32 chân vào ra lập trình được được đóng vỏ PDIP 40 chân - Điện áp nguồn nuôi : 2,7 V -> 6 V

Sơ đồ chân và chức năng các chân của vi diều khiển AVR ATMEGA 16

+ ATMega16 đóng gói dạng PDIP 40 chân. Trong đó có 32 chân I/O (in

put/ out put) chia thành 4 Port: A,B,C,D; 4 chân nguồn, 2 chân dao động, 1 chân Reset, 1chân AREF. Mỗi một chân có thể đảm nhận nhiều vai trò. Cụ thể như sau:

1. Chân số 1: có vai trò - Chân IO số 0 port B- PB0

- Chân đầu vào bộ đếm couter của timer 0-T0 2. Chân số 2: có vai trò

- Chân IO số 2 port B- PB1 - Chân đầu vào bộ đếm couter của timer 1-T1

3. Chân số 3: có vai trò - Chân IO số 3 port B- PB2

- Chân ngắt ngoài 2 –INT2 4. Chân số 4: có vai trò

- Chân IO số 4 port B- PB3

Thái Nguyên 8-2008 97

Page 98: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

- Chân đầu ra điều chế độ rộng xung PWM của Timer0 -OCO0

5. Chân số 5: có vai trò - Chân IO số 5 port B- PB4

- Chân chọn con slave trong chuẩn SPI -SS 6. Chân số 6: có vai trò

- Chân IO số 6 port B- PB5 - Chân xuất data nếu là Master, nhận data nếu là Slave trong SPI

7. Chân số 7: có vai trò - Chân IO số 7 port B- PB6

- Chân xuất data nếu là Slave, nhận data nếu là Master trong SPI 8. Chân số 8: có vai trò

- Chân IO số 8 port B- PB7 - Chân xuất clock trong SPI

9. Chân số 9: có vai trò đầu vào reset của Avr 10. Chân số 10: có vai trò cấp nguồn VCC 5v 11. Chân số 11: có vai trò cấp nguồn GND 0v 12. Chân số 12: chân dao động, nối với thạnh anh 13. Chân số 13: chân dao động, nối với thạnh anh 14. Chân số 14: có vai trò

- Chân IO số 1 port D- PD0 - Chân nhận data theo chuẩn RS232

15. Chân số 15: có vai trò - Chân IO số 2 port D- PD1

- Chân xuất data theo chuẩn RS232 16. Chân số 16: có vai trò

- Chân IO số 3 port D- PD2 - Chân ngắt ngoài 0–INT0

17. Chân số 17: có vai trò - Chân IO số 4 port D- PD3

- Chân ngắt ngoài 1–INT1 18. Chân số 18: có vai trò

- Chân IO số 5 port D- PD4 - Chân đầu ra điều chế độ rộng xung PWM của Timer1 –OCO1B

19. Chân số 19: có vai trò - Chân IO số 6 port D- PD5

- Chân đầu ra điều chế độ rộng xung PWM của Timer1 –OCO1A

Thái Nguyên 8-2008 98

Page 99: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

20. Chân số 20: có vai trò

- Chân IO số 7 port D- PD6 21. Chân số 21: có vai trò

- Chân IO số 8 port D- PD7 - Chân đầu ra điều chế độ rộng xung PWM của Timer2 –OCO2

22. Chân số 22: có vai trò - Chân IO số 1 port C- PC0

- Chân xuất Clock theo chuẩn I2C-SCL 23. Chân số 23: có vai trò

- Chân IO số 2 port C- PC1 - Chân xuất Data theo chuẩn I2C-SDA

24. Chân số 24: có vai trò - Chân IO số 3 port C- PC2

25. Chân số 25: có vai trò - Chân IO số 4 port C- PC3

26. Chân số 26: có vai trò - Chân IO số 5 port C- PC4

27. Chân số 27: có vai trò - Chân IO số 6 port C- PC5

28. Chân số 28: có vai trò - Chân IO số 7 port C- PC6

29. Chân số 29: có vai trò - Chân IO số 8 port C- PC7

30. Chân số 30: có vai trò cấp điện áp VCC 5v 31. Chân số 31: có vai trò cấp điện áp GND 0v 32. Chân số 33: có vai trò

- Chân IO số 8 port C- PC7 - Chân chuyển đổi ADC 7

33. Chân số 34: có vai trò - Chân IO số 7 port C- PC6 - Chân chuyển đổi ADC 6

34. Chân số 35: có vai trò - Chân IO số 6 port C- PC5 - Chân chuyển đổi ADC 5

35. Chân số 36: có vai trò - Chân IO số 5 port C- PC4

Thái Nguyên 8-2008 99

Page 100: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

- Chân chuyển đổi ADC 4

36. Chân số 37: có vai trò - Chân IO số 4 port C- PC3 - Chân chuyển đổi ADC 3

37. Chân số 38: có vai trò - Chân IO số 3 port C- PC2 - Chân chuyển đổi ADC 2

38. Chân số 39: có vai trò - Chân IO số 2 port C- PC1 - Chân chuyển đổi ADC 1

39. Chân số 40: có vai trò - Chân IO số 1 port C- PC0 - Chân chuyển đổi ADC 0

-------------------------------------------------------------------------------------------------- Bộ nhớ chương trình là loại bộ nhớ flash. Dung lượng của bộ nhớ này thay đổi khác nhau giữa các bộ xử lý trong cùng họ. Bộ nhớ này được truy nhập theo từng chu kì đồng hồ, và một lệnh được nạp vào thanh ghi lệnh. Thanh ghi lệnh nối với tệp thanh ghi bằng cách lựa chọn xem thanh ghi nào được ALU sử dụng để thực thi lệnh

+ Cấu trúc bộ nhớ: cũng như mọi vi điều khiển khác AVR có cấu trúc Harvard tức là có bộ nhớ và đường bus riêng cho bộ nhớ chương trình và bộ nhớ dữ liệu.

+ Sơ đồ bộ nhớ: ta thấy không gian bộ nhớ của bộ nhớ chương trình gồm 16Kbyte và có địa chỉ đánh từ 0000H tới 2FFFH. Bộ nhớ dữ liệu gồm hai phần :bộ nhớ RAM và bộ nhớ EEPROM trong đó không gian bộ nhớ RAM lại chia làm 3 phần: Các thanh ghi chức năng chung,các thanh ghi vào ra và cuối cùng là 512 byte bộ nhớ SRAM. Bộ nhớ EEPROM mặc dù cùng là một phần của bộ nhớ dữ liệu nhưng lại hoàn toàn đứng độc lập như một bộ nhớ độc lập và cũng được đánh địa chỉ riêng.

+ Bộ nhớ dữ liệu: các thanh ghi chức năng chung: AVR có 32 thanh ghi chức năng chung và chúng được liên kết trực tiếp với ALU đây là điểm khác biệt của AVR và tạo cho nó một tốc độ xử lý cực cao.Các thanh ghi được đặt tên từ R0 tới R31.Và đặc biệt cặp 6 thanh ghi cuối (từ R6 tới R31) từng đôi một tao thành các thanh ghi 16 bit sử dụng làm con trỏ trỏ tới bộ nhớ chương trình và dữ liệu. Chúng lần lượt có tên là X,Y,Z. Không gian các thanh ghi cổng vào ra bao gồm cá thanh ghi dữ liệu và thanh ghi điều khiển cho cổng vào ra. Cuối cùng là bộ nhớ SRAM.

+ Bộ nhớ chương trình: với bộ nhớ chương trình có địa chỉ từ 0000H tới 0010H được giành cho bảng véc tơ ngắt.Cụ thể như sau:

Thái Nguyên 8-2008 100

Page 101: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

$0000 RESET Khởi động lại hệ thống $001 INT0 Ngắt ngoài 0 $002 INT1 Ngắt ngoài 1 $003 TIMER2 COMP bộ so sánh timer2 $004 TIMER2 over Tràn bộ đếm/định thời 2 $005 TIMER1 CAPT $006 …………….. $011 Hết véc tơ ngắt. + Các thanh ghi chức năng đặc biệt: bao gồm các thanh ghi dữ liệu và các

thanh ghi điều khiển các cổng vào ra.Chúng có thể truy nhập được bằng 2 cách: bằng địa chỉ trực tiếp hoặc ta có thể truy nhập gián tiếp chúng thông qua thanh ghi X,Y,Z. Ở đây chỉ giới thiệu về thanh ghi rất đặc biệt mà thôi

- Status Register (SREG): đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép tính số học và logic.

- C (Carry Flag): cờ nhớ (Nếu phép toán có nhớ cờ sẽ được thiết lập) - Z (Zero Flag) : Cờ zero (Nếu kết quả phép toán bằng 0) - N (Negative Flag): cờ dấu (Nếu kết quả của phép toán là âm) - H (Half Carry Flag): Được sử dụng trong một số toán hạng - T (Transfer bit used by BLD and BST instructions): được sử dụng làm nơi chung gian trong các lệnh BLD,BST. - I (Global Interrupt Enable/Disable Flag): là bit cho phép toàn cục ngắt. Bit này ở trang thái logic 0 thì không có một ngắt nào được phục vụ. - Rd: Thanh ghi đích (một trong 32 các thanh ghi chức năng chung) - Rr: Thanh ghi nguồn (Một trong 32 thanh ghi chức năng chung) - R: Kết quả sau khi lệnh chạy. - K: Hằng số dữ liệu - k: Hằng số địa chỉ (Có thể là một nhón hoặc một địa chỉ cụ thể) - b: Bit trong thanh ghi chức năng chung hoặc trong thanh ghi chức năng đặc biệt (0-7). - s: Bit trong thanh ghi trạng thái (0-7). - X,Y,Z: Thanh ghi địa chỉ (Để trỏ tới địa chỉ trong RAM, hoặc Z có thể trỏ tới địa chỉ trong ROM). (X=R27:R26, Y=R29:R28 and Z=R31:R30) - A: I/O location address - q : Chỉ số cho các địa chỉ trực tiếp (0-63).

Thái Nguyên 8-2008 101

Page 102: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

- Stack: Ngăn xếp. STACK: Là nơi lưu giữ con trỏ PC cho các chương trình

con và các trình phục vụ ngắt. (Cụ thể là một vùng nhớ có tính năng “vào sau ra trước”) - SP: Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức năng đặc biệt 8 bit. Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E (Trong bộ nhớ RAM là $5E). Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp. Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vào ngăn xếp trong khi con trỏ ngăng xếp giảm hai vị trí. Và con trỏ ngăn xếp sẽ giảm 1 khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2.

Hệ vi xử lý đơn giản sử dụng AVR

Thái Nguyên 8-2008 102

Page 103: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

3.5.2. Bus I2C vµ SPI

Hai loại giao diện truyền tin cho phép truyền tin với khối lượng lớn, tốc độ cao I2C:

I²C - Inter-Intergrated Circui, là bus truyền tin nối tiếp được phát triển bởi hãng sản xuất linh kiện điện tử Philips. Ban đầu, loại bus này chỉ được dùng trong các linh kiện điện tử của Philip. Sau đó, do tính ưu việt và đơn giản của nó, I²C đã được chuẩn hóa và được dùng rộng rãi trong các mô đun truyền thông nối tiếp của vi mạch tích hợp ngày nay. Cấu tạo và nguyên lý hoạt động: I²C sử dụng hai đường truyền tín hiệu: một đường xung nhịp đồng hồ và một đường dữ liệu. Đường dữ liệu luôn được kéo lên nguồn bằng một điện trở kéo lên có giá trị xấp xỉ 4,7 KOhm. Các chế độ hoạt động của I²C bao gồm:

• Chế độ chuẩn (standard mode) hoạt động ở tốc độ 100 Kbit/s. • Chế độ tốc độ thấp (low-speed mode) hoạt động ở tốc độ 10 Kbit/s.

Tần số xung nhịp đồng hồ có thể xuống 0 Hz. I²C sử dụng 7 bit để định địa chỉ, do đó trên một bus có thể định địa chỉ tới 112 nút, 16 địa chỉ còn lại được sử dụng vào mục đích riêng. Điểm mạnh của I²C chính là hiệu suất và sự đơn giản của nó: một khối điều khiển trung tâm có thể điều khiển cả một mạng thiết bị mà chỉ cần hai lối ra điều khiển. I²C được dùng trong các khối truyền thông nối tiếp của vi điều khiển.

SPI (Serial Peripheral Interface): SPI là một giao diện đơn giản có thể truyền tin giữa vi điều khiển và các chip ngoại vi hoặc liên lạc giữa hai hay nhiều vi điều khiển. Bus SPI thỉnh thoảng còn được gọi là giao diện nối bốn (called four wire interface) có thể được sử dụng với các chip hoặc các thiết bị như: LCD, sensors, bộ nhớ, ADC, RTC. Phạm vi sử dụng rất rộng. Bus SPI sử dụng giao thức truyền đồng bộ, trong đó việc truyền và nhận được chỉ đạo (guided) bởi xung nhịp đồng hồ được phát sinh bởi vi điều khiển master. Giao diện SPI cho phép nối một vài thiết bị SPI trong khi master lựa chọn mỗi một trong chúng bằng tín hiệu tác động ở mức thấp CS (Chip Select). bus SPI gồm 4 dây nối tín hiệu:

Master Out Slave In (MOSI), Master In Slave Out (MISO), Serial Clock (SCLK or SCK)

Chip Select (CS) cho ngoại vi + Một số vi điều khiển có một chip chuyên

dụng dùng cho giao diện SPI gọi là

Thái Nguyên 8-2008 103

Page 104: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Slave Select (SS).

+ Tín hiệu MOSI được phát sinh bởi master – recipient là Slave. MOSI cũng có thể được gán cho là SI hoặc SDI.

+ Các tín hiệu MISO được sinh ra bởi slave. Trong một số chip chúng ta có thể tìm thấy các nhãn là SO hoặc SDO.

+ SCLK hoặc SCK được sinh ra bởi master với việc truyền dữ liệu đồng bộ. + Tín hiệu CS (SS) cũng được sinh ra bởi master với lựa chọn chip slave hoặc

thiết bị. Data transfer is organized by using Shift register in both: master and slave. While master shifts register value out through MOSI line then slave shifts data in to its shift register. If there is full duplex used, then send and receive is performed at the same time:

There also is multiple byte stream mode available with SPI bus interface. In this mode master can shift bytes continuously. Using this type of transfer slave select (SS) must remain low until all stream process continues. For example you can write to memory by sending address bytes and then data in the same stream operation. In this way kilobytes or more can be sent using multiple byte transfer mode.

Daisy-chained mode

Some chips have ability when you can connect multiple SPI devices in series and data can be transferred to all devices though other. For instance if you connect three devices to microcontroller in series MCU-A-B-C, then MCU will have to send three bytes of information. The first byte goes to C device, second to B and third byte to A:

Daisy-chain won’t work with devices which support or require multiple bytes operation (memory chips).

For instance AD8403 - 4-Channel Digital Potentiometer can be connected in daisy-chain circuit:

Thái Nguyên 8-2008 104

Page 105: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Depending on Clock (SKC) polarity, there may be four operation modes of SPI:

Low clock polarity – when clock is low in idle and toggles in high;

High clock polarity – when clock is high in idle and toggles in low stage;

Clock phase zero – MOSI and MISO outputs are valid on rising edge of clock signal (from low to high);

Clock phase one – MOSI and MISO outputs are valid on falling edge of SCK signal (high to low)

SM Bus: 3.5.3. AVR 90S8535

Học sinh gặp giáo viên hoặc liên hệ qua e-mail ([email protected]) để nhận tài liệu tham khảo về AVR 90S8535 và viết báo cáo về vi điều khiển này. 3.6 C¸c hÖ thèng trªn mét chip cã kh¶ n¨ng t¸i cÊu h×nh (SoC)

3.6..1 SoC lµ g×? Hệ thống trên một vi mạch (trong tiếng Anh gọi là system-on-a-chip, viết tắt là SoC hay SOC) là một hệ thống điện tử được xây dựng trên một đế silicon với ý tưởng ban đầu là tích hợp tất cả các thành phần của một hệ thống máy tính lên trên một vi mạch đơn (hay còn gọi là một chip đơn). Hệ thống SoC này có thể bao gồm các khối chức năng số, tương tự, tín hiệu kết hợp (mixed-signal) và cả các khối tần số radio (RF). Ứng dụng điển hình của các hệ thống trên một vi mạch là các hệ thống nhúng. Hệ thống trên một vi mạch đôi khi còn được gọi là hệ thống đơn chip hay hệ thống "sốc" (SoC). Một hệ thống máy tính điển hình bao gồm một loạt các mạch tích hợp cho phép thực hiện các nhiệm vụ khác nhau. Các mạch tích hợp này có thể là:

• bộ vi xử lý (microprocessor). • bộ nhớ (RAM, ROM). • khối truyền thông nối tiếp UART. • các cổng song song. • khối điều khiển truy xuất bộ nhớ trực tiếp (DMA controller).

Thái Nguyên 8-2008 105

Page 106: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Sự phát triển gần đây của công nghệ bán dẫn cho phép chúng ta tích hợp ngày càng nhiều thành phần vào một hệ thống trên một vi mạch. SoC có thể tích hợp thêm các khối như: bộ xử lý tín hiệu số, bộ mã hóa, giải mã Viterbi, Turbo,... tùy theo yêu cầu của từng ứng dụng cụ thể. Công nghệ thiết kế và xây dựng các hệ thống trên một vi mạch (SoC) có thể kể đến như: + Công nghệ chế tạo ASIC - Application Specific Integrated Circuit víi c¸c hä

chÝnh lµ d¶i cæng lËp tr×nh ®−îc d¹ng tr−êng FPGA-Field Programmable Gate

array, vµ c¸c linh kiÖn logic lËp tr×nh ®−îc PLD -Programmable Logic Device [1]. HiÖn cã hai h·ng næi tiÕng cung cÊp c¸c thiÕt bÞ, chip tr¾ng vµ phÇn mÒm ASIC lµ ALTERA vµ XILINX cña Hoa Kú.

+ C«ng nghÖ CSoC: Trong sè c¸c h·ng cung cÊp c«ng nghÖ nµy th× h·ng Cypress MicroSystems víi c¸c chip PSoC cho tiÒm n¨ng lín trong c¸c gi¶i ph¸p øng dông ®o l−êng vµ ®iÒu khiÓn [2].

Các thiết kế SoC thường tiêu tốn ít năng lượng và có giá thành thấp hơn các hệ thống đa chip nếu so sánh cùng một thiết kế. Ngoài ra, hệ thống đơn chip cũng có tính ổn định cao hơn. Các ứng dụng xây dựng trên cơ sở sử dụng các hệ thống đơn chip cũng cho giá thành thấp hơn, không gian chiếm chỗ ít hơn. Trên thế giới, sự phát triển của máy tính (PC) đã chuyển sang giai đoạn thứ 3 - giai đoạn của môi trường thông minh mà hệ thống nhúng là cốt lõi (còn gọi là giai đoạn hậu PC - Internet). Năm 1960 - 1980 là giai đoạn phát triển của máy tính lớn (mainframe); 1980 - 2000: PC - Internet phát triển; dự đoán từ 2000 - 2020: giai đoạn của môi trường thông minh với cốt lõi là hệ thống nhúng (gọi tắt là giai đoạn hậu PC - Internet). Phát triển hệ nhúng và phần mềm (SW) nhúng đang là quốc sách của nhiều quốc gia và VN cũng cần quan tâm trước bài toán cạnh tranh trong tiến trình hội nhập. Hàn Quốc có những dự án lớn nhằm phát triển công nghệ SW nhúng như các thiết bị gia dụng nối mạng Internet, hệ thống SW nhúng phát triển thành phố thông minh. Phần Lan, Mỹ có những chính sách quốc gia tích cực cho việc nghiên cứu phát triển các hệ nhúng, đặc biệt là PM nhúng. Hầu hết những quốc gia này đều lập nhiều viện nghiên cứu và trung tâm phát triển các hệ nhúng. Thiết bị ngày nay phải có nhiều chức năng, thân thiện với người dùng, đặc biệt gia tăng “độ thông minh”. Đó chính là lý do xuất hiện các loại điện thoại di động tích hợp nhiều tính năng, các mẫu người máy (robot) ngày càng gần giống người thật. Chính điều này cần đến vai trò của các hệ thống nhúng. Hệ thống nhúng hiểu một

Thái Nguyên 8-2008 106

Page 107: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

cách nôm na là hệ tính toán nhúng vào một sản phẩm để thực hiện một số chức năng cụ thể. Quanh ta có rất nhiều sản phẩm nhúng như lò vi sóng, nồi cơm điện, điều hòa, điện thoại di động... Các thiết bị này ngoài chức năng truyền thống (như lâu nay chúng ta vẫn biết) còn được tích hợp nhiều tính năng mới thông qua hệ điều khiển nhúng, chẳng hạn như lò vi sóng có khả năng điều khiển bằng giọng nói, điều khiển thông qua điện thoại di động... Lâu nay chúng ta mới nhìn thấy bề nổi của CNTT là PC và Internet, còn phần chìm của CNTT chiếm đến 99% bộ xử lý trên toàn cầu nằm trong các hệ thống nhúng thì ít được biết đến [Phạm Thượng Cát, Hệ thống nhúng và thời kỳ hậu máy tính Tạp chí tự động hoá ngày nay, 2005] . Các thống kê cho biết, số chip vi xử lý ở trong máy tính (PC) và server, các mạng LAN và Internet chỉ chiếm khoảng 1% tổng số chip vi xử lý có trên thế giới. Rõ ràng, CNTT không chỉ đơn thuần là PC, mạng LAN, WAN, Internet, PM quản lý như nhiều người thường nghĩ mà còn là ứng dụng của hệ nhúng. Vai trò của SW trong PC và các thiết bị nhúng có những nét khác biệt. Đối với PC và mạng Internet, chức năng xử lý được phát triển mạnh ở lĩnh vực quản lý và dịch vụ như thương mại điện tử, ngân hàng điện tử, chính phủ điện tử, thư điện tử, đào tạo từ xa, báo điện tử... Các ứng dụng này chạy trên PC, mạng WAN, LAN. Còn đối với hệ nhúng, chức năng xử lý, tính toán của SW ứng dụng cho các thiết bị vật lý như điện thoại di động, thiết bị gia dụng, các thiết bị điện tử cầm tay, thiết bị y tế, ô tô... Lâu nay, chính sách phát triển cũng như các nghiên cứu về CNTT trong nước quá thiên về phần nổi, nghĩa là chỉ PC và SW. Trong khi đó, thị trường cho hệ nhúng rất đa dạng, lớn gấp 100 lần thị trường PC, không công ty lớn nào trên thế giới có thể chiếm lĩnh hết. Vì thế, cơ hội cho thị trường này rất lớn. Hệ nhúng trải rộng trong tất cả các ngành từ thiết bị tiêu dùng, y tế, giao thông, công nghiệp... đến những lĩnh vực cao cấp như máy bay, tên lửa, vệ tinh. Hệ nhúng còn có trong đồ chơi. Mỗi đồ chơi hình thù khác nhau, gắn chip điều khiển khác nhau trở nên vô cùng đa dạng, mở ra thị trường phong phú. Cần biết rằng tại Trung Quốc, doanh số sản phẩm đồ chơi có chip lớn hơn nhiều lần doanh số PC. Nếu như thiết bị phần cứng là xác thì SW làm nên hồn của thiết bị, tạo ra nhiều tính năng mới và chiếm tỷ lệ ngày càng cao trong giá trị của các sản phẩm này. Hiện nay phần lớn SW nằm trong các sản phẩm truyền thông, điện tử gia dụng, tiếp đến là ô tô, phương tiện vận chuyển, máy móc, thiết bị y tế, thiết bị năng lượng, thiết bị cảnh báo...

Thái Nguyên 8-2008 107

Page 108: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Hệ nhúng là gì? Hệ nhúng là những hệ kết hợp phần cứng (HW) và SW một cách tối ưu, trong đó máy tính nằm ẩn bên trong (được biết đến dưới dạng chip, mạch phụ trợ, thiết bị ngoại vi) và được gắn hữu cơ với vật dụng. Các hệ thống nhúng lớn thường là các hệ nối mạng. Ở máy bay, tàu vũ trụ thường có nhiều mạng nhúng kết nối để kiểm soát hoạt động và điều khiển. Trong ô tô hiện đại có đến trên 80 nút mạng nhúng kết nối để đảm bảo ô tô hoạt động an toàn và thoải mái cho người sử dụng.

3.6..2 Giíi thiÖu PSoC Được sự giúp đỡ về thiết bị, kỹ thuật của GSTSKH Phạm Thượng Cát Viện CNTT Viện KH và công nghệ Việt Nam Bộ môn CNĐKTĐ là đơn vị đầu tiên tại Khoa CNTT đã đưa công nghệ PSoC vào nội dung giảng dạy môn học vi xử lý và thông qua các đợt thực tập bắt đầu từ 2006. Cùng với sự phát triển nghiên cứu về ASIC/FPGA đóng góp này đã cho phép các SV Công nghệ thông tin, điện tử viễn thông, điều khiển tự động tiếp thu được các công nghệ mới nhất trên thế giới về vi điều khiển, vi xử lý.

3.6..3 PSoC CY8C29446 Học sinh liên hệ với giáo viên hoặc qua e-mail ([email protected]) để có các tài liệu tham khảo về PSoC và chương trình ứng dụng. Viết báo cáo về PSoC, xây dựng một ứng dụng đơn giản. Nếu tiếp tục nghiên cứu về PSoC trong các đợt thực tập sau sẽ được cung cấp thiết bị nạp PSoC (cho mượn) để thực nghiệm. Xem thêm tài liệu tham khảo "Lê Hùng Linh, "Các vi điều khiển thế hệ mới", Khoa CNTT, 2007.

CÁC BƯỚC TẠO VÀ CHẠY MỘT PROJECT PSOC

Khi cài chương trình thiết kế PSoC và Chương trình nạp yêu cầu IE phải từ bản IE6.0 trở lên. Nếu cài trên Windows 2000 sử dụng IE 5 thì trước đó phải chạy cài IE 6.0

Thái Nguyên 8-2008 108

Page 109: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Copyright Phạm Đức Long - ĐKTĐ

Cài IE 6.0

1. Chạy chương trình PsoC Designer:

Thái Nguyên 8-2008 109

Page 110: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

2. Vào Start new project

3. Đánh tên project chẳng hạn 'LED'

2.Chọn tiếp đây 3.Sau đó bấm vào đây để chọn khối

1.Chọn đây

Copyright Phạm Đức Long - ĐKTĐ

Thái Nguyên 8-2008 110

Page 111: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

4. Sẽ được

Các khối thêm vào

5. Tiếp sau đó bấm vào Interconnect View

Bấm vào đây để tiếp

Thái Nguyên 8-2008 111

Page 112: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

6. Place User Module:

Chọn modul làm việc

Copyright Phạm Đức Long - ĐKTĐ

2. Bấm vào đây để kích hoạt

1. Khối đã được chọn có màu

xanh

7. Chọn các giá trị ở mục

Chọn các giá trị trong mục này

Thái Nguyên 8-2008 112

Page 113: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

8. Chọn chân ra

Chọn Port_2_0 Bấm chuột trái vào chân này để hiện bảng chọn như bên

Bấm chuột trái vào đây

Tiếp theo

• Bấm chuột trái vào Select để có menu này

• Sau đó chọn Global Out Even_0

Thái Nguyên 8-2008 113

Page 114: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

9. Kết quả bước 8

Copyright Phạm Đức Long - ĐKTĐ

Màu chân đổi thành mầu nâu

Port_2_0 được nối

10. Phát sinh ứng dụng

Bấm vào đây

11. Soạn thảo ứng dụng

Bấm vào đây

Thái Nguyên 8-2008 114

Page 115: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

12. Mở file main.asm

13. Dịch

14. Chạy chương trình nạp

Bấm vào đây

Thái Nguyên 8-2008 115

Page 116: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

15. Nạp chương trình và chạy thử

+ Thiết bị nạp đã được cài vào qua cổng USB + Chọn "Port" + Chọn "Device Family" + Chọn "Device" như hình dưới + Bấm vào "File Load" chọn file cần nạp vào + Để nạp bấm vào "Program" + Nếu dùng thiết bị MiniProg1 bấm vào "Toggle Device Power" cấp

nguồn cho thiết bị để xem kết quả

Copyright Phạm Đức Long - ĐKTĐ

Ch−¬ng 4. C¸c bé ®iÒu khiÓn vµ ghÐp nèi d÷ liÖu

4.1 Vµo/ ra sè liÖu ®iÒu khiÓn b»ng ng¾t CPU thùc hiÖn trao ®æi th«ng tin víi c¸c thiÕt bÞ ngo¹i vi vµ thÕ giíi bªn ngoµi

th«ng qua thiÕt bÞ giao diÖn. Dòng dữ liệu số trao đổi là không liên tục và có thể điều khiển được. Cã thÓ ph©n chia c¸c ph−¬ng ph¸p vµo/ra d÷ liÖu thµnh 2 nhãm:

− Vµo ra do CPU chñ ®éng:

+ Vµo ra theo ®Þnh tr×nh.

+ Vµo ra cã th¨m dß (ph−¬ng ph¸p hái vßng - polling).

− Vµo ra do thiÕt bÞ ngo¹i vi chñ ®éng:

+ Vµo ra b»ng ng¾t cứng.

Thái Nguyên 8-2008 116

Page 117: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

+ Vµo ra dùng kỹ thuật DMA.

4.1.1 Nguyªn lý vµo/ra ®iÒu khiÓn b»ng ng¾t

• Ng¾t lµ g×? Sù cÇn thiÕt ph¶i ng¾t CPU

− Ng¾t lµ kh¶ n¨ng dõng ch−¬ng tr×nh chÝnh ®ang thùc hiÖn ®Ó thùc hiÖn 1 ch−¬ng tr×nh con kh¸c gäi lµ ch−¬ng tr×nh con phôc vô ng¾t ISR (Interrupt Service Routine)

− Ch−¬ng tr×nh phôc vô ng¾t ISR: Lµ ch−¬ng tr×nh t−¬ng øng víi mçi 1 ng¾t khi

ng¾t ®ã ®−îc gäi. C¸c ch−¬ng tr×nh nµy khi kÕt thóc cã lÖnh IRET ( Interrupt Return - Trë vÒ ch−¬ng tr×nh chÝnh)

− Sè l−îng ng¾t trong c¸c lo¹i CPU kh¸c nhau lµ kh¸c nhau. Ng¾t lµm t¨ng kh¶ n¨ng ho¹t ®éng cña CPU. Nhê cã kh¶ n¨ng ®¸p øng ng¾t CPU cã thÓ ®¸p øng rÊt nhanh c¸c yªu cÇu trao ®æi d÷ liÖu, ®¸p øng c¸c sù kiÖn trong khi vÉn cã thÓ thùc hiÖn ®−îc c¸c c«ng viÖc kh¸c.

• C¸c lo¹i ng¾t

− Ng¾t cøng

+ Ng¾t trong

+ Ng¾t ngoµi: cã 2 lo¹i: ng¾t che ®−îc vµ kh«ng che ®−îc

− Ng¾t mÒm

+ Ng¾t hÖ thèng: Gåm ng¾t cña DOS vµ ng¾t cña BIOS

+ Ng¾t cña ng−êi sö dông

• §¸p øng cña CPU khi cã ng¾t

− M¸y tÝnh ®ang thùc hiÖn ch−¬ng tr×nh chÝnh ®Õn 1 dßng lÖnh n th× cã tÝn hiÖu xin ng¾t (Xin dõng ch−¬ng tr×nh chÝnh l¹i ®Ó phôc vô) . Nãi chung (trõ tr−êng hîp ng¾t che ®−îc) CPU sÏ thùc hiÖn nèt lÖnh ®ang lµm dë, cÊt ®Þa chØ cña lÖnh tiÕp theo n+1 vµo stack, nÕu ng¾t cã thÓ che th× kh«ng t¸c ®éng; n¹p ®Þa chØ cña ch−¬ng tr×nh con ng¾t t−¬ng øng (Interupt Service Routine) råi thùc hiÖn ch−¬ng

ISR

Main Program

Thái Nguyên 8-2008 117

Page 118: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

tr×nh ISR. Cuèi ch−¬ng tr×nh con ISR gÆp lÖnh IRET CPU kh«i phôc l¹i vÞ trÝ ®Þa chØ cña ch−¬ng tr×nh chÝnh bÞ dõng vµ thùc hiÖn tiÕp ch−¬ng tr×nh chÝnh

n n+1 n+2 n-1Main Program

§iÓm xuÊt hiÖn ng¾t LÖnh ®ang lµm dë

Lµm nèt

IRETISR

Ho¹t ®éng cña CPU khi cã yªu cÇu ng¾t vµ thùc hiÖn ®−îc gåm 3 giai ®o¹n:

+ Giai ®o¹n 1: KÕt thóc lÖnh cßn ®ang dë. Cã thÓ cÊt thanh ghi cê. CÊt ®Þa chØ trë vÒ vµo Stack. CÊm c¸c ng¾t kh¸c ®Ó xö lý trän vÑn. Tr¶ lêi ra ngoµi chÊp nhËn ng¾t qua ch©n tÝn hiÖu INTA

+ Giai ®o¹n 2: TÝnh ®Þa chØ ISR.

+ Giai ®o¹n 3: Thùc hiÖn ISR, cuèi ch−¬ng tr×nh ISR gÆp lÖnh IRET kÕt thóc ISR, lÊy l¹i ®Þa chØ trë vÒ, tr¹ng th¸i cña Main Program. Thùc hiÖn tiÕp Main Program

• B¶ng vect¬ ng¾t. Kü thuËt thay vect¬ ng¾t

− B¶ng vector ng¾t: Gåm 1KB trong bé nhí tõ ®Þa chØ 00000 ®Õn ®Þa chØ 003ff ( §Þa chØ lo gic) ®−îc t¹o ra trong qu¸ tr×nh khëi ®éng m¸y tÝnh. B¶ng vector ng¾t chøa c¸c ®Þa chØ cña c¸c ch−¬ng tr×nh phôc ng¾t,gåm 256 phÇn tö mçi phÇn tö gåm 4 bytes 2 bytes chøa segment , 2 bytes chøa offset cña ch−¬ng tr×nh phôc vô ng¾t t−¬ng øng

− Kü thuËt dïng ®Ó thùc hiÖn thay ®æi ®Þa chØ cña ch−¬ng tr×nh phôc vô ng¾t ®Õn 1 ®Þa chØ cña 1 ch−¬ng tr×nh øng dông do ng−êi sö dông viÕt. (Khi 1 ng¾t ®−îc gäi lÏ ra thùc hiÖn 1 ch−¬ng tr×nh ISR nµo ®ã th× b©y giê l¹i thùc hiÖn 1 nhiÖm vô kh¸c trong ch−¬ng tr×nh cña ng−êi sö dông).

• Xö lý −u tiªn ng¾t

− NÕu t¹i mét thêi ®iÓm nµo ®ã ®ång thêi cã nhiÒu yªu cÇu ng¾t th× CPU sÏ ®¸p øng yªu cÇu ng¾t nµo? C©u tr¶ lêi lµ CPU sÏ xö lý c¸c yªu cÇu ng¾t theo thø tù −u tiªn víi nguyªn t¾c ng¾t nµo cã møc −u tiªn cao nhÊt sÏ ®−îc CPU nhËn biÕt vµ ®¸p øng tr−íc.

Thái Nguyên 8-2008 118

Page 119: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

− NgÇm ®Þnh møc −u tiªn cña 8088:

+ Ng¾t néi bé: INT0 ¦u tiªn cao nhÊt + Ng¾t kh«ng che ®−îc NMI

+ Ng¾t che ®−îc INTR ¦u tiªn thÊp nhÊt + Ng¾t ®Ó ch¹y tõng lÖnh

4.1.2 Bé ®iÒu khiÓn ng¾t PIC (8259)

− Dïng ®Ó ®iÒu khiÓn c¸c ng¾t theo møc −u tiªn khi cã nhiÒu ng¾t cïng yªu cÇu.

− 8259A cã thÓ lËp tr×nh ®−îc, xö lý 8 yªu cÇu ng¾t víi 8 møc −u tiªn ®Ó t¹o ra 1 yªu cÇu ng¾t ®−a ®Õn ch©n INTR cña CPU

− 8259A ®−îc lËp tr×nh b»ng c¸ch ghi vµo c¸c thanh ghi c¸c tõ ®iÒu khiÓn khëi ®Çu ICW vµ sau ®ã lµ OCW

+ ICW: C¸c tõ ®iÒu khiÓn khëi ®Çu dïng ®Ó t¹o nªn c¸c kiÓu lµm viÖc c¬ b¶n cho PIC

+ OCW: C¸c tõ ®iÒu khiÓn ho¹t ®éng sÏ quyÕt ®Þnh c¸ch thøc lµm viÖc cô thÓ cña 8259A

°

8259A D0..D7 IR0RD WR IR7A0 INT INTA SP/EN CS

°°

°

WR c¸c yªu cÇu ng¾t

IO/M

INTR INTA

A1..A7

RD

A0

Bus hÖ thèng cña 8088 ë chÕ ®é min

+5V

Thái Nguyên 8-2008 119

Page 120: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

INTA

INT

§Öm bus D D 70-D Logic ®iÒu khiÓn

RDLogic

ghi/®äc

Các chân tín hiệu:

+ IR0-IR7: C¸c yªu cÇu ng¾t.

+ IRR: Thanh ghi yªu cÇu ng¾t

+ PR: Bé xö lý −u tiªn

+ ENSP / : LËp tr×nh thµnh m¹ch tí/më ®Öm bus d÷ liÖu.

+ ISR: Thanh ghi yªu cÇu ng¾t ®ang ®−îc phôc vô

+ Cas0 – Cas2: T×m hiÓu nèi tÇng gi÷a c¸c PIC víi nhau C¸c khèi chøc n¨ng chÝnh cña 8259A:

+ Thanh ghi IRR: Ghi nhí c¸c yªu cÇu ng¾t cã t¹i ®Çu vµo IRi.

IMR (thanh ghi mÆt n¹ ng¾t)

ISR PR IRR

IR0A0 WR

IR2

IR7

CS:

Cas0 §Öm nèi tÇng

vµ so s¸nh

Cas1

Cas2

ENSP / Bus néi bé

S¬ ®å khèi cña PIC 8259A

Thái Nguyên 8-2008 120

Page 121: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

+ Thanh ghi ISR: Ghi nhí c¸c yªu cÇu ng¾t ®ang ®−îc phôc vô trong sè c¸c

yªu cÇu ng¾t IRi.

+ Thanh ghi IMR: Ghi nhí mÆt n¹ ng¾t ®èi víi c¸c yªu cÇu ng¾t IRi.

+ Logic ®iÒu khiÓn: Khèi nµy cã nhiÖm vô göi yªu cÇu ng¾t tíi INTR cña 8088 khi cã tÝn hiÖu t¹i c¸c ch©n IRi vµ nhËn tr¶ lêi chÊp nhËn yªu cÇu ng¾t INTA tõ CPU ®Ó ®iÒu khiÓn viÖc ®−a ra kiÓu ng¾t trªn bus d÷ liÖu.

+ §Öm bus d÷ liÖu: Dïng ®Ó phèi ghÐp 8259A víi bus d÷ liÖu cña CPU.

+ Logic ®iÒu khiÓn ®äc/ghi: Dïng cho viÖc ghi c¸c tõ ®iÒu khiÓn vµ ®äc c¸c tõ tr¹ng th¸i cña 8259A.

+ Khèi ®Öm nèi tÇng vµ so s¸nh: Ghi nhí vµ so s¸nh sè hiÖu cña c¸c m¹ch 8259A cã mÆt trong hÖ vi xö lý.

C¸c tÝn hiÖu cña 8259A:

+ Cas0 – Cas2 {I,O}: lµ c¸c ®Çu vµo ®èi víi c¸c m¹ch 8259A tí hoÆc c¸c ®Çu ra cña m¹ch 8259A chñ dïng khi cÇn nèi tÇng ®Ó t¨ng thªm c¸c yªu cÇu cÇn xö lý.

+ SP / EN [I,O]: Khi 8259A lµm viÖc ë chÕ ®ä kh«ng cã ®Öm bus d÷ liÖu th× ®©y lµ tÝn hiÖu vµo dïng lËp tr×nh ®Ó biÕn m¹ch 8259A thµnh m¹ch tí

( SP =0) hoÆc chñ ( SP =1); Khi 8259A lµm viÖc trong hÖ vi xö lý ë chÕ ®é

®Öm bus d÷ liÖu th× ch©n nµy lµ tÝn hiÖu ra EN dïng ®Ó më ®Öm bus d÷ liÖu ®Ó 8088 vµ 8259A th«ng b¸o bus d÷ liÖu hÖ thèng. Lóc nµy 8259A thùc hiÖn th«ng qua tõ ®iÒu khiÓn ICW4.

+ INT[0]: TÝn hiÖu yªu cÇu ng¾t ®Õn ch©n INTR cña CPU 8088.

+ INTA [I]: Nèi víi tÝn hiÖu b¸o chÊp nhËn ng¾t INTA cña CPU.

ICW: Có 4 từ điều khiển khởi đầu ICW1-ICW4. Cũng có thể ghi cả 4 từ điều khiển này hoặc chỉ ghi 2, 3 từ điều khiển là đủ. Quy trình khởi tạo ghi từ điều khiển:

Thái Nguyên 8-2008 121

Page 122: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

ICW1

Có nhiều PIC K

C ICW1.2=1?

ICW3

Họ VXL 16-32 bit

ICW1.1=1?

ICW4

Họ VXL 8 bit K

C

ICW2

Có một PIC

Sẵn sàng nhận ngắt

Các từ điều khiển ICW

ICW1A0 x x x 1 LTIM ADI SNGL IC4 0

IC4: = 1 Cần ICW4 (Họ VXL 16-32 bit) = 0 bỏ ICW4 (Họ VXL 8 bit) SNGL: = 1 Có 1 PIC = 0 Có nhiều PIC ADI: Khoảng cách giữa các vectơ ngắt

=0 Các 4 bytes (8086/88) =1 Cách 8 bytes (8080/85)

LTIM: Cách tác động của xung yêu cầu ngắt = 0: Theo sườn dương =1: Theo mức dương

Thái Nguyên 8-2008 122

Page 123: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

ICW2A0 T7 T6 T5 T4 T3 T2 T1 T0 1

Ứng với mã của yêu cấu

ngắt IR0-IR7 Để chọn kiểu (số hiệu) ngắt cho mạch 8259A

ICW3 chủ A0

S7 S6 S5 S4 S3 S2 S1 S0 1

1: Đầu vào IRi nối với mạch 8259 thợ 0: Đầu vào IRi không nối với mạch thợ

ICW3 thợ A0 0 0 0 0 0 ID2 ID1 ID0 1

Mã hoá số hiệu của mạch thợ 0-7 nối vào IR0-IR7 ICW4A0 µPM AEOI M/SBUFSFNM00 0

0x: 8259A ở chế độ không đêm 10: Mạch 8259A thợ ở chế độ đệm 11: Mạch 8259A chủ ở chế độ đệm

1:EOI tự động 0: EOI thường

1: cho họ 80x86/881: Chế độ ưu tiên cố định đặc biệt

0: Không phải chế độ ưu tiên cố định đặc biệt

1 Ví dụ: Trong một hệ vi xử lý ta có một mạch 8259A chủ và hai mạch 8259A thợ nối vào chân IR0 và IR1 của mạch chủ. Tìm giá trị phải gán cho các từ điều khiển khởi đầu ICW. Giải: Để đảm bảo yêu cầu trên, các mạch có thể làm việc được với nhau thì ICW3 = 03h cho mạch chủ, ICW3 =00h cho mạch thợ thứ nhất và ICW3 = 01h cho PIC thợ thứ hai.

Thái Nguyên 8-2008 123

Page 124: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Các từ điều khiển OCW sẽ quyết định 8259A hoạt động như thế nào sau khi nó đã được khởi đầu bằng các từ điều khiển ICW. Tất cả các từ điều khiển hoạt động sẽ được ghi vào các thanh ghi trong PIC khi A0 = 0. Riêng OCW1 được ghi khi A0=1. OCW1A0

M7 M6 M5 M4 M3 M2 M1 M0 1

Mặt nạ ngắt tại các yêu cầu ngắt 1: có mặt nạ 0: không có mặt nạ

OCW2A0 R SL EOI 0 0 L2 L1 L0 0

0 0 1 Kết thúc

ngắt (EOI)

Đổi mức ưu tiên tự động Đổi mức ưu tiên đích danh

Lệnh EOI thường Lệnh EOI chỉ đích danh Đổi mức ưu tiên khi có EOI thường Lập chế độ quay khi có EOI tự động Xoá chế độ quay khi có EOI tự độngĐổi mức ưu tiên khi có EOI đích danhLệnh lặp mức ưu tiên Không làm gì

Mã hoá mức ưu tiên ngắt bị tác động 000: mức 0 ... 111: mức 7

0 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0

OCW3A0 0 ESMM SMM 0 1 P ERIS RIS0

10: Đọc IRR ở lần đọc sau11: Đọc IRR ở lần đọc sau01, 00: Không tác động

Chế độ mặt nạ đặc biệt 10: xoá chế độ mặt nạ đặc biệt 11: Lập chế độ đặc biệt

Thăm dò hiện trạng của yêu cầu ngắt

1: đọc mã mức ưu tiên cao nhất ở lần đọc sau.

Thái Nguyên 8-2008 124

Page 125: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Thanh ghi ISR trước khi IR4 được chấp nhận (0: mức cao nhất; 7: mức ưu tiên thấp nhất)

IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0 Trạng thái của ISR 0 1 0 1 0 0 0 0 Mức ưu tiên 7 6 5 4 3 2 1 0

Thanh ghi ISR sau khi IR4 được chấp nhận và sau khi có lệnh quay (0: mức cao nhất; 7: mức ưu tiên thấp nhất)

IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0 Trạng thái của ISR 0 1 0 0 0 0 0 0 Mức ưu tiên 2 1 0 7 6 5 4 3

Dạng thức của thanh ghi yêu cầu ngắt và thanh ghi phục vụ Thanh ghi IRR: D7 D6 D5 D4 D3 D2 D1 D0

IR7 IR6 IR5 IR4 IR3 IR2 IR1 IR0

D7 D6 D5 D4 D3 D2 D1 D0IS7 IS6 IS5 IS4 IS3 IS2 IS1 IS0

IRi = 0 đầu vào i không có yêu cầu ngắt IRi = 1 đầu vào i có yêu cầu ngắt

Thanh ghi ISR:

ISi = 0 yêu cầu ngắt i không phục vụ ISi = 1 yêu cầu ngắt i đang được phục vụ

Thái Nguyên 8-2008 125

Page 126: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

4.1.3 Ng¾t trong m¸y tÝnh IBM/PC

− Tõ 80286 trë ®i, cÊu tróc ng¾t cña hÖ thèng sö dông 2 PIC 8259A ®Ó më réng kh¶ n¨ng qu¶n lý viÖc xö lý c¸c yªu c©ï ng¾t

− C¸c nguån g©y ng¾t kh«ng che ®−îc:

+ Lçi RAM CMOS

+ Lçi parity tõ bé nhí vµ thiÕt bÞ ngo¹i vi

8 6

INTR

8259 thî

SE/EN

INTA

8259 chñ

L

CAS0

S

IRQ0

IRQ7

INTA INTA

INTRINTR

IRQ8

IRQ15

IRQ INT N ?

IRQ0 INT08h Bộ đếm 8IRQ1 INT09h Bàn phímIRQ2 INT0Ah Yêu cầu nIRQ3 INT0Bh COM2 IRQ4 INT0Ch COM1 IRQ5 INT0Dh Cổng máyIRQ6 INT0Eh Điều khiểIRQ7 INT0Fh Cổng máyIRQ8 INT70h CMOS đồIRQ9 INT71h Định hướIRQ10 INT72h Dành choIRQ11 INT73h Dành cho

Thái Ngu

E/EN

V

çi Parity tõ I/O

i Parity tõ bé nhí

CAS2

Dành cho 254 đạt số đếm gắt từ 8259A thợ

in song song LPT2n đĩa mềm in song song LPT1ng hồ thời gian thự

ng lại bằng chương người sử dụng người sử dụng

yên 8-2008

0x8

NMI

+5

D7 cña cæng 70h

c trình về INT 0Ah

126

Page 127: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

IRQ12 INT74h Chuột PS/2 IRQ13 INT75h Bộ đồng xử lý toán học IRQ14 INT76h Ổ đĩa cứng IRQ15 INT77h Dành cho người sử dụng

Trên máy tính PC chúng ta có thể lập trình lại cho các PIC. Tuy nhiên khi chúng ta không lập trình thì các bộ PIC này hoạt động theo chế độ khởi tạo ngầm định bởi chương trình trong BIOS.

4.2 Vµo/ra sè liÖu ®iÒu khiÓn b»ng th©m nhËp bé nhí trùc tiÕp DMA

4.2.1 Nguyªn lý vµo/ ra b»ng DMA Cã nhiÒu qu¸ tr×nh trao ®æi d÷ liÖu ®ßi hái tèc ®é vµo/ra d÷ liÖu nhanh h¬n kh¶

n¨ng vµo/ra d÷ liÖu cña c¸c ph−¬ng ph¸p vµo/ra d÷ liÖu b»ng ch−¬ng tr×nh nh− ®· tr×nh bµy ë trªn, vÝ dô qu¸ tr×nh chuyÓn d÷ liÖu tõ c¸c æ ®Üa vµo bé nhí vµ ng−îc l¹i. Lóc nµy cã thÓ sö dông ph−¬ng ph¸p vµo/ra d÷ liÖu kiÓu DMA, lµ qu¸ tr×nh vµo/ra d÷ liÖu trùc tiÕp gi÷a bé nhí vµ thiÕt bÞ ngo¹i vi kh«ng qua CPU.

Trong qu¸ tr×nh DMA viÖc chuyÓn d÷ liÖu kh«ng ®−îc ®iÒu khiÓn bëi CPU mµ bëi mét thiÕt bÞ phÇn cøng lµ bé ®iÒu khiÓn DMAC( DMA Controller).

S¬ ®å qu¸ tr×nh nh− sau:

HLDA

HOLD DMAC I/O MEM

DRQ

DACK

DRQ

DACK

HRQ

HACK

CPU

CPU ®ang ho¹t ®éng b×nh th−êng

− DMAC ®−îc x¸c lËp chÕ ®é lµm viÖc, nhËn th«ng tin vÒ ®Þa chØ ®Çu khèi nhí chøa d÷ liÖu vµ kÝch thø¬c khèi d÷ liÖu cÇn truyÒn.

− ThiÕt bÞ vµo/ra ph¸t tÝn hiÖu DRQ cho DMAC

− DMAC ph¸t tÝn hiÖu HRQ =1 ®Õn ch©n HOLD cña CPU, yªu cÇu CPU ®i vµo chÕ ®é DMA

− CPU thùc hiÖn nèt chu kú m¸y

Thái Nguyên 8-2008 127

Page 128: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

− CPU ph¸t tÝn hiÖu HLDA tr¶ lêi cho DMAC vµ tù t¸ch ra khái hÖ thèng bus.

QuyÒn ®iÒu khiÓn hÖ thèng bus thuéc vÒ DMAC

− DMAC lµm chñ bus hÖ thèng, t¹o tÝn hiÖu DACK tr¶ lêi thiÕt bÞ yªu cÇu, ph¸t ®Þa chØ « nhí lªn bus ®Þa chØ, ph¸t c¸c tÝn hiÖu ®iÒu khiÓn ghi/®äc thiÕt bÞ vµo/ra vµ c¸c tÝn hiÖu ®iÒu khiÓn ghi/®äc bé nhí vµ thùc hiÖn ®iÒu khiÓn toµn bé qu¸ tr×nh chuyÓn d÷ liÖu gi· thiÕt bÞ vµo/ra vµ bé nhí.

− KÕt thóc qu¸ tr×nh DMA, DMAC göi tÝn hiÖu HRQ = 0 ®Õn ch©n HOLD tr¶ l¹i quyÒn ®iÒu khiÓn bus cho CPU

− CPU tiÕp tôc lµm viÖc b×nh th−êng. Trong trao ®æi d÷ liÖu DMAC cã 3 kiÓu trao ®æi nh− sau: + Treo CPU mét kho¶ng thêi gian ®Ó trao ®æi c¶ m¶ng d÷ liÖu. + Treo CPU ®Ó trao ®æi tõng byte. + TËn dông thêi gian kh«ng dïng bus cña CPU ®Ó trao ®æi d÷ liÖu.

• Trao ®æi c¶ m¶ng d÷ liÖu: Trong chÕ ®é nµy CPU bÞ treo trong suèt thêi gian trao ®æi m¶ng d÷ liÖu. ChÕ

®é nµy ®−îc dïng khi ta cã nhu cÇu trao ®æi d÷ liÖu víi æ ®Üa hoÆc ®−a d÷ liÖu ra ®Ó hiÓn thÞ. C¸c b−íc thñ tôc ®Ó chuyÓn mét m¶ng d÷ liÖu tõ bé nhí ra thiÕt bÞ ngo¹i vi:

1. CPU ph¶i ghi tõ ®iÒu khiÓn vµ tõ chÕ ®é lµm viÖc vµo DMAC ®Ó quy ®Þnh c¸ch thøc lµm viÖc, ®Þa chØ ®Çu cña m¶ng nhí, ®é dµi cña m¶ng nhí…

2. Khi thiÕt bÞ ngo¹i vi cã yªu cÇu trao ®æi d÷ liÖu, nã ®−a DRQ=1 ®Õn DMAC.

3. DMAC ®−a ra tÝn hiÖu HRQ ®Õn ch©n HOLD cña CPU ®Ó yªu cÇu treo CPU. HOLD=1 trong suèt qu¸ tr×nh trao ®æi d÷ liÖu.

4. NhËn ®−îc yªu cÇu treo, CPU kÕt thóc chu kú bus hiÖn t¹i, sau ®ã treo c¸c bus cña m×nh vµ ®−a tÝn hiÖu HLDA b¸o cho DMAC ®−îc toµn quyÒn sö dông bus.

5. DMAC ®−a ra xung DACK ®Ó b¸o cho thiÕt bÞ ngo¹i vi biÕt lµ cã thÓ b¾t ®Çu qu¸ tr×nh trao ®æi d÷ liÖu.

6. DMAC b¾t ®Çu chuyÓn d÷ liÖu tõ bé nhí ra thiÕt bÞ ngo¹i vi b»ng c¸ch

®−a ®Þa chØ cña byte ®Çu ra bus ®Þa chØ vµ ®−a tÝn hiÖu MEMR =0 ®Ó ®äc

tõ bé nhí ra bus d÷ liÖu. TiÕp ®ã DMAC ®−a tÝn hiÖu IOW =0 ®Ó ghi d÷ liÖu ra thiÕt bÞ ngo¹i vi. DMAC sau ®ã gi¶m bé ®Õm sè byte cÇn ph¶i

Thái Nguyên 8-2008 128

Page 129: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

chuyÓn, cËp nhËt byte cÇn ®äc tiÕp vµ lÆp l¹i c¸c ®éng t¸c trªn cho ®Õn khi hÕt sè ®Õm.

7. Khi qu¸ tr×nh DMA kÕt thóc, DMAC cho ra tÝn hiÖu HRQ=0 ®Ó b¸o cho CPU biÕt vµ dµnh l¹i quyÒn ®iÒu khiÓn hÖ thèng.

• Treo CPU ®Ó trao ®æi tõng byte CPU kh«ng bÞ treo l©u dµi trong mét lÇn nh−ng thØnh tho¶ng l¹i bÞ treo trong

mét kho¶ng thêi gian rÊt ng¾n ®ñ ®Ó trao ®æi mét byte d÷ liÖu. Do bÞ mÊt mét sè chu kú ®ång hå nh− vËy nªn tèc ®é thùc hiÖn mét c«ng viÖc nµo ®ã cña CPU chØ bÞ suy gi¶m chø kh«ng bÞ dõng h¼n. C¸ch trao ®æi t−¬ng tù nh− tr−íc (chØ trao ®æi mét byte).

• TËn dông thêi gian CPU kh«ng dïng bus ®Ó trao ®æi d÷ liÖu Trong c¸ch trao ®æi d÷ liÖu nµy ta ph¶i cã c¸c logic phô bªn ngoµi cÇn thiÕt

®Ó ph¸t hiÖn ra c¸c chu kú xö lý néi bé cña CPU (kh«ng dïng ®Õn bus ngoµi) vµ tËn dông c¸c chu kú ®ã vµo viÖc trao ®æi d÷ liÖu gi÷a thiÕt bÞ ngo¹i vi víi bé nhí. Trong c¸ch lµm nµy th× DMAC vµ CPU lu©n phiªn nhau sö dông bus vµ viÖc th©m nhËp trùc tiÕp bé nhí kiÓu nµy kh«ng ¶nh h−ëng g× tíi ho¹t ®éng b×nh th−êng cña CPU.

4.2.2 Bé điều khiển truy nhËp bé nhí trùc tiÕp DMAC (8237)

TG mÆt n¹

TG yªu cÇu

TG t¹m TG tr¹ng th¸iTG chÕ ®é

Khèi t¹o

nhÞp vµ

®iÒu khiÓn

Bé gi¶mThanh ghi t¹m bé ®Õm sè tõ

§Öm ra§Öm ®äc

§Þa chØ Sè tõc¬ së c¬ së

§Öm ghi/®äc

§Þa chØ Sè tõ hiÖn t¹i hiÖn t¹i

Bé m· ho¸ møc −u tiªn vµ logic t¹o −u tiªn

lu©n phiªn

TG lÖnh §Öm I/O

§Öm ghi §Öm ®äc

Bé t¨ngThanh ghi t¹m bé ®Õm sè tõ

§Öm I/O

Thái Nguyên 8-2008 129

Page 130: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

C¸c ®Æc tr−ng cña IC: - Cho phÐp hoÆc cÊm riªng tõng kªnh DMA - DMA gi÷ vïng nhí - Tù khëi ®éng gi÷a tõng kªnh riªng biÖt - Cho phÐp nèi tõng kªnh ®Ó t¨ng sè kªnh DMA Khi dïng DMAC hÖ dïng mét sè lÖnh ®iÒu khiÓn h¬i kh¸c víi CPU Cã 4 kªnh DRQ ®éc lËp vµ cã 4 ®−êng tr¶ lêi DACK

Cã IOR Vµ IOW 2 chiÒu dïng DMAC ®äc ghi tõ ngo¹i vi.

MEMR vµ MEMW dïng cho bé nhí.

EOP lµ tÝn hiÖu hai chiÒu. Khi ®−a vµo 8237 lµm nhiÖm vô DMAC kÕt thóc qu¸ tr×nh DMA. NÕu ra nã b¸o cho 1 kªnh nµo ®ã ®É chuyÓn sè byte yªu cÇu lóc nµy nã dïng yªu cÇu ng¾t víi CPU xö lý qu¸ tr×nh ng¾t DMA.

AEN cho phÐp m¹ch chèt nèi DB0-7 chèt ®Õn vïng bé nhí dïng DMA vµ cÊm c¸c ®Öm tõ CPU.

ADSTB: §©y lµ xung tõ 8237 ®Ó chèt ®Þa chØ cao tõ A8-A15 tren DB A0-A3: Lµ hai chiÒu. Dïng ®Ó chän c¸c thanh ghi DMAC khi lËp tr×nh ra

chøa 4 bit thÊp ®Þa chØ. A4-A7: Lµ 4 bit ®Þa chØ cao. DB0-7: 2 chiÒu nèi víi bus ®Þa chØ vµ bus d÷ liÖu.

Ready: Lµ tÝn hiÖu s½n sµng nèi tõ 8237 tíi Ready cña hÖ thèng ®Ó t¹o chu kú ®îi khi tÝn hiÖu chËm.

C¸c tr¹ng th¸i Phô thuéc vµo ta ®Æt tr−íc vµo thanh ghi. Nhãm thanh ghi ®iÒu khiÓn vµ tr¹ng th¸i:… lµm viÖc theo 2 chu kú nghØ vµ

ho¹t ®éng. Mçi chu kú bao gåm mét sè tr¹ng th¸i. Mçi tr¹ng th¸i chiÕm mét xung clock.

Cã 7 tr¹ng th¸i:

1. Tr¹ng th¸i nghØ SI: §©y lµ tr¹ng th¸i kh«ng ho¹t ®éng (CS = 1) lóc nµy CPU ®iÒu khiÓn 8237A.

2. Tr¹ng th¸i chê: §©y lµ tr¹ng th¸i b¾t ®Çu DMA. Khi DMAC göi tÝn hiÖu treo CPU nh−ng ch−a ®−îc x¸c nhËn b»ng tÝn hiÖu HLDA.

3. Tr¹ng th¸i ph¸t ®Þa chØ nguån d÷ liÖu S1. DMAC ph¸t ®Þa chØ nguån d÷ liÖu (ngo¹i vi, bé nhí).

Thái Nguyên 8-2008 130

Page 131: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

4. Ph¸t lÖnh ®äc nguån d÷ liÖu S2.DMAC ph¸t ra lÖnh ®äc nguån d÷ liÖu. 5. Tr¹ng th¸i chê SW (x¶y ra nÕu tèc ®é hai bªn kh¸c nhau). DMAC chê

trong kho¶ng SW ®Ó d÷ liÖu ®äc ®−îc ghi hÕt vµo thanh ghi ®Öm 8237A.

6. Ph¸t ®Þa chØ ®Ých cña d÷ liÖu S3. 7. Tr¹ng th¸i ph¸t lÖnh ghi d÷ liÖu vµo ®Ých S4.

C¸c chÕ ®é DMAC lµm viÖc:

+ ChuyÓn mét tõ ®¬n

+ ChÕ ®é chuyÓn b¶n, chuyÓn c¶ m¶ng d÷ liÖu cho ®Õn khi TC (bé ®Õm ®Þa chØ) hoÆc EOP. ë ®©y DMAC kh«ng cho phÐp tù khëi ®éng.

+ ChuyÓn theo nhu cÇu: Còng chuyÓn c¶ m¶ng d÷ liÖu nh− chÕ ®é thø 2 nh−ng nã ®−îc n¹p l¹i mçi lÇn DRQ míi.

+ ChÕ ®é ghÐp tÇng.

8237HLDA

hold

CPU

8237

8237

Drq1a

Drq0

Dack0

Dack1

ChÕ ®é −u tiªn c¸c yªu cÇu DMA

+ ¦u tiªn cè ®Þnh.(IR0 cao nhÊt -IR3)

+ ¦u tiªn vßng (lu©n phiªn): §¶m b¶o 4 yªu cÇu nh− nhau. C¸c thanh ghi néi

C¸c thanh ghi néi cña DMAC chia lµm 2 lo¹i:

+ Thanh ghi cña khèi xö lý DMA

+ C¸c thanh ghi ®iÒu khiÓn Thanh ghi DMA:

+ Thanh ghi yªu cÇu

+ Thanh ghi lËp xo¸ mÆt n¹

+ Thanh ghi mÆt n¹ cho tõng kªnh

Thái Nguyên 8-2008 131

Page 132: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Thanh ghi ®iÒu khiÓn

+ Thanh ghi lÖnh:

+ Thanh ghi chÕ ®é: §iÒu khiÓn viÖc chuyÓn m¶ng ®Õn ®Ó t¨ng hay gi¶m nèi tÇng hay kh«ng.

+ Thanh ghi tr¹ng th¸i: Tr¹ng th¸i cña tõng kªnh cßn yªu cÇu DMA hay kÕt thóc DMA.

4.2.3 Sö dông bé ®iÒu khiÓn DMAC trong hÖ vi xö lý

4.3 Bé ®Õm lËp tr×nh ®−îc

Tác dụng của bộ đếm lập trình được: + Xác định những khoảng thời gian nhỏ chính xác: đến 1 clk, nếu tần số

xung nhịp càng lớn thì khoảng thời gian xác định được chính xác càng nhỏ. Ví dụ nếu xung nhịp làm việc là 100MHz thì thời gian 1 clk sẽ là 1/108 giây.

+ Đếm xung. + Tạo xung.

4.3.1 S¬ ®å khèi bé ®Õm lËp tr×nh ®−îc (8254)

§Ömbus

d÷ liÖu

RD LogicWR ®iÒu A0 khiÓn A1 ghi/®äc

Bé ®Õm 0

Bé ®Õm 1

S

RDWR

A0

A1

A2..A15

D0 .. D7

CPU

clk0

Gate0

Out0

clk1

Gate1

Out1

C

Thanh ghi tõ ®iÒu khiÓn

Bé ®Õm 2

clk2

Gate2

Out2

S¬ ®å khèi cña 8254

Thái Nguyên 8-2008 132

Page 133: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Chän c¸c thanh ghi trong 8254

A1 A2 Chän ra 0 0 Thanh ghi cho bé ®Õm sè 0 0 1 Thanh ghi cho bé ®Õm sè 1 1 0 Thanh ghi cho bé ®Õm sè 2 1 1 Thanh ghi tõ ®iÒu khiÓn

Thanh ghi tõ ®iÒu khiÓn cña 8253/54 Ghi/®äc:

00: LÖnh chèt bé ®Õm 01: ChØ ®äc/ghi byte LSB 10: ChØ ®äc ghi byte MSB 11: ®äc/ghi byte LSB tiÕp theo lµ MSB

0: Bé ®Õm HEX 4 sè 1: Bé ®Õm BCD sè

BCDSC0 SC1 RW0RW1 M0M1M2

ChÕ ®é:000: ChÕ ®é 0-T¹o yªu cÇu ng¾t khi ®Õm hÕt 001: ChÕ ®é 1- §a hµi ®îi lËp tr×nh ®−îc 010: ChÕ ®é 2- Bé chia tÇn sè cho N 011: ChÕ ®é 3- T¹o xung vu«ng 100: ChÕ ®é 4- T¹o xung cho phÐp mÒm 101: ChÕ ®é 5- T¹o xung cho phÐp cøng

Chän bé ®Õm: 00: Chän bé ®Õm 0 01: Chän bé ®Õm 1 10: Chän bé ®Õm 2 11: §Ó ra lÖnh ®äc ng−îc

4.3.2 C¸c chÕ ®é lµm viÖc cña bé ®Õm lËp tr×nh

Tham khảo thêm Data sheet 82C54.pdf

ChÕ ®é 0 - T¹o yªu cÇu ng¾t khi ®Õm xong:

Thái Nguyên 8-2008 133

Page 134: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Sau khi ®Æt tõ ®iÒu khiÓn CW=10h ta n¹p n=4 vµo LSB. Gate lóc nµy =1 vµ ®Çu ra OUT = 0. S−ên lªn cña xung WR sÏ kÝch ho¹t bé ®Õm ®Õm ng−îc. Bé ®Õm b¾t ®Çu ®Õm ng−îc tõ 4. Sau 5 xung khi bé ®Õm = 0 th× OUT = 1. Xung OUT cã thÎ ®−îc dïng nh− xung ng¾t víi CPU sau khi ®Õm hÕt. Trong nöa h×nh d−íi khi ®ang ®Õm ng−îc mµ Gate = 0 th× bé ®Õm dõng l¹i ®Õn khi nµo Gate = 1 th× l¹i ®Õm tiÕp. Trªn h×nh vÏ khi ®ang ®Õm Gate = 0 bé ®Õm dõng l¹i gi÷ sè ®Õm 4 sau 3 clk Gate =1 l¹i ®Õm tiÕp. Trong qu¸ tr×nh ®Õm mét sè ®Õm míi còng cã thÓ ®−îc n¹p vµo. Khi ®ã bé ®Õm l¹i ®Õm theo sè ®Õm míi. ChÕ ®é 1- §a hµi ®îi víi thêi gian lËp tr×nh ®−îc:

ChÕ ®é 2 - T¹o ra xung cã tÇn sè fin/N:

Thái Nguyên 8-2008 134

Page 135: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

ChÕ ®é 3 - T¹o ra d·y xung vu«ng:

ChÕ ®é 4 - T¹o ra xung cho phÐp b»ng ch−¬ng tr×nh:

ChÕ ®é 5 - T¹o ra xung cho phÐp b»ng xung ®iÒu khiÓn GATE:

4.3.3 Sö dông bé ®Õm trong hÖ vi xö lý

Các vi mạch 8253, 8254 có thể được sử dụng:

Thái Nguyên 8-2008 135

Page 136: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

+ Riêng biệt kết hợp với các vi mạch điện tử khác. + hoặc có thể được ghép với hệ vi xử lý.

4.4 Phèi ghÐp vµo ra nèi tiÕp

4.4.1 Nguyªn lý vµo/ ra nèi tiÕp D÷ liÖu ®−îc ®−a ra, nhËn vµo m¸y tÝnh theo tõng bit 1. Trong thùc tÕ th«ng tin th−êng ®−îc ®ãng gãi thµnh c¸c gãi tin cã ®é dµi kh«ng x¸c ®Þnh tr−íc khi chuyÓn ®i. So víi vµo ra song song th× ph−¬ng ph¸p nµy truyÒn nhËn d÷ liÖu cho tèc ®é chËm h¬n nhiÒu; bï l¹i ph−¬ng ph¸p nµy kh¾c phôc ®−îc c¸c kho¶ng c¸ch xa. Trong khi truyÒn qua cæng LPT chóng ta chØ thÓ thùc hiÖn d−íi kho¶ng c¸ch 5m th× qua cæng nèi tiÕp b×nh th−êng ta ®· truyÒn ®−îc kho¶ng c¸ch 15-20m; NÕu cã sù trî gióp cña modem c¸c kho¶ng c¸ch nµy lµ hµng chôc ngh×n m. M¹ng Internet truyÒn qua ®−êng d©y ®iÖn tho¹i 2 d©y lµ 1 vÝ dô sinh ®éng. Ta cã 2 ph−¬ng ph¸p truyÒn tin nèi tiÕp:

• TruyÒn ®ång bé : Khu«n d¹ng cña b¶n tin truyÒn ®ång bé

XHEADER

• Tru D÷ liÖ®¸nh dÊu ë ®kÕt thóc ký tbé nh− sau Start

Lu«n ë møc th

SYN

SYN: KSOH: BHEA DSTX: KTEXT: ETX: KBCC: K

yÒn kh«u ®−îc Çu ®Ó b

ù( stop)

D0 D

Êp

SOH

ý tù ®ång bé ¾t ®Çu phÇn mµo ®ER:PhÇn mµo ®Çuý tù b¾t ®Çu v¨n bTh©n v¨n b¶n ý tù kÕt thóc khèiý tù kiÓm tra khèi

ng ®ång bé( AcsytruyÒn ®i tõng ký¸o b¾t ®Çu ký tù(. D¹ng thøc cña d

1 D2 D3 D4

ChiÒu dßng

Thái Ng

ST

Çu ¶n

v¨n b¶

nchron tù. Ký Start) ÷ liÖu t

D5 D

d÷ liÖu

uyên 8

TEXT

n

ous Com tù cÇn

vµ 1 hoÆcruyÒn ®i

6 Par

Lu«n ë

-2008

ETX

municattruyÒn ® 2 bit ®theo ph−

ity Stop

møc cao

BCC

ion ) i ®−îc g¾n thªm 1 bit ¸nh dÊu ë cuèi ®Ó b¸o ¬ng ph¸p kh«ng ®ång

136

Page 137: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Bit Start: =0 Data bit: cã thÓ lµ 5,6,7 hoÆc 8 Bit D0 ®−îc truyÒn ®Çu tiªn Bªn c¹nh c¸c bit d÷ liÖu cã thÓ cã hay kh«ng 1 bit Parity ®Ó kiÓm tra lçi khi truyÒn Bit Stop cã thÓ lµ 1 hay 2 Tèc ®é truyÒn ®−îc ®o b»ng bit/gi©y. Ng−êi ta còng hay dïng baud lµ gi¸ trÞ nghÞch ®¶o cña thêi gian gi÷a c¸c lÇn thay ®æi møc tÝn hiÖu. Víi d÷ liÖu chØ cã 2 møc 0 vµ 1 baud = bit/s C¸c tèc ®é truyÒn th−êng dïng lµ 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19.200 Th−êng dïng nhÊt lµ 4800 vµ 9600 baud Khi truyÒn kh«ng ®ång bé th−êng mÊt kho¶ng 30% sè bit b¾t tay Trong khi truyÒn chóng ta còng cã c¸c ph−¬ng ph¸p kh¸c nhau:

- TruyÒn ®¬n c«ng Simplex: D÷ liÖu chØ ®i ®−îc 1 chiÒu 1 tr¹m ph¸t 1 tr¹m kia thu - TruyÒn b¸n song c«ng( Half Duplex): C¶ 2 tr¹m ®Òu ph¸t vµ thu ®−îc nh−ng

kh«ng ®ång thêi. VÝ dô m¸y bé ®µm - C¶ 2 tr¹m ®Òu ph¸t vµ thu ®ång thêi.

Qu¸ tr×nh ®iÒu chÕ: Modulation Dïng ®Ó biÕn ®æi c¸c møc logic TTL cña m¸y tÝnh thµnh c¸c tÝn hiÖu vËt lý phï hîp víi m«i tr−êng truyÒn Cã thÓ dïng

§iÒu chÕ biªn ®é : §iÒu chÕ tÇn sè §iÒu chÕ pha

§iÒu chÕ 1 chiÒu Nguån dßng lµ nguån ¸p cã néi trë riªng nhá, chèng nhiÔu tèt. Nguån dßng th−êng ®−îc sö dông trong c«ng nghiÖp

Optocoupler

Thái Nguyên 8-2008 137

Page 138: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

• RS 232 Standard: ChuÈn RS 232 lµ giao diÖn phæ biÕn do EIA( Electro Industrie American ) ®−a ra tõ n¨m 1969. Do tÝnh thuËn tiÖn cña nã nªn hÇu hÕt c¸c thiÕt bÞ khi cÇn 1 giao diÖn ghÐp nèi m¸y tÝnh ng−êi ta hay sö dông RS232, nã cã mÆt trong rÊt nhiÒu thiÕt bÞ.

Tèc ®é truyÒn : 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19.200 Th−êng dïng nhÊt lµ 4800 vµ 9600 baud

• Møc tÝn hiÖu logic n»m trong kho¶ng – 12V ®Õn +12V Møc 1: -3 V ®Õn – 12V Møc 0: Tõ +3V ®Õn + 12 V

• Kho¶ng c¸ch truyÒn: Tuú thuéc tèc ®é truyÒn vµ chÊt l−îng ®−êng truyÒn( M«i tr−êng truyÒn cã nhiÔu ? ChÊt l−îng d©y ra sao? cã mèi nèi kh«ng ?...) Nãi chung kh«ng v−ît qu¸ 30m ( 100feet)

• Conector: Dïng 2 lo¹i DB9 vµ DB29 Male vµ Female

DB9 DB25 Chøc n¨ng 1 8 DCD- Data Carrier Detect Lèi vµo 2 3 RxD – Receive Data Lèi vµo 3 2 TxD – Transmit Data Lèi ra 4 20 DTR – Data Terminal Ready Lèi ra 5 7 GND – Nèi ®Êt 6 6 DSR - Data Set Ready Lèi vµo 7 4 RTS – Request to Send Lèi ra 8 5 CTS – Clear to Send Lèi vµo 9 22 RI – Ring Indicator Lèi vµo

C¸c ®−êng d©y dÉn trong thùc tÕ cã thÓ kh«ng ®Çy ®ñ, Ýt nhÊt chØ cÇn 3 d©y lµ cã thÓ thùc hiÖn ®−îc viÖc truyÒn tin theo s¬ ®å nèi sau:

Thái Nguyên 8-2008 138

Page 139: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

2

3

5

4.4.2 M¹ch thu ph¸t th«ng tin nèi tiÕp UART 8250A Lµ vi m¹ch thu ph¸t kh«ng ®ång bé v¹n n¨ng (Universal ATransmitter) - Kh¸c víi vi m¹ch thu ph¸t ®ång bé/kh«ng ®ån8251A (Universal Synchronous-Asynchronous Receiver TratÝnh IBM sö dông vi m¹ch 8250A cho phèi ghÐp víi c¸c cæncÊp 6450 råi vi m¹ch 16450 vµ hiÖn nay lµ 64750, 64850. C¸cvô biÕn ®æi d÷ liÖu ë d¹ng song song thµnh d÷ liÖu ë d¹ng nèvµ Stop cÇn thiÕt vµo phôc vô cho viÖc gëi tin ®i. C¸c vi m¹ch nng−îc l¹i khi thu gãi tin: cã nghÜa lµ nhËn c¸c bit d÷ liÖu, th¸o®æi thµnh d÷ liÖu song song( byte). CÊu t¹o chi tiÕt cña vi m¹trong c¸c s¸ch kü thuËt cña vi m¹ch hoÆc nhiªï cuèn nh− “ §b»ng m¸y tÝnh – Ng« Diªn TËp”. “ Vi xö lý – V¨n ThÕ Minh” §

b

°°°

A0 A1 A2 RD WR CS2 CS0 CS1

Master RESET (MS)

Logic ®iÒu khiÓn

ghi ®äc

§iÒu

khiÓn thu ph¸t vµ modem °

°°

RTSCTS

°°

DTRDSR

° RxClkBaud out nhÞp ph

Sout TÝn hiÖu p D0-D7

X - tal 1,2 Nèi th¹

Out 1 Out 2 RLSD( Thu ®−îc sãng

RI ( B¸o chu«ng)

§/

INTRPT( Yªu cÇu n

S¬ ®å khèi UART 8250A

Thái Nguyên 8-2008

5

3

2

GND

synchronous Receiver-g bé v¹n n¨ng USART nsmitter). Trong m¸y g nèi tiÕp sau ®ã n©ng vi m¹ch nµy cã nhiÖm i tiÕp, g¾n c¸c bit Start µy còng lµm nhiÖm vô c¸c khung tin, chuyÓn ch ta cã thÓ tham kh¶o o l−êng vµ ®iÒu khiÓn

h¸t

Öm ph¸t// → ----

§Öm us d÷ liÖu

¸t thu ch anh

mang)

g¾t)

Öm thu / ← ----

139

Page 140: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Vi m¹ch 8250A( HiÖn nay - 7/2007 - ®ang sö dông trong c¸c m¸y PC lµ 82850) ®−îc dïng réng r·i trong c¸c m¸y tÝnh IBM PC lµ vi m¹ch ghÐp cæng truyÒn tin nèi tiÕp (Cæng COM) theo chuÈn RS 232C. NhiÖm vô chÝnh cña vi m¹ch lµ:

− ChuyÓn c¸c tÝn hiÖu th«ng tin song song thµnh nèi tiÕp vµ ng−îc l¹i

− KiÓm tra lçi truyÒn tin ( KiÓm tra Parity)

− ThiÕt lËp tèc ®é thu ph¸t

− Cã tÝn hiÖu g©y ng¾t cã thÓ dïng ®Ó ®iÒu khiÓn m¸y tÝnh.

− M¹ch 8250A cã 3 tÝn hiÖu chän vá t¹o ®iÒu kiÖn thuËn lîi cho ng−êi sö dông trong viÖc gi¶i m· ®Þa chØ c¬ b¶n.

− X tal lµ c¸c ch©n ®Ó c¾m th¹ch anh dïng cho m¹ch dao ®éng bªn trong cña 8250A. Trong tr−êng hîp sö dông tÝn hiÖu ®ång hå chuÈn tõ bªn ngoµi th× ta ®−a xung ®ång hå vµo ch©n X tal1 vµ bá löng X tal2.

− Ch©n RLSD( receive line signal detect) lµ ch©n tÝn hiÖu b¸o t×m thÊy sãng mang (CD hoÆc DCD theo tiªu chuÈn RS232 hoÆc SYNDET cña 8251A) tøc lµ ®· thiÕt lËp ®−îc ®−êng truyÒn.

− RI( Ring indicator) còng lµ tÝn hiÖu chuÈn cña RS232C ®Ó modem th«ng b¸o lµ cã xung rÐo chu«ng.

− INTRPT lµ tÝn hiÖu ®Ó yªu cÇu ng¾t CPU. C¸c ®Çu ra phô Out1 vµ Out2 dµnh cho ng−êi sö dông trong c¸c øng dông kh«ng t−¬ng thÝch víi chuÈn RS 232C

− Ch©n MS( Master Reset) lµ chç nèi vµo tÝn hiÖu reset cña hÖ thèng, cã t¸c dông xo¸ tÊt c¶ c¸c thanh ghi trong 8250A trõ thanh ghi ®Öm thu, thanh ghi ®Öm ph¸t vµ thanh ghi LSB, MSB cña sè chia.

− Tèc ®é truyÒn tÝnh ®−îc nhê vµo viÖc chän xung ®ång hå vµo X tal1 vµ viÖc chän sè chia cña tÇn sè nµy( §Ó t¹i thanh ghi LSB vµ MSB). VÝ dô nÕu ta dïng tÇn sè ®ång hå 1.8432 MHz t¹i X tal1 ta muèn tèc ®é ph¸t lµ 9600 baud ta t×m sè chia ®Ó ghi vµo LSB vµ MSB nh− sau:

Sè chia = TÇn sè vµo/( Tèc ®é ph¸t x 16) = 1.8432.106/(9600*16) = 12

Thái Nguyên 8-2008 140

Page 141: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Vi m¹ch cã 8 thanh ghi, víi nhiÒu chøc n¨ng

DLA

A2 A1 A0 Chän ra

0 0 0 0 Thanh ghi ®Öm thu, Thanh ghi gi÷ ph¸t(XF8) 0 0 0 1 Thanh ghi cho phÐp t¹o yªu cÇu ng¾t (IER) XF91 0 0 0 Thanh ghi cho sè chia phÇn thÊp(LSB) 1 0 0 1 Thanh ghi cho sè chia phÇn cao(MSB) x 0 1 0 Thanh ghi nhËn d¹ng nguån gèc yªu cÇu ng¾t x 0 1 1 Thanh ghi ®iÒu khiÓn ®−êng d©y (LSR – XFB) x 1 0 0 Thanh ghi ®iÒu khiÓn modem (MCR) x 1 0 1 Thanh ghi tr¹ng th¸i ®−êng d©y (LSR XFD) x 1 1 0 Thanh ghi tr¹ng th¸i modem x 1 1 1 Thanh ghi nh¸p dµnh cho CPU Ýt sö dông

Trong c¸c øng dông thu ph¸t th«ng th−êng , sö dông Topology Point – To – Point None Modem sö dông 3 d©y c¸c thanh ghi ®−îc sö dông lµ: - Thanh ghi ®Þa chØ c¬ së XF8 - Thanh ghi LSR ®Þa chØ XFD Ta sÏ giíi thiÖu 2 thanh ghi nµy

• Thanh ghi ®Þa chØ c¬ së lµ thanh ghi t¹i ®©y ta cã thÓ nhËn 1 d÷ liÖu ®Õn tõ 1 hÖ vi xö lý( m¸y tÝnh) kh¸c hoÆc ph¸t ®i 1 d÷ liÖu. Vïng ®Öm cã ®é lín 1 byte. §©y lµ vïng ®Öm kÐp, bao gåm ®Öm gi÷ vµ ®Öm ph¸t: Trong khi 1 ký tù ®ang ®−îc truyÒn ®i ë ®Öm ph¸t th× 1 ký tù kh¸c cã thÓ ®−îc ®−a tõ CPU sang ®Öm gi÷.

Trong m¸y tÝnh PC cã 4 cæng truyÒn tin nèi tiÕp. §Þa chØ c¬ së cña c¸c cæng nh− sau: - COM1: 3F8-3FFh dïng IRQ4 - COM2: 2F8-2FFh dïng IRQ3 - COM3: 3E8-3EFh dïng IRQ4 - COM4: 2E8-2EFh dïng IRQ3

Trong c¸c Mainboard th−êng chØ cã s½n 2 cæng COM1 vµ COM2. Muèn sö dông COM3 vµ COM4 ta ph¶i c¾m thªm 1 card phèi ghÐp I/O ngoµi

Thái Nguyên 8-2008 141

Page 142: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

• Thanh ghi ®iÒu khiÓn ®−êng truyÒn LCR (Line Control Register): Lµ thanh ghi ®Þnh

khu«n d¹ng d÷ liÖu. Có địa chỉ là ĐCCS +3. D7 D1D2D3D4D5D6 D0 D7: Bit DLAB truy nhËp sè chia

D7 = 1 truy nhËp sè chia D7 = 0 Truy nhËp thanh ghi DCCS vµ DCCS+1 D6: Bit ®iÒu khiÓn gi¸n ®o¹n

=1 Buéc Sout =0 = 0 kh«ng ho¹t ®éng

D5: §¶o parity =1 ®¶o parity = 0 kh«ng ho¹t ®éng

D4: Chän t¹o kiÓm tra parity ch½n D3: Cho phÐp t¹o/kiÓm tra parity =1 parity ch½n = 1 cho phÐp =0 parity lÎ = 0 cÊm

D2: Sè bit stop D1, D0: Sè bit truyÒn =0 1 bit 00: 5 =1 1.5 hoÆc 2 01: 6 10:7

11:8 • Thanh ghi tr¹ng th¸i ®−êng truyÒn LSR( Line Status Register) : cã ®Þa chØ = §Þa chØ c¬ së +5 D¹ng thøc cña thanh ghi

D7 D1D2D3D4D5D6 D0 D0: RxDR: Receiver data ready:

=1 ®· nhËn ®−îc1 d÷ liÖu vµ ®Ó nã trong thanh ghi ®Öm thu RBR. bit nµy bÞ xo¸ khi CPU ®äc d÷ liÖu ë RBR.

D1: OR - Lçi do thu ®Ì D2: PE - Lçi Parity D3: FE - Lçi khung D4: BI – Cã sù gi¸n ®o¹n trong khi truyÒn

Thái Nguyên 8-2008 142

Page 143: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

D5: THRE: Transmitter holding register empty( Thanh ghi ph¸t rçng)

= 1 khi ký tù ®· ®−îc chuyÓn tõ THR sang TSR bit nµy bÞ xo¸ khi CPU ®−a ký tù tíi thanh ghi THR

D6: TSRE – Thanh ghi dÞch ph¸t rçng D7 lu«n b»ng 0

• C¸c thanh ghi phôc vô cho ng¾t Nguån g©y ng¾t trong 8250A vµ møc −u tiªn:

Cã thÓ cÊm hoÆc cho phÐp ng¾t 8250A b»ng thanh ghi §CCS +1 khi bit DLAB =0. Khu«n d¹ng thanh ghi cho phÐp ng¾t (IER Interrupt enable register)

0 0 00 MODEM RLINE RxRDY TxEMPTY

MODEM = 1 Cho phÐp c¸c thay ®æi tr¹ng th¸i cña modem g©y ng¾t RLINE = 1 Cho phÐp c¸c tÝn hiÖu tr¹ng th¸i b¸o ®−êng d©y thu g©y ng¾t TxEMPTY = 1 Cho phÐp g©y ng¾t khi ®Öm gi÷ ph¸t rçng RxRDY = Cho phÐp g©y ng¾t khi ®Öm thu ®Çy 8250A chØ cã 1 ®Çu t¸c ®éng ng¾t ®Õn CPU trong khi ®ã nã 4 nguån g©y ra

ng¾t v× vËy cÇn sö dông thanh ghi nhËn d¹ng nguån ng¾t IIR - Interrupt Indentification Register

0 0 0 0 ID0 ID2 ID10

ID0 = 0 Cã yªu cÇu ng¾t = 1 Kh«ng cã Tæ hîp ID1 vµ ID2 m· ho¸ yªu cÇu ng¾t cã møc −u tiªn cao nhÊt ®ang chê ®−îc phôc vô

Thái Nguyên 8-2008 143

Page 144: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

ID2 ID1 Møc

Tªn lo¹i ng¾t Nguån gèc ng¾t IDi bÞ xo¸ khi

1 1 1 Tr¹ng th¸i ®−êng thu Lçi khung, thu ®Ì, lçi parity, gi¸n ®o¹n khi thu

§äc LSR

1 0 2 §Öm thu ®Çy §Öm thu ®Çy §äc RBR

0 1 3 §Öm gi÷ ph¸t rçng §Öm gi÷ ph¸t rçng §äc IIR ghi THR

0 0 4 Tr¹ng th¸i modem ∆CTS, ∆DSR, ∆

RI, ∆RLSD §äc MSR

ViÖc truyÒn tin qua c¸c cæng nèi tiÕp cña m¸y tÝnh PC ®−îc tiÕn hµnh theo c¸c c¸ch

Dïng kü thuËt hái vßng: - Init c¸c cæng : Tªn cæng truyÒn/nhËn), tèc ®é ph¸t/thu, khu«n d¹ng gãi tin - Test thanh ghi LSR víi c¸c bit tr¹ng th¸i t−¬ng øng ®Ó quyÕt ®Þnh göi, nhËn d÷

liÖu theo 1 giao thøc nµo ®ã. Tèc ®é truyÒn qua cæng COM sö dông c¸c vi m¹ch kÕ thõa 8250 ®−îc tÝnh nhê viÖc chän xung ®ång hå X – tal1 vµ viÖc chän sè chia cña tÇn sè nµy( ®Ó t¹i thanh ghi LSB vµ MSB) VÝ dô: 1 ®o¹n ch−¬ng tr×nh khëi ®Çu cho COM2:

mov al, 80h mov dx, 2fbh out dx, al mov al,24 ; tèc ®é 4800 mov dx, 2f8h out dx, al mov al, 0 mov dx, 2f9h out dx, al mov al, 1ah; tõ khu«n d¹ng d÷ liÖu: Parity ch½n, 1 bit stop, 7 bit m· mov dx, 2fb out dx, al

NÕu dïng Pascal:

Thái Nguyên 8-2008 144

Page 145: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

(* Chuong trinh doi thu ky tu tu 1 PC khac den 11/14/2000*) uses crt,dos; var kytu:byte; i,j:longint; BEGIN clrscr; port[$3fb]:=$80; port[$3f8]:=12; port[$3f9]:=0; port[$3fb]:=2; i:=1;j:=0; Repeat clrscr; port[$3fd]:= port[$3fd] and $01; if port[$3fd]<>$01 then { DOI THU } begin gotoxy(30,12);writeln(' Dang doi thu tin hieu ...'); delay(50); end else { THU KY TU } begin kytu:=port[$3f8]; writeln('Ky tu nhan duoc: ',chr(kytu),' So ky tu thu duoc :',i );delay(10);{port[$3f8]:=$5;} i:=i+1; end; { PHAT TRA LAI } asm @1:mov dx,03fdh in al,dx and al,20h cmp al,20h je @2

Thái Nguyên 8-2008 145

Page 146: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

jmp @1 @2:mov al,kytu mov dx,3f8h out dx,al end; Until keypressed;{writeln( ' So ky tu nhan sai',j);} END. uses crt,dos; const a=$2f8; var kt_phat,kt_thu:byte; begin clrscr; {writeln; writeln; Write(' Dang phat chu U ...');} port[a+3]:=$80; port[a]:=12; {9600} port[a+1]:=0; port[a+3]:=2;{none parity, 7} {i:=1;j:=0;} repeat port[a]:=$55;delay(1); Repeat port[$3fd]:= port[$3fd] and $01; until port[$3fd]=$01; kt_thu:=port[$3f8]; writeln(' Thu duoc ',chr(kt_thu)); until keypressed; end.

Thái Nguyên 8-2008 146

Page 147: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Dïng ng¾t

Tr×nh tù cña mét ch−¬ng tr×nh thu/ ph¸t dïng ng¾t

+ CÊm b¸o ng¾t cøng

+ Xo¸ nguån b¸o ng¨t

+ §Æt khu«n d¹ng truyÒn

+ §Æt sè chia

+ DLAB=0

+ Xo¸ b¸o ng¾t ph¸t

+ Xo¸ b¸o ng¾t nhËn

+ §Æt nguån ng¾t lµ thu hay ph¸t

+ B¶o vÖ ng¾t cò

+ Thay vect¬ ng¾t míi

+ Cho phÐp b¸o ng¾t cøng

C¸c lÖnh thu hay nhËn d÷ liÖu ®−îc viÕt trong ch−¬ng tr×nh cña chóng ta d−íi d¹ng ch−¬ng tr×nh phôc vô ng¾t. Khi cã ng¾t (thu hay nhËn) ch−¬ng tr×nh phôc vô ng¾t nµy nµy sÏ thùc hiÖn thu hay nhËn d÷ liÖu.

4.5 Phèi ghÐp víi thiÕt bÞ vµo/ra qua cæng song song

4.5.1 GhÐp nèi song song ®¬n gi¶n

− Cã nhiÒu vi m¹ch tæ hîp cì võa cã thÓ ®−îc dïng lµm cæng phèi ghÐp víi bé vi xö lý ®Ó vµo/ra d÷ liÖu. C¸c m¹ch cæng nµy th−êng ®−îc cÊu t¹o nªn tõ c¸c m¹ch

chèt 8 bit cã ®Çu ra 3 tr¹ng th¸i nh− 74373(kÝch theo møc) hoÆc 74374 (kÝch theo s−ên)

°°

Q0

D7

D0

OC

G

D Q

G

Q7

°

°

Q7

Q0

D7

D0

OC2OC1

Thái Nguyên 8-2008 147

Page 148: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

4.5.2 M¹ch phèi ghÐp vµo/ra song song lËp tr×nh ®−îc PPI 8255A M¹ch 8255A th−êng ®−îc gäi lµ m¹ch phèi ghÐp vµo ra lËp tr×nh

®−îc(programmable peripheral interface - PPI).

• CÊu t¹o:

− 8255 cã 3 cæng (thanh ghi) cã thÓ ®−îc lËp tr×nh thµnh vµo hay ra

− Khi ghÐp vµo mét hÖ vi xö lý, ®Þa chØ cña cæng PA lµ ®Þa chØ c¬ së (§CCS). §Þa chØ PB lµ §CCS+1. §Þa chØ PC lµ §CCS+2

− §Ó lËp tr×nh cÇn ®−a tõ ®iÒu khiÓn vµo thanh ghi tõ ®iÒu khiÓn CWR (cã ®Þa chØ lµ §CCS+3)

− C¸c ch©n Reset, WR, RD, A0, A1, CS...

§Öm bus D

§iÒu khiÓn

nhãm B

§iÒu khiÓn

nhãm A

Nhãm BPB

Nhãm BPCL

Nhãm APCH

Nhãm APA

Bus néi bé

PC4 - PC7

PB0 - PB7

PA0 - PA7

PC0 - PC3 Logic ®iÒu

khiÓn ghi/®äc

RDWRA0A1

ResetCS

D0 - D7

S¬ ®å cÊu tróc bªn trong cña 8255A

• Tõ ®iÒu khiÓn cña 8255A

D0 D1D2D3D4D7 D6 D5

D0: PCL 1=lèi vµo D4: PA 1=lèi vµo D2: Mode 1= Mode 1 0= lèi ra 0= lèi ra 0= Mode 0 D1: PB 1=lèi vµo D5 – D6 00= Mode 0 D3: PCH 1=lèi vµo 0= lèi ra Mode 01= Mode 1 0= lèi ra

Thái Nguyên 8-2008 148

Page 149: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

1x= Mode 2 D7: Mode 1 = Active

• C¸c chÕ ®é lµm viÖc cña 8255A:

+ ChÕ ®é 0: "Vµo ra c¬ së":

+ ChÕ ®é 1: "Vµo ra cã xung cho phÐp"

+ ChÕ ®é 2: "Vµo ra 2 chiÒu"

+ LËp xo¸ c¸c bit PCi

• VD lËp tr×nh 8255A:

§iÒu khiÓn b¨ng t¶i

§Ìn b¸o hiÖu

§Çu thu hång ngo¹i

Cho s¬ ®å ghÐp nèi 8255A víi m¸y tÝnh nh− sau t¹i ®Þa chØ c¬ së 300h TÝn hiÖu ®Õm s¶n phÈm (=1 khi cã s¶n phÈm) cña d©y chuyÒn s¶n xuÊt ®−a vµo PA0 . §ãng c¾t d©y chuyÒn b»ng PC0 ( = 0 : D©y chuyÒn dõng l¹i). ViÕt ch−¬ng tr×nh ®iÒu khiÓn ®Ó khi s¶n xuÊt ®ñ 5000 s¶n phÈm th× d©y chuyÒn dõng l¹i vµ ®Ìn b¸o hiÖu bËt s¸ng (PB0 = 1).

Thái Nguyên 8-2008 149

Page 150: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

Ch−¬ng 5 ThiÕt kÕ hÖ thèng vi xö lý 5.1 ThiÕt kÕ phÇn cøng

Nhắc lại vi điều khiển 89C51/52 Hệ vi xử lý bao gồm phần cứng + phần mềm Vẽ hình cấu tạo vi điều khiển 51/52 Vẽ hình nguyên lý vi điều khiển 51/52 - Giải thích các cổng, các chân tín hiệu EA, PSEN, RST,...và các mạch điện kèm theo

5.2 ThiÕt kÕ phÇn mÒm ROM Mapping ThiÕt kÕ c¸c vïng nhí cho ROM:

+ Vïng chøa ch−¬ng tr×nh khëi ®éng hÖ thèng

+ Ch−¬ng tr×nh kiÓm tra bé nhí, thiÕt bÞ ngo¹i vi

+ Vïng chøa ch−¬ng tr×nh phôc vô ng¾t

+ Vïng chøa c¸c b¶ng chuyÓn ®æi sè liÖu ra m· ASCII, m· 7segment

+ Vïng sè hiÖu ngµy th¸ng ®Æc ®iÓm cña vi m¹ch ROM RAM Mapping ThiÕt kÕ c¸c vïng nhí cho RAM:

+ Vïng chuyÓn giao d÷ liÖu truyÒn tin

+ Ng¨n xÕp

+ Vïng tÝnh to¸n

ADC

Load ll

Ur

Phôi liệu

Khoá van

Hệ vi xử lý đơn giản sử dụng vi điều khiển

Thái Nguyên 8-2008 150

Page 151: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

MAX 232 sử dụng trong truyền tin nối tiếp

Mạch nguồn nuôi

Thái Nguyên 8-2008 151

Page 152: Bài giảng Vi xử lý và Lập trình hợp ngữ - Phạm Đức Long

Phạm Đức Long Bộ môn CNĐKTĐ Khoa CNTT - ĐHTN BÀI GIẢNG MÔN HỌC VI XỬ LÝ VÀ LẬP TRÌNH HỢP NGỮ

5.3 ThiÕt kÕ c¸c ch−¬ng tr×nh hÖ thèng

Khi thiÕt kÕ c¸c hÖ vi xö lý nhá, c¸c ch−¬ng tr×nh th−êng ®−îc viÕt råi n¹p trong ROM. Víi c¸c ch−¬ng tr×nh nhë cã thÓ sö dông ROM trong vi ®iÒu khiÓn hoÆc ROM ngoµi.

Còng t−¬ng tù, víi c¸c øng dông nhá th× RAM trong ®· cã thÓ ®¸p øng nhu cÇu sö dông. NÕu cÇn dung l−îng lín h¬n ta ph¶i sö dông RAM ngoµi. 5.4 ThiÕt kÕ c¸c ch−¬ng tr×nh øng dông

Tuú theo yªu cÇu cô thÓ mµ hÖ vi xö lý ph¶i ®¶m nhiÖm. C¸c ch−¬ng tr×nh còng cã thÓ chØ cÇn chøa trong ROM trong nÕu kÝch th−íc nhá, hoÆc trong ROM ngoµi nÕu cã kÝch th−íc lín.

Tµi liÖu tham kh¶o

[1]. V¨n ThÕ Minh, Kỹ thuật vi xö lý, NXBGD, 1997 [2]. §ç Xu©n TiÕn, Kü thuËt vi xö lý vµ lËp tr×nh assembly cho hÖ vi xö lý,

NXBKHKT, 2001 [3]. Ytha yu & charles marut, LËp tr×nh hîp ng÷ vµ m¸y vi tÝnh IBM-PC,

NXBGD, 1998 [4]. John Uffenbeck, The 80x86 family - Design, Programming, and

Interfacing, Prentice Hall, 1998

Thái Nguyên 8-2008 152