You are on page 1of 112

Luan Van Tot Nghiep

CHNG I
GII THIEU VI IEU KHIEN 8051
I. CAU TAO VI IEU KHIEN 8051
0 TOM TAT PHAN CNG HO MSC-51 (8051)

MCS-51 la ho IC vi ieu khien do hang Intel san xuat. Cac IC tieu bieu cho ho la 8031, 8051, 8951... Nhng ac iem chnh va nguyen tat hoat ong cua cac bo vi ieu khien nay khac nhau khong nhieu. Khi a s dung thanh thao mot loai vi ieu khien th ta co the nhanh chong van dung kinh nghiem e lam quen va lam chu cac ng dung cua mot bo vi ieu khien khac. V vay e co nhng hieu biet cu the ve cac bo vi ieu khien cung nh e phuc vu cho e tai tot nghiep nay ta bat au tm hieu mot bo vi ieu khien thong dun g nhat, o la ho MCS-51 va neu nh ho MCS51 la ho ien hnh th 8051 lai chnh la ai dien tieu bieu Cac ac iem cua 8051 c sau :

tom tat nh

4 KB ROM ben trong. 128 Byte RAM noi. 4 Port xuat /nhap I/O 8 bit. Giao tiep noi tiep. 64 KB vung nh ma ngoai 64 KB vung nh d lieu ngoai. X ly Boolean (hoat ong tren bit n). 210 v tr nh co the nh v bit. 4 s cho hoat ong nhan hoac chia.

Bang mo ta s khac nhau cua cac IC trong ho MSC-51 :


GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Loa i 805 1 803 1 875 1 805 2 803 2 875 2

Bo Nh Ma Tren CHIP 4K ROM 0K ROM 4K ROM 8 K ROM 0 K ROM 8K EPROM

Bo Nh D Lieu Tren CHIP 128 Byte 128 Byte 128 Byte 256Byte 256Byte 256Byte

So Timer 2 2 2 2 2 2

2. CAU TRUC VK 8051, CHC NANG TNG CHAN 30pF


12 MHz 40 19 XTAL.1 18 29 30 31 9
RD WR T1 T0 INT1 INT0 TXD RXD 17 16 15 14 13 12 11 10

Vcc XTAL.2 PSEN ALE EA RST


P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 32 33 34 35 36 37 38 39 8 7 6 5 4 3 2 1 28 27 26 25 24 23 22 21 A15 A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0

30pF

8051

Vss 20 GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Chc nang hoat ong cua tng chan (pin) c tom tat nh sau : T chan 1 8 Port 1 (P1.0, . . ., P1.7) dung lam Port xuat nhap I/O e giao tiep ben ngoai. Chan 9 (RST) la chan e RESET cho 8051. Bnh thng cac chan nay mc thap. Khi ta a tn hieu nay len cao (toi thieu 2 chu ky may). Th nhng thanh ghi noi cua 8051 c LOAD nhng gia tr thch hp e khi ong lai he thong. T chan 10 17 la Port3 (P3.0, P3.1, . . ., P3.7) dung vao hai muc ch : dung la Port xuat / nhap I/O hoac moi chan gi mot chc nang ca biet c tom tat s bo nh sau : P3.0 (RXD) : Nhan d lieu t Port noi tiep. P3.1 (TXD) : Phat d lieu t Port noi tiep. P3.2 (INT0) : Ngat 0 ben ngoai. P3.3 (INT1) : Ngat 1 t ben ngoai. P3.4 (T0) : Timer/Counter 0 nhap t ben ngoai. P3.5 (T1) : Timer/Counter 1 nhap t ben ngoai. P3.6 (WR) : Tn hieu Strobe ghi d lieu len bo nh ben ngoai. P3.7 (RD) : Tn hieu Strobe oc d lieu len bo nh ben ngoai. Cac chan 18,19 (XTAL2 va XTAL1) c noi vi bo dao ong thach anh 12 MHz e tao dao ong tren CHIP. Hai tu 30 pF c them vao e on nh dao ong.

Chan 20 (Vss) noi at (Vss = 0).

T chan 21 28 la Port 2 (P2.0, P2.1, . . ., P2.7) dung vao hai muc ch: lam Port xuat/nhap I/O hoac dung lam byte cao cua bus a ch th no khong con tac dung I/O na. Bi v ta muon dung EPROM va RAM ngoai nen phai s dung Port 2 lam byte cao bus a ch. Chan 29 (PSEN) la tn hieu ieu khien xuat ra cua 8051, no cho phep chon bo nh ngoai va c noi chung vi chan cua OE (Outout Enable) cua EPROM
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

ngoai e cho phep oc cac byte cua chng trnh. Cac xung tn hieu PSEN ha thap trong suot thi gian thi hanh lenh. Nhng ma nh phan cua chng trnh c oc t EPROM i qua bus d lieu va c chot vao thanh ghi lenh cua 8051 bi ma lenh. Chan 30 (ALE : Adress Latch Enable) la tn hieu ieu khien xuat ra cua 8051, no cho phep phan kenh bus a ch va bus d lieu cua Port 0. Chan 31 (EA : Eternal Acess) c a xuong thap cho phep chon bo nh ma ngoaioi vi 8031. oi vi 8051 th : EA = 5V : Chon ROM noi. EA = 0V : Chon ROM ngoai. EA = 21V : Lap trnh EPROM noi. Cac chan t 32 39 la Port 0 (P0.0, P0.1, . . . , P0.7) dung ca hai muc ch : Va lam byte thap cho bus a ch, va lam bus d lieu, neu vay Port 0 khong con chc nang xuat nhap I/O na. Chan 40 (Vcc) c noi len nguon 5V.

3. TO CHC BO NH Ban o bo nh data tren Chip nh sau :


a ch byte
7F

a ch bit

a ch byte
FF F0

a ch bit
F6 E6 F5 E5 F4 F3 F2 F1 F0 E0 B ACC PSW IP P.3 IE P2 SBUF SCON P1 TH1

F7 E7

RAM a dung
E0 E4 E3 E2 E1 D0 D7 D6 D5 D4 D3 D2 D1 D0 3 0 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 B8 7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 7C 74 6C 64 5C 54 4C 44 3C 34 2C 24 1C 7B 73 6B 63 5B 53 4B 43 3B 33 2B 23 1B 7A 72 6A 62 5A 52 4A 42 3A 32 2A 22 1A 79 71 69 61 59 51 49 41 39 31 29 21 19 78 70 68 60 58 50 48 40 38 30 28 20 18 B0 A8 A0 99 98 90 8D B7 AF A7 A6 A5 B6 B5 BC BB BA B9 B4 B3 B2 B1 AC AB AA A9 A4 A3 A2 A1 B8 B0 A8 A0

khong c a ch hoa bit 9F 9E 9D 9C 9B 9A 99 98 97 96 95 94 93 92 91 90

khong c a ch hoa bit

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep


22 17 21 0F 20 07 1F 18 17 10 0F 08 07 00 16 0E 06 15 0D 05 14 13 0C 0B 04 03 Bank 3 Bank 2 Bank 1 Bank thanh ghi 0 (mac nh cho R0 -R7) 12 0A 02 11 09 01 10 08 00 8C 8B 8A 89 88 87 83 82 81 88 khong khong khong khong 8F 8E khong khong khong khong 87 86 c a ch hoa c a ch hoa c a ch hoa c a ch hoa 8D 8C 8B 8A 89 c a ch hoa c a ch hoa c a ch hoa c a ch hoa 85 84 83 82 81 bit TH0 bit TL1 bit TL0 bit TMOD 88 TCON bit PCON bit bit bit 80 DPH DPL SP P0

RAM

CAC THANH GHI CHC NANG AC BIET

Tom tat bo nh d lieu tren chip. 3.1 RAM muc ch chung Trong ban o bo nh tren, 80 byte t a ch 30H 7FH la RAM muc ch chung. Ke ca 32byte phan di t 00H 2FH cung co the s dung giong nh 80 byte tren, tuy nhien 32 byte con co muc ch khac se e cap sau. Bat ky v tr nao trong RAM muc ch chung cung co the c truy xuat tuy y giong nh viec s dung cac mode e nh a ch trc tiep hay gian tiep. V du e oc noi dung cua RAM noi co a ch 5FH vao thanh ghi tch luy th ta dung lenh : MOV A, 5FH. RAM noi cung c truy xuat bi viec dung a ch gian tiep qua R0 va R1. Hai lenh sau ay se tng ng lenh tren : MOV R0, #5FH MOV A, @R0 Lenh th nhat dung s nh v tc thi e a gia tr 5FH vao thanh ghi R0, lenh th hai dung s nh v gian tiep e a d lieu a c tro en bi R0 vao thanh ghi tch luy A. 3.2 RAM nh v 8051 cha 210 v tr co the nh v bit, trong o co 128 bit nam cac a ch t 20H 2FH va phan con lai la cac thanh ghi chc nang ac biet. 3.3 Cac bang thanh ghi (Register Banks) 32 v tr nh cuoi cung cua bo nh t a ch byte 00H 1FH chc cac day thanh ghi. Tap hp cac lenh cua 8051 cung cap 8 thanh ghi t R0 R7 a ch 00H 07H neu may tnh mac nhien chon e thc thi. Nhng lenh tng ng dung s nh v trc tiep.
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Nhng gia tr d lieu c dung thng xuyen chac chan se s dung mot trong cac thanh ghi nay. 3.4 Cac thanh ghi chc nang ac biet (Special Function Register) Co 21 thanh ghichc nang ac biet SFR nh cua RAM noi t a ch cac thanh ghi chc nang ac biet c nh ro, con phan con lai khong nh ro. Mac du thanh ghi A co the truy xuat trc tiep, nhng hau het cac thanh ghi chc nang ac biet c truy xuat bang cach s dung s nh v a ch trc tiep. Chu y rang vai thanh ghi SFR co ca bit nh v va byte nh v. Ngi thiet ke se can than khi truy xuat bit ma khong truy xuat byte. 3.4.1 T trang thai chng trnh (PSW : Program Status Word) : T trang thai chng trnh a ch D0H c tom tat nh sau :

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep BIT PSW.7 PSW.6 PSW.5 PSW4 PSW.3 SYMBOL CY AC F0 RS1 RS0 ADDRESS D7H D6H D5H D4H D3H DESCRIPTION Cary Flag Auxiliary Cary Flag Flag 0 Register Bank Select 1 Register Bank Select 0 00=Bank 0; address 00H 07H 01=Bank 1; address 08H 0FH 10=Bank 2; address 10H 17H 11=Bank 3; address 18H 1FH PSW.2 PSW.1 PSW.0 OV P D2H D1H DOH Overlow Flag Reserved Even Parity Flag

Chc nang tng bit trang thai chng trnh a) C Carry CY (Carry Flag) : C Carry c set len 1 neu co s tran bit 7 trong phep cong hoac co s mn vao bit 7 trong phep tr. C Carry cung la 1 thanh ghi tch luy luan ly, no c dung nh mot thanh ghi 1 bit thc thi tren cac bit bi nhng lenh luan ly. V du lenh : ANL C, 25H se AND bit 25H vi c Carryva cat ket qua vao c Carry. b) C Carry phu AC (Auxiliary Carry Flag) : Khi cong nhng gia tr BCD (Binary Code Decimal), c nh phu AC cset neu co s tran t bit 3 sang 4 hoac 4 bit thap nam trong pham vi0AH 0FH. c) C 0 (Flag 0) : C 0 (F0) la bit c co muc ch tong hp cho phep ngi ng dung dung no. d). Nhng bit chon day thanh ghi RS1 va RS0 : RS1 va RS0 quyet nh day thanh ghi tch cc. Chung c xoa sau khi reset he thong va c thay oi bi phan mem khi can thiet. e. C tran OV (Over Flag) :
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

C tran c set sau mot hoat ong cong hoac tr neu co s tran toan hoc. Bit OV c bo qua oi vi s cong tr khong dau. Khi cong tr co dau, ket qua ln hn + 127 hay nho hn -128 se set bit OV. f. Bit Parity (P) : Bit t ong c set hay Clear moi chu ky may e lap Parity chan vi thanh ghi A. S em cac bit 1 trong thanh ghi A cong vi bit Parity luon luon chan. V du A cha 10101101B th bit P set len mot e tong so bit 1 trong A va P tao thanh so chan. Bit Parity thng c dung trong s ket hp vi nhng thu tuc cua Port noi tiep e tao ra bit Parity trc khi phat i hoac kiem tra bit Parity sau khi thu. 3.4.2 Thanh ghi B : Thanh ghi B a ch F0H c dung i oi vi thanh ghi A cho cac hoat ong nhan chia. Thanh ghi B co the c dung nh mot thanh ghi em trung gian a muc ch. No la nhng bit nh v thong qua nhng a ch t F0H F7H. 3.4.3 Con tro Stack SP (Stack Pointer) : Stack Pointer la mot thanh ghi 8 bit a ch 81H. No cha a ch cua d lieu ang hien hanh tren nh Stack. Cac hoat ong cua Stack bao gom viec ay d lieu vao Stack (PUSH) va lay d lieu ra khoi Stack (POP). Viec PUSH vao Stack se tang SP len 1 trc khi d lieu vao. Viec POP t Stack ra se lay d lieu ra trc roi giam SP i 1. 3.4.4 Con tro d lieu DPTR (Data Pointer) : Data Pointer c e truy xuat bo nh ma ngoai hoac bo nh d lieu ngoai, no la mot thanh ghi 16 bit ma byte thap la DPL a ch 82H con byte cao la DPH a ch 83H. e a noi dung 55H vao RAM ngoai co a ch 1000H ta dung 3 lenh sau : MOV A, #55H MOV DPTR, #1000H
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

MOVX @ DPTR, A Lenh th nhat dung s nh v trc tiep a hang so d lieu 55H vao A. Lenh th hai cung tng t lenh th nhat a hang so d lieu 1000H vao trong DPTR . lenh cuoi cung dung s nh v gian tiep e dch chuyen gia tr 55H trong A vao vung nh RAM ngoai 1000H nam trong DPTR. 3.4.5 Cac thanh ghi Port (Port Register) : Cac Port 0, Port 1, Port 2, Port 3 co a ch tng ng 80H, 90H, A0H, B0H. Cac Port 0, Port 1, Port 2, Port 3 khong con tac dung xuat nhap na neu bo nh ngoai c dung hoac mot vai ca tnh ac biet cua 8051 c dung (nh Interrupt, Port noi tiep . . .). Do vay ch con co Port1 co tac dung xuat nhap I/O. Tat ca cac Port eu co bit a ch, do o no co kha nang giao tiep vi ben ngoai manh me. 3.4.6 Cac thanh ghi Timer (Timer Register) : 8051 co 2 bo : Mot bo Timer 16 bit va mot bo Counter 16 bit, hai bo nay dung e nh gi luc ngh cua chng trnh hoac em cac s kien quan trong. Timer 0 co bit thap TL0 a ch 8AH va co bit cao TH0 a ch 8CH. Timer 1 co bit thap a ch 8BH va bit cao TH1 a ch 8DH. Hoat ong nh thi c cho phep bi thanh ghi mode nh thi TMOD (Timer Mode Register). a ch 89H va thanh ghi ieu khien nh thi TCON (Timer Control Register) a ch 88H. Ch co TCON co bit nh v. Register) : 3.4.7 Cac thanh ghi Port noi tiep (Serial Port

8051 cha mot Port noi tiep tren Chip cho viec truyen thong tin vi nhng thiet b noi tiep nh la nhng thiet b au cuoi, modem, hoac e giao tiep IC khac vi nhng bo bien oi A/D, nhng thanh ghi di chuyen, RAM . . .). Thanh ghi em d lieu noi tiep SBUF a ch 99H gi ca d lieu phat lan d lieu thu. Viec ghi len SBUF e LOAD d lieu cho viec truyen va oc SBUF e truy xuat d lieu cho viec nhan nhng mode hoat ong khac nhau c lap trnh thong qua thanh ghi ieu khien Port noi tiep SCON. 3.4.8 Cac thanh ghi ngat (Interrupt Register) :
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

8051 co hai cau truc ngat u tien, 5 bo nguon. Nhng Interrupt b mat tac dung sau khi he thong reset (b cam) va sau o c cho phep bi viec cho phep ghi len thanh ghi cho phep ngat IE (Interrup Enable Register) a ch A8H. Mc u tien c at vao thanh ghi u tien ngat IP (Interrupt Priority Level) tai a ch B8H. Ca 2 thanh ghi tren eu co bit a ch. 3.4.9 Thanh ghi ieu khien nguon PCON (Power Control Register) : Thanh ghi PCON khong co bit nh v. No a ch 87H bao gom cac bit a ch tong hp. Cac bit PCON c tom tat nh sau : Bit 7 (SMOD) : Bit co toc o Baud mode 1, 2, 3 Port noi tiep khi set.

Bit 6, 5, 4 : Khong co a ch. Bit 3 (GF1) : Bit 1 cua c a nang. Bit 2 (GF0) : Bit 2 cua c a nang.

Bit 1 * (PD) : Set e khi ong mode Power Down va thoat e reset.
Bit 0

(IDL) : Set e khi ong mode Idle va thoat khi ngat mach hoac reset.
*

Cac bit ieu khien Power Down va Idle co tac dung chnh trong tat ca cac IC ho MSC-51 nhng ch c thi hanh trong s bien dch cua CMOS.

II. TOM TAT TAP LENH CUA 8051


Cac chng trnh c cau tao t nhieu lenh, chung c xay dng logic, s noi tiep cua cac lenh c ngh ra mot cach hieu qua va nhanh, ket qua cua chng trnh th kha quan. Tap lenh ho MSC-51 c s kiem tra cua cac mode nh v va cac lenh cua chung co cac Opcode 8 bit. ieu nay cung cap kha nang 2 8=256 lenh c thi hanh va mot lenh khong c nh ngha. Vai lenh co 1 hoac 2 byte bi d lieu hoac a ch them vao Opcode. Trong toan bo cac lenh co 139 lenh 1 byte, 92 lenh 2 byte va 24 lenh 3 byte. 1. CAC CHE O NH V (ADDRESSING MODE)

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Cac mode nh v la mot bo phan thong nhat cua tap lenh moi may tnh. Chung cho phep nh ro nguon hoac ni gi ti cua d lieu cac ng khac nhau tuy thuoc vao trang thai cua lap trnh. 8051 co 8 mode nh v c dung nh sau : Thanh ghi. Trc tiep. Gian tiep. Tc thi. Tng oi. Tuyet oi. Dai. nh v. S nh v thanh ghi (Register

1.1 Addressing)

Co 4 day thanh ghi 32 byte au tien cua RAM d lieu tren Chip a ch 00H 1FH, nhng tai mot thi iem ch co mot day hoat ong cac bit PSW3, PSW4 cua t trang thai chng trnh se quyet nh day nao hoat ong. Cac lenh e nh v thanh ghi c ghi mat ma bang cach dung bit trong so thap nhat cua Opcode lenh e ch mot thanh ghi trong vung a ch theo logic nay. Nh vay 1 ma chc nang va a ch hoat ong co the c ket hp e tao thanh mot lenh ngan 1 byte nh sau :
Opcode

Register Addressing. 1.2 S nh a ch trc tiep (Direct Addressing) S nh a ch trc tiep co the truy xuat bat ky gia tr nao tren Chip hoac thanh ghi phan cng tren Chip. Mot byte a ch trc tiep c a vao Opcode e nh ro v tr c dung nh sau :
Opcode

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Direct Addressing

Tuy thuoc cac bit bac cao cua a ch trc tiep ma mot trong 2 vung nh c chon. Khi bit 7 = 0, th a ch trc tiep trong khoang 0 127 (00H 7FH) va 128 v tr nh thap cua RAM tren Chip c chon. 1.3 S nh v a ch gian tiep (Indirect Addressing) S nh a ch gian tiep c tng trng bi ky hieu @ c at trc R0, R1 hay DPTR. R0 va R1 co the hoat ong nh mot thanh ghi con tro ma noi dung cua no cho biet mot a ch trong RAM noi ni ma d lieu c ghi hoac c oc. Bit co trong so nho nhat cua Opcode lenh se xac nh R0 hay R1 c dung con tro Pointer.
Opcode

V du e a noi dung 60 H vao RAM noi tai a ch 50H ta lam nh sau: MOV R1,#50H MOV @R1,60H 1.4. S nh (Immediate Addressing) v a ch tc thi

S nh a ch tc thi c tng trng bi ky hieu # c ng trc mot hang so, 1 bien ky hieu hoac mot bieu thc so hoc c s dung bi cac hang, cac ky hieu, cac hoat ong do ngi ieu khien. Trnh bien dch tnh toan gia tr va thay the d lieu tc thi. Byte lenh them vo cha tr so d lieu tc thi nh sau :
Opcode

Immediate Data

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

V du : vao A. vao A. nay vao A. MOV A, # 12 a trc tiep so thap phan 12 MOV A, # 10 a trc tiep so Hex 10H (16D) MOV A, # 00010001B a trc tiepso nh phan

1.5 S nh v a ch tng oi S nh a ch tng oi ch s dung vi nhng lenh nhay nao o. Mot a ch tng oi (hoac Offset) la mot gia tr 8 bit ma no c cong vao bo em chng trnh PC e tao thanh a ch mot lenh tiep theo c thc thi. Pham vi cua s nhay nam trong khoang -128 127. Offset tng oi c gan vao lenh nh mot byte them vao nh sau :
Opcode

Relative Offset

S nh v tng oi em lai thuan li cho viec cung cap ma v tr oc lap, nhng bat li la ch nhay ngan trong pham vi -128 127 byte. 1.6 S nh a ch tuyet oi (Absolute Addressing) S nh a ch tuyet oi c dung vi cac lenh ACALL va AJMP. Cac lenh 2 byte cho phep phan chia trong trang 2K ang lu hanh cua bo nh ma cua viec cung cap 11 bit thap e xac nh a ch trong trang 2K (A0 A10 gom A10 A8 trong Opcode va A7 A0 trong byte)va 5 bit cao e chon trang 2K (5 bit cao ang lu hanh trong bo em chng trnh la 5 bit Opcode).
Addr 10 Addr 8

Opcode

Addr 7 Addr 0

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

S nh v tuyet oi em lai thuan li cho cac lenh ngan (2 byte), nhng bat li trong viec gii han pham vi ni gi en va cung cap ma co v tr oc lap. 1.7 Addressing) S nh v a ch dai (Long

S nh v dai c dung vi lenh LCALL va LJMP. Cac lenh 3 byte nay bao gom mot a ch ni gi ti 16 bit ay u la 2 byte va 3 byte cua lenh.
Opcode

Addr 15 Addr 8

Addr 7 Addr 0

u iem cua s nh dai la vung nh ma 64K co the c dung het, nhc iem la cac lenh o dai 3 byte va v tr le thuoc. S phu thuoc vao v tr se bat li bi chng trnh khong the thc thi tai a ch khac. 1.8 Addressing) S nh a ch phu luc (Index

S nh a ch phu luc dung mot thanh ghi c ban (cung nh bo em chng trnh hoac bo em d lieu) va Offset (thanh ghiA) trong s hnh thanh 1 a ch lien quan bi lenh JMP hoac MOVC. Base Register
PC (or PDTR)

Offset
ACC

Effective Address

Index Addressing. 2. CAC KIEU LENH (INSTRUCTION TYPES) 8051 chia ra 5nhom lenh chnh : Cac lenh so hoc. Lenh logic. Dch chuyen d lieu.
SVTH: NGUYEN NGOC

GVHD: NGUYEN NH PHU TOAN

Luan Van Tot Nghiep

Ly luan. Re nhanh chng trnh. 2.1 Cac lenh so hoc (Arithmetic Instrustion) ADD A, <src, byte> ADD ADD ADD ADD ADDC ADDC ADDC ADDC SUBB SUBB SUBB SUBB A, Rn A, direct A, @ Ri A, # data A, Rn A, direct A, @ Ri A, # data A, Rn A, direct A, @ Ri A, # data : (A) (A) + (Rn) : (A) (A) + (direct) : (A) (A) + ((Ri)) : (A) (A) + # data : (A) (A) + (C) + (Rn) : (A) (A) + (C) + (direct) : (A) (A) + (C) + ((Ri)) : (A) (A) + (C) + # data : (A) (A) - (C) - (Rn) : (A) (A) - (C) - (direct) : (A) (A) - (C) - ((Ri)) : (A) (A) - (C) - # data : (A) (A) + 1 : (direct) (direct) + 1 : ((Ri)) ((Ri)) + 1 : (Rn) (Rn) + 1 : (DPTR) (DPTR) + 1

Tng kieu lenh c mo ta nh sau : :

SUBB A, <src, byte>

INC <byte> INC INC INC INC INC A direct Ri Rn DPTR

DEC <byte> DEC DEC DEC DEC A direct @Ri Rn : (A) (A) - 1 : (direct) (direct) - 1 : ((Ri)) ((Ri)) - 1 : (Rn) (Rn) - 1
SVTH: NGUYEN NGOC

GVHD: NGUYEN NH PHU TOAN

Luan Van Tot Nghiep

MULL

AB

: (A) LOW [(A) x (B)] ; co anh hng c OV : (B) HIGH [(A) x (B)] ; c Cary c xoa.

DIV

AB

: (A) Integer Result of [(A)/(B)]; c OV : (B) Remainder of [(A)/(B)]; c Carry xoa

DA

: ieu chnh thanh ghi A thanh so BCD ung trong phep cong BCD (thng DA A i kem vi ADD, ADDC)

+ 6. 6.

Neu [(A3-A0)>9] va [(AC)=1] (A3 A0) (A3 A0) Neu [(A7-A4)>9] va [(C)=1] (A7 A4) (A7 A4) + 2.2 Cac hoat ong logic (Logic Operation) :

Tat ca cac lenh logic s dung thanh ghi A nh la mot trong nhng toan hang thc thi mot chu ky may, ngoai A ra mat 2 chu ky may. Nhng hoat ong logic co the c thc hien tren bat ky byte nao trong v tr nh d lieu noi ma khong qua thanh ghi A. Cac hoat ong logic c tom tat nh sau : ANL <dest - byte> <src - byte> ANL ANL ANL ANL ANL ANL A, Rn A, direct A,@ Ri A, # data direct, A : (A) (A) AND (Rn). : (A) (A) AND (direct). : (A) (A) AND ((Ri)). : (A) (A) AND (# data). : (direct) (direct) AND (A). : (direct) (direct) AND # data.

direct, # data

ORL <dest - byte> <src - byte> ORL ORL ORL A, Rn A, direct A,@ Ri : (A) (A) OR (Rn). : (A) (A) OR (direct). : (A) (A) OR ((Ri)).
SVTH: NGUYEN NGOC

GVHD: NGUYEN NH PHU TOAN

Luan Van Tot Nghiep

ORL ORL ORL

A, # data direct, A

: (A) (A) OR # data. : (direct) (direct) OR (A). : (direct) (direct) OR # data.

direct, # data

XRL <dest - byte> <src - byte> XRL XRL XRL XRL XRL XRL A, Rn A, direct A,@ Ri A, # data direct, A : (A) (A) ) (Rn). : (A) (A) ) (direct). : (A) (A) ) ((Ri)). : (A) (A) ) # data. : (direct) (direct) ) (A). : (direct) (direct) ) data. #

direct, # data

y = a) b = ab + ab CLR CLR CLR RL A C Bit A : (A) 0 : (C) 0 : (Bit) 0 : Quay vong thanh ghi A qua trai 1 bit (An + 1) (An); n = 0 6 (A0) (A7) RLC A : Quay vong thanh ghi A qua trai 1 bit co c Carry (An + 1) (An); n = 0 6 (C) (A7) (A0) (C) RR A : Quay vong thanh ghi A qua phai 1 bit (An + 1) (An); n = 0 6 (A0) (A7) RRC A : Quay vong thanh ghi A qua phai 1 bit co c Carry (An + 1) (An); n = 0 6 (C) (A7) (A0) (C)
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

SWAP

: oi cho 4 bit thap va 4 bit cao cua A cho nhau (A3 A0)(A7 A4).

2.3 Cac lenh re nhanh : Co nhieu lenh e ieu khien len chng trnh bao gom viec goi hoac tra lai t chng trnh con hoac chia nhanh co ieu kien hay khong co ieu kien. Tat ca cac lenh re nhanh eu khong anh hng en c. Ta co the nh nhan can nhay ti ma khong can ro a ch, trnh bien dch se at a ch ni can nhay ti vao ung khau lenh a a ra. Sau ay la s tom tat tng hoat ong cua lenh nhay. JC = 1. JNC = 0. JB JNB JBC xoa bit. ACALL 2K. (PC) (PC) + 2 (SP) (SP) + 1 ((SP)) (PC7 PC0) (SP) (SP) + 1 ((SP)) (PC15 PC8) (PC10 PC0) page Address. LCALL trong 64K. addr16 : Lenh goi dai chng trnh con (PC) (PC) + 3 (SP) (SP) + 1 ((SP)) (PC7 PC0) (SP) (SP) + 1 ((SP)) (PC15 PC8)
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

rel rel bit, rel bit, rel bit, rel

: Nhay en rel neu c Carry C : Nhay en rel neu c Carry C : Nhay en rel neu (bit) = 1. : Nhay en rel neu (bit) = 0. : Nhay en rel neu bit = 1 va oi trong page

addr11 : Lenh goi tuyet

Luan Van Tot Nghiep

(PC) Addr15 Addr0. RET trnh chnh. : Ket thuc chng trnh con tr ve chng (PC15 PC8) (SP) (SP) (SP) - 1 (PC7 PC0) ((SP)) (SP) (SP) -1. RETI : Ket thuc thu tuc phuc vu ngat quay ve chng trnh chnh hoat ong tng t nh RET. Addr11 : Nhay tuyet oi khong ieu (PC) (PC) + 2 (PC10 PC0) page Address. LJMP trong 64K SJMP 128 127) byte Addr16 : Nhay dai khong ieu kien Hoat ong tng t lenh LCALL. rel : Nhay ngan khong ieu kien trong ((PC) (PC) + 2 (PC) (PC) + byte 2 JMP @ A + DPTR:Nhay khong ieu kien en a ch (A) + (DPTR) (PC) (A) + (DPTR) JZ neu A 0. rel : Nhay en A = 0. Thc hanh lenh ke (PC) (PC) + 2 (A) = 0 (PC) (PC) + byte 2 JNZ neu A = 0. rel : Nhay en A 0. Thc hanh lenh ke (PC) (PC) + 2 (A) < > 0 (PC) (PC) + byte 2 CJNE direct A, direct, rel : So sanh va nhay en A (PC) (PC) + 3
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

AJMP kien trong 2K.

Luan Van Tot Nghiep

Address.

(A) < > (direct) (PC) (PC) + Relative (A) < (direct) C = 1 (A) > (direct) C = 0 (A) = (direct). Thc hanh lenh ke tiep CJNE A, # data, rel : Tng t lenh CJNE A, direct, rel. CJNE Rn, # data, rel : Tng t lenh CJNE A, direct, CJNE @ Ri, # data, rel : Tng t lenh CJNE A, direct, DJNE Rn, rel : Giam Rn va nhay neu Rn 0. (PC) (PC) + 2 (Rn) (Rn) -1 (Rn) < > 0 (PC) (PC) + byte 2. DJNZ direct, rel : Tng t lenh DJNZ Rn, rel. 2.4 Cac lenh dch chuyen d lieu :

rel. rel.

Cac lenh dch chuyen d lieu trong nhng vung nh noi thc thi 1 hoac 2 chu ky may. Mau lenh MOV <destination>, <source> cho phep di chuyen d lieu bat ky 2 vung nh nao cua RAM noi hoac cac vung nh cua cac thanh ghi chc nang ac biet ma khong thong qua thanh ghi A. Vung Stack cua 8051 ch cha 128 byte RAM noi, neu con tro Stack SP c tang qua a ch 7FH th cac byte c PUSH vao se mat i va cac byte POP ra th khong biet ro. Cac lenh dch chuyen bo nh noi va bo nh ngoai dung s nh v gian tiep. a ch gian tiep co the dung a ch 1 byte (@ Ri) hoac a ch 2 byte (@ DPTR). Tat ca cac lenh dch chuyen hoat ong tren toan bo nh ngoai thc thi trong 2 chu ky mayva dung thanh ghi A lam toan hang DESTINATION. Viec oc va ghi RAM ngoai (RD va WR) ch tch cc trong suot qua trnh thc thi cua lenh MOVX, con bnh thng RD va WR khong tch cc (mc 1).

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Tat ca cac lenh dch chuyen eu khong anh hng en c. Hoat ong cua tng lenh c tom tay nh sau : MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOVX MOVX MOVX MOVX PUSH A,Rn A, direct A, @ Ri A, # data Rn, A Rn, direct Rn, # data direct, A direct, Rn direct, direct direct, @ Ri direct, # data @ Ri, A @ Ri, direct @ Ri, # data : (A) (Rn) : (A) (direct) : (A) ((Ri)) : (A) # data : (Rn) (A) : (Rn) (direct) : (Rn) # data : (direct) (A) : (direct) (Rn) : (direct) (direct) : (direct) ((Ri)) : (direct) data : ((Ri)) (A) : ((Ri)) (direct) : ((Ri)) # data

DPTR, # data16 : (DPTR) # data16 A, @ A + DPTR : (A) (A) + (DPTR) @ A + PC A, @ Ri A, @ DPTR @ Ri, A @ DPTR, A direct : (PC) (PC) + 1 (A) (A) + (PC) : (A) ((Ri)) : (A) ((DPTR)) : ((Ri)) (A) : ((DPTR)) (A) : Cat d lieu vao Stack (SP) (SP) + 1 (SP) (Drirect)

POP

direct

: Lay t Stack ra direct (direct) ((SP)) (SP) (SP) - 1

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

XCH vi Rn

A, Rn

: oi cho noi dung cua A (A) (Rn)

XCH XCH XCHD

A, direct A, @ Ri A, @ Ri

: (A) (direct) : (A) ((Ri)) : oi cho 4 bit thap cua (A) vi ((Ri)) (A3 A0) ((Ri3 Ri0))

2.5 Cac lenh luan ly (Boolean Instruction) : 8051 cha mot bo x ly luan ly ay u cho cac hoat ong bit n, ay la mot iem manh cua ho vi ieu khien MSC-51 ma cac ho vi x ly khac khong co. RAM noi cha 128 bit n v va cac vung nh cac thanh ghi chc nang ac biet cap len en 128 n v khac. Tat ca cac ng Port la bit nh v, moi ng co the c x ly nh Port n v rieng biet. Cach truy xuat cac bit nay khong ch cac lenh re nhanh khong, ma la mot danh muc ay u cac lenh MOVE, SET, CLEAR, COMPLEMENT, OR, AND. Toan bo s truy xuat cua bit dung s nh v trc tiep vi nhng a ch t 00H 7FH trong 128 vung nh thap va 80H FFH cac vung thanh ghi chc nang ac biet. Bit Carry C trong thanh ghi PSW cua t trang thai chng trnh va c dung nh mot s tch luy n cua bo x ly luan ly. Bit Carry cung la bit nh v va co a ch trc tiep v no nam trong PSW. Hai lenhCLR C va CLR CY eu co cung tac dung la xoa bit c Carry nhng lenh nay mat 1 byte con lenh sau mat 2 byte. Hoat ong cua cac lenh luan ly c tom tat nh sau : CLR CLR SET SET C BIT C BIT : Xoa c Carry xuong 0. Co anh hng c Carry. : Xoa bit xuong 0. Khong anh hng c Carry : Set c Carry len 1. Co anh hng c Carry. : Set bit len 1. Khong anh hng c Carry.
SVTH: NGUYEN NGOC

GVHD: NGUYEN NH PHU TOAN

Luan Van Tot Nghiep

CPL CPL ANL ANL ORL ORL

C BIT

: ao bit c Carry. Co anh hng c Carry. : ao bit. Khong anh hng c Carry.

C, BIT : (C) (C) AND (BIT) : Co anh hng c Carry. C, /BIT : (C) (C) AND NOT (BIT):Khong anh hng c Carry. C, BIT : (C) (C) OR (BIT) : Tac ong c Carry. C, /BIT : (C) (C) OR NOT (BIT) : Tac ong c Carry.

MOV C, BIT : (C) (BIT) : C Carry b tac ong. MOV BIT, C : (BIT) (C) : Khong anh hng c Carry.

III.

HOAT ONG CUA PORT NOI TIEP 8051.


1. GII THIEU

Port noi tiep cua 8051 co the hoat ong trong cac mode rieng biet tren pham vi cho phep cua tan so. Chc nang chu yeu cua Port noi tiep la thc hien s chuyen oi song song thanh noi tiep cho d lieu ra va s chuyen oi noi tiep thanh song song cho d lieu vao. Phan cng truy xuat ti Port noi tiep chan TXD (P3.1) va RXD (P3.0). qua cac

Port noi tiep tham d hoat ong ay u (s phat va thu cung luc), va thu vao bo em ma no cho phep1 ky t nhan vao va c cat bo em trong khi k t th hai c nhan vao. Neu CPU oc ky t th nhat trc khi k t th hai c nhan vao hoan toan th d lieu khong b mat. Hai thanh ghi chc nang ac biet cung cap cho phan mem truy xuat en Port noi tiep la SBUF va SCON. S em Port noi tiep (SBUF) a ch 99H la 2 s em that s : Ghi len SBUF LOAD d lieu phat va oc SBUF truy xuat d lieu a nhan. ay la hai thanh ghi rieng biet va ro ret, ma thanh ghi phat ch ghi con thanh ghi thu ch oc. S o khoi cua Port noi tiep nh sau : TXD (P3.1) RXD (P3.0)
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep SBUF CLK (Write - Only)

CLK

Shift Register

Baute Rate Baute Rate Clock (Transmit) Clock (receive) SBUF (Read - Only)

8051 Internal Bus

Serial Port Block Dragram Thanh ghi ieu khien Port noi tiep SCON (98H) la thanh ghi c nh v bit bao gom cac trang thai va cac bit ieu khien. Cac bit ieu khien set mode cua Port noi tiep, con cac bit trang thai cho biet s ket thuc viec thu phat 1 k t. Cac bit trang thai co the c kiem tra trong phan mem hoac co the lap trnh e sinh ra s ngat. Tan so hoat ong cua Port noi tiep hoac toc o BAUD co the c lay t dao ong tren Chip 8051 hoac thay oi. Neu mot toc o Baud thay oi c dung, th Timer cung cap 1 toc o Baud ghi gi va phai c lap trnh mot cach phu hp. 2. THANH GHI IEU KHIEN PORT NOI TIEP SCON (SERIAL PORT CONTROL REGISTER) Mode hoat ong cua Port noi tiep 8051 c set biviec ghi len thanh ghi mode cua Port noi tiep SCON a ch 99H. Bang tom tat thanh ghi ieu khien Port noi tiep SCON nh sau : Bit SCON.7 SCON.6 SCON.5 Ky hieu SM0 SM1 SM2 a ch 9FH 9EH 9DH Mo ta hoat ong Bit 0 cua mode Port noi tiep. Bit 1 cua mode Port noi tiep. Bit 2 cua mode Port noi tiep. Cho phep s truyen cua bo x ly a kenh mode 2 va 3; RI se khong tch cc neu bit
SVTH: NGUYEN NGOC

GVHD: NGUYEN NH PHU TOAN

Luan Van Tot Nghiep

th 9 a thu vao la 0. SCON.4 SCON.3 REN TB8 9CH 9BH REN = 1 se cho thu k t. Phat bit 8. Bit 9 phat trong mode 2 va 3, no c set hoac xoa bi phan mem. Thu bit 8, bit 9 thu. C ngat phat. c set khi ket thuc s truyen k t va c xoa bi phan mem. C ngat thu. c set khi ket thuc s thu va c xoa bi phan mem.

SCON. 2 SCON. 1 SCON.0

RB8 TI

9AH 99H

RI

98H

SCON Register sumary. 3. CAC MODE HOAT ONG (MODE OF OPERATION)

SM0

SM 1

MOD E

MO TA

TOC O BAUD

0 0 1 1

0 1 0 1

0 1 2 3

Thanh ghi dch URAT8 bit URAT 8 bit URAT 8 bit

Co nh (tan so dao ong 1 12). Thay oi biTimer). (c at

Co nh (tan so dao ong 12 or 16) Thay oi (c at bi Timer).

Serial Port Modes. Trc khi dung Port noi tiep, SCON phai c gan ung mode. V du e khi gan Port noi tiep MODE 1 (SM0/SM1 = 0/1), cho phep thu (REN =1), va set c ngat cua viec phat san sang hoat ong (TI = 1), ta dung lenh sau : MOV SCON, # 01010010H. Port noi tiep cua 8051 co 4 mode hoat ong tuy thuoc theo 4 trang thai cua SM0/SM1.
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Ba trong 4 mode cho phep truyen s ong bo vi moi k t thu hoac phat se c bo tr bi bit Start hoac bit Stop. 4. S KHI ONG, TRUY XUAT CAC THANH GHI PORT NOI TIEP 4.1. S cho phep bo thu (Recive Enable) : Bit cho phep thu REN trong thanh ghi SCON phai c set bi phan mem e cho phep s thu cac ky t. ieu nay thng c lam au chng trnh khi cac Port noi tiep va cac Timer . . . c khi ong. Ta co the ong bang lenh : SETB REN hoac MOV CON, # XXX1XXXXB 4.2. Bit data th 9 (the9th data bit) : Bit data th 9 c phat trong mode 2 va mode 3 phai c LOAD vao TB8 bi phan mem, con bit data th 9 c thu th at trong RB8. Phan mem co the (hoac khong) oi hoi mot bit data th 9 tham gia vao nhng chi tiet ky thuat cua thiet b noi tiep vi ieu kien mas truyen data c thanh lap. 4.3. S them vao bit kiem tra chan le Parity : Cach tong quat dung chung bit data th 9 la cong bit Parity vao mot ky t . Bit P (Parity) trong t trang thai chng trnh PSW se c set hoac xoa vi moi chu ky may e thanh lap bit Parity chan vi 8 bit trong thanh ghi tch luyA V du neu s truyen yeu cau 8 bit data cong them 1 bit Parity chan, th cac lenh sau ay co the c dung e phat 8 bit vao thanh ghi A vi Parity chan c cong vao bit th 9. MOV C, P MOV TB8, C MOV SBUF, A Neu Parity le c yeu cau th cac lenh tren c sa lai la:
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

MOV C, P CPL C MOV TB8, C MOV SBUF, A Viec dung bit Parity khong b gii han trong mode 2 hoac mode 3. 8 bit data c phat trong mode 1 co the bao gom 7 bit data, va 1 bit Parity. e phat 1 ma ASCII 7 bit vi 1 bit Parity chan vao 8 bit, cac lenh sau ay c dung : CLR ACC,7 chan. MOV C, P MOV ACC.7, C MOV SBUF, A : Xoa bit MSB trong A am bao Parity : a Parity chan vao C : a Parity chan vao bit SB cua A : Gi bit data cung bit Parity chan

4.4. C ngat : C ngat thu RI va phat TI trong thanh ghi SCON van hanh 1 rle quan trong trong s truyen noi tiep 8051. Ca hai bit eu c set bi phan cng nhng phai xoa bi phan mem. ien hnh la RI c set cuoi s thu ky t va cho biet : thanh ghi em thu a ay. ieu kien nay co the kiem tra trong phan mem hoac co the c lap trnh e sinh ra s ngat. Neu phan mem muon nhap mot ky t t mot thiet b a c ket noi en Port noi tiep, th no phai ch en khi RI c set, sau khi xoa RI va oc ky t t SBUF. ieu nay c lap trnh nh sau : WAIT : JNB RI, WAIT : Kiem tra RI co set cha. : Xoa c ngat thu RI : CPU oc ky t CLR RI MOV A, SBUF

TI c set cuoi s phat ky t va cho biet thanh ghi em cua s phat a rong. Neu phan mem muon gi 1 ky t en mot thiet b a c ket noi en Port noi tiep, trc tien no phai kiem tra xem Port noi tiep a san sang cha. Neu ky t trc a c gi i, th no phai ch cho en khi s phat i hoan thanh. Cac lenh sau ay dung e phat mot ky t trong thanh ghi A ra:
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

WAIT : JNB TI, WAIT : Kiem tra TI co set cha. : Xoa c ngat thu TI : CPU oc ky t CLR TI MOV A, SBUF

5. S TRUYEN CUA BO X LY A KENH Mode 2 va mode 3 co mot s cung cap ac biet cho viec truyen a kenh x ly. cac mode nay, 9 bit data c thu va bit th 9 i vao RB8. Port co the lap trnh nh ieu ma bit Stop c thu, s ngat cua Port ch c tch cc neu RB8 =1. ac iem nay cho phep bi viec set bit MS2 trong thanh ghi SCON. ng dung nay la mot s cai at mang c dung bi nhieu 8051 s sap at may chu va may con nh sau : 32 I/O lines 32 I/O lines

MASTER 8051 TXD

P0 P1 P2 P3 8051 Slave # 1 RXD

P0 P1 P2 P3 8051 Slave # 2 RXD

Multiprocessor Communication Khi bo x ly chu muon phat mot khoi d lieu en bo x ly con rieng le, trc tien no gi ra 1 byte a ch e nhan dien bo x ly con mong muon. Byte a ch c phan biet vi byte d lieu bi bit th 9 : bit th 9 bang 1 trong byte a ch va bang 0 trong byte d lieu. Tuy nhien byte a ch se ngat toan bo cac bo x ly con, do o co the kham pha byte a thu e kiem tra neu no ang nh a ch. Bo x ly con a c nh a ch se xoa bit SM2 cua no va chuan b thu cac byte d lieu theo sau o. Nhng bo x ly con khong c nh a ch van c gi cac bit SM2 cua no va set tr ve cac ban cua chung ong thi l i cac byte d lieu a thu thap. Chung se c ngat lai khi byte a ch ke tiep c phat bi bo x ly cu. Bit SM2 khong co tac dung trong mode 0 va trong mode 1 no co the c dung e kiem tra s thch hp
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

cua bit Stop. Trong s thu mode 1, neu SM2 = 0 th s ngat thu se khong tch cc tr khi bit Stop thch hp c thu. 6. TOC O BAUD CUA PORT NOI TIEP : Toc o Baud cua Port noi tiep co nh mode 0 va mode 2. Trong mode 0 no luon luon la tan so dao ong tren Chip chia cho 12. Thong thng thach anh 12 MHz lai dao ong tren Chip 8051 nen toc o Baud cua mode 0 la 1MHz. On Chip Oscillator
12

Baud Rate Clock

MODE 0 Bang s mac nhien sau khi reset he thong, toc o Baud mode 2 la tan so dao ong chia cho 64, toc o Baud cung b anh hng bi bit SMOD cua thanh ghi PCON. Viec set bit SMOD se tang gap oi toc o Baud trong cac mode1,2 va 3. Trong mode 2, toc o Baud co the c gap oi t gia tr mac nh 1/64 tan so/Chip (ng SMOD = 0) len en 1/32 tan so dao ong tren Chip (ng vi SMOD =1).
64

SMOD = 0 Baud Rate

On Chip Oscillator Clock


32

SMOD = 1

MODE 2 Bi thanh ghi PCON khong co bit nh v, nen e set bit SMOD ma khong thay oi cac bit khac cua thanh ghi PCON th oi hoi phai co 1 hoat ong oc bo sung ghi. Cac lenh sau ay set bit SMOD : MOV A, PCON cua PCON SETB ACC, 7 : Nhap vao A gia tr hien hanh : Set bit 7 cua ACC (bit SMOD)
SVTH: NGUYEN NGOC

GVHD: NGUYEN NH PHU TOAN

Luan Van Tot Nghiep

MOV PCON, A a c set.

: Ghi gia tr tr ve PCON ma SMOD

Cac toc o Baud trong mode 1 va mode 3 cua 8051 c xac nh bi toc o tran cua Timer 1. Bi v Timer hoat ong tan so cao lien tuc nen tran xa hn na c chia cho 32 (chia cho 16 neu SMOD = 1) trc khi cung cap xung clock toc o Baud en Port noi tiep. Toc o Baud mode 1 va 3 cua 8051 c xac nh bi toc o tran cua Timer 1 hoac Timer 2, hoac ca 2.
32

SMOD = 0 Baud Rate

On Chip Oscillator Clock


16

SMOD = 1

MODE 1 and MODE 3 6.1 Dung Timer 1 giong nh s em toc o Baud : Muon sinh ra toc o Baud, ta khi gan TMOD mode t ong nap 8 bit (mode 2 cua Timer) va at gia tr Reload ung vao byte cao cua thanh ghi Timer 1 (TH1) e sinh ra toc o tran chnh xac cho toc o Baud. Co nhng toc o Baud rat cham ta dung mode 16 bit la mode 1 cua Timer, nhng ta phai khi gan sau moi s tran cho TL1/TH1 trong thu tuc phuc vu ngat ISR. Hoat ong khac c em gi bi viec dung Timer 1 ngoai la T1 (P3.5). cong thc chung e xac nh toc o Baud trong mode 1 va mode 3 la :

BAUD RATE = TIMER 1 OVERFLOW RATE 32 V du mot hoat ong 1200 Baud oi hoi mot toc o tran la 1200/32 = 38,4KHz. Neu thach anh 12 MHz lai dao ong tren Chip, th Timer 1 c em gi toc o cua tan so 1 MHz. Bi v Timer phai tran toc o tan so 38,4 KHz va Timer em gi toc o cua tan so 1 MHz, nen mot s tran c yeu cau vi 1000 : 38,4 = 26,04 clock (lam tron 26). Bi v cac Timer em len va tran tren s chuyen oi t FFH 00H cua bo em,
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

nen 26 s em thap di 0 la gia tr Reload can nap cho TH1 (gia tr ung la - 26). Ta dung lenh MOV TH1, # 26. V du sau khi ong Port noi tiep hoat ong giong nh UART 8 bit toc o Baud 2400, dung Timer 1 e cung cap s em gi toc o Baud : MOV MOV MOV 2400 Baud. SETB SCON, # 01010010B TMOD, # 20 TH1, # -13 TR1 : Port noi tiep mode 1.

: Timer 1 mode 2 : Nap vao bo em toc o : Start Timer 1.

Trong SCON co SM0/SM1 e vao mode UART 8 bit, REN = 1 cho phep Port noi tiep thu cac ky t va TI = 1 cho phep phat ky t au tien bi viec cho biet thanh ghi em rong. TMOD co M1/M0 = 1/0 e at Timer 1 vao mode t ong nap 8 bit. Viec set bit TR1 e m may chay Timer. Toc o Baud 2400 se cho ta toc o tran Timer 1 la 2400/32 = 76,8 KHz ong thi Timer 1 c em gi toc o cua tan so 1000 KHz (ng vi thach anh 12 MHz) se cho so xung Clock sau moi s tran la 1000 : 76,8 = 13,02 ( lay tron 13). Vay - 13 la gia tr can nap vao TH1 e co toc o Baud la 2400 Baud. Sau ay la bang tom tat toc o Baud pho bien ng vi 2 loai thach anh 12 MHz va 11, 059 MHz :

Baud Rate 9600 2400 1200 19200 9600 2400

Crytal Frequen cy 12MHz 12MHz 12MHz 11,059M Hz 11,059M Hz 11,059M

SMOD

TH1 Reload Value - 7 (F9H) -13 (F9H) -26 (F9H) -3 (F9H) -3 (F9H) -12 (F9H)

Actua Baud Rate 8923 2404 1202 19200 9600 2400

Error

1 0 0 1 0 0

7% 0,16% 0% 0% 0% 0%

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Hz 1200 11,059M Hz 0 -24 (F9H) 1200 0%

Baud rate sumary.

HOAT ONG TIMER CUA 8051 :


1. GII THIEU :

Bo nh thi cua Timer la mot chuoi cac Flip Flop c chia lam 2, no nhan tn hieu vao la mot nguon xung clock, xung clock c a vao Flip Flop th nhat la xung clock cua Flip Flop th hai ma no cung chia tan so clock nay cho 2 va c tiep tuc. V moi tang ke tiep chia cho 2, nen Timer tang phai chia tan so clock ngo vao cho 2n. Ngo ra cua tang cuoi cung la clock cua Flip Flop tran Timer hoac c ma no kiem tra bi phan mem hoac sinh ra ngat. Gia tr nh phan trong cac FF cua bo Timer co the c ngh nh em xung clock hoac cac s kien quan trong bi v Timer c khi ong. V du Timer 16 bit co the em en t FFFFH sang 0000H. Cac Timer c ng dung thc te cho cac hoat ong nh hng. 8051 co 2 bo Timer 16 bit, moi Timer co 4 mode hoat ong. Cac Timer dung e em gi, em cac s kien can thiet va s sinh ra toc o cua toc o Baud bi s gan lien Port noi tiep. Moi s nh thi la mot Timer 16 bit, do o tang cuoi cung la tang th 16 se chia tan so clock vao cho 216 = 65.536. Trong cac ng dung nh thi, 1 Timer c lap trnh e tran mot khoang thi gian eu an va c set c tran Timer. C c dung e ong bo chng trnh e thc hien mot hoat ong nh viec a ti 1 tang cac ngo vao hoac gi d lieu em ngo ra. Cac ng dung khac co s dung viec ghi gi eu eu cua Timer e o thi gian a troi qua hai trang thai (v du o o rong xung). Viec em mot s kien c dung e xac nh so lan xuat hien cua s kien o, tc thi gian troi qua gia cac s kien. Cac Timer cua 8051 c truy xuat bi viec dung 6 thanh ghi chc nang ac biet nh sau :
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Timer SFR TCON TMOD TL0 TL1 TH0 TH1

Purpose Control Mode Timer 0 low-byte Timer 1 low-byte Timer 0 high-byte Timer 1 high-byte

Address 88H 89H 8AH 8BH 8CH 8DH

BitAddressable YES NO NO NO NO NO

2. THANH GHI MODE TIMER TMOD (TIMER MODE REGITER): Thanh ghi mode gom hai nhom 4 bit la : 4 bit thap at mode hoat ong cho Timer 0 va 4 bit cao at mode hoat ong cho Timer 1. 8 bit cua thanh ghi TMOD c tom tat nh sau :

Bit 7 6

Name GATE C/T

Time r 1 1

Description Khi GATE = 1, Timer ch lam viec khi INT1=1 Bit cho em s kien hay ghi gi C/T = 1 : em s kien C/T = 0 : Ghi gi eu an

5 4 3 2 1 0

M1 M0 GATE C/T M1 M0

1 1 0 0 0 0

Bit chon mode cua Timer 1 Bit chon mode cua Timer 1 Bit cong cua Timer 0 Bit chon Counter/Timer cua Timer 0 Bit chon mode cua Timer 0 Bit chon mode cua Timer 0

Hai bit M0 va M1 cua TMOD e chon mode cho Timer 0 hoac Timer 1.
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

M1 0 0 1 1

M0 0 1 0 1

MODE 0 1 2 3

DESCRIPTION Mode Timer 13 bit (mode 8048) Mode Timer 16 bit Mode t ong nap 8 bit Mode Timer tach ra : Timer 0 : TL0 la Timer 8 bit c ieu khien bi cac bit cua Timer 0. TH0 tng t nhng c ieu khien bi cac bit cua mode Timer 1. Timer 1 : c ngng lai.

TMOD khong co bit nh v, no thng c LOAD mot lan bi phan mem au chng trnh e khi ong mode Timer. Sau o s nh gi co the dng lai, c khi ong lai nh the bi s truy xuat cac thanh ghi chc nang ac biet cua Timer khac. 3. THANH GHI IEU KHIEN TIMER TCON (TIMER CONTROL REGISTER) : Thanh ghi ieu khien bao gom cac bit trang thai va cac bit ieu khien bi Timer 0 va Timer 1. Thanh ghi TCON co bit nh v. Hoat ong cua tng bit c tom tat nh sau : Bit TCON.7 Symb ol TF1 Bit Address 8FH Description C tran Timer 1 c set bi phan cng s tran, c xoabi phan mem hoac bi phan cng khi cac vect x ly en thu tuc phuc vu ngat ISR Bit ieu khien chay Timer 1 c set hoac xoa bi phan mem e chay hoac ngng chay Timer. C tran Timer 0(hoat ong
SVTH: NGUYEN NGOC

TCON.6

TR1

8EH

TCON.5

TF0

8DH

GVHD: NGUYEN NH PHU TOAN

Luan Van Tot Nghiep

tng t TF1) TCON.4 TCON.3 TR0 IE1 8CH 8BH Bit ieu khien chay Timer 0 (giong TR1) C kieu ngat 1 ngoai. Khi canh xuong xuat hien tren INT1 th IE1 c xoa bi phan mem hoac phan cng khi CPU nh hng en thu tuc phuc vu ngat ngoai. C kieu ngat 1 ngoai c set hoac xoa bang phan mem bi canh kch hoat bi s ngat ngoai. C canh ngat 0 ngoai C kieu ngat 0 ngoai.

TCON.2

IT1

8AH

TCON.1 TCON

IE0 IT0

89H 88H

4. CAC MODE VA C TRAN (TIMER MODES AND OVERFLOW) : 8051 c Timer la Timer 0 va timer 1. Ta dung ky hieu TLx va Thx e ch 2 thanh ghi byte thap va byte cao cua Timer 0 hoac Tmer 1. 4.1. Mode Timer 13 bit (MODE 0) :
Timer Clock TLx (5 bit) THx (8 bit) TFx

Overflow MODE 0 Mode 0 la mode Timer 13 bit, trong o byte cao cua Timer (Thx) c at thap va 5 bit trong so thap nhat cua byte thap Timer (TLx) at cao e hp thanh Timer 13 bit. 3 bit cao cua TLx khong dung. 4.2. Mode Timer 16 bit (MODE 1) :
Timer Clock TLx (8 bit) THx (8 bit)

Overflow MODE 1
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Mode 1 la mode Timer 16 bit, tng t nh mode 0 ngoai tr Timer nay hoat ong nh mot Timer ay u 16 bit, xung clock c dung vi s ket hp cac thanh ghi cao va thap (TLx,THx). Khi xung clock c nhan vao, bo em Timer tang len 0000H, 0001H,0002H, . . ., va mot s tran se xuat hien khi co s chuyen tren bo em Timer t FFFH sang 0000H va se set c tran Time, sau o Timer em tiep. C tran la bit TFx trong thanh ghi TCON ma no se c oc hoac ghi bi phan mem. Bit co trong so ln nhat (MSB) cua gia tr trong thanh ghi Timer la bit 7 cua THx va bit co trong so thap nhat (LSB) la bit 0 cua TLx. Bit LSB oi trang thai tan so clock vao c chia 216 = 65.536. Cac thanh ghi Timer TLx va Thx co the c oc hoac ghi tai bat ky thi iem nao bi phan mem. 4..3. Mode t ong nap 8 bit (MODE 2)
Timer Clock TL x (8 bit) TFx

Overflow
TH x (8 bit)

Reload

MODE 2 Mode 2 la mode t ong nap 8 bit, byte thap TLx cua Timer hoat ong nh mot Timer 8 bit trong khi byte cao THx cua Timer gi gia tr Reload. Khi bo em tran t FFH sang 00H, khong ch c tran c set ma gia tr trong THx cung c nap vao TLx : Bo em c tiep tuc t gia tr nay len en s chuyen trang thai t FFH sang 00H ke tiep va c the tiep tuc. Mode nay th phu hp bi v cac s tran xuat hien cu the ma moi luc ngh thanh ghi TMOD va THx c khi ong. 4.4 Mode Timer tach ra (MODE 3) :
Timer Clock

TL1 (8 bit) TH1 (8 bit)

Timer Clock

Overflow
TL1 (8 bit) TF0 SVTH: NGUYEN NGOC

GVHD: NGUYEN NH PHU TOAN

Luan Van Tot Nghiep

Overflow
Timer Clock TH0 (8 bit) TF1

Overflow MODE 3 Mode 3 la mode Timer tach ra va la s khac biet cho moi Timer. Timer 0 mode 3 c chia la 2 timer 8 bit. TL0 va TH0 hoat ong nh nhng Timer rieng le vi s tran se set cac bit TL0 va TF1 tng ng. Timer 1 b dng lai mode 3, nhng co the c khi ong bi viec ngat no vao mot trong cac mode khac. Ch co nhc iem la c tran TF1 cua Timer 1 khong b anh hng bi cac s tran cua Timer 1 bi v TF1 c noi vi TH0. Mode 3 tat yeu cung cap 1 Timer ngoai 8 bit la Timer th ba cua 8051. Khi vao Timer 0 mode 3, Timer co the hoat ong hoac tat bi s ngat no ra ngoai va vao trong mode cua chnh no hoac co the c dung bi Port noi tiep nh la mot may phat toc o Baud, hoac no co the dung trong hng nao oma khong s dung Interrupt. 5. CAC NGUON XUNG CLOCK (CLOCK SOURCES) : Co hai nguon xung clock co the em gi la s nh gi ben trong va s em s kien ben ngoai. Bit C/T trong TMOD cho phep chon 1 trong 2 khi Timer c khi ong.
Crystal

On Chip Osillator

12

Timer Clock

T0 or T1 pin C/T 0 = Up (internal Timing) 1 = Down (Event Counting)

Timing) :

5.1

bam

gi

ben

trong

(Interval

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Neu bit C/T = 0 th hoat ong cua Timer lien tuc c chon vao bo Timer c ghi gi t dao ong tren Chip. Mot bo chia 12 c them vao e giam tan so clock en 1 gia tr phu hp hau het cac ng dung. Cac thanh ghi TLx va THx tang toc o 1/12 lan tan so dao ong tren Chip. Neu dung thach anh 12MHz th se a en toc o clock 1MHz. Cac s tran Timer sinh ra sau mot con so co nh cua nhng xung clock, no phu thuoc vao gia tr khi tao c LOAD vao cac thanh ghi THx va TLx. 5.2 S em cac s kien (Event Counting) : Neu bit C/T = 1 th bo Timer c ghi gi t bo nguon ben ngoai trong nhieu ng dung, bo nguon ben ngoai nay cung cap 1 s nh gi vi 1 xung tren s xay ra cua s kien. S nh gi la s em s kien. Con so s kien c xac nh trong phan mem bi viec oc cac thanh ghi Timer. Tlx/THx, bi v gia tr 16 bit trong cac thanh nay tang len cho moi s kien. Nguon xung clock ben ngoai a chan P3.4 la ngo nhap cua xung clock bi Timer 0 (T0) va P3.5 la ngo nhap cua xung clock bi Timer 1 (T1). Trong cac ng dung em cac thanh ghi Timer c tang trong ap ng cua s chuyen trang thai t 1 sang 0 ngo nhap Tx. Ngo nhap ben ngoai c th trong suot S5P2 cua moi chu ky may : Do o khi ngo nhap a ti mc cao trong mot chu ky va mc thap trong mot chu ky ke tiep th bo em tang len mot. Gia tr mi xuat hien trong cac thanh ghi Timer trong suot S5P1 cua chu ky theo sau mot s chuyen oi c kham thay. Bi v no chiem 2 chu ky may (2s) e nhan ra s chuyen oi t 1 sang 0, nen tan so ben ngoai ln nhat la 500KHz neu dao ong thach anh 12 MHz.

6. S BAT AU, KET THUC VA S IEU KHIEN CAC TIMER (STARTING, STOPPING AND CONTROLLING THE TIMER) Bit TRx trong thanh ghi co bit nh v TCON c ieu khienbi phan mem e bat au hoac ket thuc cac Timer. e bat au cac Timer ta set bit TRx va e ket thuc Timer ta Clear TRx. V du Timer 0 c bat au bi lenh SETB TR0 va c ket thuc bi lenh CLR TR0 (bit
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Gate=0). Bit TRx b xoa sau s reset he thong, do o cac Timer b cam bang s mac nh. Them phng phap na e ieu khien cac Timer la dung bit GATE trong thanh ghi TMOD va ngo nhap ben ngoai INTx. ieu nay c dung e o cac o rong xung. Gia s xung a vao chan INT0 ta khi ong Timer 0 cho mode 1 la mode Timer 16 bit vi TL0/TH0 = 0000H, GATE = 1, TR0 = 1. Nh vay khi INT0 = 1 th Timer c m cong va ghi gi vi toc o cua tan so 1MHz. Khi INT0 xuong thap th Timer ong cong va khoang thi gian cua xung tnh bang s la s em c trong thanh ghi TL0/TH0.

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

7. S KHI ONG VA TRUY XUAT CAC THANH GHI TIMER : Cac Timer c khi ong 1 lan au chng trnh e at mode hoat ong cho chung. Sau o trong than chng trnh cac Timer cbat au, c xoa, cac thanh ghi Timer c oc va cap nhat . . . theo yeu cau cua tng ng dung cu the. Mode Timer TMOD la thanh ghi eu tien c khi gan, bi v at mode hoat ong cho cac Timer. V du khi ong cho Timer 1 hoat ong mode 1 (mode Timer 16bit) va c ghi gi bang dao ong tren Chip ta dung lenh : MOV TMOD, # 00001000B. Trong lenh nay M1 = 0, M0 = 1 e vao mode 1 va C/T = 0, GATE = 0 e cho phep ghi gi ben trong ong thi xoa cac bit mode cua Timer 0. Sau lenh tren Timer van cha em gi, no ch bat au em gi khi set bit ieu khien chay TR1 cua no. Neu ta khong khi gan gia tr au cho cac thanh ghi TLx/THx th Timer se bat au em t 0000Hlen va khi tran t FFFFH sang 0000H no se bat au tran TFx roi tiep tuc em t 0000H len tiep . . . Neu ta khi gan gia tr au cho TLx/THx, th Timer se bat au em t gia tr khi gan o len nhng khi tran t FFFFH sang 0000H lai em t 0000H len. Chu y rang c tran TFx t ong c set bi phan cng sau moi s tran va se c xoa bi phan mem. Chnh v vay ta co the lap trnh ch sau moi lan tran ta se xoa c TFx va quay vong lap khi gan cho TLx/THx e Timer luon luon bat au em t gia tr khi gan len theo y ta mong muon. ac biet nhng s khi gan nho hn 256 s, ta se goi mode Timer t ong nap 8 bit cua mode 2. Sau khi khi gan gia tr au vao THx, khi set bit TRx th Timer se bat au em gia tr khi gan va khi tran t FFH sang 00H trong TLx, c TFx t ong c set ong thi gia tr khi gan ma ta khi gan cho Thx c nap t ong vao TLx va Timer lai c em t gia tr khi gan nay len. Noi cach khac, sau moi tran ta khong can khi gan lai cho cac thanh ghi Timer ma chung van em c lai t gia tr ban au. 8. S OC THANH GHI TIMER TREN TUYEN :

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Trong mot so ng dung can thiet oc gia tr trong cac thanh ghi Timer tren tuyen, co mot van e tiem nang n gian e bao ve lai phan mem. Bi v 2 thanh ghi Timer phai c oc, nen loi giai oan co the xuat hien neu byte tran va byte cao gia 2 hoat ong oc. Mot giai phap e khac phuc la oc byte cao trc, sau o oc byte thap, va oc lai byte cao : Neu byte cao thay oi th lap lai cac hoat ong oc.

V. HOAT ONG INTERRUPT CUA 8051 :


Trong nhieu ng dung oi hoi ta phai dung Interrupt ma khong dung Timer bi v neu dung Timer ta phai mat thi gian e ch c tran TimerTFx set mi x ly tiep chng trnh. Do o ta khong co thi gian e lam cac viec quan trong khac ma ng dung oi hoi. ay la chng trnh rat quan trong cua 8051 hay ho MSC51. 1. GII THIEU : Interrupt la mot s co co ieu kien ma no gay ra s ngng lai tam thi cua chng trnh e phuc vu mot chng trnh khac. Cac Interrupt van hanh mot Relay rat quan trong trong thiet b va s cung cap ay u cac ng dung vi ieu khien. Chung cho phep 1 he thong ap ng ong bo en s kien quan trong va giai quyet s kien o trong khi chng trnh khac ang thc thi. Mot he thong c lai bi Interrupt cho 1 ky xao lam nhieu cong viec cung mt luc. Tat nhien CPU khong the thc thi nhieu lenh tai mot thi iem, nhng no co the tam thi treo viec thc thi cua chng trnh chnh e thc thi chng trnh khac va sau o quay lai chng trnh chnh. Khi chng trnh chnh ang thc thi ma co mot s ngat xay en th chng trnh chnh ngng thc thi vare nhanh en thu tuc phuc vu ngat ISR (INTERRUPT SERVICE ROUTINE). ISR thc thi e thc hien hoat ong va ket thuc vi lenh tr lai t s ngat : Chng trnh tiep tuc ni ma no dng lai. Ta co the tom tat s thc thi cua 1 chng trnh trong trng hp co Interrupt va khong co Interrupt nh sau : Timer
Main Program GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Program excution without interrut


ISR ISR ISR

*
Main

**
Main

**
Main

**
Main

Timer Program excution with interrupt. Trong o : Ky hieu * cho biet ngat chng trnh chnh e thc thi chng trnh con trong thu tuc phuc vu ngat ISR. Con ky hieu ** cho biet quay tr lai chng trnh chnh thc thi tiep khi ket thuc chng trinh con trong ISR. 2. TO CHC INTERRUPT CUA 8051 (INTERRUPT ORGANIZATION) 8051 cung cap 5 nguon ngat, 2 s ngat ngoai, 2 s ngat Timer va mot s ngat Port noi tiep. Tat ca cac Interrrupt b mat tac dung bi s mac nh sau khi reset he thong va c cho phep ca biet bi phan mem. Trong trng hp co hai hoac nhieu hn s ngat xay ra ong thi hoac mot s ngat ang c phuc vu ma xuat hien mot s ngat khac, th se co hai cach thc hien s ngat la s kiem tra lien tiep va s u tien cap 2. 2.1 S cho phep ngat va s cam ngat Moi nguon Interrupt c cho phep rieng biet hoac s cam rieng biet qua thanh ghi chc nang ac biet co bit nh v IE (Interrupt Enable) tai a ch 0A8H. Cung nh s ca biet cho phep cac bit cua moi nguon ngat co 1 bit cho phep (hoac cam) chung ma no c xoa e cam tat ca cac Interrupt hoac c set e cho phep chung cac Interrupt. Hoat ong cua tng bit trong thanh ghi cho phep ngat IE c tom tat trong bang sau : Bit IE. 7 IE. Symb ol EA Bit Address AFH AEH S mo ta (Enable = 1; Dissble) Cho phep toan bo hoac cam toan bo. Khong nh ngha.
SVTH: NGUYEN NGOC

GVHD: NGUYEN NH PHU TOAN

Luan Van Tot Nghiep

6 IE. 5 IE. 4 IE. 3 IE. 2 IE. 1 IE. 0 ET2 ES ET1 EX1 ET0 EX0 ADH ACH ABH AAH A9H A8H Cho phep ngat Timer 2 (8052). Cho phep ngat Port noi tiep. Cho phep ngat Timer 1. Cho phep ngat ngoai External 1. Cho phep ngat Timer 0. Cho phep ngat ngoai External 0.

IE (Interrupt Enable) Register Sumary. Hai bit phai set e cho phep 1 s ngat nao o : La bit cho phep rieng va bit cho phep chung. V du e cho phep ngat Timer 1 ta co the thc hien tren bit: SETB ET1 va SETB EA hoac s thc hien tren byte : MOV IE, #10001000B. Ca 2 phng phap nay co ket qua chnh xac sau khi reset he thong, nhng ket qua khac nhau neu thanh ghi IE c ghi tren tuyen gia chng trnh. Giai phap th nhat khong co tac dung tren cac bit con lai trong thanh ghi IE, con giai phap th hai xoa cac bit con lai trong thanh ghi IE. au chng trnh ta nen khi gan IE vi lenh MOV BYTE, nhng s cho phep ngat va cam ngat tren tuyen trong mot chng trnh se dung cac lenh SET BIT va CLR BIT e tranh ket qua phu vi cac bit khac trong thanh ghi IE. 2.2 S u tien ngat (Interrupt Priority) : Moi nguon ngat c lap trnh ca biet en mot trong hai mc u tien qua thanh ghi chc nang ac biet co nh v IP (Interrupr Priority) tai a ch 0B8H. Hoat ong cua tng bit trong thanh ghi IP c tom tat trong bang sau : Bit IP. Symb ol Bit Address S mo ta (Enable = 1; Disable) Khong nh ngha.
SVTH: NGUYEN NGOC

GVHD: NGUYEN NH PHU TOAN

Luan Van Tot Nghiep

7 IP. 6 IP. 5 IP. 4 IP. 3 IP. 2 IP. 1 IP. 0 PT2 PS PT1 PX1 PT0 PX0 BDH BCH BBH BAH B9H B8H Khong nh ngha. u tien cho s ngat Timer 2 (8052). u tien cho s ngat Port noi tiep. u tien cho s ngat Timer 1. u tien cho s ngat ngoai External 1. u tien cho s ngat Timer 0. u tien cho s ngat ngoai External 0.

IP (Interrupt Priority) Register Sumary. Thanh ghi u tien ngat IP c xoa sau khi reset he thong e at tat ca cac s ngat mc u tien thap hn s mac nh. Y tng cac s u tien cho phep mot thu tuc phuc vu ngat ISR mi c ngat neu s ngat mi nay u tien cao hn cho s ngat hien hanh ang phuc vu. Tren 8051 co 2 mc u tien thap va 2 mc u tien cao. Neu mot thu tuc phuc vu ngat co mc u tien thap ang thc thi ma co mot s ngat u tien cao hn xuat hien, th thu tuc phuc vu o b ngat i e thc thi thu tuc ngat mi. Ngc lai thu tuc phuc vu ngat co mc u tien cao hn ang thc thi ma co s ngat u tien thap hn xuat hien, th no khong the b ngat ma phai ch thc thi xong thu tuc phuc vu cao hn mi nhay ti thu tuc phuc vu ngat thap. Chng trnh thc thi mc c ban va khong ket hp vi s ngat nao, no co the luon luon b ngat bat chap s u tien ngat mc cao hay thap. Neu 2 s ngat cua cac u tien khac nhau xuat hien ong thi, s ngat u tien cao hn se c phuc vu au tien. 2.3 S kiem tra vong quet lien tiep.
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Neu 2 s ngat co cung mc u tien xuat hien ong thi, th s kiem tra vong quet lien tiep se an nh s ngat nao se c phuc vu trc tien. S kiem tra vong quet lien tiep u tien t tren xuong theo th t la : External 0, Timer 0, External 1, Timer 1, serial Port, Timer 2 Hnh tren minh hoa 5 nguon ngat cua 8051, cac ky xao cho phep ngat rieng va chung, s kiem tra vong quet lien tiep va mc u tien. Trang thai cua tat ca cac nguon ngat co hieu lc thong qua cac bit c tng ng trong cac thanh ghi chc nang ac biet. Neu co s ngat nao b cam th s ngat o khong xuat hien nhng phan mem van con kiem tra c ngat. S ngat cua Port noi tiep a en cong OR logic cua s ngat thu RI (Receive Interrupt) hoac s ngat phat TI (Transmit Interrupt). Tng t s ngat cua Port noi tiep, cac s ngat cua Timer 2 co the c sinh ra bi c tran TF2 hoac c nhap ngoai EXF2 (External Input Flag). Cac bit c sinh ra cac s ngat c tom tat nh sau :

Interru pt External 0 External 1 Timer 1 Timer 0 Serial Port Serial Port Timer 2 Timer 2

Flag IE 0 IE 1 TF 1 TF 0 TI RI TF 2 EXF 2

SFR Register and Bit Position TCON 1 TCON 3 TCON 7 TCON 5 SCON 1 SCON 0 T2CON 7 (8052) T2CON 6 (8052)

3. VIEC X LY CAC S NGAT (PROCESSING INTERRUPT) :


GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Khi mot s ngat xuat hien va c chap nhan bi CPU th chng trnh chnh b ngat. Cac hoat ong sau ay xuat hien : Stack. Lenh hien hanh va ket thuc thc thi. Bo em chng trnh PC c cat gi vao

Trang thai ngat hien hanh c cat gi vao ben trong. Nhng s ngat b ngan lai tai mc ngat.

Bo em chng trnh PC c LOAD vi a ch vect cua thu tuc phuc vu ngat ISR. Thu tuc phuc vu ngat ISR c thc thi.

Thu tuc phuc vu ngat ISR thc thi va a hoat ong vao ap ng ngat, thu tuc phuc vu ngat ISR ket thuc vi lenh RETI (quay tr ve chng trnh chnh t Stack). ieu nay khoi phuc lai gia htr cu cua bo em chng trnh t Stack va hoan toan dng lai trang thai cu. S thc thi cua chng trnh chnh tiep tuc ni ma no ngng lai. 3.1 Cac vect ngat (Interrupt Vectors) : Khi co mot s ngat c nhan gia tr c LOAD vao PC c goi bi vect ngat. No la a ch cua s khi ong thu tuc phuc vu ngat ISR cua nguon ngat. Cac vect c cho trong bang sau :

Interrupt System Reset External 0 Timer 0 External 1 Timer 1 Serial Port Timer 2
GVHD: NGUYEN NH PHU TOAN

Flag RST IE 0 TF 0 IE 1 TF1 RI or TI TF 2 or EXF2

Vectors Address 0000H 0003H 000BH 0013H 001BH 0023H 002BH

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Vect reset he thong RST tai a ch 0000H c tnh trong bang nay, bi v trong y ngha nay no giong nh 1 Interrupt : no ngat chng trnh va LOAD vao PC vi gia tr mi. Khi a 1 vect ngat en s ngat th c cua no gay ra s ngat, t ong b xoa bi phan cng, ngoai tr RI va TI cua Port noi tiep va TF2, EXF2 cua Timer 2 c xoa bi phan mem. Nguyen nhan tren la do co 2 nguon ngat co the chu ng c cho moi s ngat ma no khong ng dung cho CPU e xoa c ngat. V cac vect ngat nam di cung trong vung ma nh, nen lenh au tien cua chng trnh chnh la lenh nhay en v tr cao hn v tr nay nh LJMP 0030H.

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

CHNG2
GIAO TIEP MAY TNH
GII THIEU CAC PHNG PHAP GIAO TIEP MAY TNH
Viec giao tiep gia may tnh va thiet b ngoai vi co the giao tiep bang 3 cach Giao tiep bang Slot-Card. Giao tiep qua cong song song (may in) Giao tiep qua cong noi tiep (COM)

GIAO TIEP BANG SLOT CARD

Ben trong may tnh, ngoai nhng khe cam dung cho card vao - ra, card man hnh, van con nhng ranh cam e trong. e giao tiep vi may tnh, ta co the thiet ke card m rong e gan vao khe cam m rong nay. may tnh PC/XT ranh cam ch co 1 loai vi o rong 8 bit va tuan theo tieu chuan ISA (Industry Standard Architecture). Ranh cam theo tieu chuan ISA co 62 ng tn hieu, qua cac ng tn hieu nay may tnh co the giao tiep de dang vi thiet b ben ngoai thong qua card m rong. Tren ranh cam m rong, ngoai 20 ng a ch, 8 ng d lieu, con co mot so ng ieu khien nh: RESET, IOR, IOW, AEN, CLK, ... Do o card giao tiep vi may tnh qua slot card n gian, so bit co the tang de dang, giam c nhieu linh kien, toc o truyen d lieu nhanh (truyen sonh song). Tuy nhien, do khe cam nam ben trong may tnh nen khi muon gan card giao tiep vao th phai m nap ra, ieu nay gay bat tien cho ngi s dung.

GIAO TIEP BANG CONG SONG SONG

Viec giao tiep gia KIT Vi ieu khien 8051 vi may tnh c thc hien qua o cam 25 chan pha sau may
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

tnh. Qua cong nay d lieu c truyen i song song, nen oi khi con c goi la cong ghep noi song song. * Cac chan va ng dan c mo ta nh sau:
13 1

25

14

CHA N 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

KY HIEU STROBE D0 D1 D2 D3 D4 D5 D6 D7 ACK BUSY PE SLCT AF ERROR INIT SLCTIN GND GND GND GND GND GND GND GND Loi Loi Loi Loi Loi Loi Loi Loi Loi Loi Loi Loi Loi Loi Loi Loi Loi

VAO/RA ra (Output) ra ra ra ra ra ra ra ra vao (Input) vao vao vao ra vao ra ra

MO TA : Byte c in ng d lieu D0 ng d lieu D1 ng d lieu D2 ng d lieu D3 ng d lieu D4 ng d lieu D5 ng d lieu D6 ng d lieu D7 Acknowledge (Xac nhan) 1 : May in ban Het giay Select (La chon) Auto Feed (T nap) Error (Loi) 0 : at lai may in Select in Noi at

Khi may tnh gi d lieu ra cong may in muon d lieu nay qua KIT Vi ieu khien 8051 ta phai giao tiep qua mot vi mach 8255. IC 8255 lam viec Mode 1 : Port A la nhap d lieu ; Port B xuat d lieu .
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

* S o ket noi gia IC 8255 vi cong may in :


D0 D1 D2 D3 D4 D5 D6 D7 PC4 PC5 13 PC3 WR TO INT 1 (8051) 25 1 14

INTE

V 8255 c khi tao lam viec Mode 1 : Port A nhap d lieu Port B xuat d lieu nen khi may tnh gi tn hieu STROBE en 8255, yeu cau 8255 nhan d lieu do may tnh gi en va khi 8255 nhan d lieu th no tao ra mot tn hieu PC5 a qua ACK bao cho may tnh biet la 8255 a nhan d lieu do may tnh gi en, ong thi luc o PC3 cua 8255 tao tn hieu INTRA tac ong en chan ngat INT1 (pin 13) cua 8051 lam cho 8051 chay chng trnh phuc vu ngat va d lieu t may tnh qua 8255 se c gi en CPU e x ly.

GIAO TIEP BANG CONG NOI TIEP

Cong noi tiep RS232 la mot giao dien pho bien rong rai nhat. Ngi ta con goi cong nay la cong COM1, con cong COM2 e t do cho cac ng dung khac. Giong nh cong may in cong COM cung c s dung mot cach thuan tien cho viec giao tiep vi thiet b ngoai vi. Viec truyen d lieu qua cong COM c tien hanh theo cach noi tiep. Ngha la cac bit d lieu c truyen i noi tiep nhau tren mot ng dan. Loai truyen nay co kha nang dung cho nhng ng dung co yeu cau truyen khoang cach ln hn, bi v cac
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

kha nang gay nhieu la nho ang ke hn khi dung mot cong song song (cong may in). Cong COM khong phai la mot he thong bus no cho phep de dang tao ra lien ket di hnh thc iem vi iem gia hai may can trao oi thong tin vi nhau, mot thanh vien th ba khong the tham gia vao cuoc trao oi thong tin nay. * Cac chan va ng dan c mo ta nh sau:
1 13 1 5

14 Loai 25 chan

25

Loai 25 chan

CHAN (Loai 9 chan) 1 2 3 4 5 6 7 8 9

CHAN (Loai 25 chan) 8 3 2 20 7 6 4 5 22

KY HIEU DCD RXD TXD DTR GND DSR RTS CTS RI

VAO/R A Loi vao Loi vao Loi ra Loi ra Loi vao Loi ra Loi vao Loi vao

MO TA Data Carrier Detect Receive Data Transmit Data Data Terminal Ready Noi at Data Set Ready Request to Send Clear to Send Ring Indicator

Phch cam COM co tong cong 8 ng dan, cha ke en ng noi at. Tren thc te co hai loai phch cam, mot loai 9 chan va mot loai 25 chan. Ca hai loai nay eu co chung mot ac iem. Viec truyen d lieu xay ra tren hai ng dan. Qua chan cam ra TXD may tnh gi d lieu cua no en KIT Vi ieu khien. Trong khi o cac d lieu ma may tnh nhan c, lai c dan en chan RXD cac tn hieu khac ong vai tro nh la tn hieu ho tr khi trao
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

oi thong tin, va v the khong phai trong moi trng hp ng dung eu dung het. V tn hieu cong COM thng mc +12V, -12V nen khong tng thch vi ien ap TTL nen e giao tiep KIT Vi ieu khien 8051 vi may tnh qua cong COM ta phai qua mot vi mach bien oi ien ap cho phu hp vi mc TTL, ta chon vi mach MAX232 e thc hien viec tng thch ien ap. * S o ket noi gia cong COM vi KIT Vi ieu khien 8051 :
10 8 9 5 1 11 RXD TXD MAX 2 3 2 RXD TXD

Vi mach MAX232 dung e tng thch tn hieu mc (+12V, -12V) tren giao dien RS232. Vi mach nay nhan mc RS232 a c gi ti t may tnh va bien oi tn hieu nay thanh tn hieu TTL e cho tng thch vi IC 8051 va no cung thc hien ngc lai la bien oi tn hieu TTL t Vi ieu khien thanh mc +12V, -12V e cho phu hp hoat ong cua may tnh. Giao tiep theo cach nay, khoang cach t may tnh en thiet b ngoai vi co the at ti tren 20 met. oi vi e tai ch yeu cau truyen d lieu t may tnh qua KIT ch khong truyen d lieu t KIT qua may tnh v vay chung em chon vi mach MAX232 e thc hien bien oi tng thch mc tn hieu. u iem cua giao dien nay la co kha nang thiet lap toc o Baud.
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Khi d lieu t may tnh c gi en KIT Vi ieu khien 8051 qua cong COM th d lieu nay se c a vao tng bit (noi tiep) vao thanh ghi SBUF (thanh ghi em), en khi thanh ghi em ay th c RI trong thanh ghi ieu khien se t ong Set len 1 va luc nay CPU se goi chng trnh con phuc vu ngat va d lieu se c a vao e x ly.

TRUYEN D LIEU
0 Thong tin so lieu

He thong thong tin so lieu dung e x ly va truyen cac chuoi ma nh phan. Cac ma nay c tao ra, lu tr va x ly bi may tnh va cac thiet b ngoai vi, bao gom cac loai nh: cac tin tc a ma hoa, tap tin van ban, hnh anh, d lieu so va cac thong tin khac. ng truyen la ng truyen an tn hieu so va cac ky t truyen pho bien la ma ASCII. 1 Phng thc truyen a. Truyen noi tiep/ Song song (Serial/ Parallel) Truyen song song: truyen tat ca cac bit cua mot ky t cung mot luc.

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Truyen noi tiep: truyen tuan t tng bit cua 1 ky t.


b7 b6 b5 b4 b3 b2 b1 b0 R x S h if t R e g H n h 4 .2 T r u y e n n o i t ie p

T x S h if t R e g

Truyen song song nhanh hn truyen noi tiep ( thng dung c ly thong tin gan). Truyen noi tiep t ton ng truyen hn song song (thng dung c ly xa). b. Truyen ong bo/ Bat ong bo (Synchoronous / Asynchonous) Truyen ong bo - noi tiep:
L o a d / S h if t \ b7 b6 b5 Tx CLOCK H n h 4 .3 T r u y e n o n g b o - n o i t ie p Input b4 b3 b2 b1 R e a d / S h if t \ b0 Rx O u tput

Dung 1 xung clock e ong bo qua trnh nhan theo tng bit ky t. May se cung cap tn hieu clock cho ca 2 au phat va thu. u iem: ch truyen data, hong can them tn hieu ong bo vao chuoi data nhanh hn. Nhc iem: phai them 1 kenh th 2 e truyen tn hieu clock song song vi kenh truyen data. Truyen bat ong bo noi tiep: Them vao pha trc moi ky t 1 bit START va pha sau 1 hoac 2 bit STOP. May thu se tach bit START 9e khi ong tn hieu ong bo dung cho viec thu cac bit ky t. Cac bit STOP c dung e ngan cach gia cac ky t. Phng phap nay cho phep truyen ngau nhien, khong can truyen lien tuc. V phai them cac bit START, STOP nen toc o truyen tong quat la cham so vi truyen ong bo nhng lai n gian re tien hn.
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Toc o truyen bat ong bo: 75, 110, 300, 1200 bit/s Toc o truyen ong bo: 2400, 4800, 9600 bit/s 2 THONG TIN NOI TIEP BAT ONG BO.

a/ Dan nhap * Truyen so lieu noi tiep cho phep trao oi thong tin gia may tnh va thiet b ngoai vi tng bit mot. So lieu trao oi thng c gi theo cac nhom bit (tao thanh mot k t hay mot t). Th du: mot ky t c the hien bang ma ASCII. Trao oi noi tiep ch can mot ng day tn hieu hay mot kenh lien lac. * Truyen so lieu noi tiep c s dung khi:

1. Thiet b ngoai vi can trao oi so lieu von a la vao/ra/noi tiep. V du: Teletype, bang t, catssete... 2. Khoang cach gia may tnh va thiet b ngoai vi tng oi ln. Neu khoang cach o tang th gia thanh tang len theo tong so ng day dan so lieu. Gia cua he con phu thuoc vao cac bo khuyech ai ng day va bo thu. Do o s dung phng phap trao oi noi tiep se kinh te hn. * Toc o truyen (con goi la toc o Baud-Rate) c xac nh nh ton gso lan thay oi tn hieu trong 1giay. Neu tn hieu truyen i la nh phan toc o truyen tng oi vi so Bit truyen trong 1 giay. Cac kenh thong tin c anh gia bang toc o truyen. Neu so lieu c truyen vi toc o ngoai kha nang cua kenh se say ra loi, ben thu se khong nhan untg c thong tin. * He thong truyen so lieu noi tiep gom cac dang: - n cong: So lieu ch c gi i theo mot hng. - Ban song cong: So lieu c gi theo hai hng nhng moi thi iem ch c truyen theo mot hng. - Song cong: So lieu c truyen ong thi theo hai hng. * Truyen so lieu noi tiep co the la:
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

- ong bo (DB) - Bat ong bo (BDB) iem chung cua hai phng phap nay eu oi hoi thong tin khung (Frame) them vao thong tin so lieu e tao ieui kien cho ben thu/nhan biet dang cua so lieu. iem khac nhau c ban la: Trong truyen BDB, thong tin khong can cho tng ky t, trong kh o, truyen DB thong tin khung ch can mot chuoi ky t hay mot khoi (Block). Truyen so lieu noi tiep DB co hieu suat ln hn truyen BDB nhng oi hoi viec giai ma phc tap hn. Phng phap truyen DB s dung moi trng truyen dan co toc o cao, truyen BDB dung moi trng co kha nang truyen dan cham hn. Trong truyen BDB, dang so lieu c cau tao t cac Bit so lieu c ban (cac Bit thong tin va kiem tra chan le) va them vao pha trc mot Bit khi ong (Start) va pha sau mot hay nhieu Bit dng (Stop). Bit START co mc logic 0 c nh ngha nh mc ien ap dng trong chuan RS-232C. Bit STOP co mc logic 1. Bit START bao cho pha thu bat au nhan ky t va ong bo vi ben phat. Qua trnh ong bo nay ch keo dai trong thi gian 1 ky t. Mot hay nhieu Bit STOP c a vao sau ky t e am bao rang Bit START cua ky t tiep theo se tao ra qua trnh truyen tiep tren ng day lien lac. Ben thu co the uoi kp ben phat neu xung ong bo co cham hn. Mat khac, neu ong bo ben thu nhanh hn ben phat, ben thu se thay co khoang cach gia cac ky t nhng giai ma so lieu van ung. Nh vay, cho phep mot sai so nhat nh gia ben thu va ben phat trong truyen noi tiep bat ong bo. Trong truyen noi tiep ong bo, mot hay vai ky t khung se c them vao mot nhom ky t. Nhng ky t nay goi la ky t ong bo. Nh nhng ky t nay, thiet b thu tai tao c cac ky t thonh tin t chuoi Bit. S ong bo phai c gi suot trong mot chuoi so lieu dai. Ky t ong bo thng c a vao t kenh lien lac MODEM ngay t ben ngoai.

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

b/ Thu tuc truyen noi tiep bat ong bo * ac iem cua tn hieu truyen noi tiep bat ong bo la: Tan so CLOCK thu, phat phan biet vi cung mot tan so danh nh tuyheo toc o truyen bit. Cac ky t truyen vi nhng thi iem khong can lien tuc, truyen rieng biet va ngau nhien. ng truyen gi trang thai 1 trong khoang cach gia cac ky t, goi la trang thai roi (idle). oi vi mot ky t th LSB (Least Significant Bit) c truyen au tien va lan lt la cac Bit ke tiep. au phat: Khi tn hieu LOAD = 1 th d lieu dang song song se c nap vao TSR (t ngo nhap d lieu) Khi tn hieu LOAD = 0 th cac bit nay se c dch noi tiep ra ng truyen. Thanh ghi dch phat TSR cung se bao gom mach logic t ong them cac bit START va bit STOP. au thu: Se nhan biet iem baa mot ky t bang cach tach bit START nh mach tach bit START (START BIT DETECT) khi trang thai ng truyen dan chuyen t 1 xuong 0 va luc nay bo phan ieu khien se ieu khien thanh ghi dch bat au dch cac bit tren ng day vao. Sau 11 lan dch (1 BIT START + 8 BIT DATA + 2 BIT STOP) th co the oc c ky t thu dang song song ngo ra thanh ghi dch khi co tn hieu READ. * e kiem tra sai khi truyen, trong 8 bit DATA se co mot bit kiem tra theo mot trong hai thu tuc sau: Kiem tra chan (Even parity): Tong so bit mot trong 8 bit phai luon luon chan. Kiem tra le (Odd parity): Tong so bit 1 luon luon le. Nh vay, au phat se co bo phan e em so bit 1 cua 8 bit d lieu va tuy theo hnh thc kiem, tra chan hay le se them vao bit cuoi cung gia tr 0 hoac 1 cho thch hp. au thu se em so bit 1 cua moi ky t e xac nh xem tnh hnh d lieu en co ung hay khong? * Tat ca cac thu tuc tren khong phai la bat buoc ma co the thay oi khac nhau tuy theo viec cai at thong so ban au bi ngi thc hien viec truyen. Ch bat buoc la cac thu tuc hai au thu va phat
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

tng ng nhau. Tat ca nhng cong viec a mo ta tren se c thc hien bi mot bo phan giao tiep thong tin bat ong bo ma thanh phan chnh la chip LSIgoi la UART.

THONG TIN NOI TIEP ONG BO.

Cac thu tuc truyen noi tiep bat ong bo n gian va re tien, nhng ch thch hp khi truyen cac thong tin ngan hoac mot vai ky t cach quang. oi vi cac tap tin dai, s dung phng thc truyen thong tin ong bo se hieu qua hn. Trong phng phap nay, thong tin c truyen theo tng khoi (Blocks). Moi khoi bao gom mot so tuan t cac ky t va khong can cac bit Start, bit Stop, ma se ong bo theo tng khoi cung nh viec kiem tra sai.

Trong cac he thong ong bo, tn hieu Clock cua may phat se c truyen qua may thu song song vi d lieu e dung lam xung Clock cho viec dch chuyen cac bit thu. Neu trong thc te khong the thc hien viec truyen tn hieu Clock, th may thu phai t tao ra tn hieu nay. Do o se phc tap hn va co gia thanh cao hn so vi thong tin bat ong bo. e tranh trng hp cac chuoi bit 0 hoac 1 keo dai oi khi co the dung loai ma nh phan ac biet e may thu gi c kha nang ong bo. May thu gi mot hoac nhieu ky t ong bo nhan dang khi bat au viec truyen va ngay khi nhan c bit ong bo, may thu bat au nhan bit. Phan ln cac mang ong bo s dung cac nghi thc do IBM tao ra va nghi thc ong bo nh phan BISYNC (Binary Synchronous) hoac ong bo ng ieu khien d lieu SDLC (Synchronous Data Link Control). Cac giao tiep chuan RS-232C va RS-449 cung cap cac chan sau e truyen tn hieu Clock:

+ oi vi RS-232: Chan 15: TCLK- Transmit Clock (t DCE). Chan 17: RCLK- Receive Clock (t DCE). Chan 24: ETCLK- Externel Transmit Clock.
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

+ oi vi RS-449: Chan 6 va chan 23: Chan 8 va chan 26: Send Timing Receive Timing.

Chan 17 va chan 35:Terminal Timing (t DCE). Khi dung Modem ong bo th tn hieu nh thi se c cung cap t Modem en may tnh. Tan so Clock phat co the tao t Modem hoac thiet b au cuoi. LU O VA CHNG TRNH DANH CHO PHAN CNG e viet chng trnh trenmay cho PC, ngi ta co the dung cac ngon ng lap trnh khac nhau. Da vao yeu cau thiet ke mach, da vao mc o nhom thc hien thay viec s dung ngon ng Assembly ket hp vi cac phuc vu ngat cua Bios e viet chng trnh. Cac nha thiet ke PC danh rieng Int 14H cua Bios e phuc vu cho cong noi tiep. Ngat nay phuc vu kha ay u cac yeu cau ve xuat, nhap va kiem tra trang thai ng truyen va Modem. Viec s dung ngat nay lam cho chng trnh tr nen de dang, ngan gon. I- Gii thieu ngat INT 14h cua Bios: Bios truy cap ti khoi ghep noi noi tiep nh ngat INT 14h vi cac ham nh sau: Ham: Vai tro. 00h Khi pha khoi ghep noi tiep 01h Gi mot ky t 02h Nhan mot ky t 03h oc trang thai cua khoi ghep noi tiep 04h Khi phat cang noi tiep m rong 05h ieu khien truyen thong cua cang noi tiep m rong Bios co the ieu hanh toi a 4 khoi ghep noi tiep, co ten t COM1 en COM4 vi ca a ch nh sau:
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Khoi noi COM1 COM2 COM3 COM4

ghep a ch s 3F8h 2F8h 3E8h 2E8h

c Ngat cng IRQ IRQ4 IRQ3 IRQ4 (hoac vong) IRQ3 (hoac vong)

hoi hoi

mc o chng trnh, ta co the chon mot khoi ghep noi tiep bang cach gan cac ma tng ng vao thanh ghi DX vi cac gia tr: 00h Cho COM1 01h Cho COM2 02h Cho COM3 03h Cho COM4 * Phuc vu 00h: Khi phat khoi ghep noi tiep. Phuc vu 00h an nh nhng thong so khac nhau cua cac khoi ghep noi tiep cung nh RS 232C. o la cac thong so: - So baud: Toc o trao oi thong tin - Tn chan le - So bit dng Kch thc ky t hay so bit noi tiep. Nhng thong so nay c to hp trong ma 8 bit, c at vao thanh ghi AL, theo th t cac bit nh sau: + D7, D6, D5: mau ca van toc (tnh bang baud) + D4, D3: ma cua tnh chan le + D2: ma cua bit dng D1, D0: ma cua kch thc ky t Cac ma tren theo bang sau: D7 0 0 0 0 1 1 1 D6 0 0 1 1 0 0 1 D5 0 1 0 1 0 1 0 Van toc persec ) 110 150 300 600 1200 2400 4800 (bit D4 0 0 1 1 D3 0 1 0 1 Tnh chan le Khong co Tnh le Khong co Tnh chan

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

1 D1 0 1

9600 D0 0 1 0 1 Tnh chan le Khong dung Khong dung 7 bit 8 bit

Kch thc D1 ky t Mot bit Stop 0 Hai bit Stop 0 1 1

Phuc vu 01h: Gi mot ky t Ham nay gimot ky t ra thiet b ngoai vi khoi ghep noi tiep. Muon vay, thc hien chuoi hanh ong sau: at so lieu t khoi ghep noi tiep vao thanh ghi DX (v du COM1 vi 00h) Gi ma ky t vao thanh ghi AL. Gi 01h vao thanh ghi AH. Goi INT 14h

Sau khi thc hien chng trnh con, thanh ghi AH cha ket qua chng trnh. Neu:
-

Bit D7 = 1, ky t khong c truyen i Bit D7 = 0, ky t a c truyen i

Phuc vu 02h: Nhan mot ky t. Trnh t nhan mot ky t cung nh tren, tc la: at so lieu t khoi ghep noi tiep vao DX. at gia tr AH bang 02h Goi INT 14h Ket qua cua chng trnh con la ky t c gi vao khoi ghep noi tiep trong thanhghi AL. Thanh ghi AH cung cha ket qua cua viec thc hien chng trnh nh trng hp AH = 01h, tc la: Bit D7=1, ky t khong t nhan Khi D7=0, ky t a c nhan.
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Phuc vu 02h: oc trang thai cua khoi ghep noi. Muon vay cung phai theo cac trnh t: at so hieu khoi ghep noi vao DX at 03h vao AH Ket qua cac chng trnh con la: Trang thai cua ng day (cua khoi ghep noi) c at trong thanh ghi AH, co cac bit nh hnh di. Trang thai cua Modem c at trong thanh ghi AL nh hnh di: Bit D7 Y ngha Vt qua tre =0: Khong co sai so D6 =1 Co sai so Thanh ghi dch chuyen =0 ban =1 D5 Thanh ghi D5 ghi ghi tn D4 Thiet b au cuoi cua thanh ghi a san sang = 0 Modem khong san sang Thanh bi = 1 Modem san sang San sang phat (truyen) = 0 Cha san sang = 1 San sang roi Thanh ghi i =0 ban =1 D4 roi Ngat Thanh Thanh ghi D6 Ch bao chuong = 0 Khong reo chuong = 1 Reo chuong Bit D7 Y ngha Tn hieu cua song mang = 0 Khong c phat hien = 1 a c phat hien

hieu Break =0 Khong biet =1 Co tn hieu Break


GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

D3

Giao thc = 0 Khong co loi = 1 Co loi Tnh chan le = 0 Khong co loi = 1 Co loi So lieu = 0 Khong co tran = 1 B tran So lieu a san sang = 0 Khong co so lieu san sang = 1 Co So lieu san sang

D3

Tn hieu song mang a thay oi =0 Khong thay oi = 1 Thay oi ng ch bao chuong thay oi = 0 Khong thay oi = 1 Co thay oi ng day tram so lieu san sang a thay oi =0 Khong co thai = 1 Co thay oi ng day san truyen a thay oi = 0 Khong thay oi = 1 Thay oi

D2

D2

D1

D1

D0

D0

sang

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

CHNG III
THIET KE VA THI CONG MODUL GIAO TIEP MAY TNH V KIT 8051
3. GII THIEU VI MACH GIAO TIEP MAX 232
Vi mach MAX 232 cua hang MAXIM la mot vi mach chuyen dung trong giao dien noi tiep vi may tnh. Chung co nhiem vu chuyen oi mc TTL loi vao thanh mc +10V hoac 10V pha truyen va cac mc +3+15V hoac -3-15V thanh mc TTL pha nhan. C1 + V+ C1 C2 + C2 VT2 OUT R2 IN M A X 2 3 2 VCC GND T1 OUT R1 IN R1 OUT T1 IN T2 IN R2 OUT

Vi mach MAX 232 co hai bo em va hai bo nhan. ng dan ieu khien loi vao CTS, ieu khien viec xuat ra d lieu cong noi tiep khi can thiet, c noi vi chan 9 cua vi mach MAX 232. Con chan RST (chan 10 cua vi mach MAX ) noi vi ng dan bat tay e ieu khien qua trnh nhan. Thng th cac ng dan bat tay c noi vi cong noi tiep qua cac cau noi, e khi khong dung en na co the h mach cac cau nay. Cach truyen d lieu n gian nhat la ch dung ba ng dan TxD, RxD va GND (mass)

THIET KE VA THI CONG MODUL GIAO TIEP


1.S o ket noi

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

* S o ket noi gia cong COM vi KIT Vi ieu khien 8051 :


10 8 0 5 1 11 RXD TXD MAX 2 3 2 RXD TXD

2.

S o thc thc te
5V +V

10uF + + 10uF + + MAX-232 10uF + MCS-8051 10uF

P 3 . 0 P 3 . 1

10uF

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

CHNG 1
GII THIEU NGON NG HP NG
1. NGON NG MAY VA HP NG
Chng trnh la mot tep lenh c a vao bo nh cho may thc hien. Cac lenh co the c the hien theo nhieu dang (ngon ng) khac nhau, dang c ban nhat ma may (CPU) co the hieu ngay goi la ngon ng may (Machine Language). Tuy theo CPU ma ngon ng may co mot dang nhat nh, ieu o co ngha vi mot loai CPU co mot ngon ng may rieng. Sau ay la mot oan chng trnh ngon ng may thuoc ho Intel 8086/80x86 : Lenh Dang thap luc phan Dang nh phan 1 B4 02 1011 0100 0000 0010 2 80 C2 30 1000 0000 1100 0010 0011 0000 3 50 0101 0000 oan chng trnh tren gom 3 cau lenh co chieu dai lan lc la 2, 3 va1 byte. Byte au tien goi la ma lenh hay tac t (Operation Code) xac nh tac vu ma CPU phai thc hien, phan con lai la tac to (Operand) xac nh d lieu hoac ni cha d lieu ma lenh tac ong vao. Chieu dai cac cau lenh theo qui nh cua CPU. e co the lap trnh vi loai ngon ng nay, lap trnh vien phai biet ve to chc cua may ang s dung. V la ngon ng rieng cua may nen chng trnh viet bang ngon ng nay thc hien rat nhanh va chiem t cho trong bo nh tuy nhien v chng trnh viet di dang nh phan nen rat kho viet va kho nh de nham lan. Hp ng (Assembly Language) la mot loai ngon ng giup lap trnh vien viet chng trnh de dang hn thay cho ngon ng may. Hp ng co dang nh ngon ng may tc la mot lenh hp ng tng ng vi mot
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

lenh cua ngon ng may va cung co the mot lenh hp ng tng ng vi nhieu lenh ngon ng may nhng khac vi ngon ng may cho thay v viet chng trnh di dang nh phan ngi ta dung mot so ky hieu tng trng de nh nh MOV la lenh chuyen, ADD la lenh cong, SUB la lenh tr. V du 3 lenh ngon ng may tren co the viet di dang hp ng nh sau: Lenh Dang ngon ng may Dang hp ng 1 B4 02 MOV AH, 02h 2 80 C2 30 ADD DL, 30h 3 50 PUSH AX D nhien la may khong the hieu c chng trnh viet bang hp ng nen phai qua giai oan dch, e dch chng trnh t hp ng sang ngong ng may. Chng trnh lam nhiem vu dch mot chng trnh sang ngon ng may goi la trnh hp dch (Assembler ). Chng trnh viet bang hp ng goi la chng trnh nguon( hay goc sourse program ) va chng trnh di dang ngon ng may dch t chng trnh nguon goi la chng trnh ch (hay oi tng -object program) nh s o sau:
Trnh nguon (Source program) Trnh hp dch (Assembler) Trnh oi tng (Object

TAO VA CHAY CHNG TRNH HP NG


e tao va chay mot chng trnh hp ng ban can co mot trong cac bo trnh hp dch nh Turbo Assembler cua hang Borland International (gom trnh hp dch TASM.EXE va trnh lien ket TLINK.EXE ) hoac Microsoft Assembler cua hang Microsoft (gom trnh hp dch MASM.EXE va trnh lien ket LINK.EXE) ngoai ra con mot so tap tin khac trong cac bo chng trnh nay. Du ang s dung cua hang nao cung phai theo qui trnh sau: Bc 1: Trc het ban can co mot trnh soan thao van ban e tao chng trnh nguon hp ng nh NC (Norton Commander), Turbo trong Turbo Pascal, sau khi soan c ghi len a thanh mot tap tin co ho la ASM (v du HELLO.ASM)
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

Bc 2: Dch chng trnh a soan (HELLO.ASM) vi trnh hp dch TASM.EXE (oi vi s dung bo dch cua hang turbo). Sau khi dch tren a se co mot tap tin mi goi la tap oi tng (HELLO.OBJ) dong lenh dch chng trnh nh sau: C:\ TASM HELLO.ASM Turbo Assembler Version 2.01 Copyright (c) 1990 Borland International Assembling file: hello.asm to hello.obj Error message: None Warning message: None Passes: 1 Remaining memory: 370k Thong bao tren cho biet chng trnh cua ban khong co loi sai. Neu co, phai sa lai chng trnh (vi trnh soan thao ) va cho dch lai. Bay gi tren a cua ban co hai tap tin HELLO.ASM (chng trnh nguon do ban tao ra) va HELLO.OBJ (tap tin oi tng). Neu chng trnh khong loi th qua bc 3 Bc 3: Lien ket chng trnh vi trnh lien ket TLINK.EXE. dong lenh thc hien lien ket nh sau: C:\TLINK HELLO.OBJ Turbo Link Version International 3.01 Copyright (c) 1990 Borland

Neu chng trnh cua ban khong co loi sai, TLINK se tao tap thc hien HELLO.EXE. Bc 4: Cuoi cung la thc hien chng trnh cua ban. Qui trnh tao va thc hien chng trnh co the tom tat nh hnh sau:

Trnh nguon (tren giay)

Trnh soan thao

Trnh nguon (tren a ASM)

TASM.EXE (dch chng trnh ) GVHD: NGUYEN NH PHU TOAN

Tap oi tng (.OBJ)

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

TLINK.EXE (lien ket chng trnh

Trnh ch (.EXE)

CU PHAP LENH HP NG
Chng trnh hp ng gom nhieu lenh, moi lenh viet tren mot dong. Lenh hp ng phan lam hai loai la ch th va ch dan. Ch th la lenh se c dch sng ma may, tc la lenh se c thi hanh, con ch dan ( con goi la lenh gia) ch la lenh hng dan trnh hp dch trong qua trnh dch chng trnh. Dang tong cua mot lenh gom 4 chng trnh nh sau: <ten> <tac t> <tac to> < ;ghi chu> vd: DoAddition: ADD AX, DX ;Tang AX lng DX Cac trng hp cach nhau t nhat la mot khoang trang hoac k t nhay (Tab) a/ Trng ten Trng ten co the la nhan (Label ) hoac k hieu (Symbol). Nhan la mot ten ai dien cho mot v tr trong chng trnh (trng hp nay co dau : theo sau), hoac ten thu tuc (chng trnh con) hoac ten bien vung nh cha d lieu ). b/ Trng tac t Trng tac t la ten gi nh cua lenh. Neu la ch th nh MOV, ADD, th lenh se c dch sang ma may con neu la ch dan nh ENDS, PROC, th o la lenh hng dan trnh hp dch trong qua trnh dch chng trnh sang ma may. c/ Trng tac to Trng tac to xac nh d lieu se c x ly bi lenh. Lenh co the co hoac khong co tac to. Neu co hai tac to th chung cach nhau bang dap phay, tac to th nhat (t trai qua ) goi la tac to ch, tac to th hai goi la tac to nguon. d/ Trng ghi chu Sau moi cau lenh co the viet dong ghi chu sau dau cham phay vi much ch la e giai thch y ngha cua lenh

KHAI BAO D LIEU


GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

D lieu trong chng trnh eu c chuyen sang di dang nh phan, tuy nhien ban co the viet di dang thao phan, thap luc phan hoac chuoi ky t a/ Cach viet so Trong cac chng trnh bnh thng c hieu la thap phan, khi can co them ch D hoac d ang sau so (v du 10,10D, 10d ) eu co gia tr nh nhau So viet theo he thap luc phan ket thuc bang ch H hoac h phai bat au la mot so (v du 10h, 10H, 2F8h, 2F8H) So nh phan ket thuc bang B hoac b (v du 1001b, 1001B ) b/ Chuoi ky t Ky t hoac chuoi ky t phai rao gia hai dau nhay n () hoac dau nhay kep() (v du Hello,hello,A, A ) cac ky t c chuyen thanh ma ASCII tng ng, do o A,A ,41h hoac 65 eu co ngha nh nhau. c/ nh ngha d lieu Cac ch dan thong dung dung nh ngha d lieu kieu byte, t (2 byte Word ) hoac t kep (4 byte Double word ) nh sau: Nhan Nhan Nhan DB DW DD tr, tr, tr, tr, ;byte tr, ;word tr, ;double word

Vi nhan la ten vung nh (con goi la bien, thc chat la a ch tng trng cua vung nh va c chuyen thanh a ch that sau khi dch chng trnh ) c nh ngha vi kch thc 1 byte (DB ), 2 byte (DW ) hoac 4 byte (DD ). Moi tr ghi trong phan tac to se la tr c gan cho vung nh c cap phat. Neu thay tr bang dau ? th se khong gan tr cho vung nh Vd : B DB 5 co ngha la vung nh c cap phatco a ch la B, chiem 1 byte va co tr la 5 Vd : W DW 10 co ngha la vung nh c cap phat co a ch la W chiem 2 byte va co gia tr la 0Ah (W la 0A con W+1 la 00 ) d/ nh ngha hang Thay v viet trc tiep cac hang so hoac chuoi trong chng trnh, ta co the at ten (goi la k hieu ) cho rang au chng trnh, sau o ch can dung cac ten o thay cho cac hang. Cach at ten cho hang
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

nay lam chng trnh de oc va de hieu hn vi cu phap sau: Ten EQU Hang Vd: CR EQU 0D h LF EQU 0A h STR EQU Du lieu nhap sai!!!! Sau o co hai dong sau la tng ng MESS DB STR, CR, LF , S MESS DB Du lieu nhap sai!!!!, 0Dh, 0Ah, $

CAU TRUC CHNG TRNH


Nh a trnh bay, chng trnh ma may gom 3 phan cha trong 3 oan la oan ma d lieu va ngan xep do o trnh hp ng cung c to chc tng t vi cac lenh thch hp. 0 Kieu bo nh Kch thc bo nh dung cho oan ma va d lieu c xac nh bang ch dan MODEL nh sau: MODEL kieu Vi kieu la: 0 TINY Ma va d lieu nam cho pham vi mot oan SMALL Ma nam trong mot oan 64K nhng d lieu trong pham vi mot oan 64K 0 COMPACT Ma trong pham vi mot oan 64K va d lieu co the ln hn 64K Thng co t chng trnh nao co ma hoac d lieu ln hn 64K nen kieu SMALL la u. Kieu TINYdung e dch chng trnh sang dang .COM. 1 oan ngan xep oan ngan xep khai bao kch thc vung ngan xep vi ch dan : . STACK Kch Thc Kch thc la o ln ngan xep tnh bang byte, neu khong ghi se mac nhien la 1024. V du sau khai bao vung ngan xep 256 byte . STACK 100h 2 oan d lieu
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

oan d lieu dung khai bao bien hoac hang bat au bang ch dan .DATA. V du: . DATA CR EQU 13 LF EQU 10 VungNho1 DW 2 VungNho2 DW 3 ThongBao DB CHUONG TRINH ABC 3 oan ma oan ma cha cac lenh cua chng trnh bat au bang ch dan : . CODE Lenh cuoi cung cua chng trnh la ch dan END. Tom lai mot chng trnh hp ng thong thng co dang sau: . MODEL SMALL . STACK 100h . DATA ; phan khai bao d lieu . CODE ; phan lenh END

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

CHNG 2
GII THIEU NGON NG LAP TRNH VISUAL C++
I. Tong quan ngon ng visual c
Tai thi iem hien nay a co rat nhieu ngon ng lap trnh khac nhau phuc vu cho nhieu muc ch khac nhau, tuy vao ng dung cu the ma ngi lap trnh se s dung mot ngon ng nao ma mnh biet e viet chng trnh. Trong cuon Luan van tot nghiep nay e tao phan giao dien cho chng trnh toi s dung ngon ng lap trnh Visual C+ + mot ngon ng kha pho bien hien nay.

Visual C++ la mot ngon ng lap trnh trc quan no da tren nen tang cua Ngon ng C/C++ v the nhng ai a biet en ngon ng C/C++ eu co the t hoc va t viet cho mnh mot chng trnh. ay la ngon ng chay tren moi trng Windows va co the lien ket vi cac chng trnh trong moi trng Dos 2. Cach viet mot chng trnh bang visual c++
Toi khong the gii thieu mot cach ay u ve Visual C+ + nhng co the tom tat qua trnh viet chng trnh bang Visual C++ nh sau:

Bc 1: Thiet ke giao dien Bc 2: Viet ma lenh 0 oi vi bc thiet ke giao dien, ban se thiet ke bo mat cua chng trnh. Ban dung cac cong cu Visual C++ e a cac oi tng khac nhau (nh la cac nut bam, thanh cuon, nut radio) vao trong ca so chng trnh cua ban. ac biet trong phan thiet ke giao dien ban khong phai viet mot ma lenh nao. 1 oi vi bc viet ma lenh ban dung trnh soan thao cua Visual C++ va ngon ng lap trnh C++ e viet ma lenh cho chng trnh

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

CHNG 3
CHNG TRNH

CHNG TRNH GIAO DIEN


CAC MA LENH VIET CHO CHNG TRNH GIAO DIEN
0 HIEN TH FILE void CLUANVANTOTNGHIEPDoc::Serialize(CArchive& ar) { if (ar.IsStoring()) { // TODO: add storing code here } else { // TODO: add loading code here } // Calling the base class CRichEditDoc enables serialization // of the container document's COleClientItem objects. m_bRTF=FALSE; CRichEditDoc::Serialize(ar); } 0 CHUYEN OI FILE ASM THANH LILE LIST void CChildFrame::OnCovertlst() { // TODO: Add your command handler code here system("C:\\LVTN\\ASM51 TEST1.ASM "); }

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

0 CHUYEN OI FILE OBJ THANH FILE HEX void CChildFrame::OnConverthex() { // TODO: Add your command handler code here system("C:\\LVTN\\RL51 TEST1.OBJ"); system("C:\\LVTN\\OH TEST1.OBJ"); } GOI CHNG TRNH MAY TNH TR GIUP CHO VIEC OI CAC C SO KHAC NHAU void CLUANVANTOTNGHIEPView::OnCalCulator() { // TODO: Add your command handler code here system("Calc.exe"); } GOI CHNG TRNH TRUYEN TNG BYTE K T void CLUANVANTOTNGHIEPView::OnTransmitted() { // TODO: Add your command handler code here system("C:\\LVTN\\TERMINAL.EXE"); } GOI CHNG TRNH TRUYEN FILE D LIEU (*.HEX) void CChildFrame::OnLoadfile() { // TODO: Add your command handler code here system("C:\\LVTN\\TERMINA3.EXE"); }

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

CHNG TRNH TRUYEN D LIEU TRUYEN GIA 2 KIT VI IEU KHIEN


0 0 LU O BEN KIT VK TRUYEN:
BEGIN

KHI TAO 8051 CHE O GIAO TIEP NOI TIEP

NAP A CH QUAN LY VUNG D LIEU CAN TRUYEN

NO
KIEM TRA BEN NHAN SAN SANG ?

YES

TRUYEN TNG BYTE

NO
KIEM TRA D LIEU CAN TRUYEN HET CHA ?

YES END GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

BEN KIT VK 8051 NHAN:

BEGIN

KHI TAO 8051 CHE O GIAO TIEP NOI TIEP

NAP A CH QUAN LY VUNG D LIEU TRUYEN EN

NO
KIEM TRA BEN PHAT SAN SANG CHA ?

YES

NHAN TNG BYTE

NO
KIEM TRA /C QUAN LY VUNG DL TRUYEN EN HET CHA ?

YES END

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

1 0

x2: x1:

CHNG TRNH BEN KIT VK TRUYEN: org 5000h mov IE,#00h ;khoi tao khong cho phep ngat mov tmod,#20h mov th1,#-13 ;timer mode 2, 2400baud setb tr1 ;cho phep chay mov scon,#0fch ;khoi tao truyen data mode 3 mov dptr,#6000h ;nap dia chi quan li vung ma jb p1.1,x2 ;neu bang 1 thi cho movx a,@dptr ;lay du lieu de truyen di mov sbuf,a ;goi len thanh ghi dem jnb ti,x1 ;kiem tra ti vi sau khi goi 1 byte thi ti=1 ;neu dung bang 1 thi xoa de goi tiep byte clr ti inc dptr mov a,dpl cjne a,#0ffh,x2 mov a,#76h mov dptr,#0c000h movx @dptr,a sjmp $ thu 2

end BEN KIT VK 8051 NHAN: org 5000h setb p1.1 mov IE,#00h ;cam ngat mov tmod,#20h mov th1,#-13 setb tr1 mov scon,#0fch ;khoi tao giao tiep noi tiep mov dptr,#6000h xr2: clr p1.1 xr1: jnb ri,xr1 clr ri ;xoa vi da co du lieu mov a,sbuf ;lay du lieu tu may phat goi toi movx @dptr,a ;cat du lieu inc dptr mov a,dpl cjne a,#0ffh,xr2 mov a,#79h mov dptr,#0c000h movx @dptr,a sjmp $ ;nhay tai cho
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

end ;RxD cua may phat va RxD cua may thu duoc noi voi nhau lam duong truyen data ;TxD cua may phat va TxD cua may thu duoc noi voi nhau lam xung clk TRUYEN D LIEU T MAY TNH EN KIT VK 8051 B1. TRUYEN TNG BYTE K T T MAY TNH EN KIT VK 1. LU O BEN TRUYEN (MAY TNH)

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep BEGIN

THIET AT A CH VUNG D LIEU CUA CHNG TRNH, LU VA CAI AT CAC NGAT CUA MAY TNH , AT PHUNG THC GIAO TIEP CHUAN (2400 b/s, 8 bit, None Parity, 1 Stopbit)

HIEN TH MENU CUA CHNG TRNH

PHM F1

KIEM TRA CO PHM KIEM TRA CO PHM NAO C NHAN ? NAO C AN ?

# PHM F1, F9

PHM F9

GOI CHNG TRNH HIEN TH VA TRUYEN K T C NHAN

END

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

BEN NHAN (KIT VI IEU KHIEN 8051):


BEGIN

KHI TAO 8051 CHE O GIAO TIEP NOI TIEP NOI TIEP

NAP A CH QUAN LY VUNG D LIEU SE C GI TI

NHAN TNG BYTE C GI TI

NO KIEM TRA XEM A HET A CH QUAN LY VUNG DL END

2. CHNG TRNH 0 BEN TRUYEN (MAY TNH): CHNG TRNH TRUYEN TNG BYTE K T T MAY TNH ; STACK
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

stack segment stack db 300 dup('?') stack ends ;------------------------------------------ DATA---------------------Data Segment ;Messages MENU_MS db '',0dh,0ah db '',0dh,0ah db '* THE TRANSMITTED CHARACTERS * ,0dh,0ah db '** --> Press <F1> To Redisplay This MENU ** ',0dh,0ah db '** --> Press <F9> To Exit This Program ** , 0dh,0ah db 'Input characters from keyboard:' db '$' ; PROT_MS db '',0dh,0ah ERR1_MS db 0dh,0ah,'*** Cannot Transmit ***',0dh,0ah ; ;PROGRAM PARAMETER STORAGE CARD_BASE dw 03f8h ;Address of RS 232 card for all harware ;type except INT_NUM db 0ch ;Offset in Bios table as follows SETUP_BYTE db 0bbh ;Default value ; ;Origin interrupt vector address to restore on exit O_INT_SEGdw 0000h ;segment O_INT_OFF dw 0000h ;offset ; ;circular buffer and pointers: CIRC_BUF db 20 dup(00h) ;Circular buffer dw 0 DATA_IN dw 0 ;imput pointer DATA_OUT dw 0 ;output pointer ; DATAEnds ;-------------------------------------- CODE -------------------------------------CODE SEGMENT ASSUME CS:CODE START: ; ;Establish addressability of program's data Segment mov ax,data mov ds,ax
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

assume ds:data mov es,ax assume es:data ; ;Display MENU at cursor mov dx,offset menu_ms ;messages call show_message ; ;----------------------| ;Hardware Type | ;----------------------| ; ;Examine Ram location F000:FFFE to determine IBM hardware push ds ;Save program DS mov dx,0f000h mov ds,dx mov al,ds:[0fffeh] ;Code to AL ; ;Get addr of the RS232 card from BIOS data area mov dx,0 ;Bios data area segment mov ds,dx ;Data segment to Bios area mov cx,ds:0400h ;Offset card 1 pop ds ;Restore program ds mov Card_Base,cx ;Save in program's data ; ;determine interrupt number: ; 0bh IRQ4 all other hardware cmp al,0fdh ;Code for PCjr jne Set_Address mov int_num,0bh ; ;----------------------------------| ;Save/Install Interrupt | ;----------------------------------| ;Obtain and save the segment/offset of the original communications ;interrup installed on entry using Dos service number 53 ;of Int 21h Set_Address: mov ah,53 ;Dos service request number mov al,Int_Num ;Interrup number (0bh or 0ch) int 21h ; ;ES:BX = segment/offset of original handler mov O_Int_Seg,es ;Save segment mov O_Int_Off,bx ;and offset
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

; ;Insert address of the interrup service routine in the Bios ;Label for interrup service routine is: RS232_INT ;use DOS service number 37 of INT 21h mov ah,37 ;Dos service request number mov al,int_num ;Machine interrup number mov dx,offset cs:RS232_Int push ds ;Save program data segment push cs pop ds ;Set DS to segment base of int 21h ;interrup service routine pop ds ;Restore program's ds ; ;------------------| ;Set protocol | ;------------------| ;Set default communication parameters mov al,10100011b ;Control code mov ah,0 ;Bios request number mov dx,0 ;Comm1 in all hardware types int 14h ;Bios service request call comm_on call flush ;Flush keyboard buffer ; ;------------------------------------------------------------------------------------| ; Send and receive characters | ; monitor funtion key | ;------------------------------------------------------------------------------------| Monitor: mov ah,1 ;Code for read keyboard status int 16h ;Bios service jz ser_imp ;Nothing in keyboard buffer jmp char_typed ;Character in keyboard buffer ; ;Delay loop to allow interrupt to occur Ser_imp: sti ;interrupt on mov cx,50 Delay: nop nop loop delay ; ;--------------------------------------| ;Test for new data received | ;--------------------------------------|
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

; ;------------------| ;Process char | ;------------------| ;Receive character type from keyboard buffer char_typed: mov ah,0 ;Code for read keyboard char int 16h ;Bios service ;Test for <F1> and <F9> keys cmp ax,3b00h ;<F1> jne test_f9 jmp show_menu ;<F1> key pressed Test_F9: cmp ax,4300h ;<F9> je dos_exit jmp show_and_send ;<F9> key pressed ; ;----------------| ; Exit | ;----------------| Dos_Exit: ;Communications interrupts OFF call Comm_Off ; ;Restore orginal interrupt vector for communications interrup number mov ah,37 ;Dos service request number mov al,int_num ;Machine interrup number mov dx,o_int_off ;Offset to DX mov ax,o_int_seg ; Segment mov ds,ax ;to DS int 21h ;Exit mov ah,76 ;Dos service request number mov al,0 ;No return code int 21h ;Exit to dos ; ;----------------------| ;Redisplay Menu | ;----------------------|
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

cli mov bx,data_out cmp bx,data_in jne new_data sti jmp Monitor

;Interrup off while reading pointer ;Compare pointers ;New data item or items ;Interrup on ;Reapeat cycle

Luan Van Tot Nghiep

Show_Menu: mov dx,offset menu_ms call show_message ;Display message routine jmp monitor ; ;--------------------------| ;New Data Receiver | ;--------------------------| New_Data: lea si,circ_buf ;Circular buffer address mov bx,data_out ;Output pointer add si,bx ;Buffer start +displacement mov al,byte ptr[si] ;Get character ; ;Update output pointer inc bx ;Bump cmp bx,20 ;Pointer overflows buffer? jne ok_out_ptr mov bx,0 ;Request to start of buffer ; Ok_Out_Ptr: mov data_out,bx ;Update ; ;Display byte taken from buffer sti call tty jmp monitor ; ;------------------------| ;Display Protocol | ;------------------------| Show_Protocol: mov dx,offset prot_ms call show_message ;Display message routine jmp monitor ; ;--------------------------| ; Output and Display | ;--------------------------| Show_and_Send: ;Send through RS-232c line ;Wait loop for tranmitter holding register empty mov cx,2000 ;Prime wait counter push ax ;Save character to transmit ; Thre_Wait:
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

mov dx,card_base add dx,5 in al,dx jmp short $+2 test al,20h jnz ok_2_send loop thre_wait

;Line status register ;Get byte at port ;Thre bit set?

; ;Wait period timed out,display error message and exit pop ax ;Restore stack mov dx,offset err1_ms call show_message ;Error to screen jmp monitor ; Ok_2_Send: pop ax ;Retrieve byte ;Place in transmitter hoding register to send mov dx,Card_Base ;THR register out dx,al ;Send jmp short $+2 ;I/O delay ;Display character call tty jmp monitor ;------------------------------------------------------------------------------| ; PROCEDURES | ;------------------------------------------------------------------------------| Comm_On proc near ;Set communication line for interrupt operation received data cli ;interrupt off ;Reset buffer pointer to start of buffer mov data_in,0 mov data_out,0 ; ;Set dx to base address of RS 232 card from BIOS mov dx,card_base ; ;Init mode control register for data terminal ready ;(bit 0) request to send (bit1) and output 2 (bit3) ;DX is still holding port address mov dl,0fch ;MCR address mov al,00001011b ;Bit 0,1 and 3 set out dx,al jmp short $+2 ; ;Set bit 7 of the line control register (DLAB) to access ;the interrupts enable register at xF9h
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

; ;Enable interrupts for DATA READY only mov dl,0f9h ;Interrupt enable register mov al,1 ;Data ready interrupt out dx,al jmp short $+2 ;I/O delay ; ;Enable communications interrupts by resetting the bits ;corresponding to the irq3 and iqr4 line on the interrupt mask ;register(port address =21h) in al,21h ;Read byte at port jmp short $+2 ;I/O delay and al,0e7h ;Reset bit 3 and bit 4 out 21h,al jmp short $+2 ;I/o delay ; ;Reenable interrupt sti ret Comm_on Endp ; ;---------------------------------------| ; Communication line off | ;---------------------------------------| Comm_off proc near ;Disable communications interrup by setting for irq3 and iqr4 line ;on the interrupt mask register (port address=21) in al,21h or al,18h ;Set bit 3 and 4 out 21h,al jmp short $+2 ret Comm_off Endp ; Show_Message proc near ;Display string ->by the DX register using Dos function 09h mov ah,9 ;Service request number int 21h ;Dos interrupt
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

mov dl,0fbh in al,dx jmp short $+2 and al,7fh out dx,al jmp short $+2

;xFBH =line control register ;Read byte at port ;I/O delay ;Reset DLAB ;Write to LCR ;I/O delay

Luan Van Tot Nghiep

ret Show_Message Endp ; ;-----------------------------| ; Teletype write | ;-----------------------------| tty proc near ;Display character or control code at cursor position tty_one: push ax ;Save character mov ah,14 ;Bios service request number ;for ASCII teletype write mov bx,0 ;Display page int 10h ;Bios service request pop ax ; ;Test for carriage return and add line feed cmp al,0dh jne not_cr mov al,0ah jmp tty_one not_cr: ret tty endp ; ;-------------------------| ; Flush Buffer | ;-------------------------| flush proc near flush_1: mov ah,1 ;Bios service request code int 16h jz no_old_chars ;Flush old character mov ah,0 int 16h jmp flush_1 no_old_chars: ret flush endp ; get_key proc near mov ah,0 ;Bios service request number int 16h ret get_key endp
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

; ;----------------------------------------------------------------------------| ; Interrupt Service Routine | ;----------------------------------------------------------------------------| rs232_int: sti ;interrupt on ;communications ;Save register to be used by the service routine push ax push bx push dx push di push ds ;Set Ds establish addressability of main program data mov dx,data mov ds,dx assume ds:data ; ;Check line status register for reception error and data ready Data_check: mov dx,card_base mov dl,0fdh ;line status register in al,dx ;Read port byte jmp short $+2 ;I/O delay ;Check for error codes test al,1eh jnz data_error jmp data_check ; data_error: mov al,'?' ;Error symbol jmp store_byte ; ;Pull data from the receiver data register and store in ;the circular buffer Data_Ready: mov dl,0f8h ;RDR in al,dx ;Get byte jmp short $+2 ;I/O delay and al,7fh ;Mask off high bit ; ;Place byte in circular buffer Store_Byte: lea di,circ_buf ;Buffer pointer mov bx,data_in ;Input pointer add di,bx ;Point Di to active byte
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

mov byte ptr[di],al

;Store in Circ_Buf

; ;Index input pointer. Reset if pointer overflows buffer inc bx ;Bump pointer cmp bx,20 ;Past end of buffer ? jne ok_in_ptr ; ;Reset pointer to start of buffer mov bx,0 ok_in_ptr: mov data_in,bx ;Store new pointer displacement ;
;Signal end of -interrupt to the interrupt command register

mov al,20h out 20h,al jmp short $+2

;Code ;EOl port address ;I/O delay

; ;Requset register from stack pop ds pop di pop dx pop bx pop ax ; ;Return from interrupt iret code ends End start BEN NHAN (KIT VK 8051): org 5000h setb p1.1 mov IE,#00h ;cam ngat mov tmod,#20h mov th1,#-13 setb tr1 mov scon,#0fch ;khoi tao giao tiep noi tiep mov dptr,#6000h xr1: jnb ri,xr1 clr ri ;xoa vi da co du lieu mov a,sbuf ;lay du lieu tu may phat goi toi movx @dptr,a ;cat du lieu inc dptr mov a,dpl cjne a,#0ffh,xr1 sjmp $ ;nhay tai cho
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

end B2. TRUYEN FILE D LIEU T MAY TNH EN KIT VK 1. LU O 0 BEN TRUYEN (MAY TNH):

BEGIN

THIET AT A CH VUNG D LIEU CUA CHNG TRNH, LU VA CAI AT CAC NGAT CUA MAY TNH , SET PHUNG THC GIAO TIEP CHUAN

HIEN TH MENU CUA CHNG TRNH

PHM F1

KIEM TRA CO PHM NAO C AN ?

PHM F4

PHM F9

GOI CHNG TRNH HIEN TH VA TRUYEN FILE AN NH

END GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

BEN NHAN KIT VK 8051:


BEGIN

KHI TAO 8051 CHE O GIAO TIEP NOI TIEP

NHAN BYTE AU TIEN TREN MOT DONG CUA FILE

NO

Y SAO SANH = 3AH E S

NHAN BYTE TIEP THEO

NO KTRA HET D LIEU TREN DONG

YES

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

NO KIEM TRA HET D LIEU TREN FILE

YES

2. CHNG TRNH END 0 BEN TRUYEN (MAY TNH) CHNG TRNH TRUYEN FILE D LIEU (*.HEX) Da vao chng trnh truyen tng byte k t co s them vao mot so ham ; TERMINAL.ASM ; STACK stack segment stack db 300 dup('?') stack ends ; DATA data segment prompt db 'File name:$' filename db 30 dup(0) buffer db 512 dup(0) buffrr db 512 dup(0) handle dw ? openerr db 0dh,0ah,'OPEN ERROR - COPDE' errcode db 30h,'$' ;messages MENU_MS db ' **TERMINAL PROGRAM**',0dh,0ah db '<F1> to redisplay this MENU',0dh,0ah db '<F4> to open file.hex and trasnmit',0dh,0ah db '<F9> to exit the TERMINAL program',0dh,0ah db 0dh,0ah,'$' PROT_MS db ' ',0dh,0ah
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

err1_ms ***',0dh,0ah card_base dw inT_num db setup_bytedb O_int_seg dw O_int_off dw ;circular buffer circ_buf db dw data_in dw data_out dw

db

0dh,0ah,'*** cannot transmit

02f8h ;address of RS 232 card 0ch 0bbh ;Origin 0000h ;segment 0000h ;offset and pointer: 20 dup(00h) 0 0 ;imput pointer 0 ;output pointer

data ends phan code giong co thay oi nh sau: ;----------------------------------------- CODE -----------------------------;------------------| ;Process char | ;------------------| ;Receive character type from keyboard buffer char_typed: mov ah,0 ;Code for read keyboard char int 16h ;Bios service ;Test for <F1> ,<F4> and <F9> keys cmp ax,3b00h ;<F1> jne test_f4 jmp show_menu ;<F1> key pressed Test_F4: cmp ax,3e00h jne test_F9 jmp tran_file ;<F4> key pressed Test_F9: cmp ax,4300h ;<F9> je dos_exit jmp show_and_send ;<F9> key pressed ; Phan procedure them vao mot so chng trnh con ;------------------------------------------------------------------------------| ; PROCEDURES | ;------------------------------------------------------------------------------| tran_file: call get_name ;doc ten file lea dx,filename ;dx chua offset cua ten file mov al,0
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

call open jc open_error mov handle,ax read_loop: lea dx,buffer ;tro toi vung dem mov bx,handle ;lay the file call read ;doc file,AX = so byte doc duoc or ax,ax ;ket thuc file je pexit ;dung, ket thuc file mov cx,ax ;CX chua so byte doc duoc call display ;hien thi file jmp read_loop ;lap lai open_error: lea dx,openerr ;lay thong bao loi add errcode,al mov ah,9 int 21h ;hien thi thong bao loi ;output and display ;show_and_send: ; pexit: mov cx,2000 pthre_wait: mov dx,card_base add dx,5 in al,dx jmp short $+2 test al,20h jnz pok_2_send loop pthre_wait ;wait period timed out,display error message and exit mov dx,offset err1_ms call show_message jmp ppexit pok_2_send: call con_hex ;goi chtr con chuyen sang so hex lea dx,buffrr mov cx,256 call display mov cx,256 ;place in transmitter hoding register to send mov dx,card_base lea di,buffrr ;tro toi vung dem ppl: mov al,[di] ;lay byte data out dx,al
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

jmp short $+2 call edelay inc di loop ppl ;display character ; call tty ppexit: mov bx,handle ;lay the file call close ;dong the file jmp monitor ;--------------------------------------get_name proc near push ax push dx push di mov ah,9 ;ham hien thi chuoi lea dx,prompt int 21h cld lea di,filename ;DI tro toi ten file mov ah,1 ;ham doc ki tu tu ban phim read_name: int 21h cmp al,0dh ;co phai CR je done ;dung ket thuc stosb ;luu no vao trong chuoi jmp read_name ;tiep tuc doc vao done: mov al,0 stosb ;luu byte 0 pop di pop dx pop ax ret get_name endp open proc near mov ah,3dh ;ham mo file mov al,0 ;chi doc int 21h ret open endp read proc near push cx mov ah,3fh ;ham mo file mov cx,512 ;chi doc int 21h pop cx ret
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

read endp display proc near push bx mov ah,40h mov bx,1 int 21h pop bx ret display endp close proc near mov ah,3eh int 21h ret close endp edelay proc near push ax push bx mov ax,06h edel2: mov bx,0ffffh edel1: dec bx jnz edel1 dec ax jnz edel2 pop bx pop ax ret edelay endp ;--------------------con_hex proc near push ax push bx push cx push dx push di push si mov ax,0b800h mov bx,0 cld lea si,buffrr mov cx,260 mov al,0 xxx8:mov [si],al inc si loop xxx8 lea si,buffrr

;ham ghi file ;the file cho man hinh ;dong file

;ham dong file ;dong file

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

lea di,buffer xxx3:mov al,[di] ;lay byte data cmp al,3ah ;so sanh voi ma dau ':' jz xxx2 ;nhay neu la dau ':' inc di jmp xxx3 ;quay lai de tim dau ':' xxx2:call ktra_end ;goi chuong trinh kiem tra ket thuc cmp ax,0 ;dung la het data thi lam cho AX=0000 jnz xxx4 xxx6:pop si pop di pop dx pop cx pop bx pop ax ret xxx4:mov al,[di] ;lay byte data mov [si],al ;dung la byte 3Ah can luu vao call goi_ht inc di inc si ;xu li so byte can goi mov al,[di] ;lay so can goi MSD sub al,30h ;tru di 30 de thanh so hex call so_lon ;kiem tra so ABCDEF mov cl,4 rol al,cl mov ah,al inc di mov al,[di] ;lay so can go LSD sub al,30h ;tru di 30 de thanh so hex call so_lon ;kiem tra so ABCDEF or al,ah ;or 2 data lai thanh 1 byte mov [si],al ;cat so HEX ADDR_H add al,1 mov dl,al ;luu so byte can xu li con lai call goi_ht ;xu li phan dia chi can goi inc di inc si mov al,[di] ;lay byte ADDR_L-MSD sub al,30h ;tru di 30 de thanh so hex call so_lon ;kiem tra so ABCDEF mov cl,4
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

rol al,cl mov ah,al inc di mov al,[di] sub al,30h call so_lon or al,ah mov [si],al call goi_ht inc di inc si mov al,[di] sub al,30h call so_lon mov cl,4 rol al,cl mov ah,al inc di mov al,[di] sub al,30h call so_lon or al,ah mov [si],al call goi_ht ;xu li cac byte con lai inc di inc di xxx1:inc di inc si mov al,[di] sub al,30h call so_lon mov cl,4 rol al,cl mov ah,al inc di mov al,[di] sub al,30h call so_lon or al,ah mov [si],al call goi_ht dec dl cmp dl,0 jnz xxx1 inc di

;lay byte ADDR_L-LSD ;tru di 30 de thanh so hex ;kiem tra so ABCDEF ;or 2 data lai thanh 1 byte ;cat so HEX ADDR_H

;lay byte ADDR_H-MSD ;tru di 30 de thanh so hex ;kiem tra so ABCDEF

;lay byte ADDR_H-LSD ;tru di 30 de thanh so hex ;kiem tra so ABCDEF ;or 2 data lai thanh 1 byte ;cat so byte can goi dang HEX ;bo byte 00

;lay so byte thu nhat ;tru di 30 de thanh so hex ;kiem tra so ABCDEF

;lay so byte thu 2 ;tru di 30 de thanh so hex ;kiem tra so ABCDEF ;or 2 data lai thanh 1 byte ;cat so byte can goi dang HEX

;quay lai vi chua ;bo byte cuoi thu nhat


SVTH: NGUYEN NGOC

GVHD: NGUYEN NH PHU TOAN

Luan Van Tot Nghiep

inc di ;bo byte thu 2 inc di ;bo ma xuong hang jmp xxx3 ;het 1 hang data con_hex endp ;chuong trinh kiem tra ket thuc ktra_end proc near push di inc di mov al,[di] ;lay byte data cmp al,30h ;kiem tra byte 0 thu nhat jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 0 thu 2 mov al,[di] ;lay byte data cmp al,30h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 0 thu 3 mov al,[di] ;lay byte data cmp al,30h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 0 thu 4 mov al,[di] ;lay byte data cmp al,30h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 0 thu 5 mov al,[di] ;lay byte data cmp al,30h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 0 thu 6 mov al,[di] ;lay byte data cmp al,30h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 0 thu 7 mov al,[di] ;lay byte data cmp al,30h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte 1 thu 8 mov al,[di] ;lay byte data cmp al,31h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte F thu 9 mov al,[di] ;lay byte data cmp al,46h jnz kt_exit ;nhay den de thoat vi khong phai inc di ;neu dung thi kiem tra byte F thu 10 mov al,[di] ;lay byte data cmp al,46h
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

jnz kt_exit ;nhay den de thoat vi khong phai mov ax,0 pop di ret kt_exit: mov ax,1111h ;nap data sao cho khac khong la 1 pop di ret ktra_end endp goi_ht proc near RET push di mov di,bx mov ah,1 stosw mov bx,di pop di ret goi_ht endp so_lon proc near cmp al,9 jg yyy ret yyy: sub al,7 ret so_lon endp 0 BEN NHAN (KIT VK 8051): ;chuong trinh cua may nhan du lieu (receiver) dk equ 0c001h ht equ 0c000h org 5200h mov ie,#00h mov tmod,#20h mov th1,#-13 setb tr1 mov scon,#0fch mov 24h,#00 mov 25h,#00 xr1: jnb ri,xr1 ;nhan ma dau ':' clr ri mov a,sbuf cjne a,#3ah,xr1 xr2: jnb ri,xr2 ;nhan so byte can goi clr ri mov r1,sbuf xr3: jnb ri,xr3
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

clr ri mov dph,sbuf xr4: jnb ri,xr4 clr ri mov dpl,sbuf xr5: jnb ri,xr5 clr ri mov 11h,dph ;chuyen dia chi de giai ma hthi mov 10h,dpl mov a,sbuf movx @dptr,a mov 14h,a ;cat de giai ma hien thi lcall decode inc dptr djnz r1,xr5 sjmp xr1

;chuong trinh con giai ma hien thi decode: push dpl push dph mov dptr,#0200h mov a,11h ;lay byte B_A_H de giai ma hien thi push 0e0h ;cat A swap a ;xu li so thu nhat anl a,#0fh mov dpl,a movx a,@dptr mov 20h,a pop 0e0h ;lay lai A anl a,#0fh ;xu li so thu 2 mov dpl,a movx a,@dptr mov 21h,a mov a,10h ;lay byte B_A_L de giai ma hien thi push 0e0h ;cat A swap a ;xu li so thu nhat anl a,#0fh mov dpl,a movx a,@dptr mov 22h,a pop 0e0h ;lay lai A anl a,#0fh ;xu li so thu 2 mov dpl,a movx a,@dptr
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

mov 23h,a mov a,14h ;lay byte DATA de giai ma hien thi push 0e0h ;cat A swap a ;xu li so thu nhat anl a,#0fh mov dpl,a movx a,@dptr mov 26h,a pop 0e0h ;lay lai A anl a,#0fh ;xu li so thu 2 mov dpl,a movx a,@dptr mov 27h,a lcall display pop dph pop dpl ret display: mov r2,#80h ;tu dieu khien 8279 chong nhap nhay mov r0,#20h ;quan li dia chi ma hien thi dis1: mov dptr,#dk mov a,r2 movx @dptr,a mov dptr,#ht mov a,@r0 movx @dptr,a inc r2 inc r0 mov a,r0 cjne a,#28h,dis1 ret end

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

CHNG 1
HNG DAN S DUNG KIT VI IEU KHIEN 8051
Q G C 8 4 0 T D 9 5 1 P E A 6 2 K F B 7 3 I R S Cac phm chc nang

Cac phm nhap d lieu

GII THIEU CAU TRUC PHAN CNG KIT VI X LY: 1. Tan so lam viec: Kt vi ieu khiens dung vi ieu khien 8051 hoac 8951 cua Intel vi tan so hoat ong 12MHZ. Cac chng trnh ve thi gian c viet tng ng vi a ch nay. 2. To chc bo nh: 0 Bo nh EPROM: Co dung lng 16kbyte s dung 2 EPROM 2764, chng trnh he thong cha EPROM th nhat, EPROM th 2 cha s dung c thiet ke dang socket. 0 EPROM 1 co a ch t 0000H - 1FFFH. 1 EPROM 2 co a ch t 2000H - 3FFFH. 1 Bo nh RAM: Bo nh RAM co dung lng 16kbyte s dung 2 IC 6264. RAM 1 co a ch t 4000H - 5FFFH. RAM 2 co a ch t 6000H - 7FFFH. Chng trnh co the s dung toan bo cac vung nh RAM.
I. GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep 3. Cac IC ngoai vi: trong he thong co s dung 2 IC

8255A dung e giao tiep vi thiet b ngoai vi. Bang o nh cua 2 IC 8255: a ch cua cac port 8255_1 Port A 8000H Port B 8001H Port C 8002H Thanh ghi ieu khien 8003H 8255-2 A000H A001H A002H A003H

0 Cac ngo ra cua IC 8255A -1, 8255 -2, c a ra ben ngoai bang connect 64 chan co s o chan tra bang tra. Moi IC 8255A co 3 port, moi port co 8 chan ieu khien nen so chan a ra ben ngoai e ieu khien la 48. 4. Khoi giai ma hien th quet phm s dung IC 8279: Vung a ch s dung cua IC 8279 la C000 H - C001H, trong o: a ch C000H la a ch dung e gi d lieu can hien th va oc ma phm. a ch C001H la a ch dung e gi t ieu khien ra 8279 oc thanh ghi trang thai. 0 Phan giai ma hien th: Gom co 8 led vi th t Led 1 en led 8 theo hng t phai sang trai nh hnh 2: Hnh 2.
Led8 Led7 Led6 Led5 Led4 Led3 Led2 Led1

0 Cau truc byte d lieu cua led: p g f e d c b a

He thong s dung Led loai Anode chung nen muon oan nao sang th bit d lieu tng ng vi oan o bang 1. oan nao tat th bit tng ng vi oan o bang 0.
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

V du muon sang so 9 th byte d lieu se gi ra led la: 0 1 1 0 1 1 1 1 Tng ng vi so hex la 6FH. Sau ay la ma 7 oan cua 1 so ch so va ch cai: p g f e d c b a hex So 0 0 0 1 1 1 1 1 1 3F So 1 0 0 0 0 0 1 1 0 06 So 2 0 1 0 1 1 0 1 1 5B So 3 0 1 0 0 1 1 1 1 4F So 4 0 1 1 0 0 1 1 0 66 So 5 0 1 1 0 1 1 0 1 6D So 6 0 1 1 1 1 1 0 1 7D So 7 0 0 0 0 0 1 1 1 07 So 8 0 1 1 1 1 1 1 1 7F So 9 0 1 1 0 1 1 1 1 6F Ch A 0 1 1 1 0 1 1 1 77 Ch b 0 1 1 1 1 1 0 0 7C Ch C 0 0 1 1 1 0 0 1 39 Ch d 0 1 0 1 1 1 1 0 5E Ch E 0 1 1 1 1 0 0 1 79 Ch F 0 1 1 1 0 0 0 1 71 Ch P 0 1 1 1 0 0 1 1 73 Ch H 0 1 1 1 0 1 1 0 76 Ch U 0 0 1 1 1 1 1 0 3E Co the tm cac ma tng ng con lai. 0 Co 2 cach hien th d lieu tren cac Led: Cach 1: khi gi d lieu mi ra a ch C000H th d lieu nay se hien thi led 1, d lieu trc o cua cac led se dch sang trai theo chieu mui ten trong hnh 3. Rieng byte d lieu trc o cua Led8 se dch va mat i.
LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1

Mui ten nam ngang ch chieu nhan d lieu t vi ieu khien a en led 1. Cac mui ten vong cung ch chieu dch chuyen d lieu.
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

W Chu y: neu muon xoa het man hnh 8 led th gi 8 byte 00h lien tiep ra A000h.

Cach 2: kieu gi d lieu cach 1 con c goi la kieu dch chuyen d lieu tuan t. Ben canh o 8279 con cho phep gi d lieu trc tiep en bat ky led nao trong 8 led to chc cua led khong co g thay oi a ch gi d lieu van la C000H nhng moi led con co them 1 a ch ieu khien nh trong hnh 4. a ch ieu khien cua led phai gi ra a ch C001H trc khi gi d lieu ra a ch C000H.
LED8 80H LED7 81H LED6 82H LED5 83H LED4 84H LED3 85H LED2 86H LED1 87H

Phan giai ma ban phm: Chng trnh con giai ma ban phm c viet tai a ch 0223H s dung cac thanh ghi R2, A, DPTR, R6, R7, o nh 41h. Khi goi chng trnh con 0223H: Neu khong an phm th sau khi thc hien xong chng trnh se tr ve chng trnh chnh vi noi dung thanh ghi A =FFH. Neu co an phm th ma cua phm an cha trong A. Chng trnh nay neu co an phm hoac khong an phm eu tr ve chng trnh sau khi thc hien xong va phai chu y cat d lieu trong cac thanh ghi khi goi chng trnh con nay. Bang ma cac phm so: Ph Ma Ph M Phm M Phm Ma m m a a 0 00 4 0 8 08 C 0C 4 1 01 5 0 9 09 D 0D 5 2 02 6 0 A 0A E 0E 6 3 03 7 0 B 0B F 0F 7 Bang ma cac phm chc nang: Ph Ma Ph M
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

m T G R

10 11 12 13

m S P K

a 14 15 16 17

0 HNG DAN S DUNG KIT VI IEU KHIEN 8051


1. Ban phm:

*1 Kt vi ieu khien co tat ca la 26 phm nhan nh hnh 1 c chia thanh cac nhom nh sau: 0 16 phm nhap d lieu cua chng trnh dang so thap luc phan t 0 en F 1 Cac phm chc nang.
Q 2. Chc nang cua phm:

*2 Khi mi cap ien cho may 4 Led ben trai se hien th 4 so 0000, bon led ben phai tat. *3 Neu khong hien th ung hay nhan phm Q. Phm Q co chc nang Reset mach khi khi ong hoac khi muon thoat khoi chng trnh vi ieu khien ang thc hien (chc nang nh phm RESET cua may vi tnh). 3. Chc nang cua phm: *4 Muon nhap d lieu mi vao o nh co a ch v du 4000, hay dung cac phm nhap d lieu anh so 4000, a ch nay se xuat hien 4 led ben phai. *5 Nhan phm S th a ch 4000 se thay the cho a ch trc o 4 led ben trai. *6 4 led con lai ch co 2 led sang o chnh la noi dung cua o nh tng ng vi a ch 4 led ben trai.
4. Chc nang cua phm: *7 Dung e lu tr d lieu vao o nh co a ch 4 Led ben trai, v du muon lu tr d lieu la 3F vao o nh co a ch la 4000, hay anh 3F t cac phm d lieu, d lieu mi 3F se thay the d lieu cu trc o. *8 Sau o nhan phm e lu tr d lieu nay vao o nh 4000. a ch se tang len 1 la 4001 e san sang nhan d lieu tiep theo va 2 led ben trai hien th noi dung cua o nh 4001. *9 Chc nang cua phm nay la lu tr d lieu ong thi tang a ch cua o nh. GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC S

Luan Van Tot Nghiep 5. Chc nang cua phm: *10 Co chc nang giam a ch cua o nh xuong 1

n v tng ng vi moi lan nhan. V du muon kiem tra lai o nh mi va nhap la 4000 xem co ung la d lieu 3F khong, hay nhan phm . Neu sai th nhap lai, neu ung th nhan phm tang a ch e nap cac d lieu tiep theo. 6. Chc nang cua phm: *11 Sau khi nhap d lieu cua mot chng trnh tai a ch 4000, e vi ieu khien thc hien chng trnh nay hay nhan phm P. Khi o tren man hnh 8 Led se xuat hien PC 4000. Neu muon thc hien chng trnh tai a ch 4000 hay nhan phm tang a ch, khi o tren man hnh se xuat hien them dau = nh sau: PC =4000. Sau o nhan phm G. Chng trnh se c thi hanh. *12 Neu chng trnh lu tai a ch khac vi a ch 4000 th trc khi nhan phm tang a ch hay anh a ch cua chng trnh o vao bang cac phm nhap d lieu. Sau o nhan phm tang a ch, v du muon thc hien chng trnh tai a ch 5000 th tren man hnh 8 led se hien th PC =5000. Nhan tiep phm G chng trnh se c thi hanh tai a ch 5000.
R 7. Chc nang cua phm: *13 Dung e xem noi dung cac thanh ghi, trc tien nhan phm R va sau o nhan cac phm thap phan tng ng t 6 cho en F. Nhan phm thap phan A: xem noi dung thanh ghi A. Nhan phm thap phan B: xem noi dung thanh ghi B. Nhan phm thap phan C: xem noi dung thanh ghi C. Nhan phm thap phan D: xem noi dung thanh ghi D. Nhan phm thap phan E: xem noi dung thanh ghi E. Nhan phm thap phan F: xem noi dung thanh ghi F. Nhan phm thap phan 8: xem noi dung thanh ghi H. Nhan phm thap phan 9: xem noi dung thanh ghi L. Nhan phm thap phan 7: xem noi dung cap thanh ghi SP. Nhan phm thap phan 6: xem noi dung cap thanh ghi PC. P

8. Chc nang cua phm: *14 Phm nay tac ong en ngat cng cua he thong vi x ly. Chng trnh se b ngng sau khi nhan phm I,
GVHD: NGUYEN NH PHU TOAN SVTH: NGUYEN NGOC

Luan Van Tot Nghiep

neu nhan I them lan na he thong se c at lai trang thai mac nh ban au tng ng vi reset may bang phm Q. 9. Chc nang cua phm: *15 Chc nang cua phm nay la thc hien chng trnh tng bc. Trnh t nhan phm giong nh phm G. Neu nhan phm G e thc hien ca chng trnh tai a ch cha trong cap thanh ghi PC, ta nhan phm T chng trnh se c thc hien tng lenh tai a ch cha trong PC.
T

GVHD: NGUYEN NH PHU TOAN

SVTH: NGUYEN NGOC

You might also like