SlideShare a Scribd company logo
1 of 69
Download to read offline
B CÔNG NGHI P
TRƯ NG I H C CÔNG NGHI P TP HCM
KHOA CÔNG NGH I N T

Án T t nghi p
Tài:
L P TRÌNH C CHO H VI I U KHI N 8051
GVHD :ThS. HUỲNH MINH NG C
L P :CDDT6K
SINH VIÊN :LÊ VĂN LONG
MSSV :04CDDT406
NG CTRUNG
MSSV : 04CDDT439
Tp. HCM ,Tháng 8 Năm 2007
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 2
NH N XÉT C A GIÁO VIÊN HƯ NG D N
SVTH : Lê Văn Long MSSV : 04CDDT406
ng c Trung MSSV : 04CDDT439
GVHD : ThS. Huỳnh Minh Ng c
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
.....................................................................................................................
Ngày Tháng Năm 2007
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 3
L I C M ƠN
Chúng tôi xin chân thành c m ơn Th y Huỳnh Minh Ng c ã t n tình giúp
chúng em trong su t quá trình th c hi n án này.
Chúng tôi xin chân thành c m ơn các th y cô giáo ã kh công truy n th ki n
th c cho chúng em giúp chúng em ph c v công tác t t khi ra trư ng.
Cu i cùng chúng tôi c m ơn chân thành n ba m , ngư i thân, cùng b n bè.
Nh ng ngư i luôn ng viên, h tr chúng tôi hoàn thành án này.
SVTH: Lê Văn Long & ng c Trung.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 4
PH N I
T NG QUAN v TÀI
I. T V N :
Ngày nay, nh ng ng d ng c a Vi i u khi n ã i sâu vào i s ng sinh ho t và
s n xu t c a con ngư i. Th c t hi n nay là h u h t các thi t b i n dân d ng hi n nay
u có s góp m t c a Vi i u Khi n và vi x lí . ng d ng vi i u khi n trong thi t k
h th ng làm gi m chi phí thi t k và h giá thành s n ph m ng th i nâng cao tính n
nh c a thi t b và h th ng.Trên th trư ng có r t nhi u h vi i u khi n: h 8051 c a
Intel, 68HC11 c a Motorola, Z80 c a hãng Zilog, PIC c a hãng Microchip, H8 c a
Hitachi,vv…
Vi c phát tri n ng d ng các h vi x lý òi h i nh ng hi u bi t c v ph n c ng
cũng như ph n m m, nhưng cũng chính vì v y mà các h vi x lý ư c s d ng gi i
quy t nh ng bài toán r t khác nhau. Tính a d ng c a các ng d ng ph thu c vào vi c
l a ch n các h vi x lý c th cũng như vào k thu t l p trình.
Ngày nay các b vi x lý có m t trong r t nhi u thi t b i n t hi n i: t u
ĩa CD, máy thu hình, máy ghi hình, dàn âm thanh HiFi, b i u khi n lò sư i cho n
các thi t b i u khi n dùng trong công nghi p. Lĩnh v c ng d ng c a các h vi x lý
cũng r t r ng l n: t nguyên c u khoa h c, truy n d li u, n công nghi p, năng lư ng,
giao thông và y t …
Tùy theo kinh nghi m và m c thông th o mà chúng ta có th s d ng các ngôn
ng khác ngoài h p ng như: C, C++
, Visual basic có nh ng chương trình ch t lư ng
cao hơn.
II. N I DUNG C A TÀI:
Sơ lư c v vi i u khi n AT89C51.
Kh o sát vi i u khi n AT89C2051 c a hãng ATMEL.
• G m sơ chân linh ki n.
• Sơ kh i c a AT89C2051.
• Các n i d ng ng d ng c a AT89C2051.
Gi i thi u ph n m m Keil Software µViSion 2
ng d ng ngôn ng C và Assembly i u khi n l p trình led.
• ng d ng cho led ơn, led 7 o n, led ma tr n…
K t lu n và hư ng phát tri n c a tài.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 5
PH N II
N I DUNG TÀI
CHƯƠNG 1: GI I THI U B VI I U KHI N 89C2051 và 89C51
I.GI I THI U B VI I U KHI N 89C2051
I.1 CÁC C I M
Tương thích v i các s n ph m c a h MSC-51.
2K byte b nh Flash l p trình ư c.
Kh năng :1000 chu kì ghi/xóa.
T m i n áp ho t ng t 2,7 V n 6V
T m t n s ho t ng t 0 Hz n 21 MHz
2 m c khóa b nh chương trình (program memory).
RAM bên trong (internal RAM) có dung lư ng 128 x 8 bit.
15 ư ng I/O l p trình ư c.
2 b nh th i / m 16 bit.
6 ngu n (nguyên nhân ) ng t.
Kênh n i ti p UART l p trình ư c.
Các ngõ ra kích LED tr c ti p.
M ch so sánh tương t trên chip (on-chip analog comparator).
Các ch ngh công su t th p và ch gi m công su t.
I.2 MÔ T
Chip AT89C2051 là chip vi i u khi n CMOS 8 bit i n áp th p, hi u su t cao có 2K
byte b nh Flash ch c, xóa ư c và l p trình ư c PEROM (Flash programmable and
erasable readonly memory). Linh ki n này ư c s n xu t b ng cách s d ng công ngh b nh
không thay i m t cao c a Atmel và tương thích v i t p t p c a MCS-51 chu n công
nghi p. B ng cách k t h p m t CPU 8-bit a năng và linh ho t v i Flash trên chip ơn tinh th ,
Atmel AT89C2051 là chip vi i u khi n m nh cung c p gi i pháp linh ng cao và mang l i
hi u qu v giá thành cho nhi u ng d ng i u khi n nhúng (embedded control application).
AT89C2051 cung c p các c tính chu n sau ây : b nh Flash 2K byte , 128 byte
RAM , 15 ư ng I/O, 2 b nh th i/ m 16-bit , ki n trúc ng t hai m c 5 vector, port n i ti p
hoàn toàn song công , m ch so sánh tương t chính xác, m ch dao ng và t o xung clock trên
chip . Ngoài ra AT89C2051 ư c thi t k có m ch logic tĩnh cho ho t ng gi m n t n s 0
Hz và h tr 2 ch ti t ki m công su t l a ch n ư c b ng ph n m m.
Ch d nghĩ ( idle mode ) s dùng CPU nhưng v n cho phép RAM, các b nh
th i/ m, port n i ti p và h th ng ng t ti p t c ho t ng. Ch gi m công su t duy trì n i
dung c a RAM nhưng làm d ng m ch dao ng, không cho phép m i ch c năng khác c a chip
ho t ng cho n l n reset c ng k ti p (nghĩa là ta thi t l p l i tr ng thái ban u [reset] cho
chiop b ng m ch i n bên ngoài).
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 6
I.3 C U HÌNH CHÂN
Hình 1.1
I.4 SƠ KH I
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 7
Hình 1.2
RAM ADDR. REGISTER: thanh ghi a ch RAM .
RAM: vùng nh truy c p ng u nhiên (RAM).
FLASH: vùng nh FLASH.
B REGISTER:thanh ghi B.
ACC: thanh ch a.
STACK POINTER: con tr vùng nh x p ch ng.
PROGRAM ADDRESS REGISTER: thanh ghi a ch chương trình.
TMP1: thanh ghi t m 1
TMP2: thanh ghi t m 2
ALU: ơn v s h c/logic.
BUFFER: b m.
PC INCREMENTER: b tăng thanh ghi m chương trình PC.
INTERRUPT, SERIAL PORT AND TIMER BLOCKS: các kh i ng t, port n i ti p
và nh th i.
PROGRAM COUNTER: b m chương trình PC.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 8
PSW: t tr ng thái chương trình .
TIMING AND CONTROL:m ch logic i u khi n và nh th i.
INSTRUCTION REGISTERED: thanh ghi l nh.
DPTR: con tr d li u .
PORT1 LATCH: b ch t port 1.
PORT3 LATCH: b ch t port 3.
ANALOG COMPARTOR:b so sánh tương t .
OSC:m ch dao ng.
PORT 1 DRIVERS: các m ch kích port 1.
PORT 3 DRIVERS: các m ch kích port 3.
I.5 MÔ T CHÂN
VCC
Chân c p i n áp Vcc cho chip.
GND
Chân n i t.
Port 1
Port 1 là port I/O (port nh p/xu t: input/output port) hai chi u 8-bit. Các chân c a port t
P1.2 n P1.7 cung c p các m ch kéo lên bên trong (internal pull-ups). Các chân P1.0 và P1.1
yêu c u các m ch kéo lên bên ngoài . P1.0 và P1.1 cũng còn ư c s d ng làm ngõ vào dương
(AIN0) và ngõ vào âm (ÁIN), theo th t , c a m ch so sánh tương t chính xác trên chip (on –
chip precision analog comparator).
Các m ch m ngõ ra (output buffer) c a port 1 có th hút dòng 20mA và kích tr c ti p
các b hi n th LED. Khi các logic 1 ư c ghi n các chân c a port 1, các chân này có th ư c
s d ng làm các ngõ vào. Khi các chân t P1.2 n P1.7 ư c s d ng làm các ngõ vào và ư c
kéo xu ng m c th p t bên ngoài, chúng s cung c p dòng (IIL) do các m ch kéo lên bên trong.
Port 1 cũng nh n d li u chương trình hay d ki u mã (code data) trong th i gian l p trình
và ki m tra b nh Flash.
Port 3
Các chân c a port 3 t P3.0 n P3.5, P3.7 là chân I/O hai chi u v i các m ch kéo lên bên
trong. P3.6 ư c n i dây c ng làm ngõ vào n i n ngõ ra c a m ch so sánh trên chip và không
th truy c p như m t chân I/O có m c ích t ng quát. Các m ch m ngõ ra c a port 3 có th hút
dòng 20mA.Khi các logíc ư c ghi n các chân c a port 3, các chân này ư c kéo lên m c cao
b i các m ch kéo lên bên trong và có th ư c s d ng làm các ngõ vào. Khi là các ngõ vào, các
chân nào c a port 3 ư c kéo xu ng m c th p b i m ch bên ngoài s cung c p dòng (IIL) do các
m ch kéo lên. Các chân c a port 3 còn ư c s d ng cho các ch c năng c bi t khác c a
AT89C2051 như ư c li t kê dư i ây ( b ng 11,1). Port 3 cũng nh n m t s tín hi u i u khi n
l p trình và ki m tra b nh Flash.
B ng 1.1
RST
Ngõ vào reset (thi t l p l i tr ng thái ban u). T t c các chân I/O ư c reset n m c
logíc ngay sau khi RST lên m c cao. Vi c duy trì chân RST m c cao trong 2 chu kỳ máy trong
khi m ch dao ng ang ho t ng s reset chip.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 9
XTAL 1
Ngõ vào n m ch khu ch i dao ng o và ngõ vào n m ch t o xung clock bên
trong.
XTAL 2
Ngõ ra t m ch khu ch i dao ng o.
I.6 CÁC C TÍNH C A M CH DAO NG.
XTAL 1 và XTAL 2 là ngõ vào và ngõ ra, theo th t , c a
m ch khu ch i o có th ư c c u hình tr thành m ch dao
ng trên chip như ư c trình bày hình 1.3. M t tinh th th ch
anh ho c m ch c ng hư ng g m u có th s d ng ư c. kích
chip t ngu nxung clock bên ngoài, chân XTAL 2 s không k t
n i trong khi chân ATAL 1 ư c kích như ư c trình bày hình
1.4. Không có yêu c u nào v chu kỳ nhi m v (duty cycle) c a
tín hi u xung clock bên ngoài vì ngõ vào n m ch vì ngõ vào n
m ch t o xung clock bên trong s i qua m t flipflop làm nhi m
v chia 2 t n s , nhưng các c tính v i n áp t i thi u và t i a
c a m c cao và m c th p ph i ư c xem xét.
Hình 1.3 các k t n i c a m ch dao ng.
Lưu ý: C1,C2=30pF± 10pF i v i các th ch anh ; C1,C2=40pF± 10pF i v i các b
c ng hư ng g m.
Hình 1.4: C u hình kích xung clock bên ngoài.
I.7CÁC THANH GHI CH C NĂNG C BI T SFR
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 10
B ng 1.2 Các giá tr khi reset và b n các SFR c a AT89C2051
M t b n vùng nh trên chip ư c g i là không gian thanh ghi ch c năng c bi t SFR
(special function registor) ư c trình bày b n trên ây (b ng 1.2). Lưu ý r ng không ph i t t c
a ch u b chi m b i các thanh ghi này, các a ch không b chi m có th không ư c th c
hi n trên chip. Các truy c p c n các a ch này trong trư ng h p t ng quát, s tr v d li u
ng u nhiên và các truy c p ghi s có tác ng không rõ ràng.
Ph n mêm c a ngư i s d ng không nên ghi các logic 1 n các v trí nh không ư c li t
kê vì chúng có th ư c s d ng trong các s n ph m tương lai áp ng các t tính m i.
Trong trư ng h p ó, các giá tr do reset ho c các giá tr không tích c c c a các bit m i s luôn
luôn b ng 0.
I.8 CÁC GI I H N TRÊN M T S L NH
AT89C2051 là m t thành viên ti t ki m và có hi u qu v giá thành c a h vi ièu khi n
ang phát tri n c a Atmel. Chip này ch a 2K b nh chương trình Flash. Chip này hoàn toàn
tương thích v i ki n trúc MCS-51và có th ư c l p trình b ng c ch s d ng t p l nh MCS-51.
tuy nhiên, có vài cân nh c mà ta oh i chú ý khi s d ng m t s l p trình c a chip này.
T t c các l nh liên quan n các ho t ng nh y và r nhánh s b gi i h n, ch n h n như a
ch íh rơi vào trong không gian nh c a chip, không gian này là 2K byte v i AT89C2051. V n
này là trách nhi m c a nguowif l p trình ph n m m.
Thí d , l nh LJMP 7E0H s là l nh h p l i v i AT89C2051 (có 2K byte b nh chương
trình)trong khi ó l nh LJMP 900H là l nh không h p l .
Các l nh r nhánh
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 11
LCALL,LMJP, ACALL, AJMP,SJMP ,JMP@A+DPTR- Các l nh r nhánh không i u
ki n này s th c thi úng mi n là ngư i l p trình lưu ý r ng a ch ích r nhánh ph i n m trong
gi i h n v t lý c a kích thư c b nh chương trình (các v trí nh t 00H n 7FFH i v i
AT89C2051). Vi c vi ph m các gi i h n khong gian v t lý có th gây ra hành vi không bi t
ư c c a chương trình
CJNE [. . . ], DJNZ [. . . ], JB, JNB, JC, JNC, JBC, JZ, JNZ - V i các l nh r nhánh có
i u ki n này, các quy lu t gi ng như trên cũng ư c áp d ng. M t l n n a, vi c vi ph m các
giơis h n b nh v t lý s làm cho chương trình th c hti không úng.
i v i các ng d ng bao g m các cách ng t, các v trí a ch c a chương trình ph c v ng t
(interrupt service rountine) bình thư ng c a c u trúc h 89C2051 ư c b o toàn.
Các l nh liên quan n MOVX, b nh d li u
AT89C2051 ch a 128 byte b nh d li u bên trong (intenal data memory). Như v y
trong AT89C2051,kích thư c c a b x p ch ng (stack depth) ư c gi i h n t i 128 byte, ay là
dung lư ng c a RAM có s n. Vi c truy c p b nh bên ngoài không ư c h tr trong chip này
và vi c thưc thi chương trình bên ngoài cũng không ư c h tr .
Như v y không có l nh MOVX [. . . ] nào ch a trong chương trình.
M t trình d ch h p ng (assembler) i n hình c a 89C51 v n d ch các l nh này,ngay c
khi chúng ư c vi t dư i d ng vi ph m các gi i h n ã c p trên. Ngư i s d ng b vi i u
khi n ph i có trách nhi m ph i bi t các tính ch t v t lý và gi i h n c a linh ki n ang ư c s
d ng và i u ch nh các l nh ư c s d ng m t cách thích h p.
Các gi i h n trên ây cho ta th y các khuy t i m c a At89C2051.
I.9 CÁC BIT KHOÁ B NH CHƯƠNG TRÌNH
V i chip AT89C2051 ta có 2 bit khoá (lock bit), các bit này có th l i không l p trình
(U) ho c có th l p trình (P) nh n thêm ư c các tính ch t ư c li t kê b ng 11.3.
Các bit khoá chương trình
LB1 LB2
Lo i b o v
1 U U Không có tính ch t khoá chương trình.
2 P U Vi c l p trình thêm n a cho b nh Flash b c m.
3 U U Tương t ch 2, vi c ki m tra cũng b c m.
Lưu ý: các bit khoá ch có th b xoá b ng thao tác xoá chip
B ng 1.3:Các ch b o v c a bit khoá.
I.10 CH NGH
Trong ch ngh CPU s t ng , trong khi t t c các ngo i vi khác trên chip i u ho t
ng và i u duy trì tr ng thái ch tích c c. Ch này ư c yêu c u b i ph n m m. N i
dung c a RAM trên chip và t t c tren các thanh ghi ch c năng c bi t i u gi nguyên không
thay i trong th i gian ch này. Ch ngh có th ư c k t thúc b i cách ng t b t kì ư c
phép hoăc b ng cách reset ph n c ng.
Các chân P1.0 và P1.1 s ư c thi t l p b ng 0 n u không s d ng các m ch kéo lên
bên ngoài ho c ư c thi t l p b ng 1 n u có m ch kéo lên bên ngoài.
Cũng c n lưu ý r ng khi ch ngh ư c k t thúc b i m t reset c ng, chip s ti p t c
th c thi chương trình bình thư ng t nơi chương trình b r i b , n 2 chu kỳ máy trư c gi i
thu t reset bên trong l y quy n i u khi n. Ph n c ng trên chip ngăm c n vi c truy c p n
RAM bên trong ch này nhưng không c m vi c truy c p n cá chân c a port. la i b
kh năng có m t thao tác không mong i n m t chân c a port khi ch ngh ư c k t thúc
b ng reset, l nh theo sau l nh yêu c u ch ngh s không th là l nh ghi n m t chân port ho c
b nh ngoài.
I.11 CH GI M CÔNG SU T
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 12
Trong ch gi m công su t, m ch dao ng b d ng và l nh yêu c u ch gi m công
su t là l nh sau cùng ư c th c thi. RAM trên chip và các thanh ghi ch c năng c bi t gi l i
các giá tr c a chúng cho én khi các ch gi m công su t ư c k t thúc.L i thoát duy nh t ra
kh i ch gi m công su t là s d ng reset c ng. Reset s nh nghĩa l i các thanh ghi chuac
năng c bi t nhưng không làm thay i Ram trên chip. Reset không nên ư c kích ho t trươc
khi i n áp VCC ư c khôi ph c n m c ho t ng bình thư ng và reset ph i duy trì tích c c
lâu cho phép m ch ho t ng tr l i và tr nên n nh.
Các chân P1.0 và P1.1 s ư c thi t l p b ng 0 n u không s d ng các m ch kéo lên bên
ngoài ho c ư c thi t l p b ng 1 n u có m ch kéo lên bên ngoài.
I.12 L P TRÌNH FLASH
AT89C2051 trên th trư ng có d i nh chương trình PEROM trên chip la 2K byte
tr ng thái ã ư c xóa (nghĩa là toàn b n i dung c a các byte là FFH) và s n sàng ư c l p
trình. D i nh chương trình ư c l p trình m t byte cho m i th i i m. M t khi dãi này ã ư c
l p trình, l p trình l i b t kì byte nào không tr ng, toàn b d i nh ư c xóa b ng i n.
B i m a ch bên trong
AT89C2051 có m t b m a ch PEROM bên trong, b m này luôn luôn ư c thi t
l p là 00H c nh lên c a RST và ư c tăng lên b ng cách áp d ng xung ang tr thành m c
dương (positve going pluse) n chân XTAL1.
Gi i thu t chương trình
l p trình AT89C2051, theo trình t sau ây.
1. Trình t c p i n:
C p i n gi a các chân VCC và GND
Thiêt l p RST và XTLA1 n m c th p (GND)
2. Thi t lâp RST lên m c cao (‘H’)
Thi t l p chân P3.2 lên m c cao (‘H’)
3. Áp d ng t h p các m c logic ‘H’ và ‘L’ thích h p ên các chân P3.3, P3.4, P3.5 và P3.7
ch n 1 trong các thao tác l p trình ư c trình bày trong b ng các ch l p trình PEROM
(PEROM proramming modes table).
l p trình và ki m tra d i nh chương trình:
4. t d li u c a byte chhương trình ( hay còn g i là byte mã) v trí 00h n các chân t P1.0
n P1.7.
5. Tăng RST lên 12V cho phép l p trình.
6. ưa m t xung n chân P3.2 l p trình m t byte trong d i PEROM ho c các bit khóa. Chu
kỳ ghi byte ư c t nh th i và i n hình chi m 1.2ms.
7. ki m tra d li u ã l p trình, gi m th p RST t 12V xu ng m c logic cao ‘H’ và thi t l p
các chân t P3.3 n P3.7 n các m c logic thích h p. D li u xu t có th ư c c các chân
c a port 1.
8. l p trình m t byte v trí a ch k ti p, ưa m t xung n XTAL1 tăng b m a
ch bên trong (internal address counter). t d li u m i n các chân c a port 1.
9. L p l i các bư c t 6 n 8, thay i d li u và tăng b m a ch cho toàn b d i byte
hoăc cho n khi k t thúc t p tin i tư ng (object file).
10.Trình t ng t ngu n i n.
Thi t l p XTLA1 n m c th p (‘L’)
Thi t l p RST n m c th p (‘L’)
T t ngu n c p i n cho VCC.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 13
Data Polling: AT89C2051 có Data Polling ch ra vi c k t thúc m t chu kỳ ghi.
Trong th i gian c a m t chu kỳ ghi, vi c th c byte sau cùng ư c ghi s d n n vi c l y bù
d li u ư c ghi trên chân P1.7. M t khi chu kỳ ghi ã k t thúc, d li u s có hi u l c trên t t c
các ngõ ra và chu kỳ k ti p có th b t u. Data Polling có th b t u b t c lúc nào sau khki
m t chu kỳ ghi ư c kh i ng.
Ready/ Busy: Ti n trình l p trình byte cũng có th giám sát b ng tín hi u ngõ ra
RDY/ BSY. Chân P3.1 ư c kéo xu ng m c th p sau khi chân P3.2 tr thành m c cao trong
th i gian l p trình s ch ra tr ng thái b n (BUSY).
Chân P3.1 ư c kéo lên m c cao l n n a khi vi c l p trình k t thúc s chh ra tr ng thái
s n sàng (READY).
Program verify ( ki m tra chưong trình ): N u các bit khóa LB1 và LB2 ã không ư c
l p trình, d li u chương trình có th c ngư c v thông qua các ư ng d li u ki m tra:
1. Reset b m a ch bên trong v 00H mang RST t ‘L’ lên ‘H’.
2. t các tín hi u thích h p c d li u chương trình và c d li u ngõ ra các chân c a
port 1.
3. ưa m t xung n chân XTAL 1 tăng b m a ch bên trong.
4. c byte d li u k ti p các chân c a port 1.
5. L p l i các bư c 3 và 4 cho n khi toàn b d i nh chương trình ư c c.
Các bit khóa khong th ư c ki m tra tr c ti p. Vi c ki m tra các bit khóa s nh n ư c b ng
cách tuân theo các tính ch t ư c cho phép c a chúng.
Chip erase (xóa chip): Toàn b d i PEROM (2K byte) và hai bit khóa ơc xóa b ng
i n b ng s d ng t h p thích h p các tín hi u i u khi n và b ng cách gi cho chân P3.2
m c th p trong 10ms. D i nh chương trinhd ư c ghi v i t t c các bit i u là 1 trong thao tác
xóa chip va ph i ư c th c hi n trư c khi b t kỳ byte nh không tr ng nào có th ư c l p trình
l i.
Reading the signature bytes ( c các byte ch ký ): Các byte ch ký ư c c v i cùng
th t c như viêc ki m tra bình thư ng các v trí nh 000H, 001H, 002H, ngo i tr các chân P3.3
và chân P3.5 ph i ư c kéo xu ng m c logic th p. Các giá tr ư c tr v như sau:
(000H) = 1EH ch ra ư c s n xu t b i Atmel.
(001H) = 21H ch ra 89C2051.
I.13CÁC CH L P TRÌNH FLASH
Các ch l p trình Flash ư c tóm t t b ng 1.4.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 14
Lưu ý: 1. B m a ch PEROM bên trong ư c reset v 000H c nh lên c a RST và ư c
tăng b i xung dương chân XTAL 1.
2. vi c xóa chip yêu c u xung PROG kéo dài 10ms.
3. Chân P3.1 ư c kéo xu ng m c th p trong th i gian l p trình ch ra RDY/BSY
Write code data: ghi d li u chương trình.
Read code data: c d li u chương trình.
Write lock : ghi các bit khóa.
Chip erase : xóa chip.
Read signature byte : c byte ch ký
SEE FLASH PROGRAMMING MODE TABLE:xem b ng ch l p trình Flash.
PGM DATA: d li u chương trình.
TO INCREMENT ADDRESS COUTER: tăng b m a ch .
I.14 CÁC C I M L P TRÌNH FLASH
Ký
hi u
Thông s Min Max
ơn
v
VPP i n áp cho phép l p trình. 11.5 12.5 V
IPP Dòng i n cho phép l p trình. 250 µA
tDVGL Th i gian t lúc d li u n khi PROG m c th p. 1.0 µs
tGHDX Th i gian gi d li u sau khi PROG tích c c. 1.0 µs
t EHSH Th i gian P3.4 ( NABLE ) t ‘H’ lên VPP. 1.0 µs
tSHGL Th i gian t lúc thi t l p VPP n khi PROG m c th p. 10 µs
tGHSL Th i gian gi a VPP sau khi PROG tích c c. 10 µs
tGLGH r ng c a PROG. 1 110 µs
tELQV Th i gian t lúc ENABLE m c th p cho n khi d li u có 1.0 µs
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 15
B ng 11.5 Các t i m l p trình và ki m tra Flash.
TA = 00
C n 700
C, VCC = 5.0 ± 10%.
Ch s d ng ch l p trình 12 V.
I.15 CÁC Ư C LƯ NG C C I TUY T I
T m nhi t ho t ng: t -550
C n +1250
C.
T m nhi t tích tr : t -660
C n +1500
C.
i n áp trên b t kì chân nào so v i t (GND): -1.0 V n +7 V.
i n áp c p i n c c i: 6.6 V.
Dòng DC ngõ ra: 25.0 mA.
CÁC D NG SÓNG L P TRÌNH VÀ KI M TRA FLASH
Hình 1.5 Các d ng sóng l p trình và ki m tra Flash.
hi u l c.
tEHQZ Th i gian th n i d li u sau khi ENABLE tích c c. 0 1.0 µs
tGHBL Th i gian t khi PROG m c cao cho én khi BUSY o m c
th p.
50 ns
tWC Th i gian c a chu kỳ ghi byte. 2.0 ms
tBHIH Trì hoãn t RDY/BSY n khi clock tăng. 1.0 µs
tHIL Th i gian c0lock m c cao. 200 ns
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 16
D NG SÓNG M CH KÍCH XUNG CLOCK BÊN NGOÀI
Hình 1.6:D ng sóng m ch kích xung clock bên ngoài.
M CH KÍCH XUNG CLOCK BÊN NGOÀI
B ng 1.5 Các thông s c a m ch kích xung clock bên ngoài.
NH TH I PORT N I TI P: I U KI N KI M TRA CH THANH GHI D CH
VCC = 5.0 ± 20%; i n dung t i = 80 pF.
Ký
hi u
Thông s Dao ng 12 MHZ
Min Max
Dao ng thay i
Min Max
ơn
v
Th i gian chu kỳ xung clock port
n i ti p.
1.0 12tCLCL µs
Th i gian t lúc thi t l p d li u
xu t n c nh lên c a xung clock
700 10tCLCL
– 133
ns
Th i gian gi d li u xu t sau c nh
lên c a xung clock.
50 2tCLCL –
177
ns
Th i gian gi d li u nh p sau c nh
lên c a xung clock
0 0 ns
Th i gian t c nh lên xung clock
n khi d li u nh pcó hi u l c.
700 10tCLCL
– 133
ns
B ng 1.6 Các i u ki n ki m tra ch nh th i thanh ghi d ch
Ký hi u Thông s VCC=2.7V n 6.0V
Min Max
VCC=4.0V n 6.0V
Min Max
ơn v
1/tCLCL T n s dao ng. 0 12 0 24 MHZ
tCLCL Chu kỳ xung clock. 83.3 41.6 ns
tCHCX Th i gian m c cao. 30 15 ns
tCLCX Th i gian m c th p. 30 15 ns
tCLCH Th i gian tăng (c nh lên). 20 20 ns
tCHCL Thơi gian gi m (c nh xu ng). 20 20 ns
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 17
CÁC D NG SÓNG NH TH I CH THANH GHI D CH
Hình 1.7 D ng sóng nh th i ch thanh ghi d ch.
D NG SÓNG NGÕ VÀO/NGÕ RA KI M TRA AC1
Hình 1.8:D ng sóng ngõ vào/ngõ ra ki m tra AC.
Lưu ý: 1. Các ngõ vào AC trong th i gian ki m tra ư c kích (VCC – 0.5) V i v i logic 1 và
0.45 V i v i logic 0. Các phép o nh th i ư c th c hi n VIHmin i v i logic 1và VILmax
i v i logic 0.
D NG SÓNG TH N I1
Hình 1.9 D ng sóng th n i.
Timing reference points: các i m tham chi u nh th i.
Lưu ý: 1. i v i m c ích nh th i, m t chân port s không còn th n i kho có s thay i
100mV t i n áp trên t i. M t chân port b t u th n i khi có s thay i 100mV t m c
VOH/VOL (có t i).
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 18
ICC CH TÍCH C C
Hình 1.10: ICC ch tích c c.
ICC CH NGH VÀ CH GI M CÔNG SU T
Hình 1.11: (a) ICC ch ngh ,(b) ICC ch gi m công su t.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 19
Packaging Information
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 20
II.Gi i thi u v Vi i u Khi n AT89C51
MSC51 là m t h Vi i u Khi n (Microcontroller) do hãng Intel s n
xu t.Các IC c a h MSC51 tiêu bi u là 8051 và 8031. c bi t, vi i u
khi n 89C51 s n xu t g n ây mang các c i m sau:
4Kbytes EEPROM.
128 bytes RAM.
4 Port I/O (Input/Output).
2 b nh th i Timer 16 bits.
Giao ti p n i ti p.
64Kbytes không gian b nh chương trình m r ng.
64Kbytes không gian b nh d li u m r ng.
M t b x lý lu n lí (thao tác trên các bits ơn).
210 bits ư c a ch hóa.
B nhân chia 4µs.
H TH NG GIAO TI P PORT.
• Port 0: port 0 là m t port hai ch c năng trên các chân 32-39.
Hãy nh r ng : trên các chân này chưa có i n tr kéo dương, do ó khi
c n chúng ta c n nh n c i m này.
• Port 1: port 1 là m t port I/O trên các chân 1-8.
• Port 2: port 2 là m t port công d ng kép trên các chân 21-28.
• Port 3: port 3 là m t port công d ng kép trên các chân 10-17. Các
chân này u có nhi u ch c năng, các công d ng chuy n i có liên
h t i các c tính c bi t c a 8051 b ng sau:
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 21
CÁC TÍN HI U I U KHI N:
Chip AT89C51 có các tín hi u i u khi n c n ph i lưu ý như sau:
• Tín hi u vào EA trên chân 31 thư ng t lên m c cao ( +5V) ho c
m c th p (GND)
N u m c cao, 8951 thi hành chương trình t ROM n i trong
kho ng a ch th p (4K ho c t i a 8k i v i 89C52).
N u m c th p, chương trình ư c thi hành t b nh m r ng (t i
a n 64Kbyte).
Ngoài ra ngư i ta còn dùng EA làm chân c p i n áp 12V khi l p
trình EEPROM trong 8051.
• CHÂN PSEN (Program store enable):
PSEN là chân tín hi u ra trên chân 29. Nó là tín hi u i u khi n cho
phép chương trình m r ng, PSEN thư ng ư c n i n chân OE
(Output Enable) c a m t EPROM ho c ROM cho phép c các
bytes mã l nh.
Hãy nh r ng : bình thư ng chân PSEN s ư c th tr ng ( No
Connect).Ch khi nào cho EA m c th p thì lúc ó:
PSEN s m c th p trong th i gian l y l nh. Các mã nh phân c a
chương trình ư c l y t EPROM qua bus d li u và ư c ch t vào
thanh ghi l nh c a 8951 gi i mã l nh.
PSEN m c th ng (m c cao) n u thi hành chương trình trong
ROM n i c a 8951.
CÁC CHÂN NGU N:
AT8951 ho t ng ngu n ơn +5V.Vcc ư c n i vào chân 40, và Vss
(GND) ư c n i vào chân 20.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 22
Chương 2: Gi i thi u chung v ph n m m Keil Software
Ph n m m Keil SoftWare 8051 công c phát tri n ư c li t kê dư i là nh ng
chương trình mà biên t p mã C, t p h p nh ng t p tin assembly, liên k t và nh v
nh ng o n chương trình hư ng i tư ng, nh ng thư vi n , kh i t o file HEX, và trình
g l i.
• µVision®
là m t môi trư ng phát tri n tích h p mà k t h p qu n lý project ,so n
th o mã ngu n và trình g l i trong môi trư ng m nh.
• Cx51 ANSI t i ưu b biên d ch C và t o ra nh ng o n chương trình hư ng i
tư ng nh v l i t mã ngu n C.
• Ax51 Macro Assembler t o ra nh ng a n chương trình hư ng i tư ng nh v
l i 8051 mã ngu n assembly.
• BL51 b k t n i / dò tìm nh v l i nh ng o n chương trình hư ng i tư ng
ư c t o ra t C51 và A51 vào nh ng o n chương rình hư ng i tư ng tuy t
i.
• LX51 m r ng b k t n i / b dò tìm h tr nh ng phương án thi t b m r ng và
cung c p nh ng c tính b sung.LX51 h tr t t c các phương án c a Cx51 và
Ax51.
• LIBx51 trình qu n lý thư vi n k t h p nh ng o n chương trình hư ng i tư ng
vào trong nh ng thư vi n mà có th ư c s d ng b i b k t n i.
• OHx51 b bi n i sang file HEX . t o ra nh ng file HEX t nh ng o n
chương trình hư ng i tư ng tuy t i.
• RTX51 Tiny h th ng th i gian th c RTX51 , thi t k ơn gi n nh ng d án
ph n m m ph c t p, nh th i.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 23
II.1 CHU TRÌNH PHÁT TRI N PH N M M
Khi chúng ta s d ng ph n m m Keil µVision , chu trình phát tri n ph n m m
cũng gi ng như chu trình phát tri n bao ph n m m khác.
1. Kh i t o project , l a ch n chip t cơ s d li u thi t b , thi t t nh ng công c
nh hình.
2. T o ra nh ng t p tin ngu n C ho c assembly.
3. Xây d ng nh ng ng d ng v i Project Manager.
4. Ki m tra l i t p tin ngu n.
5. Ki m tra nh ng ng d ng ư c liên k t.
Sơ kh i sau ây minh h a chu trình phát tri n ph n m m µVision/ARM y
.M i ph n ư c mô t bên dư i.
II.2 µVision IDE
µVision IDE k t h p qu n lý d án , trình biên t p v i s s a ch a l i, cài t tùy
ch n, phương ti n, và giúp tr c tuy n. S d ng µVision t o ra nh ng t p tin ngu n
và t ch c chúng vào trong nh ng d án ng d ng. µVision IDE t d ng biên t p, l p
ráp, và liên k t nh ng ng d ng nhúng.
C51 Compiler & A51 Macro Assembler (Trình biên t p C51 và trình h p ng A51 )
Nh ng t p tin ngu n ư c t o ra b i µVision IDE và ư c ưa qua C51 ho c
A51.Trình biên t p và trình l p ráp x lý nh ng t p tin ngu n và t o ra nh ng t p tin i
tư ng nh v l i ư c.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 24
Trình biên dich Keil C51 là m t s thi hành mã ANSI y c a ngôn ng l p
trình mà h tr t t c các c tính chu n c a ngôn ng C. Ngoài ra , nhi u c tính h tr
tr c ti p ki n trúc 8051 ã ư c thêm.
Chương trình Keil A51 h tr t p l nh y c a 8051.
LIB51 Library Manager (trình qu n lý thư vi n LIB51)
LIB51 cho phép chúng ta t o ra thư vi n m c tiêu t nh ng t p tin i tư ng ư c
t o ra t trình biên t p và trình l p ráp. Nh ng thư vi n ư c nh d ng c bi t, s p t
cho chương trình nh ng t p h p c a nh ng o n chương trình hư ng i tư ng mà có
th ư c k t n i nh ng l n sau.Khi b k t n i x lý m t thư vi n , ch nh ng o n
chương trình hư ng i tư ng c n thi t t o ra chương trình m i ư c s d ng.
BL51 Linker/Locator ( B k t n i BL51/dò tìm)
B k t n i BL51/dò tìm t o ra file LF/DWARF tuy t i s d ng nh ng o n
chương trình hư ng i tư ng t nh ng thư vi n và ư c t o ra t trình biên tâp và trình
l p ráp.M t t p tin i tư ng tuy t i ho c mo un ch a ng nh ng mã và d li u
không xác nh, T t c các o n mã và d li u hi n có t i nh ng v trí b nh c nh.
ELF/DWARF có th ư c s d ng
• L p trình m t Flash Rom ho c nh ng thi t b bô nh khác
• V i trình g l i
• Chương trình ch y th
Vision Debugger (Trình g l i )
Trình g l i có tính ch t tư ng trưng, m c m c ngu n g l i lý tư ng phù h p và
tin c y.Trình g l i bao g m m t simulator high-speed chúng ta mô ph ng 8051.
Nh ng thu c tính c a chip mà chúng` ta s d ng thì t ng nh hình khi chúng ta l a
ch n t Device Database. Trình s a l i cung c p vài phương pháp cho chúng ta ki m
tra các thi t b ph n c ng
• Thi t t MON51 trên h th ng và t i chương trình c a b n s d ng giao di n
Monitor-51 t i trình g l i.
• S d ng giao di n GDI kèm theo trình g l i t i h th ng
B n dư i ây li t kê nh ng thư m c công c phát tri n ph n m m Keil .
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 25
Assembler Source Template and Include files for the Macro Assembler.( file ngu n
assembly và nh ng file cho trình d ch Macro Assembler)
Executable files of the µVision/C51 tool chain.( nh ng t p tin ch y c a µVision/C51)
Example programs ( nh ng chương trình ví d )
Configuration files for Flash Monitor and pre-configured versions.( C u hình cho
Flash Monitor và nh ng phiên b n nh hình
On-Line documentation for µVision/C51.(tài li u tr c tuy n cho µVision/C51)
Include files for the C compiler.(nh ng t p tin cho trình biên t p C)
Files for ISD51 In-System Debugger and pre-configured versions.(nh ng file h tr
ISD51 trình g l i
Run-time libraries and CPU startup files.(thư vi n và CPU kh i ng s p x p nhưng
file)
Configuration files for Monitor-51 (for Classic 8051 Devices).(c u hình cho Monitor-
51)
Configuration files for Monitor-390 (for Dallas Contiguous Mode) .(c u hình cho
monitor-390)
RTX51 Tiny Version 2 Real-Time Operation System.(h th ng b nh th i)
Thư m c µVision
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 26
II.3 GIAO DI N NGƯ I DÙNG
II.4 Create a Procject (T o m t Procject )
µVision là m t ng d ng Windows và chương trình ư c kích ho t khi click lên
bi u tư ng (icon)
Create a Project File (t o ra m t d án)
t o m t h sơ m i ta l a ch n t µVision menu Project – New Project…m t
h i tho i Windows hi n ra và h i b n t tên cho cho Project m i v a kh i t o.Chúng
g i ý r ng ta nên s d ng m t Folder riêng cho m i Project. ơn gi n hơn t o m t
Project m i ch n bi u tư ng t o ra m t Procject m i . µVision t o ra m t Procject
m i v i tên PROCJECT1.UV2 ch a ng m t tên nhóm và h sơ m c nh. Ta có th
th y tên này trong Project Workspace – Files .
Khi ta t o ra m t Procject m i uVision h i ta l a ch n CPU cho Procject .h p tho i
l a ch n thi t b xu t hi n cho ta th y cơ s d li u thi t b uVision , ch c n l a ch n b
i u khi n mà ta s d ng . Ví d như ta ch n B i u khi n Philips 80C51RD+ .Nh ng
tùy ch n công c này cho Philips 80C51RD+ ư c rút g n bên c u hình công c .
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 27
Chú ý:
• Ta có th l a ch n B k t n i m r ng (LX51) và trình Assembler m r ng
(AX51) trong h p tho i.Linker và Assembler m r ng s n sàng trong the Keil
Professional Developer's Kit và ưa cho chúng ta nh ng c tính b sung .
• Khi ta t o ra m t Procject m i , uVision có th t ng thêm mã kh i ng CPU
• Trên m t vài thi t b , môi trư ng uVision c n nh ng tham s b sung mà ta ph i
thi t l p. c nh ng thông tin này m t cách c n th n ư c cung c p dư i s mô t
c a h p tho i này, t ó có th có nh ng ch d n b sung cho c u hình thi t b .
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 28
Ta có th t o ra m t t p tin ngu n m i v i menu option File – New. i u này m
m t c a s biên t p, nơi mà ta có th biên so n mã ngu n. uVision nh ng cú pháp màu
khi ta lưu file v i h p tho i (File –Save As…) dư i tên *.C. Ví d chúng ta lưu dư i tên
Main.C
Khi ta ã t o t p tin ngu n , ta có th thêm file t i Procject . Nh ng xu t
uVision vài cách thêm t p tin ngu nvào m t Procject. Ví d như ta có th l a ch n
nhóm Procject Workspace-Files và click chu t ph i m menu. Tùy ch n Add files
ư c m ra. Ch n file MAIN.C mà ta ã t o ra.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 29
Thêm và nh hình mã kh i ng ( Add and Configure the Starup Code)
File STARUP.A51 là mã kh i ng cho a s CPU 8051. Mã kh i ng làm s ch b
nh d li u và t o nh ng con tr ngăn x p. Ngoài ra m t vài d n xu t 8051 yêu c u m t
mã kh i t o CPU phù h p v i v i c u hình ph n c ng. Ví d Philips 8051RD+ ngh ta
chèn on-chip xdata RAM mà c n ư c thêm vào trong mã kh i ng. Khi ta c n s a i
file toán h c cho phù h p v i ph n c ng, ta ph i copy file STARUP.A51 t
C:KEILC51LIB n ngăn Procject
T o nhóm Procject
Nhóm h sơ cho phép chúng ta t ch c nh ng Procject l n. Cho mã kh i ng
CPU và nh ng c u hình h th ng mà ta có th t o ra m t Procject – nh ng thành ph n,
môi trư ng , hư ng d n …trong h p tho i.Chèn m t group m i t o ra m t h th ng có
tên nhóm h sơ ngăn x p. trong Procject m i có th kéo th file STARTUP.A51 lên
nhóm file m i này.
Bây gi , Project Workspace – Files li t kê t t c trong Project . m m t
Project so n th o, nh n double lên file Project Workspace .Ta có th c n nh hình
STARTUP.A51 trong trình biên t p.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 30
Thi t t nh ng tùy ch n cho nh ng m c tiêu.
uVision cho chúng ta thi t t nh ng tùy ch n cho m c tiêu ph n c ng .H p tho i
nh ng tùy ch n cho nh ng m c tiêu ư c m qua bi u tư ng thanh công c ho c qua
menu tùy ch n Project. Trong b ng m c tiêu ch rõ nh ng tham s thích áng ph n c ng
và thành ph n chip mà b n ã l a ch n. Sau ây là ví d nh ng thi t t :
Sau ây là b n mô t nh ng tùy ch n c a h p tho i Target
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 31
Xtal – ch t n s clock mà CPU c a b n ho t ng. Trong a s trư ng h p giá tr này
ng nh t v i t n s XTAL.( Specifies the CPU clock of your device. In most cases
this value is identical with the XTAL frequency)
Memory Model – ch rõ b nh C51, b t u nh ng ng d ng m c nh là m t s l a
ch n t t.
Allocate On-Chip...
Use multiple DPTR registers – ch rõ cách dùng nh ng thành ph n c a chip cho phép
mã kh i ng CPU , n u ta ang s d ng b nh xdata RAM ta cũng ph i cho phép s
truy nh p XRAM trong STARTUP.A51 s p x p.
Off-chip...Memory – ch rõ t t c các vùng b nh ngoài
Ch rõ nh ng tham s cho mã và xdata. Tham chi u tơi Code Banking bi t thêm chi
ti t hơn Specifies the parameters for code and xdata banking. Refer to the "Code
Banking" section for more information
Vài tùy ch n trong h p tho i ch có n u ta ang s d ng LX51 Linker/Locater.
LX51 Linker/Locater ch có trong gói PK51
Xây d ng Project và kh i t o file HEX
Nh ng thi t t công c dư i nh ng tùy ch n-m c tiêu mà ta c n kh i ng
m t ng d ng m i. Ta có th d ch t t c các t p tin ngu n và k nh ng ng d ng v i m t
cái click trên bi u tư ng Build Target . Khi ta xây d ng v i nh ng l i cú pháp, uVision
s trình bày nh ng thông báo l i và c nh báo v i nh ng l i có th x y ra. Nh n double
trên hàng thông báo l i m file ngu n nh v trong trình biên t p uVision
M t l n thành công ta có th kh i ng trình g l i như mô t dư i Testing
Programs v i trình g l i uVision .
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 32
Bây gi ta có th s a l i mã ngu n ho c thêm nh ng t p tin ngu n m i vào d án.
Nút thanh công c Build Target d ch nh ng file ngu n ch ư c s a i, ho c file ngu n
m i và file th c thi. uVision lưu gi m t danh sách và nh ng file ư c s d ng trong file
ngu n. Th m chí nh ng tùy ch n công c ư c lưu tr trong danh sách ph thu c,
uVision xây d ng l i n u c n thi t, v i l nh Rebuild Target , t t c nh ng file ngu n
ư c d ch b t ch p nh ng c i bi n.
Sau khi ki m tra ng d ng c a b n, nó có th yêu c u t o ra file HEX v t i
xu ng ph n m m ng d ng vào trong thi t b s d ng m t ti n ích l p trình Flash.
uVision t o file HEX v i m i l n xây d ng dư i nh ng tùy ch n cho Target-Outout dư c
cho phép. Tùy ch n Merge32K Hexfile s n sàng cho nh ng ng d ng Code Applocations
khi ta ã l a ch n Extended Linker LX51. Ta có th kh i ng ti n ích l p trình Flash
sau khi trình d ch làm quá trình khi b n ch rõ nh ng chương trình Run Program#1.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 33
Chương trình m u
M c này mô t nh ng chương trình m u ch y trên Keil C51. Nh ng chương trình
m u này s n sàng cho b n ch y th . Nh ng chương trình này giúp ta h c cách s d ng
các công c c a Keil C51. ng th i, ta cũng có th sao chép các an mã c a chúng vào
chương trình c a chúng ta.
Các chương trình m u c a Keil C51 ư c lưu trong thu m c
C:KEILC51EXAMPLES . M i chương trình ư c lưu trong m t thư m c riêng cùng
v i m t t p tin d ki n giúp b n có th nhanh chóng xây d ng và ánh giá chương trình.
Ngoài ra, các chương trình nh riêng bi t cho RTX – 51 cũng ư c cung c p trong
m c RTX – 51.
B ng sau là danh sách các chương trình m u trong C51 và tên thư m c c a chúng.
Ki u m u Mô t
ADI 83x Các chương trình dùng cho các thi t b tương t ADuC83x và
ADuC84x mà nó ch ra các thi t b m r ng và cách dùng ADI
MONITOR DRIVER
ASM M t chưogn trình h p ng ơn gi n mà ta c th vi t m t o n
text cho các port tu n t
Benchmarks... Vài chương trình riêng bi t: Dhrystone, Whetstone, Sieve.
BLINKY Lo i 8051 Blinky làm sáng LED trên board Keil MCBx51
CodeBanking... Ki u mã Banking ch ra vi c l p trình trên b nh 64K
CSAMPLE B c ng và tr ơn gi n mà cho th y làm sao xây d ng m t
chương trình v i nhi u module trên µVision
Dallas 390 Vài ví d s d ng Dallas Contigious Addressing Mode mà nó có
s n m t vài thi t b khác nhau như DS80C390, DS80C400,
DS80C41x, DS5240, and DS5250.
FarMemory Làm sao m r ng ô nh tr6n 64K
Hello Chương trình hi n ch Hello world. Ch y th nó trư c khi s
d ng µVision.
Infineon C517 Cho th y cách dùng Infineon m r n các thi t b : MDU và b
giao i n n i ti p.
Infineon XC866 Nh ng chương trình m u cho bo m ch Keil MCBXC866 h tr
ư c thi t b Infineon XC800
M8051EW Các chương trình m u cho Mentor M8051EW
MEASURE Là h th ng thu th p và t p h p nh ng d li u s và tương t . Là
chương trình i u khi n h th ng o lư ng nhi t t xa.
Philips 80C51MX Là chương trình m u cho h Philips 80C51MX h tr t i 16MB
vùng a ch
Philips LPC9xx Chương trình cho bo m ch Keil MCB900 Evaluation mà h tr
các thi t b Philips LPC900 - LPC94x
Philips LPC95x Chương trình cho bo m ch Keil MCB9xx Evaluation mà h tr
các thi t b Philips LPC950 - LPC99x
ST uPSD Chương trình m u cho dòng ST uPSD cho th y c u hình h
th ng Keil ULINK USB-JTAG Adapter
TI MSC121x Chương trình cho các thi t b TI MSC121x ch ra cách dùng h
th ng gi i mã ISD51 In-System Debugger
TI MSC1200 Chương trình cho các thi t b TI MSC1200 ch ra cách dùng h
th ng gi i mã ISD51 In-System Debugger
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 34
b t u s d ng m t trong các chương trình m u, ta m menu Project – Open
Project trong µVision r i m tâp tin chương trình.
Các m c trong chương này mô t làm sao s d ng các công c xây d ng các
chương trình sau:
HELLO : chương trình C vi t cho 8051
MEASURE: h th ng o lư ng t xa.
HELLO
Chương trình HELLO ư c lưu trong thư m c
C:KEILC51EXAMPLESHELLO . chương trình này không làm gì hơn là
xu t o n text “ HELLO WORLD “ ra port. Toàn b chương trình ư c lưu trong t p tin
ngu n là HELLO.C
ng d ng nh này giúp b n có th biên t p, liên k t và g l i m t ng d ng. B n
có th th c hi n thao tác này t dòng l nh trên DOS, s d ng t p tin d ng batch ho c
dùng µVison trên windown v i các t p tin chương trình.
Ph n c ng cho ch HELLO d a vào CPU 8051 chu n. M t con chip ngo i vi
ư c s d ng cho các dãy port. Tuy nhiên, v i µVision b n không c n ph i có 1 CPU vì
chương trình ã óng vai trò ph n c ng yêu c u cho chương trình này.
T p tin chương trình HELLO
Trong µVision, nh ng ng d ng ư c lưu trong t p tin chương trình. M t chương
trình ư c vi t cho ch HELLO. m chương trình này ta ch n Open Project t menu
Project và m t p tin HELLO.UV2 t thư m c …C51EXEMPLESHELLO.
So n th o chương trình HELLO.C
Bây gi b n có th so n th o chương trình HELLO.C b ng cách nh p úp chu t
vào c a s project file. µVision s t i và hi n th n i dung file HELLO.C trên c a s làm
vi c.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 35
Biên d ch và k t n i HELLO
Khi b n ã s n sàng biên d ch và liên k t chương trình c a mình, s d ng l nh Build
Target t menu Project ho t thanh công c Build. µVision b t u biên d ch và liên k t
t o ra m t o n chương trình mà b n có th t i vào µVision cho vi c th l i. Quá trình
xây d ng ư c li t kê trong c a s ngõ ra.
Chú ý
B n c n ph i không g p l i khi ch y các chương trình m u
ch y th HELLO
Khi chương trình HELLO ã ư c biên d ch và k t n i ta có th ki m tra nó v i
trình tìm l i c a µVision. Trong µVision, s d ng l nh Start/Stop Debug Session t
menu Debug ho c thanh công c . µVision kh i t o trình báo l i và kh i ng các
chương trình con n các chương trình chính. Sau ây là màn hình hi n th :
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 36
M c a s Serial Window #1 cho ta th y các hi n th ngõ ra v i l nh m
c a s Serial Window #1 t menu VIEW ho c thanh công c Debug.
Ch y chương trình HELLO v i l nh GO t thanh công c Debug. Chương
trình l i chào ư c th c hi n và hi n th o n văn b n “HELLO WORLD” trong c a s
serial window. Sau khi ngõ ra hi n th “HELLO WORLD” nó s ch y v i vòng l p vô
t n.
D ng vi c ch y chương trình HELLO v i l nh Halt t menu Debug ho c
thanh công c . B n cũng có th ánh l nh ESC trong trang l nh c a c a s OUTPUT.
Trong su t quá trình ki m tra l i c a µVision s ư c hi n th như sau:
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 37
Ch y t ng bư c và ng t ngang
S d ng l nh Insert/Remove Breakpoints t thanh công c ho c t trình ơn
trên menu l p trình. Ta dùng chu t ph i t i m d ng trên i m b t u c a hi n
chính.
S d ng l nh Reset CPU t menu DEBUG ho c thanh công c . N u b n
d ng chương trình ang ch y b i l nh RUN. µVision s d ng chương trình t i i m
d ng mà b n ã t.
B n có th ch y t ng bư c chương trình HELLO b ng cách n nút STEP trên
thanh công c DEBUG. Nh ng câu l nh s ư c ch ra v i mũt tên màu vàng. Mũi tên s
di chuy n theo t ng bư c th c hi n.
t con tr chu t trên các bi n xem giá tr c a chúng.
B n có th ch y ho c d ng chương trình b t kỳ kúc nào v i l nh
START/STOP DEBUG.
MEASURE: h th ng i u khi n thi t b t xa
Chương trình i u khi n (MEASURE) ư c lưu trong thư m c
..C51ExamplesMeasure. Chương trình này s d ng các d li u s và tương t thư ng
ư c dùng trong các ài khí tư ng và i u khi n trong công nghi p.
Chương trình này ch y trên P89LPC935 CPU và ghi d li u t hai port k thu t s
và b n ngõ vào chuy n i A/D. M t b nh th i (Timer) i u khi n quá trình l y d
li u. M u d li u có th nh hình t 1 mili giây n 60 phút. M i d li u o ư c trong
su t th i gian ho c t các kênh ngõ vào ư c lưu vào RAM.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 38
T p tin l nh c a chương trình o lư ng
T p tin này có tên là MEASURE.UV2. m t p tin ta dùng l nh Open Project
t menu Project và ch c file MEASURE.UV2 trong thư m c
C:KeilC51ExamplesMeasure.
Trang t p tin trong c a s Project cho ta th y nh ng t p tin ngu n dùng biên
so n chương trình tr c lư ng. Chương trình o lư ng m u g m có 3 tâp tin ngu n ó là:
Getline.c, Mcommand.c, và Measure.c mà ta có th tìm th y trong nhóm file ngu n.
Ngoài ra b n còn có th tìm th y mã kh i ng CPU và t p tin d li u.
m m t file ta nh p úp vào tên t p tin trong Project Workpage
Các chương trình có ch c năng nh m vào các m c ích khác nhau cho nh ng môi
trư ng th nghi m khác nhau. dò l i ch y chương trình mô ph ng ta ch n m c mô
ph ng SIMULATOR trong thanh công c BUILD. Khi s d ng phiên b n ư c lư ng
Evaluation Version b n c n ph i ch n Demo - Simulator.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 39
Mô t các ch c năng c a t p tin ngu n
Measure.c Ch c các hàm chính c a C cho h th ng o lư ng và
i u ki n ng t cho timer0. các hàm chính kh i t o t t
c các thi t b ngo i vi c a P89LPC935 và x lý các
l nh h th ng. i u ki n ng t timer,timer0, qu n lý
ng h th i gian th c và l y d li u t phép o c a
h th ng.
Mcommand.c Nh ng quá trình hi n th , th i gian và kho ng cách
gi a các l nh. Nh ng hàm này ư c g i t chương
trình chính. Các l nh hi n th giá tr tương t t i m
giao ng s cho tín hi u i n t 0.00V n 3.30V
Getline.c G m các dòng l nh ư c so n th o cho nh ng d
ki n nh n t các port
Yêu c u ph n c ng
Các ng d ng o lư ng ch có th ch y trên bo m ch Keil MCB900 ho c các ph n
c ng cơ b n khác dùng P89LBC935. B vi i u khi n PL89LBC935 cung c p kh năng
nh p vào c tín hi u s và tương t . Port 1 và Port2 ư c dùng nh p tín hi u s và t
AD00 n AD03 nh p tín hi u tương t .
Tuy nhiên, chúng ta s không c n m t bo m ch nào h t vì µVision ã tích h p
ch c năng này.
biên d ch và liên k t chương trình MEASURE
Khi ã s n sàng biên d ch và li n k t chương trình, s d ng l nh Buil Target t
menu Project ho c thanh công c . µVision s th c hi n toàn b quá trình và s thông báo
cho b n khi hoàn t t.
ch y th chương trình MEASURE
Chương trình m u i u khi n o lư ng ư c l p trình ch p nh n các l nh trên
chip c a các port tu n t . N u b n có ph n c ng th c t , b n có th d d ng ph n mô
ph ng cu i cùng k t n i v i CPU P89LPC935. n u b n không có ph n c ng thì có
th s d ng ph n c ng mô ph ng trên µVision. B n có th s d ng c a s Serial
Windown cung c p tín hi u ư c nh p vào.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 40
M i l n chương trình Measure ư c xây d ng b n có th ch y th . S d ng l nh
START/STOP trong menu DEBUG ch y chương trình ki m tra l i.
Nh ng l nh c a h th ng i u khi n o lư ng t xa
Chu i các l nh dùng cho chương trình ư c li t kê trong b ng. Nh ng l nh này
bao g m b ng mã ASCII và t t c các l nh i u ph i ư c hoàn t t b ng m t s quay
vòng.
L nh C u trúc Ch c năng
clear C Xóa t t c các d li u o ư c trư c ó
Dislay D Hi n th th i gian làm vi c và giá tr ngõ
vào
time T hh:mm:ss t th i gian theo chu n 24h
Interval I mm:ss.ttt t nh ng kho ng th i gian cho m i phép
o kho ng th i gian này t 0:00.001(1ms)
và 60:00.000 (60 phút)
start S Kh i ng quá trình ghi d li u o ư c.
Khi nh n l nh start, chương trình o l y
m u t t c các tín hi u ngõ vào t i các
kho ng th i gian ã nh.
Read R[count] Hi n th các giá tr o ư c, b n có th ch
rõ s c a tâ1t c các m u mà mình mu n
c. N u không ch ra th t nào, l nh c
s hi n th t t c các giá tr o. B n ch có
th c các giá tr này trong 1 giây. N u
mu n hơn thì ph i d ng chương trình.
quit Q Thoát kh i quá trình ghi giá tr o
Khi b n ch y m t l n chương trình mô ph ng trên µVision, b n có th vào các
l nh này trong c a s Serial Windown#1 bên dư i:
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 41
Hi n th các o n mã c a chương trình
µVision cho phép b n hi n th các o n mã c a chương trình trong c a s
Disassembly Window b ng cách m menu View ho c dùng các nút trên thanh công c .
C a s Disassembly Window cho th y s tr n l n các ngu n và các o n assembly. B n
có th thay i cách hi n th b ng cách nh p chu t ph i vào menu ng c nh.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 42
hi n th n i dung các ô nh
µVision có th hi n th các ô nh các nh d ng khác nhau. C a s ô nh
Memory Window ư c m t menu View ho c t thanh công c . B n có th nh p a
ch c a 4 vùng nh trang này. Menu ng c nh cho phép b n s a i n i dung ô nh
ho c l a ch n nh ng ki u ngõ ra khác nhau.
các bi n thay i ng h th i gian
B n có th liên t c nhìn n i dung c a các bi n, c u trúc và các m ng. Ta có th
m c a s Watch Window t menu View ho c thanh công c . M t trang ng c nh hi n
ra cho th y taa61t c các ký t ng c nh c a hàm hi n th i. Các trang Watch#1 và
Watch#2 cho phép ta vào b t kỳ bi n nào c a chương trình như trang sau:
Vào các bi n th i gian trong c a s Watch Window
L a ch n văn b n < n F2 ch nh s a > cùng v i 1 cái click chu t và i trong
m t giây. M t cái click chuôt khác cùng quá trình ch nh s a giúp ta thêm vàog ía tr c a
các bi n. V i cùng cách như trên ta có th thay i nhi u giá tr . Cách khác là b n có th
dùng phím F2.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 43
xóa i m t bi n, nh n ch n và n phím delete.
Nh ng c u trúc và m ng s hi n ra khi n ký hi u [+]. Các dòng b th t vào
ph n chi u s l ng nhau.
Chú ý
C a s Watch Window c p nh p b t c khi nào chương trình th c hi n d ng. Khi
b n m ch View - Periodic Window Update các giá tr c p nh t s l y liên t c trong
su t quá trình ch y chương trình mô ph ng.
Vào bi n th i gian t c a s so n th o
Ch c m t bi n trong vùng so n th o và dùng câu l nh Add to Watch Window t
menu ng c nh b ng cách click ph i chu t.
Vào các bi n th i gian t trang l nh ngõ ra (output window)
S d ng lênh WatchSet thêm giá tr bi n vào c a s Watch Window
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 44
Th c hi n chương trình
trư c khi b t u mô phòng chương trình MEASURE, m c a s Serial
Window#1 hi n th chu i giá tr ngõ ra b ng cách vào menu View ho c thanh Debug.
B n có th thu nh các c a s khác n u màn hình không l n. B n có th ch y t ng
bư c b ng l nh Step các câu l nh Essembler ho c các o n mã g c. N u c a s
Assembly Window ang m , b n nên ch c ch y tùng bư c các l nh essembly cơ b n.
N u c a s so n th o v i các mã g c ư c m , b n ch y t ng bư c v i t ng mã ngu n.
nút l nh ‘ch y t ng bư c n” (stepinto) cho phép b n th c hi n m t bư c
nh y n các chương trình ư c g i
th c hi n vi c g i m t hàm và s không t ng ng t cho n khi g p i m
ng t.
trên nguyên t c ta có th ng u nhiên nh y vào m t hàm chưa hoàn t t. B n có
th dùng l nh StepOut hoàn t t hàm ó và tr l i giá tr cho nó ngay l p t c khi có
l nh g i.
mũi tên vàng ánh d u câu l nh hi n th i và ho c các l nh c p cao. B n có th
ng u nhiên bư c vào m t hàm chưa hoàn t t.
l nh ch y ngay hàng c a con tr (Run till Cursor Line)
l nh t và b i m ng t Insert/Remove BreakPoint
H p tho i BreakPoint
µvision cũng h tr các i m ng t ph c t p. Ch ng h n b n mu n ng t m t
chương trình khi m t bi n t giá tr nh t nh. Cài t bên dư i khi nào giá tr 3 ư c
vi t cho current.time.sec
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 45
nh nghĩa i m d ng này ta m h p tho i BreakPoint t menu Debug. ánh
d u ch n vào ô Write ( d u ch n này ch ra là l nh ng t ch ư c ki m tra khi ư c vi t
t i ). Ti p t c click vào nút Define ch n i m dùng. ki m tra vi c th c hi n i m
d ng làm các bư c sau:
Reset CPU
N u s th c hi n chương trình d ng thì b t u ch y chương trình o
Sau m t ít th i gian, µVision d ng s th c hi n. Chương trình m hàng ánh
d u v trí hàng mà trong ó i m ng t ư c t.
S ghi v t tin
Quá trình này th c hi n trong su t th i gian ki m l i cho n i m d ng nơi b n
yêu c u thông tin cho giá tr thanh ghi và nh ng nguyên nhân khác d n t i d ng t. N u
Debug - Enable/Disable Trace Recording ư c t b n có th nhìn th y các l nh liên
quan t i CPU th c hi n trư c i m d ng.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 46
B ng giá tr các thanh ghi
G i ngăn x p
Các ngăn x p trong c a µVision s ư c l p y khi chương trình hoàn t t. Trang
CallStack c a c a s Watch Window cho th y s l ng nhau gi a các hàm hi n th i.
Nh p úp lên m t hàng hi n th mã g c th c hi n ch c năng c a nó.
On-Chip ngo i vi
µVision cung c p m t s cách hi n th và s a d i các chip ngo i vi s d ng
trong chương trình c a b n. B n có th th y k t qu c a ví d khi th c hi n các bư c sau:
Reset CPU và xóa t t c các i m ng t
N u chương trình b d ng khi b t u o lư ng.
M c a s Serial Window #1 và vào l nh ‘d’ cho ng d ng MEASURE.
Chương trình o lư ng cho th y giá tr t ngõ vào port1 và port2 và b chuy n i A/D
1-3. C a s Serial Window #1 ư c bi u di n hình sau:
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 47
Nh ng h p tho i thi t b ngo i vi
µVision cung c p các h p tho i cho: I/O port, thi t b ng t, b nh th i, chuy n
i A/D, và m t s chip ngo i vi c bi t. Các h p tho i này có th m t menu
Peripheral. M i h p tho i cho th y các ký hi u SFR liên quan và tình tr ng các thi t b
ngo i vi.
Cho ng d ng o c b n có th m Peripherals - I/O Ports - Port2 và
Peripherals - A/D Converter - ADC0/DAC0. nh ng h p tho i này cho th y tình tr ng
c a các thi t b ngo i vi và b n có th thay i giá tr ngõ vào.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 48
B n có th s d ng Virtual Simulator Registers (VTREGs) thay i giá tr ngõ
vào. Trong c a s Output Window – Command Page b n có th t các n nh cho các
ký hi u VTREG gi ng như ng ng bi n và các thanh ghi.
Ví D :
PORT2=0xDA ; set digital input PORT2 to 0xDA.
AD01=2.3 ; set analog input AD01 to 2.3 volts.
Các user và tín hi u ch c năng ( Signal Function )
B n có th k t h p các ký hi u VTREG v i ch c năng tìm l i c a µVision t o
ra m t phương th c ph c t p c a vi c cung c p d li u ngoài ư c nh p vào t i các
chương trình c a b n.
Chương trình m u Measure s d ng b gi i mã kh i t o file MEASURE.INI
nh nghĩa các tín hi u hàm cho:
Xu t hi n xung răng cưa trên ngõ vào A/D AD01.
Xu t hi n sóng sine trên ngõ vào A/D AD02.
Xu t hi n tín hi u nhi u trên ngõ vào A/D AD03.
T p tin MEASURE.INI ư c lưu dư i d ng Options for Target – Debug –
Initialization File và có n i dung như sau:
/*-------------------------------------------*/
/* Function MyRegs() shows Registers R0...R3 */
/*-------------------------------------------*/
FUNC void MyRegs (void) {
printf ("---------- MyRegs() ----------n");
printf (" R0 R1 R2 R3n");
printf (" %02X %02X %02X %02Xn");
printf ("------------------------------n");
}
//
// Generate Saw Tooth Signal on A/D input AD01
//
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 49
signal void AD01_Saw (void) {
float volts; // peak-to-peak volatage
float frequency; // output frequency in Hz
float offset; // volatge offset
float duration; // duration in Seconds
float delay;
float val;
long i, end, steps;
volts = 2.0;
offset = 0.2;
frequency = 140;
duration = 8.0;
printf ("Saw Tooth Signal on A/D input AD01n");
steps = 100;
delay = (0.01/frequency);
printf ("Saw Steps = %dn", steps);
end = (duration * 10000);
for (i = 0 ; i < end; i++) {
val = (i % steps) / ((float) steps);
AD01 = (val * volts) + offset;
swatch (delay);
}
}
//
// Generate Sine Wave Signal on A/D input AD02
//
signal void AD02_Sine (void) {
float volts; // peak-to-peak volatage
float frequency; // output frequency in Hz
float offset; // volatge offset
float duration; // duration in Seconds
float val;
long i, end;
volts = 1.4;
offset = 1.6;
frequency = 180;
duration = 5.0;
printf ("Sine Wave Signal on A/D input AD02n");
end = (duration * 10000);
for (i = 0 ; i < end; i++) {
val = __sin (frequency * (((float) STATES) / CLOCK) * 2 * 3.1415926);
AD02 = (val * volts) + offset;
swatch (0.0001); // in 100 uSec steps
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 50
}
}
//
// Generate Noise Signal on A/D input AD03
//
signal void AD03_Noise (void) {
float volts; // peak-to-peak volatage
float frequency; // output frequency in Hz
float offset; // volatge offset
float duration; // duration in Seconds
float val;
long i, end;
volts = 1.4;
offset = 1.6;
duration = 0.5;
printf ("Noise Signal on A/D input AD03n");
end = (duration * 100000);
for (i = 0 ; i < end; i++) {
val = ((float) rand (0)) / 32767.0;
AD03 = (val * volts) + offset;
swatch (0.00001); // in 10 uSec steps
}
}
//
// Run Signal Functions at Startup
//
signal void Startup (void) {
swatch (1.0); // wait 1.0 seconds
AD01_Saw ();
swatch (0.3); // wait 0.3 seconds
AD02_Sine ();
swatch (0.6); // wait 0.6 seconds
AD03_Noise ();
}
Startup (); // Start the Signals
define button "AD01 Saw Tooth", "AD01_Saw ()"
define button "AD02 Sine Wave", "AD02_Sine ()"
define button "AD03 Noise Signal", "AD03_Noise ()"
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 51
B n có th kèm theo ch c năng dò l i cho nh ng hàm trong c a s Output
Window – Command Page.
>MyRegs ()
---------- MyRegs() ----------
R0 R1 R2 R3
00 00 00 00
Cho nhi u tín hi u ch c năng ta có th dùng h p công c ToolBox cho các yêu
c u kh n c p.
Th c hi n phân tích (Performance Analyzer)
µVision cho phép b n th c hi n vi n phân tích tính toán th i gian c a nh ng ng
d ng tích h p Performance Analyzer. chu n b cho s phân tích tính toán th i gian,
ta d ng vi c th c thi chương trình và m menu Debug - Performance Analyzer m
h p tho i Setup Performance Analyzer.
B n có th ch n các ký hi u hàm hay ánh tên hàm ho c m t dãy a ch khi dùng
h p tho i Setup Performance Analyzer .
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 52
Th c hi n các bư c th y vi c th c hi n phân tích:
m h p tho i Performance Analyzer
reset CPU và xóa các i m ng t
n u chương trình b d ng khi b t u vi c o c
m c a s Serial Window#1 và gõ l nh S , gõ D.
Performance Analyzer cho ta th y bi u d ng c t trong m i ph m vi.bi u
hình c t cho th y ph n trăm th i gian th c hi n o n mã trong m i ph m vi. Click vào
m t c t th y thông tin th ng kê chi ti t.
Phân tích tín hi u logic
V i Logic Analyzer, µVision Debugger/Simulator cung c p m t màn hình th
cho giá tr thay i c a bi n ho c VTREGs.
Th c hi n các bư c sau th y vi c phân tích giá tr Logic ho t ng:
M h p tho i Logic Analyzer
S d ng h p tho i bi u di n các tín hi u b n mu n. M t ví d là AD01,
AD02, AD03 và m t c u trúc như là current.time.sec. B n có th ch n
gi a nhi u ki u m u.
Ch y chương trình và hi n th m c logic ngõ ra
Logic Analyzer cung c p m t màn hình tính toán th i gian chi ti t c a các tían
hi u ã ch n.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 53
S d ng các chip ngo i vi
ây là các thông s k thu t mà b n ph i bi t t o nh ng chương trình dùng các
chip ngo i vi và nh ng t tính c a h 8051. nh ng thông s ư c c p trong chương
này. B n có th s d ng các o n mã ư c gi i thi u có th nhanh chóng làm vi c v i
8051.
ây không có các ch ơn t thi t b ngo i vi trong 8051. thay vào ó chip
8051 cung c p m t s s d ng a d ng các chip ngo i vi phân bi t gi a chúng v i
nhau. các o n mã m u trong chương này cho ta bi t cách s d ng các h chip ngo i vi
c bi t. Chú ý r ng có nhi u tùy ch n c u hình hơn ư c gi i thi u trong ph n này.
• Start up code
• Special function Register
• Register bank
• Interrupt service Rountine
• Interrupt Enable Registors
• Parallel Port I/O
• Timer/counter
• Serial Interface
• Watchdog Timer
• D/A Coverter
• A/D Coverter
• Power Redution Modes
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 54
Mã kh i ng ( startup code )
Mã kh i ng ư c th c hi n ngay l p t c khi ta reset toàn b h th ng và nó th c
hi n các thao tác sau:
Ph thu c vào s khác nhau c a thi t b , nh ng c tính c bi t c a thi t
b .
Xóa toàn b các d li u (tùy ch n)
Thi t l p tr ng thái ban u giá tr các ngăn x p và con tr ngăn x p(tùy
ch n)
Thi t l p tr ng thái ban u c a con tr ngăn x p ph n c ng 8051
Chuy n i i u khi n t i các bi n ư c thi t l p ho c các hàm chính c a
C.
Trình biên d ch Keil 51 các thi t b c bi t có các mã kh i ng khác nhau chút
ít. M t mã kh i ng chung ư c cung c p trong t p tin ..C51LIBSTARTUP.A51.
Ch c năng các thanh ghi c bi t (Special Function Registers)
Các chip thi t b ngo i vi c a 8051 ư c truy nh p s d ng các thanh ghi có ch c
năng c bi t ho c SFRs. SRFs ư c nh v trí bên trong chip m t cách tr c ti p có a
ch t 80H n 0FFH. Nhà phát tri n Keil ã cung c p các công c g m các t p tin ho c
các file tiêu có th nh nghĩa các thanh ghi nà cho b n. B n có th s d ng các file
tiêu ư c cung c p s n ho c t t o cho mình m t file nh a ch các chip ngo i vi.
Ki b n t o m t chương trình v i µVision b n có th chèn vi c nh nghĩa các thanh ghi
c bi t c a thi t b b ng cách dùng menu trong c a s làm vi c.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 55
Nhi u chương trình m u trong chương này u s d ng o n mã b t u như sau:
#include <reg51.h>
Các t p tin nh nghĩa thanh ghi ư c lưu trong thư m c C:KEILC51INC.
o n mã sau ây ư c trích t m t t p tin nh nghĩa thanh ghi cho các port song song
I/O .
sfr P0 = 0x80; // 8-bit I/O Port P0
sfr P1 = 0x90; // 8-bit I/O Port P1
sfr P2 = 0xA0; // 8-bit I/O Port P2
sfr P3 = 0xB0; // 8-bit I/O Port P3
B n có th nh các giá tr SFRs m t cách tr c ti p b ng các mã ngu n C các tiêu
flie.
sfr IE = 0xA8; // Interrupt Enable register at SFR address 0xA8
sbit EA = IE^7; // global Interrupt Enable Flag (bit 7 of SFR IE)
Chú ý:
Khi b n l y ho c ghi giá tr các thanh ghi c bi t b n c n ph i khai báo
SFR trong t p tin ngu n.
Bit ký hi u SFR ch có th nh nghĩa cho bit a ch c a thanh ghi SFR,
mà nó ư c nh v theo a ch 0x80, 0x88, 0x90 … 0xF8.
Register Banks ( các thanh ghi lưu tr )
Vi i u khi n 8051 ư c xây d ng d a vào các vùng nh căn b n v i tám
thanh ghi thông d ng (R0 –R70). M i thanh ghi là m t thanh ghi byte ơn.
Tám thanh ghi a d ng này có th qu n lý vi c lưu tr và các thanh ghi lưu
tr .
8051 cung c p 4 thanh ghi lưu tr mà b n có th s d ng. Quá trình làm
vi c cơ b n c a các thanh ghi d dàng ư c nh n th y khi b n th c hi n
ng t.
Dùng cho chương trình C trên 8051 thì ta không c n ch n ho c m thanh
ghi vì chương trình ã m c inh ch n thanh ghi lưu tr 0.
Các thanh ghi lưu tr 1, 2, 3 trong quá các quá trình ng t vì tránh vi c
lưu tr và khôi ph c các ngăn x p.
Các i u ki n ng t ( Interrupt Service Routines )
Trình biên d ch C51 cho phép vi t nh ng i u ki n ng t trong C. trình biên d ch
ư c s d ng m t cách hi u qu b ng mã kh i u và mã k t thúc và i u ti t m các
thanh ghi lưu tr . Các i u ki n ng t ư c khai báo như sau:
void function_name (void) interrupt interrupt_number [using register_bank]
Ch s ng t (interrupt number) giúp xác nh a ch véc tơ ng t c a hàm ng t. S
d ng b ng sau xác nh ch s ng t:
Interrupt Number Address Interrupt Number Address
0 (EXTERNAL INT 0) 0003h 16 0083h
1 (TIMER/COUNTER 0) 000Bh 17 008Bh
2 (EXTERNAL INT 1) 0013h 18 0093h
3 (TIMER/COUNTER 1) 001Bh 19 009Bh
4 (SERIAL PORT) 0023h 20 00A3h
5 (TIMER/COUNTER 2) 002Bh 21 00ABh
6 (PCA) 0033h 22 00B3h
7 003Bh 23 00BBh
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 56
8 0043h 24 00C3h
9 004Bh 25 00CBh
10 0053h 26 00D3h
11 005Bh 27 00DBh
12 0063h 28 00E3h
13 006Bh 29 00EBh
14 0073h 30 00F3h
15 007Bh 31 00FBh
Vi c s d ng các thu c tính cho ta có th ch rõ m t thanh ghi lưu tr trong
su tt th i gian th c hi n hàm ng t. Nh ng i u ng t kho ng ng n có th hi u qu hơn
không s d ng thu c tính, khi chúng s d ng thanh ghi lưu tr 0. b n có th ki m ch ng
b ng hai o n mã essembler xem hi u qu c a chúng.
Chú ý:
Các hàm kèm theo i u ki n ng t c n ph i ư c biên t p v i ch th NOAREGS.
Vi c này b o m r ng vi c biên d ch không phát sinh vi c thay i các thanh ghi tuy t
i.
Ví d sau cho ta th y m t hàm ng t tiêu bi u:
#include <reg51.h> // Special Function Registers of 80C51 CPU
#pragma NOAREGS // do not use absolute register symbols (ARx)
// for functions called from interrupt routines.
static void HandleTransmitInterrupt (void) {
:
:
}
static void HandleReceiveInterrupt (void) {
:
:
}
#pragma AREGS // for other code it is save to use ARx symbols
static void com_isr (void) interrupt 4 using 1 {
if (TI) HandleTransmitInterrupt ();
if (RI) HandleReceiveInterrupt ();
}
Trong ví d trên i u ki n ng t chi ch s ng t 4 ư c thi t l p. Tên c a hàm ng t
là com_isr. Khi l nh ng t ư c th c hi n s kéo theo, các mã m c ư c lưu vào thanh ghi
CPU và ch n thanh ghi lưu tr 1. Khi th t c ng t k t thúc thì giá tr các thanh ghi ư c
khôi ph c.
Sau ây là o n mã sinh ra b i l nh ng t k trên. Chú ý r ng n i dung thanh ghi
lưu tr s ư c hoán i và ư c khôi ph c l i sau khi thoát.
; FUNCTION com_isr (BEGIN)
0000 C0E0 PUSH ACC ; Save the Accumulator and Data
Pointer
0002 C083 PUSH DPH
0004 C082 PUSH DPL
0006 C0D0 PUSH PSW ; Save PSW (and the current Register Bank)
0008 75D008 MOV PSW,#08H ; This selects Register Bank 1
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 57
:
:
0052 D0D0 POP PSW ; Restore PSW (and prior reg bank)
0054 D082 POP DPL
0056 D083 POP DPH
0058 D0E0 POP ACC ; Restore the Accumulatorand DPTR
005A 32 RETI
; FUNCTION com_isr (END)
Các thanh ghi cho phép ng t (Interrupt Enable Registers)
8051 cung c p i u ki n ng t cho nhi u chip ngo i vi. Quá trình ng t hoàn toàn
ph thu c vào bit EA c a Interrupt Enable (IE) SFR. Khi bit EA lên m c 1 thì quá trình
ng t ư c th c hi n. Khi bit EA xu ng m c 0 thì quá trình ng t b vô hi u.
M i quá trình ng t thì ư c ki m soát b i than ghi IE SFR. Tên m t s chip 8051
có th có hơn 1 thanh ghi IE. Ki m tra tài li u v chip ó t n d ng các quá trình ng t.
Các port song song vào/ra (Parallel Port I/O)
M t chip 8051 bình thư ng có 4 port vào ra song song mà b n có th k t n i v i
các thi t b ngo i vi. Chúng là Port 0, Port 1, Port 2, Port 3. M t s IC 8051 m rông có
t i 8 Port xu t nh p.
Port Direction Width Alternate use
P0 I/O 8 bits Mux'd. 8-bit bus: A0-A7 & D0-D7
P1 I/O 8 bits P1.0-P1.7: Available for user I/O
P2 I/O 8 bits Mux'd. 8-bit bus: A8-A15
P3 I/O 8 bits P3.0: RXD (Serial Port Receive)
P3.1: TXD (Serial Port Transmit)
P3.2: /INT0 (Interrupt 0 input)
P3.3: /INT1 (Interrupt 1 input)
P3.4: T0 (Timer/Counter 0 Input)
P3.5: T1 (Timer/Counter 1 Input)
P3.6: /WR (Write Data Control)
P3.7: /RD (Read Data Control)
Các Port trên IC 8051 bình thư ng thì không có các d li u trên thanh ghi i u
khi n. Thay vào ó, các chân c a Port 1, Port 2, Port 3 m i chân có th tăng lên mà
chúng có th là u nh p hay u xu t. ghi giá tr vào m t Port b n ch ơn gi n ghi
giá tr tùng chân c a Port ó. l y giá tr t Port trư c h t giá tr c a chân ph i ư c
ghi là 1 ( ây cũng là giá tr ban u sau khi RESET ).
Ví d sau là chương trình ghi và xu t giá tr các Port I/O:
sfr P1 = 0x90; // SFR definition for Port 1
sfr P3 = 0xB0; // SFR definition for Port 3
sbit DIPswitch = P1^4; // DIP switch input on Port 1 bit 4
sbit greenLED = P1^5; // green LED output on Port 1 bit 5
void main (void) {
unsigned char inval;
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 58
inval = 0; // initial value for inval
while (1) {
if (DIPswitch == 1) { // check if input P1.4 is high
inval = P1 & 0x0F; // read bit 0 .. 3 from P1
greenLED = 0; // set output P1.5 to low
}
else { // if input P1.4 is low
greenLED = 1; // set output P1.5 to high
}
P3 = (P3 & 0xF0) | inval; // output inval to P3.0 .. P3.3
}
}
Timer/Counter ( b nh th i và b m )
IC 80C52 có ba b Timer/Counter (Timer 0, Timer 1, và Timer 2). Timer 1 và
Timer 0 có các ch c năng thông thư ng như nhau trong khi Timer 2 có kh năng ng
d ng cao hơn. Các timer có th ho t ng c l p v i nhau v i các ki u nh th i, ki u
m, ki u phát t c baud (cho các Port tu n t ).
Chương trình sau là m t ví d dùng Timer 1 t o m t xung vuông có t n s
10KHz.
#include <reg52.h>
/*
* Timer 1 Interrupt Service Routine: executes every 100 clock cycles
*/
static unsigned long overflow_count = 0;
void timer1_ISR (void) interrupt 3 {
overflow_count++; // Increment the overflow count
}
/*
* MAIN C function: sets Timer1 for 8-bit timer w/reload (mode 2).
* The timer counts to 255, overflows, is reloaded with 156, and
* generates an interrupt.
*/
void main (void) {
TMOD = (TMOD & 0x0F) | 0x20; // Set Mode (8-bit timer with
reload)
TH1 = 256 - 100; // Reload TL1 to count 100 clocks
TL1 = TH1;
ET1 = 1; // Enable Timer 1 Interrupts
TR1 = 1; // Start Timer 1 Running
EA = 1; // Global Interrupt Enable
while (1); // Do Nothing (endless-loop): the
timer 1 ISR will
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 59
// occur every 100 clocks. Since the
80C51 CPU runs
// at 12 MHz, the interrupt happens
10 KHz.
}
B bi n i tương t – s
Các b bi n i tương t s A/D là các linh ki n ch có trên m t s thành viên c a
h 8051 nhưng khá ph bi n. Các b bi n i A/D thư ng ư c i u khi n thông qua
thanh ghi ch ADCON, thanh ghi này ư c gán cho m t v trí còn tr ng nào ó trong
o n nh dành cho các SFR, thanh chi ADCON cho phép ngư i s d ng ch n l a kênh
c n ư c bi n i A/D, b u m t bi n i m i và ki m tra tr ng thái c a l n bi n i
hi n t i.
Các b bi n i A/D i n hình c n 40 chu kỳ l nh ho c ít hơn hoàn t t vi c
bi n i và chúng ư c c u hình t o ra ng t vào lúc hoàn t t vi c bi n i, vi c này
làm cho b vi i u khi n nh hư ng n m t vector ng t c th dành cho vi c bi n i
A/D. thông thư ng khuy t i m c a b bi n i A/D là b này yêu c u b vi i u khi n
ph i m c tính c c thay vì i vào ngh ch ng t do vi c bi n i hoàn t t. K t qu
c a vi c bi n i ư c c t m t SFR khác ho c m t c p SFR, ph thu c vào phân
giãi c a b bi n i.
Chương trình sau là ví d chuy n i tương t t tín hi u ngõ vào sang s :
#include <ADUC812.H>
#include <stdio.h>
void main (void) {
unsigned char chan_2_convert;
SCON = 0x50; // Configure the serial port.
TMOD |= 0x20;
TH1 = 0xA0;
TR1 = 1;
TI = 1;
// Configure A/D to sequentially convert each input
channel.
ADCCON1 = 0x7C; // 0111 1100
while (1) {
unsigned int conv_val;
unsigned char channel;
// Start a conversion and wait for it to complete.
chan_2_convert = (chan_2_convert + 1) % 8;
ADCCON2 = (ADCCON2 & 0xF0) | chan_2_convert;
SCONV = 1;
while (ADCCON3 & 0x80);
// Read A/D data and print it out.
channel = ADCDATAH >> 4;
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 60
conv_val = ADCDATAL | ((ADCDATAH & 0x0F) << 8);
printf ("ADC Channel %bu = 0x%4.4Xrn", channel, conv_val);
}
}
B bi n i s sang tương t ( D/A coverter)
B bi n i nàychuye63n i tían hi u s i vào thành tín hi u dòng i n ngõ ra.
IC Philips 87LPC769 là m t trong các IC có tích h p b chuy n i s – tương t . IC
Philips 87LPC769 g m 2 kênh, và b chuy n i 8bit D/A d dàng th c hi n v i chương
trình. Ví d sau cho ta th y cách dùng b chuy n i s d ng D/A SFRs.
/*
* This program generates sawtooth waveforms on the DAC
* of the Philips 87LPC769.
*/
#include <REG769.H>
void main (void) {
// Disable the A/D Converter (this is required for
DAC0)
ADCI = 0; // Clear A/D conversion complete flag
ADCS = 0; // Clear A/D conversion start flag
ENADC = 0; // Disable the A/D Converter
// Set P1.6 and P1.7 to Input Only (Hi Z).
P1M2 &= ~0xC0;
P1M1 |= 0xC0;
ENDAC0 = 1; // Enable the D/A Converters
ENDAC1 = 1;
while (1) {
unsigned int i;
// Create a sawtooth wave on DAC0 and the
// opposite sawtooth wave on DAC1.
for (i = 0; i < 0x100; i++) {
DAC0 = i;
DAC1 = 0xFF - i;
}
}
}
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 61
i u khi n c p i n (Power Reduction Modes)
Ch ngh (Idle mode) ư c kích ho t b ng cách thi t l p bit IDLE b ng 1. ch
ngh làm d ng m i vi c th c thi chương trình. Các n i dung trên RAM ư c b o toàn
và m ch dao ng ti p t c ho t ng nhưng xung clock b khó không n ư c CPU.
Các b nh th i và UART ti p t c th c hi n bìn thư ng các ch c năng c a chúng.
Ch ngh ư c k t thúc b ng cách kích ho t m t i m ng t b t kỳ. Khi vi c
th c thile65nh ng t ISR k t thúc thì h th ng s làm vi c l i t lênh set bit IDLE lên 1.
Sau ây là chương trình th c hi n ch ngh :
sfr PCON = 0x87;
void main (void) {
while (1) {
task_a ();
task_b ();
task_c ();
PCON |= 0x01; /* Enter IDLE Mode - Wait for enabled interrupt */
}
}
Ch gi m c p i n ( power down mode) ư c thi t l p b ng cách set bit
PDWN lên 1. trong ch nàyma5ch dao ng trong chip b d ng. Như v y các b nh
th i và UART cũng như vi c th c hi n ph n m m u t m ngưng. Mi n là có i n áp t i
thi u 2V t vào chip thì các n i dung lưu trên RAM v n ư c b o toàn.
Cách duy nh t bu c b vi i u khi n ra kh i ch gi m công su t là áp t
thi t l p l i (RESET) b vi i u khi n này khi c p i n.
Sau ây là chương trình th hi n quá trình giãm c p i n:
sfr PCON = 0x87;
void main (void) {
while (1) {
task_a ();
task_b ();
task_c ();
PCON |= 0x02; /* Enter Power Down Mode */
}
}
B nh th i WATCHDOG
B nh th i Watchdog có s n trên nhóm m r ng c a các thành viên h 8051.
m c ích c a b nh th i Watchdog là thi t l p l i (reset) l i b vi i u khi n n u b
nh th i không ư c cung c p m t trình t thao tác c th trong m t kho ng th i gian
xác nh. i u này ngăn ng a vi c n p l i Wachdog m t cách trùng kh p ng u nhiên b i
các ph n m m khác.
Trong h 8051, watchdog thư ng ư c th c hi n dư i d ng m t b nh th i khác
trên chip, b nh th i này l p t l gi m t n s m ch dao ng h th ng và k n m
xung clock ã ư c chia t l . Khi b nh th i quay vòng, h th ng thi t l p l i t u
(reset). Watchdog có th ư c c u hình i v i t c quay vòng và thư ng có th ư c
s d ng làm b nh th i khác m c dù ây là b nh th i có phân gi i th p.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 62
Chương trình sau ây cho th y cách thi t l p giá tr ban u và reset watchdog:
#include <reg51f.h>
/* This function adjusts the watchdog timer compare value to the current
* PCA timer value + 0xFF00. Note that you must write to CCAP4L first,
* then write to CCAP4H. */
void watchdog_reset (void) {
unsigned char newval;
newval = CH + 0xFF;
CCAP4L = 0;
CCAP4H = newval;
}
void main (void) {
unsigned int i;
/* Configure PCA Module 4 as the watchdog and make
sure it doesn't time-out immediately. */
watchdog_reset ();
CCAPM4 = 0x48;
/* Configure the PCA for watchdog timer. */
CMOD = (CMOD & 0x01) | 0x40;
/* Start the PCA Timer: From this point on, we must reset the watchdog
timer every 0xFF00 clock cycles. If we don't, the watchdog timer
will reset the MCU. */
CR = 1;
/* Do something for a while and make sure that we don't get reset by
the watchdog. */
for (i = 0; i < 1000; i++) {
watchdog_reset ();
}
/* Stop updating the watchdog and we should get reset. */
while (1);
}
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 63
PH N III
THI CÔNG M CH VÀ
NG D NG L P TRÌNH C TRONG AT89C2051
I. i u khi n led ơn
Sơ nguyên lý:
Code C:
#include < at892051.h >
char const num[ ] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
void wait (void)
{ ;
}
void main( void )
{
unsigned int i;
unsigned char j;
P1 = 0;
while(1){
for( j = 0; j < 8; j++ )
{
P1 = num[ j ];
for ( i = 0; i < 10000; i++ )
{
wait();
}
}
}
}
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 64
II. NG D NG CHO 2 LED 7 O N V I NÚT NH N
Sơ nguyên lý:
Code C:
#include < at892051.h >
char num[ ] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void wait (void)
{ ; }
void main ( void ){
unsigned char cnt, right;
unsigned int i;
P1 = 0;
P3 = 0;
for( ;; ){
for (right=0;right<3;right++)
{
P3 = right;
for (cnt=0;cnt<10;cnt++)
{
P1 = num[cnt];
for (i = 0; i < 10000; i++)
{
wait();
}
}
}
}
}
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 65
III. NG D NG CHO LED MATRIX 5x7.
• Sơ Nguyên Lý:
• Code C:
#include < at892051.h >
char const pat[5]={ 0x3f, 0x02, 0x04, 0x02, 0x3f };
void wait (void)
{ ;
}
void main( void )
{
unsigned char cnt, col;
unsigned int i;
P3 = 0;
P1 = 0;
for( ;; )
{
col = 1;
for (cnt=0;cnt<5;cnt++)
{
for(col = 0;col < 32;col<<=1)
{
P1 = pat[cnt];
P3 = col;
for (i = 0; i < 10000; i++)
{
wait();
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 66
}
}
}
}
}
SO N TH O VÀ BIÊN D CH CHƯƠNG TRÌNH
CHO H VI I U KHI N 8051
1. So n th o chương trình
Dùng ch c năng Edit c a NC (Norton Commander) ho c b t c
ph n m m so n th o văn b n nào khác.
Lưu dư i d ng file .A51 ho c .ASM, ho c .C v.v..
2. Chuy n thành file object (.obj) b ng chương trình A51.exe, ho c
ASM51.exe.
A51 baitap.a51 [enter]
ASM51 baitap.a51 [enter]
Chương trình d ch s t o ra file baitap.obj và baitap.lsl.
File.obj là file cơ s cho vi c liên k t thành chương trình th c thi ư c.
Còn file .lsl là file văn b n ch a các l nh, mã l nh và a ch tương ng.
File .lsl còn ch a các thông báo c a chương trình biên d ch v nh ng l i
cú pháp (n u có).
Sau khi th c hi n biên d ch xong s nh n ư c thông báo:
ASSEMBLY COMPLETE, NO ERRORS FOUND
Ho c ASSEMBLY COMPLETE, x ERRORS FOUND (y)
V i x là s l i cú pháp và y là s th t c a hàng l nh b l i cu i cùng
trong chương trình.
M file baitap.lsl xem các l i. Sau ó, m file baitap.a51, ho c file
baitap.asm s a các l i r i ti n hành biên d ch l i.
3. Chuy n file object thành file hex (.HEX) b ng chương trình
OHS51.EXE ho c OH.EXE.
Ohs51.exe baitap.obj [enter]
Oh.exe baitap.obj [enter]
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 67
PH N IV
K T LU N VÀ HƯ NG PHÁT TRI N TÀI
K T LU N
Trong tài này chúng tôi tìm hi u và nghiên c u l p trình C cho
h vi i u khi n 8051 và m i ch i vào m t s ng d ng nh như là i u
khi n led ơn , led b y o n, và led ma tr n . Tôi chưa khai thác h t t m
h n c a ph n m m Keil C cũng như chip AT89C2051.
Kh o sát qua ph n m m Keil C.
Th c hi n biên d ch mã ngu n C cho led ơn, led 7 o n, led matrix
5x7.
HƯ NG PHÁT TRI N
Hư ng phát tri n c a án là: dùng ngôn ng l p trình C ng
d ng vào h th ng nhúng c a h vi i u khi n 8051 ho c các h vi i u
khi n khác như là Philips P89C51Rx2/P89V51 Rx2 mà không ch xu t
ơn thu n là led ơn , mà là led matrix 5x7, matrix 8x8 , ho c LCD 1 line,
LCD 2 line, LCD 4 line…Và ng d ng ngôn ng l p trình C thi t k
nh ng ng d ng th c ti n ph c v cho i s ng c a con ngư i.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 68
TÀI LI U THAM KH O
Datasheet AT8051/AT89C51/AT89C2051 Preliminary (Complete)
c a hãng Atmel Corporation.
User’s Guide for Keil µVision.
Ph m Quang Trí, Giáo trình Vi x lý c a trư ng HCN TP.HCM.
Giáo trình Vi x lý c a trư ng HBKTPHCM.
Website : http://www.keil.com /
Sách embedded C
Sách Ngôn ng C c a các tác gi Quách Tu n Ng c .
Handel-C Language Reference Manual.
Án T t Nghi p GVHD:Huỳnh Minh Ng c
SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 69
M C L C
1. Ph n I
t ng quan tài .......................................................... trang 4
• t v n .............................................................. trang 4
• N i dung tài
2. Ph n II
N i dung tài........................................................... trang 5
Chương 1: Gi i thi u b vi i u khi n ĂT9C2051 và 89C51
• Gi i thi u b vi i u khi n AT89C2051................ trang 5
• Gi i thi u sơ lư c v vi i u khi n AT89C51 ....... trang 19
Chương 2: Gi i thi u ph n m m Keil µVision............ trang 21
3. Ph n III
Thi công m ch và ng d ng l p trình C trong AT89C2051 trang 62
4. Ph n IV
K t lu n và Hư ng phát tri n tài ............................. trang 67
5. Tài li u tham kh o............................................................. trang 68
6. M c l c ............................................................................ trang 69

More Related Content

Similar to Tailieu.vncty.com lap trinh-c_cho_vi_dieu_khien

Thiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiều
Thiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiềuThiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiều
Thiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiềunataliej4
 
Thiết Kế Chế Tạo Mô Hình Bãi Đỗ Xe Thông Minh
Thiết Kế Chế Tạo Mô Hình Bãi Đỗ Xe Thông Minh Thiết Kế Chế Tạo Mô Hình Bãi Đỗ Xe Thông Minh
Thiết Kế Chế Tạo Mô Hình Bãi Đỗ Xe Thông Minh nataliej4
 
Luận Văn Nghiên Cứu Thiết Kế Và Xây Dựng Hệ Thống Truyền Đông Điện Động Cơ Mộ...
Luận Văn Nghiên Cứu Thiết Kế Và Xây Dựng Hệ Thống Truyền Đông Điện Động Cơ Mộ...Luận Văn Nghiên Cứu Thiết Kế Và Xây Dựng Hệ Thống Truyền Đông Điện Động Cơ Mộ...
Luận Văn Nghiên Cứu Thiết Kế Và Xây Dựng Hệ Thống Truyền Đông Điện Động Cơ Mộ...tcoco3199
 
Đồ án thi công mạch LED Cube 5x5x5
Đồ án thi công mạch LED Cube 5x5x5Đồ án thi công mạch LED Cube 5x5x5
Đồ án thi công mạch LED Cube 5x5x5Mr Giap
 
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52quanglocbp
 
Tai lieu lap trinh plc s7 200 full
Tai lieu lap trinh plc s7 200 fullTai lieu lap trinh plc s7 200 full
Tai lieu lap trinh plc s7 200 fullvo long
 
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...Viết thuê báo cáo thực tập giá rẻ
 
056 giao trinh thvp2011
056 giao trinh thvp2011056 giao trinh thvp2011
056 giao trinh thvp2011Torres Pham
 
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdfĐồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdfNuioKila
 
đề Tài thiết kế hệ thống đèn giao thông tại ngã tư
đề Tài thiết kế hệ thống đèn giao thông tại ngã tưđề Tài thiết kế hệ thống đèn giao thông tại ngã tư
đề Tài thiết kế hệ thống đèn giao thông tại ngã tưnataliej4
 
GIAO TRINH COREL DRAW X3
GIAO TRINH COREL DRAW X3GIAO TRINH COREL DRAW X3
GIAO TRINH COREL DRAW X3jenlien
 
vi du gia cong nc - cnckhacda.com
vi du gia cong nc - cnckhacda.comvi du gia cong nc - cnckhacda.com
vi du gia cong nc - cnckhacda.comCNC khac da
 
Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...
Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...
Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...Man_Ebook
 
Báo cáo hệ thống đóng táo tự động dùng plc
Báo cáo hệ thống đóng táo tự động dùng plcBáo cáo hệ thống đóng táo tự động dùng plc
Báo cáo hệ thống đóng táo tự động dùng plcTony Tun
 
Lập trình C cho 8051
Lập trình C cho 8051Lập trình C cho 8051
Lập trình C cho 8051chilacaiten
 

Similar to Tailieu.vncty.com lap trinh-c_cho_vi_dieu_khien (20)

Thiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiều
Thiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiềuThiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiều
Thiết kế, chế tạo mạch điều khiển, hiển thị tốc độ động cơ điện 1 chiều
 
Thiết Kế Chế Tạo Mô Hình Bãi Đỗ Xe Thông Minh
Thiết Kế Chế Tạo Mô Hình Bãi Đỗ Xe Thông Minh Thiết Kế Chế Tạo Mô Hình Bãi Đỗ Xe Thông Minh
Thiết Kế Chế Tạo Mô Hình Bãi Đỗ Xe Thông Minh
 
Luận Văn Nghiên Cứu Thiết Kế Và Xây Dựng Hệ Thống Truyền Đông Điện Động Cơ Mộ...
Luận Văn Nghiên Cứu Thiết Kế Và Xây Dựng Hệ Thống Truyền Đông Điện Động Cơ Mộ...Luận Văn Nghiên Cứu Thiết Kế Và Xây Dựng Hệ Thống Truyền Đông Điện Động Cơ Mộ...
Luận Văn Nghiên Cứu Thiết Kế Và Xây Dựng Hệ Thống Truyền Đông Điện Động Cơ Mộ...
 
Đồ án thi công mạch LED Cube 5x5x5
Đồ án thi công mạch LED Cube 5x5x5Đồ án thi công mạch LED Cube 5x5x5
Đồ án thi công mạch LED Cube 5x5x5
 
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
THIẾT KẾ VÀ THI CÔNG LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89S52
 
Tai lieu lap trinh plc s7 200 full
Tai lieu lap trinh plc s7 200 fullTai lieu lap trinh plc s7 200 full
Tai lieu lap trinh plc s7 200 full
 
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
Đồ án tốt nghiệp điện tử Điều khiển và giám sát thiết bị điện gia đình - sdt/...
 
Đề tài: Quang báo hiển thị bằng led ma trận, HAY
Đề tài: Quang báo hiển thị bằng led ma trận, HAYĐề tài: Quang báo hiển thị bằng led ma trận, HAY
Đề tài: Quang báo hiển thị bằng led ma trận, HAY
 
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PICĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
 
056 giao trinh thvp2011
056 giao trinh thvp2011056 giao trinh thvp2011
056 giao trinh thvp2011
 
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdfĐồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
 
đề Tài thiết kế hệ thống đèn giao thông tại ngã tư
đề Tài thiết kế hệ thống đèn giao thông tại ngã tưđề Tài thiết kế hệ thống đèn giao thông tại ngã tư
đề Tài thiết kế hệ thống đèn giao thông tại ngã tư
 
GIAO TRINH COREL DRAW X3
GIAO TRINH COREL DRAW X3GIAO TRINH COREL DRAW X3
GIAO TRINH COREL DRAW X3
 
Giáo trình corel draw cơ bả
Giáo trình corel draw cơ bảGiáo trình corel draw cơ bả
Giáo trình corel draw cơ bả
 
vi du gia cong nc - cnckhacda.com
vi du gia cong nc - cnckhacda.comvi du gia cong nc - cnckhacda.com
vi du gia cong nc - cnckhacda.com
 
Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...
Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...
Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...
 
Báo cáo hệ thống đóng táo tự động dùng plc
Báo cáo hệ thống đóng táo tự động dùng plcBáo cáo hệ thống đóng táo tự động dùng plc
Báo cáo hệ thống đóng táo tự động dùng plc
 
Báo cáo thực tập - LẮP RÁP, CÀI ĐẶT, SỬA CHỮA MÁY TÍNH !!
Báo cáo thực tập - LẮP RÁP, CÀI ĐẶT, SỬA CHỮA MÁY TÍNH !!Báo cáo thực tập - LẮP RÁP, CÀI ĐẶT, SỬA CHỮA MÁY TÍNH !!
Báo cáo thực tập - LẮP RÁP, CÀI ĐẶT, SỬA CHỮA MÁY TÍNH !!
 
ĐỒ ÁN - Lập trình PIC16F877A điều khiển tốc độ động cơ DC.doc
ĐỒ ÁN - Lập trình PIC16F877A điều khiển tốc độ động cơ DC.docĐỒ ÁN - Lập trình PIC16F877A điều khiển tốc độ động cơ DC.doc
ĐỒ ÁN - Lập trình PIC16F877A điều khiển tốc độ động cơ DC.doc
 
Lập trình C cho 8051
Lập trình C cho 8051Lập trình C cho 8051
Lập trình C cho 8051
 

More from Trần Đức Anh

Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com   nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747Tailieu.vncty.com   nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747Trần Đức Anh
 
Tailieu.vncty.com nhom 6-de_tai_flo_9602
Tailieu.vncty.com   nhom 6-de_tai_flo_9602Tailieu.vncty.com   nhom 6-de_tai_flo_9602
Tailieu.vncty.com nhom 6-de_tai_flo_9602Trần Đức Anh
 
Tailieu.vncty.com lai phan-tu_2413
Tailieu.vncty.com   lai phan-tu_2413Tailieu.vncty.com   lai phan-tu_2413
Tailieu.vncty.com lai phan-tu_2413Trần Đức Anh
 
Tailieu.vncty.com duong hoa-hoc_3666
Tailieu.vncty.com   duong hoa-hoc_3666Tailieu.vncty.com   duong hoa-hoc_3666
Tailieu.vncty.com duong hoa-hoc_3666Trần Đức Anh
 
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com   do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562Tailieu.vncty.com   do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562Trần Đức Anh
 
Tailieu.vncty.com tieu luanc4v-1324
Tailieu.vncty.com   tieu luanc4v-1324Tailieu.vncty.com   tieu luanc4v-1324
Tailieu.vncty.com tieu luanc4v-1324Trần Đức Anh
 
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com   do an-cong_nghe_san_xuat_sua_tiet_trung_9366Tailieu.vncty.com   do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366Trần Đức Anh
 

More from Trần Đức Anh (20)

Tailieu.vncty.com 5275 1261
Tailieu.vncty.com   5275 1261Tailieu.vncty.com   5275 1261
Tailieu.vncty.com 5275 1261
 
Tailieu.vncty.com 5249 5591
Tailieu.vncty.com   5249 5591Tailieu.vncty.com   5249 5591
Tailieu.vncty.com 5249 5591
 
Tailieu.vncty.com 5219 0449
Tailieu.vncty.com   5219 0449Tailieu.vncty.com   5219 0449
Tailieu.vncty.com 5219 0449
 
Tailieu.vncty.com 5208 2542
Tailieu.vncty.com   5208 2542Tailieu.vncty.com   5208 2542
Tailieu.vncty.com 5208 2542
 
Tailieu.vncty.com 5145 0887
Tailieu.vncty.com   5145 0887Tailieu.vncty.com   5145 0887
Tailieu.vncty.com 5145 0887
 
Tailieu.vncty.com 5142 5647
Tailieu.vncty.com   5142 5647Tailieu.vncty.com   5142 5647
Tailieu.vncty.com 5142 5647
 
Tailieu.vncty.com 5138 529
Tailieu.vncty.com   5138 529Tailieu.vncty.com   5138 529
Tailieu.vncty.com 5138 529
 
Tailieu.vncty.com 5125 4608
Tailieu.vncty.com   5125 4608Tailieu.vncty.com   5125 4608
Tailieu.vncty.com 5125 4608
 
Tailieu.vncty.com 5117 1019
Tailieu.vncty.com   5117 1019Tailieu.vncty.com   5117 1019
Tailieu.vncty.com 5117 1019
 
Tailieu.vncty.com 5106 4775
Tailieu.vncty.com   5106 4775Tailieu.vncty.com   5106 4775
Tailieu.vncty.com 5106 4775
 
Tailieu.vncty.com 5089 2417
Tailieu.vncty.com   5089 2417Tailieu.vncty.com   5089 2417
Tailieu.vncty.com 5089 2417
 
Tailieu.vncty.com 5088 8018
Tailieu.vncty.com   5088 8018Tailieu.vncty.com   5088 8018
Tailieu.vncty.com 5088 8018
 
Tailieu.vncty.com 5067 1967
Tailieu.vncty.com   5067 1967Tailieu.vncty.com   5067 1967
Tailieu.vncty.com 5067 1967
 
Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com   nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747Tailieu.vncty.com   nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
Tailieu.vncty.com nst gioi-tinh_va_di_truyen_lien_ket_gioi_tinh_747
 
Tailieu.vncty.com nhom 6-de_tai_flo_9602
Tailieu.vncty.com   nhom 6-de_tai_flo_9602Tailieu.vncty.com   nhom 6-de_tai_flo_9602
Tailieu.vncty.com nhom 6-de_tai_flo_9602
 
Tailieu.vncty.com lai phan-tu_2413
Tailieu.vncty.com   lai phan-tu_2413Tailieu.vncty.com   lai phan-tu_2413
Tailieu.vncty.com lai phan-tu_2413
 
Tailieu.vncty.com duong hoa-hoc_3666
Tailieu.vncty.com   duong hoa-hoc_3666Tailieu.vncty.com   duong hoa-hoc_3666
Tailieu.vncty.com duong hoa-hoc_3666
 
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com   do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562Tailieu.vncty.com   do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
Tailieu.vncty.com do an-nhan_giong_in_vi_tro_cay_co_ngot_stevia_4562
 
Tailieu.vncty.com tieu luanc4v-1324
Tailieu.vncty.com   tieu luanc4v-1324Tailieu.vncty.com   tieu luanc4v-1324
Tailieu.vncty.com tieu luanc4v-1324
 
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com   do an-cong_nghe_san_xuat_sua_tiet_trung_9366Tailieu.vncty.com   do an-cong_nghe_san_xuat_sua_tiet_trung_9366
Tailieu.vncty.com do an-cong_nghe_san_xuat_sua_tiet_trung_9366
 

Tailieu.vncty.com lap trinh-c_cho_vi_dieu_khien

  • 1. B CÔNG NGHI P TRƯ NG I H C CÔNG NGHI P TP HCM KHOA CÔNG NGH I N T  Án T t nghi p Tài: L P TRÌNH C CHO H VI I U KHI N 8051 GVHD :ThS. HUỲNH MINH NG C L P :CDDT6K SINH VIÊN :LÊ VĂN LONG MSSV :04CDDT406 NG CTRUNG MSSV : 04CDDT439 Tp. HCM ,Tháng 8 Năm 2007
  • 2. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 2 NH N XÉT C A GIÁO VIÊN HƯ NG D N SVTH : Lê Văn Long MSSV : 04CDDT406 ng c Trung MSSV : 04CDDT439 GVHD : ThS. Huỳnh Minh Ng c ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... ..................................................................................................................... Ngày Tháng Năm 2007
  • 3. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 3 L I C M ƠN Chúng tôi xin chân thành c m ơn Th y Huỳnh Minh Ng c ã t n tình giúp chúng em trong su t quá trình th c hi n án này. Chúng tôi xin chân thành c m ơn các th y cô giáo ã kh công truy n th ki n th c cho chúng em giúp chúng em ph c v công tác t t khi ra trư ng. Cu i cùng chúng tôi c m ơn chân thành n ba m , ngư i thân, cùng b n bè. Nh ng ngư i luôn ng viên, h tr chúng tôi hoàn thành án này. SVTH: Lê Văn Long & ng c Trung.
  • 4. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 4 PH N I T NG QUAN v TÀI I. T V N : Ngày nay, nh ng ng d ng c a Vi i u khi n ã i sâu vào i s ng sinh ho t và s n xu t c a con ngư i. Th c t hi n nay là h u h t các thi t b i n dân d ng hi n nay u có s góp m t c a Vi i u Khi n và vi x lí . ng d ng vi i u khi n trong thi t k h th ng làm gi m chi phí thi t k và h giá thành s n ph m ng th i nâng cao tính n nh c a thi t b và h th ng.Trên th trư ng có r t nhi u h vi i u khi n: h 8051 c a Intel, 68HC11 c a Motorola, Z80 c a hãng Zilog, PIC c a hãng Microchip, H8 c a Hitachi,vv… Vi c phát tri n ng d ng các h vi x lý òi h i nh ng hi u bi t c v ph n c ng cũng như ph n m m, nhưng cũng chính vì v y mà các h vi x lý ư c s d ng gi i quy t nh ng bài toán r t khác nhau. Tính a d ng c a các ng d ng ph thu c vào vi c l a ch n các h vi x lý c th cũng như vào k thu t l p trình. Ngày nay các b vi x lý có m t trong r t nhi u thi t b i n t hi n i: t u ĩa CD, máy thu hình, máy ghi hình, dàn âm thanh HiFi, b i u khi n lò sư i cho n các thi t b i u khi n dùng trong công nghi p. Lĩnh v c ng d ng c a các h vi x lý cũng r t r ng l n: t nguyên c u khoa h c, truy n d li u, n công nghi p, năng lư ng, giao thông và y t … Tùy theo kinh nghi m và m c thông th o mà chúng ta có th s d ng các ngôn ng khác ngoài h p ng như: C, C++ , Visual basic có nh ng chương trình ch t lư ng cao hơn. II. N I DUNG C A TÀI: Sơ lư c v vi i u khi n AT89C51. Kh o sát vi i u khi n AT89C2051 c a hãng ATMEL. • G m sơ chân linh ki n. • Sơ kh i c a AT89C2051. • Các n i d ng ng d ng c a AT89C2051. Gi i thi u ph n m m Keil Software µViSion 2 ng d ng ngôn ng C và Assembly i u khi n l p trình led. • ng d ng cho led ơn, led 7 o n, led ma tr n… K t lu n và hư ng phát tri n c a tài.
  • 5. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 5 PH N II N I DUNG TÀI CHƯƠNG 1: GI I THI U B VI I U KHI N 89C2051 và 89C51 I.GI I THI U B VI I U KHI N 89C2051 I.1 CÁC C I M Tương thích v i các s n ph m c a h MSC-51. 2K byte b nh Flash l p trình ư c. Kh năng :1000 chu kì ghi/xóa. T m i n áp ho t ng t 2,7 V n 6V T m t n s ho t ng t 0 Hz n 21 MHz 2 m c khóa b nh chương trình (program memory). RAM bên trong (internal RAM) có dung lư ng 128 x 8 bit. 15 ư ng I/O l p trình ư c. 2 b nh th i / m 16 bit. 6 ngu n (nguyên nhân ) ng t. Kênh n i ti p UART l p trình ư c. Các ngõ ra kích LED tr c ti p. M ch so sánh tương t trên chip (on-chip analog comparator). Các ch ngh công su t th p và ch gi m công su t. I.2 MÔ T Chip AT89C2051 là chip vi i u khi n CMOS 8 bit i n áp th p, hi u su t cao có 2K byte b nh Flash ch c, xóa ư c và l p trình ư c PEROM (Flash programmable and erasable readonly memory). Linh ki n này ư c s n xu t b ng cách s d ng công ngh b nh không thay i m t cao c a Atmel và tương thích v i t p t p c a MCS-51 chu n công nghi p. B ng cách k t h p m t CPU 8-bit a năng và linh ho t v i Flash trên chip ơn tinh th , Atmel AT89C2051 là chip vi i u khi n m nh cung c p gi i pháp linh ng cao và mang l i hi u qu v giá thành cho nhi u ng d ng i u khi n nhúng (embedded control application). AT89C2051 cung c p các c tính chu n sau ây : b nh Flash 2K byte , 128 byte RAM , 15 ư ng I/O, 2 b nh th i/ m 16-bit , ki n trúc ng t hai m c 5 vector, port n i ti p hoàn toàn song công , m ch so sánh tương t chính xác, m ch dao ng và t o xung clock trên chip . Ngoài ra AT89C2051 ư c thi t k có m ch logic tĩnh cho ho t ng gi m n t n s 0 Hz và h tr 2 ch ti t ki m công su t l a ch n ư c b ng ph n m m. Ch d nghĩ ( idle mode ) s dùng CPU nhưng v n cho phép RAM, các b nh th i/ m, port n i ti p và h th ng ng t ti p t c ho t ng. Ch gi m công su t duy trì n i dung c a RAM nhưng làm d ng m ch dao ng, không cho phép m i ch c năng khác c a chip ho t ng cho n l n reset c ng k ti p (nghĩa là ta thi t l p l i tr ng thái ban u [reset] cho chiop b ng m ch i n bên ngoài).
  • 6. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 6 I.3 C U HÌNH CHÂN Hình 1.1 I.4 SƠ KH I
  • 7. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 7 Hình 1.2 RAM ADDR. REGISTER: thanh ghi a ch RAM . RAM: vùng nh truy c p ng u nhiên (RAM). FLASH: vùng nh FLASH. B REGISTER:thanh ghi B. ACC: thanh ch a. STACK POINTER: con tr vùng nh x p ch ng. PROGRAM ADDRESS REGISTER: thanh ghi a ch chương trình. TMP1: thanh ghi t m 1 TMP2: thanh ghi t m 2 ALU: ơn v s h c/logic. BUFFER: b m. PC INCREMENTER: b tăng thanh ghi m chương trình PC. INTERRUPT, SERIAL PORT AND TIMER BLOCKS: các kh i ng t, port n i ti p và nh th i. PROGRAM COUNTER: b m chương trình PC.
  • 8. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 8 PSW: t tr ng thái chương trình . TIMING AND CONTROL:m ch logic i u khi n và nh th i. INSTRUCTION REGISTERED: thanh ghi l nh. DPTR: con tr d li u . PORT1 LATCH: b ch t port 1. PORT3 LATCH: b ch t port 3. ANALOG COMPARTOR:b so sánh tương t . OSC:m ch dao ng. PORT 1 DRIVERS: các m ch kích port 1. PORT 3 DRIVERS: các m ch kích port 3. I.5 MÔ T CHÂN VCC Chân c p i n áp Vcc cho chip. GND Chân n i t. Port 1 Port 1 là port I/O (port nh p/xu t: input/output port) hai chi u 8-bit. Các chân c a port t P1.2 n P1.7 cung c p các m ch kéo lên bên trong (internal pull-ups). Các chân P1.0 và P1.1 yêu c u các m ch kéo lên bên ngoài . P1.0 và P1.1 cũng còn ư c s d ng làm ngõ vào dương (AIN0) và ngõ vào âm (ÁIN), theo th t , c a m ch so sánh tương t chính xác trên chip (on – chip precision analog comparator). Các m ch m ngõ ra (output buffer) c a port 1 có th hút dòng 20mA và kích tr c ti p các b hi n th LED. Khi các logic 1 ư c ghi n các chân c a port 1, các chân này có th ư c s d ng làm các ngõ vào. Khi các chân t P1.2 n P1.7 ư c s d ng làm các ngõ vào và ư c kéo xu ng m c th p t bên ngoài, chúng s cung c p dòng (IIL) do các m ch kéo lên bên trong. Port 1 cũng nh n d li u chương trình hay d ki u mã (code data) trong th i gian l p trình và ki m tra b nh Flash. Port 3 Các chân c a port 3 t P3.0 n P3.5, P3.7 là chân I/O hai chi u v i các m ch kéo lên bên trong. P3.6 ư c n i dây c ng làm ngõ vào n i n ngõ ra c a m ch so sánh trên chip và không th truy c p như m t chân I/O có m c ích t ng quát. Các m ch m ngõ ra c a port 3 có th hút dòng 20mA.Khi các logíc ư c ghi n các chân c a port 3, các chân này ư c kéo lên m c cao b i các m ch kéo lên bên trong và có th ư c s d ng làm các ngõ vào. Khi là các ngõ vào, các chân nào c a port 3 ư c kéo xu ng m c th p b i m ch bên ngoài s cung c p dòng (IIL) do các m ch kéo lên. Các chân c a port 3 còn ư c s d ng cho các ch c năng c bi t khác c a AT89C2051 như ư c li t kê dư i ây ( b ng 11,1). Port 3 cũng nh n m t s tín hi u i u khi n l p trình và ki m tra b nh Flash. B ng 1.1 RST Ngõ vào reset (thi t l p l i tr ng thái ban u). T t c các chân I/O ư c reset n m c logíc ngay sau khi RST lên m c cao. Vi c duy trì chân RST m c cao trong 2 chu kỳ máy trong khi m ch dao ng ang ho t ng s reset chip.
  • 9. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 9 XTAL 1 Ngõ vào n m ch khu ch i dao ng o và ngõ vào n m ch t o xung clock bên trong. XTAL 2 Ngõ ra t m ch khu ch i dao ng o. I.6 CÁC C TÍNH C A M CH DAO NG. XTAL 1 và XTAL 2 là ngõ vào và ngõ ra, theo th t , c a m ch khu ch i o có th ư c c u hình tr thành m ch dao ng trên chip như ư c trình bày hình 1.3. M t tinh th th ch anh ho c m ch c ng hư ng g m u có th s d ng ư c. kích chip t ngu nxung clock bên ngoài, chân XTAL 2 s không k t n i trong khi chân ATAL 1 ư c kích như ư c trình bày hình 1.4. Không có yêu c u nào v chu kỳ nhi m v (duty cycle) c a tín hi u xung clock bên ngoài vì ngõ vào n m ch vì ngõ vào n m ch t o xung clock bên trong s i qua m t flipflop làm nhi m v chia 2 t n s , nhưng các c tính v i n áp t i thi u và t i a c a m c cao và m c th p ph i ư c xem xét. Hình 1.3 các k t n i c a m ch dao ng. Lưu ý: C1,C2=30pF± 10pF i v i các th ch anh ; C1,C2=40pF± 10pF i v i các b c ng hư ng g m. Hình 1.4: C u hình kích xung clock bên ngoài. I.7CÁC THANH GHI CH C NĂNG C BI T SFR
  • 10. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 10 B ng 1.2 Các giá tr khi reset và b n các SFR c a AT89C2051 M t b n vùng nh trên chip ư c g i là không gian thanh ghi ch c năng c bi t SFR (special function registor) ư c trình bày b n trên ây (b ng 1.2). Lưu ý r ng không ph i t t c a ch u b chi m b i các thanh ghi này, các a ch không b chi m có th không ư c th c hi n trên chip. Các truy c p c n các a ch này trong trư ng h p t ng quát, s tr v d li u ng u nhiên và các truy c p ghi s có tác ng không rõ ràng. Ph n mêm c a ngư i s d ng không nên ghi các logic 1 n các v trí nh không ư c li t kê vì chúng có th ư c s d ng trong các s n ph m tương lai áp ng các t tính m i. Trong trư ng h p ó, các giá tr do reset ho c các giá tr không tích c c c a các bit m i s luôn luôn b ng 0. I.8 CÁC GI I H N TRÊN M T S L NH AT89C2051 là m t thành viên ti t ki m và có hi u qu v giá thành c a h vi ièu khi n ang phát tri n c a Atmel. Chip này ch a 2K b nh chương trình Flash. Chip này hoàn toàn tương thích v i ki n trúc MCS-51và có th ư c l p trình b ng c ch s d ng t p l nh MCS-51. tuy nhiên, có vài cân nh c mà ta oh i chú ý khi s d ng m t s l p trình c a chip này. T t c các l nh liên quan n các ho t ng nh y và r nhánh s b gi i h n, ch n h n như a ch íh rơi vào trong không gian nh c a chip, không gian này là 2K byte v i AT89C2051. V n này là trách nhi m c a nguowif l p trình ph n m m. Thí d , l nh LJMP 7E0H s là l nh h p l i v i AT89C2051 (có 2K byte b nh chương trình)trong khi ó l nh LJMP 900H là l nh không h p l . Các l nh r nhánh
  • 11. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 11 LCALL,LMJP, ACALL, AJMP,SJMP ,JMP@A+DPTR- Các l nh r nhánh không i u ki n này s th c thi úng mi n là ngư i l p trình lưu ý r ng a ch ích r nhánh ph i n m trong gi i h n v t lý c a kích thư c b nh chương trình (các v trí nh t 00H n 7FFH i v i AT89C2051). Vi c vi ph m các gi i h n khong gian v t lý có th gây ra hành vi không bi t ư c c a chương trình CJNE [. . . ], DJNZ [. . . ], JB, JNB, JC, JNC, JBC, JZ, JNZ - V i các l nh r nhánh có i u ki n này, các quy lu t gi ng như trên cũng ư c áp d ng. M t l n n a, vi c vi ph m các giơis h n b nh v t lý s làm cho chương trình th c hti không úng. i v i các ng d ng bao g m các cách ng t, các v trí a ch c a chương trình ph c v ng t (interrupt service rountine) bình thư ng c a c u trúc h 89C2051 ư c b o toàn. Các l nh liên quan n MOVX, b nh d li u AT89C2051 ch a 128 byte b nh d li u bên trong (intenal data memory). Như v y trong AT89C2051,kích thư c c a b x p ch ng (stack depth) ư c gi i h n t i 128 byte, ay là dung lư ng c a RAM có s n. Vi c truy c p b nh bên ngoài không ư c h tr trong chip này và vi c thưc thi chương trình bên ngoài cũng không ư c h tr . Như v y không có l nh MOVX [. . . ] nào ch a trong chương trình. M t trình d ch h p ng (assembler) i n hình c a 89C51 v n d ch các l nh này,ngay c khi chúng ư c vi t dư i d ng vi ph m các gi i h n ã c p trên. Ngư i s d ng b vi i u khi n ph i có trách nhi m ph i bi t các tính ch t v t lý và gi i h n c a linh ki n ang ư c s d ng và i u ch nh các l nh ư c s d ng m t cách thích h p. Các gi i h n trên ây cho ta th y các khuy t i m c a At89C2051. I.9 CÁC BIT KHOÁ B NH CHƯƠNG TRÌNH V i chip AT89C2051 ta có 2 bit khoá (lock bit), các bit này có th l i không l p trình (U) ho c có th l p trình (P) nh n thêm ư c các tính ch t ư c li t kê b ng 11.3. Các bit khoá chương trình LB1 LB2 Lo i b o v 1 U U Không có tính ch t khoá chương trình. 2 P U Vi c l p trình thêm n a cho b nh Flash b c m. 3 U U Tương t ch 2, vi c ki m tra cũng b c m. Lưu ý: các bit khoá ch có th b xoá b ng thao tác xoá chip B ng 1.3:Các ch b o v c a bit khoá. I.10 CH NGH Trong ch ngh CPU s t ng , trong khi t t c các ngo i vi khác trên chip i u ho t ng và i u duy trì tr ng thái ch tích c c. Ch này ư c yêu c u b i ph n m m. N i dung c a RAM trên chip và t t c tren các thanh ghi ch c năng c bi t i u gi nguyên không thay i trong th i gian ch này. Ch ngh có th ư c k t thúc b i cách ng t b t kì ư c phép hoăc b ng cách reset ph n c ng. Các chân P1.0 và P1.1 s ư c thi t l p b ng 0 n u không s d ng các m ch kéo lên bên ngoài ho c ư c thi t l p b ng 1 n u có m ch kéo lên bên ngoài. Cũng c n lưu ý r ng khi ch ngh ư c k t thúc b i m t reset c ng, chip s ti p t c th c thi chương trình bình thư ng t nơi chương trình b r i b , n 2 chu kỳ máy trư c gi i thu t reset bên trong l y quy n i u khi n. Ph n c ng trên chip ngăm c n vi c truy c p n RAM bên trong ch này nhưng không c m vi c truy c p n cá chân c a port. la i b kh năng có m t thao tác không mong i n m t chân c a port khi ch ngh ư c k t thúc b ng reset, l nh theo sau l nh yêu c u ch ngh s không th là l nh ghi n m t chân port ho c b nh ngoài. I.11 CH GI M CÔNG SU T
  • 12. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 12 Trong ch gi m công su t, m ch dao ng b d ng và l nh yêu c u ch gi m công su t là l nh sau cùng ư c th c thi. RAM trên chip và các thanh ghi ch c năng c bi t gi l i các giá tr c a chúng cho én khi các ch gi m công su t ư c k t thúc.L i thoát duy nh t ra kh i ch gi m công su t là s d ng reset c ng. Reset s nh nghĩa l i các thanh ghi chuac năng c bi t nhưng không làm thay i Ram trên chip. Reset không nên ư c kích ho t trươc khi i n áp VCC ư c khôi ph c n m c ho t ng bình thư ng và reset ph i duy trì tích c c lâu cho phép m ch ho t ng tr l i và tr nên n nh. Các chân P1.0 và P1.1 s ư c thi t l p b ng 0 n u không s d ng các m ch kéo lên bên ngoài ho c ư c thi t l p b ng 1 n u có m ch kéo lên bên ngoài. I.12 L P TRÌNH FLASH AT89C2051 trên th trư ng có d i nh chương trình PEROM trên chip la 2K byte tr ng thái ã ư c xóa (nghĩa là toàn b n i dung c a các byte là FFH) và s n sàng ư c l p trình. D i nh chương trình ư c l p trình m t byte cho m i th i i m. M t khi dãi này ã ư c l p trình, l p trình l i b t kì byte nào không tr ng, toàn b d i nh ư c xóa b ng i n. B i m a ch bên trong AT89C2051 có m t b m a ch PEROM bên trong, b m này luôn luôn ư c thi t l p là 00H c nh lên c a RST và ư c tăng lên b ng cách áp d ng xung ang tr thành m c dương (positve going pluse) n chân XTAL1. Gi i thu t chương trình l p trình AT89C2051, theo trình t sau ây. 1. Trình t c p i n: C p i n gi a các chân VCC và GND Thiêt l p RST và XTLA1 n m c th p (GND) 2. Thi t lâp RST lên m c cao (‘H’) Thi t l p chân P3.2 lên m c cao (‘H’) 3. Áp d ng t h p các m c logic ‘H’ và ‘L’ thích h p ên các chân P3.3, P3.4, P3.5 và P3.7 ch n 1 trong các thao tác l p trình ư c trình bày trong b ng các ch l p trình PEROM (PEROM proramming modes table). l p trình và ki m tra d i nh chương trình: 4. t d li u c a byte chhương trình ( hay còn g i là byte mã) v trí 00h n các chân t P1.0 n P1.7. 5. Tăng RST lên 12V cho phép l p trình. 6. ưa m t xung n chân P3.2 l p trình m t byte trong d i PEROM ho c các bit khóa. Chu kỳ ghi byte ư c t nh th i và i n hình chi m 1.2ms. 7. ki m tra d li u ã l p trình, gi m th p RST t 12V xu ng m c logic cao ‘H’ và thi t l p các chân t P3.3 n P3.7 n các m c logic thích h p. D li u xu t có th ư c c các chân c a port 1. 8. l p trình m t byte v trí a ch k ti p, ưa m t xung n XTAL1 tăng b m a ch bên trong (internal address counter). t d li u m i n các chân c a port 1. 9. L p l i các bư c t 6 n 8, thay i d li u và tăng b m a ch cho toàn b d i byte hoăc cho n khi k t thúc t p tin i tư ng (object file). 10.Trình t ng t ngu n i n. Thi t l p XTLA1 n m c th p (‘L’) Thi t l p RST n m c th p (‘L’) T t ngu n c p i n cho VCC.
  • 13. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 13 Data Polling: AT89C2051 có Data Polling ch ra vi c k t thúc m t chu kỳ ghi. Trong th i gian c a m t chu kỳ ghi, vi c th c byte sau cùng ư c ghi s d n n vi c l y bù d li u ư c ghi trên chân P1.7. M t khi chu kỳ ghi ã k t thúc, d li u s có hi u l c trên t t c các ngõ ra và chu kỳ k ti p có th b t u. Data Polling có th b t u b t c lúc nào sau khki m t chu kỳ ghi ư c kh i ng. Ready/ Busy: Ti n trình l p trình byte cũng có th giám sát b ng tín hi u ngõ ra RDY/ BSY. Chân P3.1 ư c kéo xu ng m c th p sau khi chân P3.2 tr thành m c cao trong th i gian l p trình s ch ra tr ng thái b n (BUSY). Chân P3.1 ư c kéo lên m c cao l n n a khi vi c l p trình k t thúc s chh ra tr ng thái s n sàng (READY). Program verify ( ki m tra chưong trình ): N u các bit khóa LB1 và LB2 ã không ư c l p trình, d li u chương trình có th c ngư c v thông qua các ư ng d li u ki m tra: 1. Reset b m a ch bên trong v 00H mang RST t ‘L’ lên ‘H’. 2. t các tín hi u thích h p c d li u chương trình và c d li u ngõ ra các chân c a port 1. 3. ưa m t xung n chân XTAL 1 tăng b m a ch bên trong. 4. c byte d li u k ti p các chân c a port 1. 5. L p l i các bư c 3 và 4 cho n khi toàn b d i nh chương trình ư c c. Các bit khóa khong th ư c ki m tra tr c ti p. Vi c ki m tra các bit khóa s nh n ư c b ng cách tuân theo các tính ch t ư c cho phép c a chúng. Chip erase (xóa chip): Toàn b d i PEROM (2K byte) và hai bit khóa ơc xóa b ng i n b ng s d ng t h p thích h p các tín hi u i u khi n và b ng cách gi cho chân P3.2 m c th p trong 10ms. D i nh chương trinhd ư c ghi v i t t c các bit i u là 1 trong thao tác xóa chip va ph i ư c th c hi n trư c khi b t kỳ byte nh không tr ng nào có th ư c l p trình l i. Reading the signature bytes ( c các byte ch ký ): Các byte ch ký ư c c v i cùng th t c như viêc ki m tra bình thư ng các v trí nh 000H, 001H, 002H, ngo i tr các chân P3.3 và chân P3.5 ph i ư c kéo xu ng m c logic th p. Các giá tr ư c tr v như sau: (000H) = 1EH ch ra ư c s n xu t b i Atmel. (001H) = 21H ch ra 89C2051. I.13CÁC CH L P TRÌNH FLASH Các ch l p trình Flash ư c tóm t t b ng 1.4.
  • 14. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 14 Lưu ý: 1. B m a ch PEROM bên trong ư c reset v 000H c nh lên c a RST và ư c tăng b i xung dương chân XTAL 1. 2. vi c xóa chip yêu c u xung PROG kéo dài 10ms. 3. Chân P3.1 ư c kéo xu ng m c th p trong th i gian l p trình ch ra RDY/BSY Write code data: ghi d li u chương trình. Read code data: c d li u chương trình. Write lock : ghi các bit khóa. Chip erase : xóa chip. Read signature byte : c byte ch ký SEE FLASH PROGRAMMING MODE TABLE:xem b ng ch l p trình Flash. PGM DATA: d li u chương trình. TO INCREMENT ADDRESS COUTER: tăng b m a ch . I.14 CÁC C I M L P TRÌNH FLASH Ký hi u Thông s Min Max ơn v VPP i n áp cho phép l p trình. 11.5 12.5 V IPP Dòng i n cho phép l p trình. 250 µA tDVGL Th i gian t lúc d li u n khi PROG m c th p. 1.0 µs tGHDX Th i gian gi d li u sau khi PROG tích c c. 1.0 µs t EHSH Th i gian P3.4 ( NABLE ) t ‘H’ lên VPP. 1.0 µs tSHGL Th i gian t lúc thi t l p VPP n khi PROG m c th p. 10 µs tGHSL Th i gian gi a VPP sau khi PROG tích c c. 10 µs tGLGH r ng c a PROG. 1 110 µs tELQV Th i gian t lúc ENABLE m c th p cho n khi d li u có 1.0 µs
  • 15. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 15 B ng 11.5 Các t i m l p trình và ki m tra Flash. TA = 00 C n 700 C, VCC = 5.0 ± 10%. Ch s d ng ch l p trình 12 V. I.15 CÁC Ư C LƯ NG C C I TUY T I T m nhi t ho t ng: t -550 C n +1250 C. T m nhi t tích tr : t -660 C n +1500 C. i n áp trên b t kì chân nào so v i t (GND): -1.0 V n +7 V. i n áp c p i n c c i: 6.6 V. Dòng DC ngõ ra: 25.0 mA. CÁC D NG SÓNG L P TRÌNH VÀ KI M TRA FLASH Hình 1.5 Các d ng sóng l p trình và ki m tra Flash. hi u l c. tEHQZ Th i gian th n i d li u sau khi ENABLE tích c c. 0 1.0 µs tGHBL Th i gian t khi PROG m c cao cho én khi BUSY o m c th p. 50 ns tWC Th i gian c a chu kỳ ghi byte. 2.0 ms tBHIH Trì hoãn t RDY/BSY n khi clock tăng. 1.0 µs tHIL Th i gian c0lock m c cao. 200 ns
  • 16. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 16 D NG SÓNG M CH KÍCH XUNG CLOCK BÊN NGOÀI Hình 1.6:D ng sóng m ch kích xung clock bên ngoài. M CH KÍCH XUNG CLOCK BÊN NGOÀI B ng 1.5 Các thông s c a m ch kích xung clock bên ngoài. NH TH I PORT N I TI P: I U KI N KI M TRA CH THANH GHI D CH VCC = 5.0 ± 20%; i n dung t i = 80 pF. Ký hi u Thông s Dao ng 12 MHZ Min Max Dao ng thay i Min Max ơn v Th i gian chu kỳ xung clock port n i ti p. 1.0 12tCLCL µs Th i gian t lúc thi t l p d li u xu t n c nh lên c a xung clock 700 10tCLCL – 133 ns Th i gian gi d li u xu t sau c nh lên c a xung clock. 50 2tCLCL – 177 ns Th i gian gi d li u nh p sau c nh lên c a xung clock 0 0 ns Th i gian t c nh lên xung clock n khi d li u nh pcó hi u l c. 700 10tCLCL – 133 ns B ng 1.6 Các i u ki n ki m tra ch nh th i thanh ghi d ch Ký hi u Thông s VCC=2.7V n 6.0V Min Max VCC=4.0V n 6.0V Min Max ơn v 1/tCLCL T n s dao ng. 0 12 0 24 MHZ tCLCL Chu kỳ xung clock. 83.3 41.6 ns tCHCX Th i gian m c cao. 30 15 ns tCLCX Th i gian m c th p. 30 15 ns tCLCH Th i gian tăng (c nh lên). 20 20 ns tCHCL Thơi gian gi m (c nh xu ng). 20 20 ns
  • 17. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 17 CÁC D NG SÓNG NH TH I CH THANH GHI D CH Hình 1.7 D ng sóng nh th i ch thanh ghi d ch. D NG SÓNG NGÕ VÀO/NGÕ RA KI M TRA AC1 Hình 1.8:D ng sóng ngõ vào/ngõ ra ki m tra AC. Lưu ý: 1. Các ngõ vào AC trong th i gian ki m tra ư c kích (VCC – 0.5) V i v i logic 1 và 0.45 V i v i logic 0. Các phép o nh th i ư c th c hi n VIHmin i v i logic 1và VILmax i v i logic 0. D NG SÓNG TH N I1 Hình 1.9 D ng sóng th n i. Timing reference points: các i m tham chi u nh th i. Lưu ý: 1. i v i m c ích nh th i, m t chân port s không còn th n i kho có s thay i 100mV t i n áp trên t i. M t chân port b t u th n i khi có s thay i 100mV t m c VOH/VOL (có t i).
  • 18. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 18 ICC CH TÍCH C C Hình 1.10: ICC ch tích c c. ICC CH NGH VÀ CH GI M CÔNG SU T Hình 1.11: (a) ICC ch ngh ,(b) ICC ch gi m công su t.
  • 19. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 19 Packaging Information
  • 20. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 20 II.Gi i thi u v Vi i u Khi n AT89C51 MSC51 là m t h Vi i u Khi n (Microcontroller) do hãng Intel s n xu t.Các IC c a h MSC51 tiêu bi u là 8051 và 8031. c bi t, vi i u khi n 89C51 s n xu t g n ây mang các c i m sau: 4Kbytes EEPROM. 128 bytes RAM. 4 Port I/O (Input/Output). 2 b nh th i Timer 16 bits. Giao ti p n i ti p. 64Kbytes không gian b nh chương trình m r ng. 64Kbytes không gian b nh d li u m r ng. M t b x lý lu n lí (thao tác trên các bits ơn). 210 bits ư c a ch hóa. B nhân chia 4µs. H TH NG GIAO TI P PORT. • Port 0: port 0 là m t port hai ch c năng trên các chân 32-39. Hãy nh r ng : trên các chân này chưa có i n tr kéo dương, do ó khi c n chúng ta c n nh n c i m này. • Port 1: port 1 là m t port I/O trên các chân 1-8. • Port 2: port 2 là m t port công d ng kép trên các chân 21-28. • Port 3: port 3 là m t port công d ng kép trên các chân 10-17. Các chân này u có nhi u ch c năng, các công d ng chuy n i có liên h t i các c tính c bi t c a 8051 b ng sau:
  • 21. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 21 CÁC TÍN HI U I U KHI N: Chip AT89C51 có các tín hi u i u khi n c n ph i lưu ý như sau: • Tín hi u vào EA trên chân 31 thư ng t lên m c cao ( +5V) ho c m c th p (GND) N u m c cao, 8951 thi hành chương trình t ROM n i trong kho ng a ch th p (4K ho c t i a 8k i v i 89C52). N u m c th p, chương trình ư c thi hành t b nh m r ng (t i a n 64Kbyte). Ngoài ra ngư i ta còn dùng EA làm chân c p i n áp 12V khi l p trình EEPROM trong 8051. • CHÂN PSEN (Program store enable): PSEN là chân tín hi u ra trên chân 29. Nó là tín hi u i u khi n cho phép chương trình m r ng, PSEN thư ng ư c n i n chân OE (Output Enable) c a m t EPROM ho c ROM cho phép c các bytes mã l nh. Hãy nh r ng : bình thư ng chân PSEN s ư c th tr ng ( No Connect).Ch khi nào cho EA m c th p thì lúc ó: PSEN s m c th p trong th i gian l y l nh. Các mã nh phân c a chương trình ư c l y t EPROM qua bus d li u và ư c ch t vào thanh ghi l nh c a 8951 gi i mã l nh. PSEN m c th ng (m c cao) n u thi hành chương trình trong ROM n i c a 8951. CÁC CHÂN NGU N: AT8951 ho t ng ngu n ơn +5V.Vcc ư c n i vào chân 40, và Vss (GND) ư c n i vào chân 20.
  • 22. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 22 Chương 2: Gi i thi u chung v ph n m m Keil Software Ph n m m Keil SoftWare 8051 công c phát tri n ư c li t kê dư i là nh ng chương trình mà biên t p mã C, t p h p nh ng t p tin assembly, liên k t và nh v nh ng o n chương trình hư ng i tư ng, nh ng thư vi n , kh i t o file HEX, và trình g l i. • µVision® là m t môi trư ng phát tri n tích h p mà k t h p qu n lý project ,so n th o mã ngu n và trình g l i trong môi trư ng m nh. • Cx51 ANSI t i ưu b biên d ch C và t o ra nh ng o n chương trình hư ng i tư ng nh v l i t mã ngu n C. • Ax51 Macro Assembler t o ra nh ng a n chương trình hư ng i tư ng nh v l i 8051 mã ngu n assembly. • BL51 b k t n i / dò tìm nh v l i nh ng o n chương trình hư ng i tư ng ư c t o ra t C51 và A51 vào nh ng o n chương rình hư ng i tư ng tuy t i. • LX51 m r ng b k t n i / b dò tìm h tr nh ng phương án thi t b m r ng và cung c p nh ng c tính b sung.LX51 h tr t t c các phương án c a Cx51 và Ax51. • LIBx51 trình qu n lý thư vi n k t h p nh ng o n chương trình hư ng i tư ng vào trong nh ng thư vi n mà có th ư c s d ng b i b k t n i. • OHx51 b bi n i sang file HEX . t o ra nh ng file HEX t nh ng o n chương trình hư ng i tư ng tuy t i. • RTX51 Tiny h th ng th i gian th c RTX51 , thi t k ơn gi n nh ng d án ph n m m ph c t p, nh th i.
  • 23. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 23 II.1 CHU TRÌNH PHÁT TRI N PH N M M Khi chúng ta s d ng ph n m m Keil µVision , chu trình phát tri n ph n m m cũng gi ng như chu trình phát tri n bao ph n m m khác. 1. Kh i t o project , l a ch n chip t cơ s d li u thi t b , thi t t nh ng công c nh hình. 2. T o ra nh ng t p tin ngu n C ho c assembly. 3. Xây d ng nh ng ng d ng v i Project Manager. 4. Ki m tra l i t p tin ngu n. 5. Ki m tra nh ng ng d ng ư c liên k t. Sơ kh i sau ây minh h a chu trình phát tri n ph n m m µVision/ARM y .M i ph n ư c mô t bên dư i. II.2 µVision IDE µVision IDE k t h p qu n lý d án , trình biên t p v i s s a ch a l i, cài t tùy ch n, phương ti n, và giúp tr c tuy n. S d ng µVision t o ra nh ng t p tin ngu n và t ch c chúng vào trong nh ng d án ng d ng. µVision IDE t d ng biên t p, l p ráp, và liên k t nh ng ng d ng nhúng. C51 Compiler & A51 Macro Assembler (Trình biên t p C51 và trình h p ng A51 ) Nh ng t p tin ngu n ư c t o ra b i µVision IDE và ư c ưa qua C51 ho c A51.Trình biên t p và trình l p ráp x lý nh ng t p tin ngu n và t o ra nh ng t p tin i tư ng nh v l i ư c.
  • 24. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 24 Trình biên dich Keil C51 là m t s thi hành mã ANSI y c a ngôn ng l p trình mà h tr t t c các c tính chu n c a ngôn ng C. Ngoài ra , nhi u c tính h tr tr c ti p ki n trúc 8051 ã ư c thêm. Chương trình Keil A51 h tr t p l nh y c a 8051. LIB51 Library Manager (trình qu n lý thư vi n LIB51) LIB51 cho phép chúng ta t o ra thư vi n m c tiêu t nh ng t p tin i tư ng ư c t o ra t trình biên t p và trình l p ráp. Nh ng thư vi n ư c nh d ng c bi t, s p t cho chương trình nh ng t p h p c a nh ng o n chương trình hư ng i tư ng mà có th ư c k t n i nh ng l n sau.Khi b k t n i x lý m t thư vi n , ch nh ng o n chương trình hư ng i tư ng c n thi t t o ra chương trình m i ư c s d ng. BL51 Linker/Locator ( B k t n i BL51/dò tìm) B k t n i BL51/dò tìm t o ra file LF/DWARF tuy t i s d ng nh ng o n chương trình hư ng i tư ng t nh ng thư vi n và ư c t o ra t trình biên tâp và trình l p ráp.M t t p tin i tư ng tuy t i ho c mo un ch a ng nh ng mã và d li u không xác nh, T t c các o n mã và d li u hi n có t i nh ng v trí b nh c nh. ELF/DWARF có th ư c s d ng • L p trình m t Flash Rom ho c nh ng thi t b bô nh khác • V i trình g l i • Chương trình ch y th Vision Debugger (Trình g l i ) Trình g l i có tính ch t tư ng trưng, m c m c ngu n g l i lý tư ng phù h p và tin c y.Trình g l i bao g m m t simulator high-speed chúng ta mô ph ng 8051. Nh ng thu c tính c a chip mà chúng` ta s d ng thì t ng nh hình khi chúng ta l a ch n t Device Database. Trình s a l i cung c p vài phương pháp cho chúng ta ki m tra các thi t b ph n c ng • Thi t t MON51 trên h th ng và t i chương trình c a b n s d ng giao di n Monitor-51 t i trình g l i. • S d ng giao di n GDI kèm theo trình g l i t i h th ng B n dư i ây li t kê nh ng thư m c công c phát tri n ph n m m Keil .
  • 25. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 25 Assembler Source Template and Include files for the Macro Assembler.( file ngu n assembly và nh ng file cho trình d ch Macro Assembler) Executable files of the µVision/C51 tool chain.( nh ng t p tin ch y c a µVision/C51) Example programs ( nh ng chương trình ví d ) Configuration files for Flash Monitor and pre-configured versions.( C u hình cho Flash Monitor và nh ng phiên b n nh hình On-Line documentation for µVision/C51.(tài li u tr c tuy n cho µVision/C51) Include files for the C compiler.(nh ng t p tin cho trình biên t p C) Files for ISD51 In-System Debugger and pre-configured versions.(nh ng file h tr ISD51 trình g l i Run-time libraries and CPU startup files.(thư vi n và CPU kh i ng s p x p nhưng file) Configuration files for Monitor-51 (for Classic 8051 Devices).(c u hình cho Monitor- 51) Configuration files for Monitor-390 (for Dallas Contiguous Mode) .(c u hình cho monitor-390) RTX51 Tiny Version 2 Real-Time Operation System.(h th ng b nh th i) Thư m c µVision
  • 26. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 26 II.3 GIAO DI N NGƯ I DÙNG II.4 Create a Procject (T o m t Procject ) µVision là m t ng d ng Windows và chương trình ư c kích ho t khi click lên bi u tư ng (icon) Create a Project File (t o ra m t d án) t o m t h sơ m i ta l a ch n t µVision menu Project – New Project…m t h i tho i Windows hi n ra và h i b n t tên cho cho Project m i v a kh i t o.Chúng g i ý r ng ta nên s d ng m t Folder riêng cho m i Project. ơn gi n hơn t o m t Project m i ch n bi u tư ng t o ra m t Procject m i . µVision t o ra m t Procject m i v i tên PROCJECT1.UV2 ch a ng m t tên nhóm và h sơ m c nh. Ta có th th y tên này trong Project Workspace – Files . Khi ta t o ra m t Procject m i uVision h i ta l a ch n CPU cho Procject .h p tho i l a ch n thi t b xu t hi n cho ta th y cơ s d li u thi t b uVision , ch c n l a ch n b i u khi n mà ta s d ng . Ví d như ta ch n B i u khi n Philips 80C51RD+ .Nh ng tùy ch n công c này cho Philips 80C51RD+ ư c rút g n bên c u hình công c .
  • 27. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 27 Chú ý: • Ta có th l a ch n B k t n i m r ng (LX51) và trình Assembler m r ng (AX51) trong h p tho i.Linker và Assembler m r ng s n sàng trong the Keil Professional Developer's Kit và ưa cho chúng ta nh ng c tính b sung . • Khi ta t o ra m t Procject m i , uVision có th t ng thêm mã kh i ng CPU • Trên m t vài thi t b , môi trư ng uVision c n nh ng tham s b sung mà ta ph i thi t l p. c nh ng thông tin này m t cách c n th n ư c cung c p dư i s mô t c a h p tho i này, t ó có th có nh ng ch d n b sung cho c u hình thi t b .
  • 28. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 28 Ta có th t o ra m t t p tin ngu n m i v i menu option File – New. i u này m m t c a s biên t p, nơi mà ta có th biên so n mã ngu n. uVision nh ng cú pháp màu khi ta lưu file v i h p tho i (File –Save As…) dư i tên *.C. Ví d chúng ta lưu dư i tên Main.C Khi ta ã t o t p tin ngu n , ta có th thêm file t i Procject . Nh ng xu t uVision vài cách thêm t p tin ngu nvào m t Procject. Ví d như ta có th l a ch n nhóm Procject Workspace-Files và click chu t ph i m menu. Tùy ch n Add files ư c m ra. Ch n file MAIN.C mà ta ã t o ra.
  • 29. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 29 Thêm và nh hình mã kh i ng ( Add and Configure the Starup Code) File STARUP.A51 là mã kh i ng cho a s CPU 8051. Mã kh i ng làm s ch b nh d li u và t o nh ng con tr ngăn x p. Ngoài ra m t vài d n xu t 8051 yêu c u m t mã kh i t o CPU phù h p v i v i c u hình ph n c ng. Ví d Philips 8051RD+ ngh ta chèn on-chip xdata RAM mà c n ư c thêm vào trong mã kh i ng. Khi ta c n s a i file toán h c cho phù h p v i ph n c ng, ta ph i copy file STARUP.A51 t C:KEILC51LIB n ngăn Procject T o nhóm Procject Nhóm h sơ cho phép chúng ta t ch c nh ng Procject l n. Cho mã kh i ng CPU và nh ng c u hình h th ng mà ta có th t o ra m t Procject – nh ng thành ph n, môi trư ng , hư ng d n …trong h p tho i.Chèn m t group m i t o ra m t h th ng có tên nhóm h sơ ngăn x p. trong Procject m i có th kéo th file STARTUP.A51 lên nhóm file m i này. Bây gi , Project Workspace – Files li t kê t t c trong Project . m m t Project so n th o, nh n double lên file Project Workspace .Ta có th c n nh hình STARTUP.A51 trong trình biên t p.
  • 30. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 30 Thi t t nh ng tùy ch n cho nh ng m c tiêu. uVision cho chúng ta thi t t nh ng tùy ch n cho m c tiêu ph n c ng .H p tho i nh ng tùy ch n cho nh ng m c tiêu ư c m qua bi u tư ng thanh công c ho c qua menu tùy ch n Project. Trong b ng m c tiêu ch rõ nh ng tham s thích áng ph n c ng và thành ph n chip mà b n ã l a ch n. Sau ây là ví d nh ng thi t t : Sau ây là b n mô t nh ng tùy ch n c a h p tho i Target
  • 31. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 31 Xtal – ch t n s clock mà CPU c a b n ho t ng. Trong a s trư ng h p giá tr này ng nh t v i t n s XTAL.( Specifies the CPU clock of your device. In most cases this value is identical with the XTAL frequency) Memory Model – ch rõ b nh C51, b t u nh ng ng d ng m c nh là m t s l a ch n t t. Allocate On-Chip... Use multiple DPTR registers – ch rõ cách dùng nh ng thành ph n c a chip cho phép mã kh i ng CPU , n u ta ang s d ng b nh xdata RAM ta cũng ph i cho phép s truy nh p XRAM trong STARTUP.A51 s p x p. Off-chip...Memory – ch rõ t t c các vùng b nh ngoài Ch rõ nh ng tham s cho mã và xdata. Tham chi u tơi Code Banking bi t thêm chi ti t hơn Specifies the parameters for code and xdata banking. Refer to the "Code Banking" section for more information Vài tùy ch n trong h p tho i ch có n u ta ang s d ng LX51 Linker/Locater. LX51 Linker/Locater ch có trong gói PK51 Xây d ng Project và kh i t o file HEX Nh ng thi t t công c dư i nh ng tùy ch n-m c tiêu mà ta c n kh i ng m t ng d ng m i. Ta có th d ch t t c các t p tin ngu n và k nh ng ng d ng v i m t cái click trên bi u tư ng Build Target . Khi ta xây d ng v i nh ng l i cú pháp, uVision s trình bày nh ng thông báo l i và c nh báo v i nh ng l i có th x y ra. Nh n double trên hàng thông báo l i m file ngu n nh v trong trình biên t p uVision M t l n thành công ta có th kh i ng trình g l i như mô t dư i Testing Programs v i trình g l i uVision .
  • 32. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 32 Bây gi ta có th s a l i mã ngu n ho c thêm nh ng t p tin ngu n m i vào d án. Nút thanh công c Build Target d ch nh ng file ngu n ch ư c s a i, ho c file ngu n m i và file th c thi. uVision lưu gi m t danh sách và nh ng file ư c s d ng trong file ngu n. Th m chí nh ng tùy ch n công c ư c lưu tr trong danh sách ph thu c, uVision xây d ng l i n u c n thi t, v i l nh Rebuild Target , t t c nh ng file ngu n ư c d ch b t ch p nh ng c i bi n. Sau khi ki m tra ng d ng c a b n, nó có th yêu c u t o ra file HEX v t i xu ng ph n m m ng d ng vào trong thi t b s d ng m t ti n ích l p trình Flash. uVision t o file HEX v i m i l n xây d ng dư i nh ng tùy ch n cho Target-Outout dư c cho phép. Tùy ch n Merge32K Hexfile s n sàng cho nh ng ng d ng Code Applocations khi ta ã l a ch n Extended Linker LX51. Ta có th kh i ng ti n ích l p trình Flash sau khi trình d ch làm quá trình khi b n ch rõ nh ng chương trình Run Program#1.
  • 33. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 33 Chương trình m u M c này mô t nh ng chương trình m u ch y trên Keil C51. Nh ng chương trình m u này s n sàng cho b n ch y th . Nh ng chương trình này giúp ta h c cách s d ng các công c c a Keil C51. ng th i, ta cũng có th sao chép các an mã c a chúng vào chương trình c a chúng ta. Các chương trình m u c a Keil C51 ư c lưu trong thu m c C:KEILC51EXAMPLES . M i chương trình ư c lưu trong m t thư m c riêng cùng v i m t t p tin d ki n giúp b n có th nhanh chóng xây d ng và ánh giá chương trình. Ngoài ra, các chương trình nh riêng bi t cho RTX – 51 cũng ư c cung c p trong m c RTX – 51. B ng sau là danh sách các chương trình m u trong C51 và tên thư m c c a chúng. Ki u m u Mô t ADI 83x Các chương trình dùng cho các thi t b tương t ADuC83x và ADuC84x mà nó ch ra các thi t b m r ng và cách dùng ADI MONITOR DRIVER ASM M t chưogn trình h p ng ơn gi n mà ta c th vi t m t o n text cho các port tu n t Benchmarks... Vài chương trình riêng bi t: Dhrystone, Whetstone, Sieve. BLINKY Lo i 8051 Blinky làm sáng LED trên board Keil MCBx51 CodeBanking... Ki u mã Banking ch ra vi c l p trình trên b nh 64K CSAMPLE B c ng và tr ơn gi n mà cho th y làm sao xây d ng m t chương trình v i nhi u module trên µVision Dallas 390 Vài ví d s d ng Dallas Contigious Addressing Mode mà nó có s n m t vài thi t b khác nhau như DS80C390, DS80C400, DS80C41x, DS5240, and DS5250. FarMemory Làm sao m r ng ô nh tr6n 64K Hello Chương trình hi n ch Hello world. Ch y th nó trư c khi s d ng µVision. Infineon C517 Cho th y cách dùng Infineon m r n các thi t b : MDU và b giao i n n i ti p. Infineon XC866 Nh ng chương trình m u cho bo m ch Keil MCBXC866 h tr ư c thi t b Infineon XC800 M8051EW Các chương trình m u cho Mentor M8051EW MEASURE Là h th ng thu th p và t p h p nh ng d li u s và tương t . Là chương trình i u khi n h th ng o lư ng nhi t t xa. Philips 80C51MX Là chương trình m u cho h Philips 80C51MX h tr t i 16MB vùng a ch Philips LPC9xx Chương trình cho bo m ch Keil MCB900 Evaluation mà h tr các thi t b Philips LPC900 - LPC94x Philips LPC95x Chương trình cho bo m ch Keil MCB9xx Evaluation mà h tr các thi t b Philips LPC950 - LPC99x ST uPSD Chương trình m u cho dòng ST uPSD cho th y c u hình h th ng Keil ULINK USB-JTAG Adapter TI MSC121x Chương trình cho các thi t b TI MSC121x ch ra cách dùng h th ng gi i mã ISD51 In-System Debugger TI MSC1200 Chương trình cho các thi t b TI MSC1200 ch ra cách dùng h th ng gi i mã ISD51 In-System Debugger
  • 34. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 34 b t u s d ng m t trong các chương trình m u, ta m menu Project – Open Project trong µVision r i m tâp tin chương trình. Các m c trong chương này mô t làm sao s d ng các công c xây d ng các chương trình sau: HELLO : chương trình C vi t cho 8051 MEASURE: h th ng o lư ng t xa. HELLO Chương trình HELLO ư c lưu trong thư m c C:KEILC51EXAMPLESHELLO . chương trình này không làm gì hơn là xu t o n text “ HELLO WORLD “ ra port. Toàn b chương trình ư c lưu trong t p tin ngu n là HELLO.C ng d ng nh này giúp b n có th biên t p, liên k t và g l i m t ng d ng. B n có th th c hi n thao tác này t dòng l nh trên DOS, s d ng t p tin d ng batch ho c dùng µVison trên windown v i các t p tin chương trình. Ph n c ng cho ch HELLO d a vào CPU 8051 chu n. M t con chip ngo i vi ư c s d ng cho các dãy port. Tuy nhiên, v i µVision b n không c n ph i có 1 CPU vì chương trình ã óng vai trò ph n c ng yêu c u cho chương trình này. T p tin chương trình HELLO Trong µVision, nh ng ng d ng ư c lưu trong t p tin chương trình. M t chương trình ư c vi t cho ch HELLO. m chương trình này ta ch n Open Project t menu Project và m t p tin HELLO.UV2 t thư m c …C51EXEMPLESHELLO. So n th o chương trình HELLO.C Bây gi b n có th so n th o chương trình HELLO.C b ng cách nh p úp chu t vào c a s project file. µVision s t i và hi n th n i dung file HELLO.C trên c a s làm vi c.
  • 35. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 35 Biên d ch và k t n i HELLO Khi b n ã s n sàng biên d ch và liên k t chương trình c a mình, s d ng l nh Build Target t menu Project ho t thanh công c Build. µVision b t u biên d ch và liên k t t o ra m t o n chương trình mà b n có th t i vào µVision cho vi c th l i. Quá trình xây d ng ư c li t kê trong c a s ngõ ra. Chú ý B n c n ph i không g p l i khi ch y các chương trình m u ch y th HELLO Khi chương trình HELLO ã ư c biên d ch và k t n i ta có th ki m tra nó v i trình tìm l i c a µVision. Trong µVision, s d ng l nh Start/Stop Debug Session t menu Debug ho c thanh công c . µVision kh i t o trình báo l i và kh i ng các chương trình con n các chương trình chính. Sau ây là màn hình hi n th :
  • 36. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 36 M c a s Serial Window #1 cho ta th y các hi n th ngõ ra v i l nh m c a s Serial Window #1 t menu VIEW ho c thanh công c Debug. Ch y chương trình HELLO v i l nh GO t thanh công c Debug. Chương trình l i chào ư c th c hi n và hi n th o n văn b n “HELLO WORLD” trong c a s serial window. Sau khi ngõ ra hi n th “HELLO WORLD” nó s ch y v i vòng l p vô t n. D ng vi c ch y chương trình HELLO v i l nh Halt t menu Debug ho c thanh công c . B n cũng có th ánh l nh ESC trong trang l nh c a c a s OUTPUT. Trong su t quá trình ki m tra l i c a µVision s ư c hi n th như sau:
  • 37. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 37 Ch y t ng bư c và ng t ngang S d ng l nh Insert/Remove Breakpoints t thanh công c ho c t trình ơn trên menu l p trình. Ta dùng chu t ph i t i m d ng trên i m b t u c a hi n chính. S d ng l nh Reset CPU t menu DEBUG ho c thanh công c . N u b n d ng chương trình ang ch y b i l nh RUN. µVision s d ng chương trình t i i m d ng mà b n ã t. B n có th ch y t ng bư c chương trình HELLO b ng cách n nút STEP trên thanh công c DEBUG. Nh ng câu l nh s ư c ch ra v i mũt tên màu vàng. Mũi tên s di chuy n theo t ng bư c th c hi n. t con tr chu t trên các bi n xem giá tr c a chúng. B n có th ch y ho c d ng chương trình b t kỳ kúc nào v i l nh START/STOP DEBUG. MEASURE: h th ng i u khi n thi t b t xa Chương trình i u khi n (MEASURE) ư c lưu trong thư m c ..C51ExamplesMeasure. Chương trình này s d ng các d li u s và tương t thư ng ư c dùng trong các ài khí tư ng và i u khi n trong công nghi p. Chương trình này ch y trên P89LPC935 CPU và ghi d li u t hai port k thu t s và b n ngõ vào chuy n i A/D. M t b nh th i (Timer) i u khi n quá trình l y d li u. M u d li u có th nh hình t 1 mili giây n 60 phút. M i d li u o ư c trong su t th i gian ho c t các kênh ngõ vào ư c lưu vào RAM.
  • 38. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 38 T p tin l nh c a chương trình o lư ng T p tin này có tên là MEASURE.UV2. m t p tin ta dùng l nh Open Project t menu Project và ch c file MEASURE.UV2 trong thư m c C:KeilC51ExamplesMeasure. Trang t p tin trong c a s Project cho ta th y nh ng t p tin ngu n dùng biên so n chương trình tr c lư ng. Chương trình o lư ng m u g m có 3 tâp tin ngu n ó là: Getline.c, Mcommand.c, và Measure.c mà ta có th tìm th y trong nhóm file ngu n. Ngoài ra b n còn có th tìm th y mã kh i ng CPU và t p tin d li u. m m t file ta nh p úp vào tên t p tin trong Project Workpage Các chương trình có ch c năng nh m vào các m c ích khác nhau cho nh ng môi trư ng th nghi m khác nhau. dò l i ch y chương trình mô ph ng ta ch n m c mô ph ng SIMULATOR trong thanh công c BUILD. Khi s d ng phiên b n ư c lư ng Evaluation Version b n c n ph i ch n Demo - Simulator.
  • 39. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 39 Mô t các ch c năng c a t p tin ngu n Measure.c Ch c các hàm chính c a C cho h th ng o lư ng và i u ki n ng t cho timer0. các hàm chính kh i t o t t c các thi t b ngo i vi c a P89LPC935 và x lý các l nh h th ng. i u ki n ng t timer,timer0, qu n lý ng h th i gian th c và l y d li u t phép o c a h th ng. Mcommand.c Nh ng quá trình hi n th , th i gian và kho ng cách gi a các l nh. Nh ng hàm này ư c g i t chương trình chính. Các l nh hi n th giá tr tương t t i m giao ng s cho tín hi u i n t 0.00V n 3.30V Getline.c G m các dòng l nh ư c so n th o cho nh ng d ki n nh n t các port Yêu c u ph n c ng Các ng d ng o lư ng ch có th ch y trên bo m ch Keil MCB900 ho c các ph n c ng cơ b n khác dùng P89LBC935. B vi i u khi n PL89LBC935 cung c p kh năng nh p vào c tín hi u s và tương t . Port 1 và Port2 ư c dùng nh p tín hi u s và t AD00 n AD03 nh p tín hi u tương t . Tuy nhiên, chúng ta s không c n m t bo m ch nào h t vì µVision ã tích h p ch c năng này. biên d ch và liên k t chương trình MEASURE Khi ã s n sàng biên d ch và li n k t chương trình, s d ng l nh Buil Target t menu Project ho c thanh công c . µVision s th c hi n toàn b quá trình và s thông báo cho b n khi hoàn t t. ch y th chương trình MEASURE Chương trình m u i u khi n o lư ng ư c l p trình ch p nh n các l nh trên chip c a các port tu n t . N u b n có ph n c ng th c t , b n có th d d ng ph n mô ph ng cu i cùng k t n i v i CPU P89LPC935. n u b n không có ph n c ng thì có th s d ng ph n c ng mô ph ng trên µVision. B n có th s d ng c a s Serial Windown cung c p tín hi u ư c nh p vào.
  • 40. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 40 M i l n chương trình Measure ư c xây d ng b n có th ch y th . S d ng l nh START/STOP trong menu DEBUG ch y chương trình ki m tra l i. Nh ng l nh c a h th ng i u khi n o lư ng t xa Chu i các l nh dùng cho chương trình ư c li t kê trong b ng. Nh ng l nh này bao g m b ng mã ASCII và t t c các l nh i u ph i ư c hoàn t t b ng m t s quay vòng. L nh C u trúc Ch c năng clear C Xóa t t c các d li u o ư c trư c ó Dislay D Hi n th th i gian làm vi c và giá tr ngõ vào time T hh:mm:ss t th i gian theo chu n 24h Interval I mm:ss.ttt t nh ng kho ng th i gian cho m i phép o kho ng th i gian này t 0:00.001(1ms) và 60:00.000 (60 phút) start S Kh i ng quá trình ghi d li u o ư c. Khi nh n l nh start, chương trình o l y m u t t c các tín hi u ngõ vào t i các kho ng th i gian ã nh. Read R[count] Hi n th các giá tr o ư c, b n có th ch rõ s c a tâ1t c các m u mà mình mu n c. N u không ch ra th t nào, l nh c s hi n th t t c các giá tr o. B n ch có th c các giá tr này trong 1 giây. N u mu n hơn thì ph i d ng chương trình. quit Q Thoát kh i quá trình ghi giá tr o Khi b n ch y m t l n chương trình mô ph ng trên µVision, b n có th vào các l nh này trong c a s Serial Windown#1 bên dư i:
  • 41. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 41 Hi n th các o n mã c a chương trình µVision cho phép b n hi n th các o n mã c a chương trình trong c a s Disassembly Window b ng cách m menu View ho c dùng các nút trên thanh công c . C a s Disassembly Window cho th y s tr n l n các ngu n và các o n assembly. B n có th thay i cách hi n th b ng cách nh p chu t ph i vào menu ng c nh.
  • 42. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 42 hi n th n i dung các ô nh µVision có th hi n th các ô nh các nh d ng khác nhau. C a s ô nh Memory Window ư c m t menu View ho c t thanh công c . B n có th nh p a ch c a 4 vùng nh trang này. Menu ng c nh cho phép b n s a i n i dung ô nh ho c l a ch n nh ng ki u ngõ ra khác nhau. các bi n thay i ng h th i gian B n có th liên t c nhìn n i dung c a các bi n, c u trúc và các m ng. Ta có th m c a s Watch Window t menu View ho c thanh công c . M t trang ng c nh hi n ra cho th y taa61t c các ký t ng c nh c a hàm hi n th i. Các trang Watch#1 và Watch#2 cho phép ta vào b t kỳ bi n nào c a chương trình như trang sau: Vào các bi n th i gian trong c a s Watch Window L a ch n văn b n < n F2 ch nh s a > cùng v i 1 cái click chu t và i trong m t giây. M t cái click chuôt khác cùng quá trình ch nh s a giúp ta thêm vàog ía tr c a các bi n. V i cùng cách như trên ta có th thay i nhi u giá tr . Cách khác là b n có th dùng phím F2.
  • 43. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 43 xóa i m t bi n, nh n ch n và n phím delete. Nh ng c u trúc và m ng s hi n ra khi n ký hi u [+]. Các dòng b th t vào ph n chi u s l ng nhau. Chú ý C a s Watch Window c p nh p b t c khi nào chương trình th c hi n d ng. Khi b n m ch View - Periodic Window Update các giá tr c p nh t s l y liên t c trong su t quá trình ch y chương trình mô ph ng. Vào bi n th i gian t c a s so n th o Ch c m t bi n trong vùng so n th o và dùng câu l nh Add to Watch Window t menu ng c nh b ng cách click ph i chu t. Vào các bi n th i gian t trang l nh ngõ ra (output window) S d ng lênh WatchSet thêm giá tr bi n vào c a s Watch Window
  • 44. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 44 Th c hi n chương trình trư c khi b t u mô phòng chương trình MEASURE, m c a s Serial Window#1 hi n th chu i giá tr ngõ ra b ng cách vào menu View ho c thanh Debug. B n có th thu nh các c a s khác n u màn hình không l n. B n có th ch y t ng bư c b ng l nh Step các câu l nh Essembler ho c các o n mã g c. N u c a s Assembly Window ang m , b n nên ch c ch y tùng bư c các l nh essembly cơ b n. N u c a s so n th o v i các mã g c ư c m , b n ch y t ng bư c v i t ng mã ngu n. nút l nh ‘ch y t ng bư c n” (stepinto) cho phép b n th c hi n m t bư c nh y n các chương trình ư c g i th c hi n vi c g i m t hàm và s không t ng ng t cho n khi g p i m ng t. trên nguyên t c ta có th ng u nhiên nh y vào m t hàm chưa hoàn t t. B n có th dùng l nh StepOut hoàn t t hàm ó và tr l i giá tr cho nó ngay l p t c khi có l nh g i. mũi tên vàng ánh d u câu l nh hi n th i và ho c các l nh c p cao. B n có th ng u nhiên bư c vào m t hàm chưa hoàn t t. l nh ch y ngay hàng c a con tr (Run till Cursor Line) l nh t và b i m ng t Insert/Remove BreakPoint H p tho i BreakPoint µvision cũng h tr các i m ng t ph c t p. Ch ng h n b n mu n ng t m t chương trình khi m t bi n t giá tr nh t nh. Cài t bên dư i khi nào giá tr 3 ư c vi t cho current.time.sec
  • 45. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 45 nh nghĩa i m d ng này ta m h p tho i BreakPoint t menu Debug. ánh d u ch n vào ô Write ( d u ch n này ch ra là l nh ng t ch ư c ki m tra khi ư c vi t t i ). Ti p t c click vào nút Define ch n i m dùng. ki m tra vi c th c hi n i m d ng làm các bư c sau: Reset CPU N u s th c hi n chương trình d ng thì b t u ch y chương trình o Sau m t ít th i gian, µVision d ng s th c hi n. Chương trình m hàng ánh d u v trí hàng mà trong ó i m ng t ư c t. S ghi v t tin Quá trình này th c hi n trong su t th i gian ki m l i cho n i m d ng nơi b n yêu c u thông tin cho giá tr thanh ghi và nh ng nguyên nhân khác d n t i d ng t. N u Debug - Enable/Disable Trace Recording ư c t b n có th nhìn th y các l nh liên quan t i CPU th c hi n trư c i m d ng.
  • 46. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 46 B ng giá tr các thanh ghi G i ngăn x p Các ngăn x p trong c a µVision s ư c l p y khi chương trình hoàn t t. Trang CallStack c a c a s Watch Window cho th y s l ng nhau gi a các hàm hi n th i. Nh p úp lên m t hàng hi n th mã g c th c hi n ch c năng c a nó. On-Chip ngo i vi µVision cung c p m t s cách hi n th và s a d i các chip ngo i vi s d ng trong chương trình c a b n. B n có th th y k t qu c a ví d khi th c hi n các bư c sau: Reset CPU và xóa t t c các i m ng t N u chương trình b d ng khi b t u o lư ng. M c a s Serial Window #1 và vào l nh ‘d’ cho ng d ng MEASURE. Chương trình o lư ng cho th y giá tr t ngõ vào port1 và port2 và b chuy n i A/D 1-3. C a s Serial Window #1 ư c bi u di n hình sau:
  • 47. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 47 Nh ng h p tho i thi t b ngo i vi µVision cung c p các h p tho i cho: I/O port, thi t b ng t, b nh th i, chuy n i A/D, và m t s chip ngo i vi c bi t. Các h p tho i này có th m t menu Peripheral. M i h p tho i cho th y các ký hi u SFR liên quan và tình tr ng các thi t b ngo i vi. Cho ng d ng o c b n có th m Peripherals - I/O Ports - Port2 và Peripherals - A/D Converter - ADC0/DAC0. nh ng h p tho i này cho th y tình tr ng c a các thi t b ngo i vi và b n có th thay i giá tr ngõ vào.
  • 48. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 48 B n có th s d ng Virtual Simulator Registers (VTREGs) thay i giá tr ngõ vào. Trong c a s Output Window – Command Page b n có th t các n nh cho các ký hi u VTREG gi ng như ng ng bi n và các thanh ghi. Ví D : PORT2=0xDA ; set digital input PORT2 to 0xDA. AD01=2.3 ; set analog input AD01 to 2.3 volts. Các user và tín hi u ch c năng ( Signal Function ) B n có th k t h p các ký hi u VTREG v i ch c năng tìm l i c a µVision t o ra m t phương th c ph c t p c a vi c cung c p d li u ngoài ư c nh p vào t i các chương trình c a b n. Chương trình m u Measure s d ng b gi i mã kh i t o file MEASURE.INI nh nghĩa các tín hi u hàm cho: Xu t hi n xung răng cưa trên ngõ vào A/D AD01. Xu t hi n sóng sine trên ngõ vào A/D AD02. Xu t hi n tín hi u nhi u trên ngõ vào A/D AD03. T p tin MEASURE.INI ư c lưu dư i d ng Options for Target – Debug – Initialization File và có n i dung như sau: /*-------------------------------------------*/ /* Function MyRegs() shows Registers R0...R3 */ /*-------------------------------------------*/ FUNC void MyRegs (void) { printf ("---------- MyRegs() ----------n"); printf (" R0 R1 R2 R3n"); printf (" %02X %02X %02X %02Xn"); printf ("------------------------------n"); } // // Generate Saw Tooth Signal on A/D input AD01 //
  • 49. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 49 signal void AD01_Saw (void) { float volts; // peak-to-peak volatage float frequency; // output frequency in Hz float offset; // volatge offset float duration; // duration in Seconds float delay; float val; long i, end, steps; volts = 2.0; offset = 0.2; frequency = 140; duration = 8.0; printf ("Saw Tooth Signal on A/D input AD01n"); steps = 100; delay = (0.01/frequency); printf ("Saw Steps = %dn", steps); end = (duration * 10000); for (i = 0 ; i < end; i++) { val = (i % steps) / ((float) steps); AD01 = (val * volts) + offset; swatch (delay); } } // // Generate Sine Wave Signal on A/D input AD02 // signal void AD02_Sine (void) { float volts; // peak-to-peak volatage float frequency; // output frequency in Hz float offset; // volatge offset float duration; // duration in Seconds float val; long i, end; volts = 1.4; offset = 1.6; frequency = 180; duration = 5.0; printf ("Sine Wave Signal on A/D input AD02n"); end = (duration * 10000); for (i = 0 ; i < end; i++) { val = __sin (frequency * (((float) STATES) / CLOCK) * 2 * 3.1415926); AD02 = (val * volts) + offset; swatch (0.0001); // in 100 uSec steps
  • 50. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 50 } } // // Generate Noise Signal on A/D input AD03 // signal void AD03_Noise (void) { float volts; // peak-to-peak volatage float frequency; // output frequency in Hz float offset; // volatge offset float duration; // duration in Seconds float val; long i, end; volts = 1.4; offset = 1.6; duration = 0.5; printf ("Noise Signal on A/D input AD03n"); end = (duration * 100000); for (i = 0 ; i < end; i++) { val = ((float) rand (0)) / 32767.0; AD03 = (val * volts) + offset; swatch (0.00001); // in 10 uSec steps } } // // Run Signal Functions at Startup // signal void Startup (void) { swatch (1.0); // wait 1.0 seconds AD01_Saw (); swatch (0.3); // wait 0.3 seconds AD02_Sine (); swatch (0.6); // wait 0.6 seconds AD03_Noise (); } Startup (); // Start the Signals define button "AD01 Saw Tooth", "AD01_Saw ()" define button "AD02 Sine Wave", "AD02_Sine ()" define button "AD03 Noise Signal", "AD03_Noise ()"
  • 51. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 51 B n có th kèm theo ch c năng dò l i cho nh ng hàm trong c a s Output Window – Command Page. >MyRegs () ---------- MyRegs() ---------- R0 R1 R2 R3 00 00 00 00 Cho nhi u tín hi u ch c năng ta có th dùng h p công c ToolBox cho các yêu c u kh n c p. Th c hi n phân tích (Performance Analyzer) µVision cho phép b n th c hi n vi n phân tích tính toán th i gian c a nh ng ng d ng tích h p Performance Analyzer. chu n b cho s phân tích tính toán th i gian, ta d ng vi c th c thi chương trình và m menu Debug - Performance Analyzer m h p tho i Setup Performance Analyzer. B n có th ch n các ký hi u hàm hay ánh tên hàm ho c m t dãy a ch khi dùng h p tho i Setup Performance Analyzer .
  • 52. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 52 Th c hi n các bư c th y vi c th c hi n phân tích: m h p tho i Performance Analyzer reset CPU và xóa các i m ng t n u chương trình b d ng khi b t u vi c o c m c a s Serial Window#1 và gõ l nh S , gõ D. Performance Analyzer cho ta th y bi u d ng c t trong m i ph m vi.bi u hình c t cho th y ph n trăm th i gian th c hi n o n mã trong m i ph m vi. Click vào m t c t th y thông tin th ng kê chi ti t. Phân tích tín hi u logic V i Logic Analyzer, µVision Debugger/Simulator cung c p m t màn hình th cho giá tr thay i c a bi n ho c VTREGs. Th c hi n các bư c sau th y vi c phân tích giá tr Logic ho t ng: M h p tho i Logic Analyzer S d ng h p tho i bi u di n các tín hi u b n mu n. M t ví d là AD01, AD02, AD03 và m t c u trúc như là current.time.sec. B n có th ch n gi a nhi u ki u m u. Ch y chương trình và hi n th m c logic ngõ ra Logic Analyzer cung c p m t màn hình tính toán th i gian chi ti t c a các tían hi u ã ch n.
  • 53. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 53 S d ng các chip ngo i vi ây là các thông s k thu t mà b n ph i bi t t o nh ng chương trình dùng các chip ngo i vi và nh ng t tính c a h 8051. nh ng thông s ư c c p trong chương này. B n có th s d ng các o n mã ư c gi i thi u có th nhanh chóng làm vi c v i 8051. ây không có các ch ơn t thi t b ngo i vi trong 8051. thay vào ó chip 8051 cung c p m t s s d ng a d ng các chip ngo i vi phân bi t gi a chúng v i nhau. các o n mã m u trong chương này cho ta bi t cách s d ng các h chip ngo i vi c bi t. Chú ý r ng có nhi u tùy ch n c u hình hơn ư c gi i thi u trong ph n này. • Start up code • Special function Register • Register bank • Interrupt service Rountine • Interrupt Enable Registors • Parallel Port I/O • Timer/counter • Serial Interface • Watchdog Timer • D/A Coverter • A/D Coverter • Power Redution Modes
  • 54. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 54 Mã kh i ng ( startup code ) Mã kh i ng ư c th c hi n ngay l p t c khi ta reset toàn b h th ng và nó th c hi n các thao tác sau: Ph thu c vào s khác nhau c a thi t b , nh ng c tính c bi t c a thi t b . Xóa toàn b các d li u (tùy ch n) Thi t l p tr ng thái ban u giá tr các ngăn x p và con tr ngăn x p(tùy ch n) Thi t l p tr ng thái ban u c a con tr ngăn x p ph n c ng 8051 Chuy n i i u khi n t i các bi n ư c thi t l p ho c các hàm chính c a C. Trình biên d ch Keil 51 các thi t b c bi t có các mã kh i ng khác nhau chút ít. M t mã kh i ng chung ư c cung c p trong t p tin ..C51LIBSTARTUP.A51. Ch c năng các thanh ghi c bi t (Special Function Registers) Các chip thi t b ngo i vi c a 8051 ư c truy nh p s d ng các thanh ghi có ch c năng c bi t ho c SFRs. SRFs ư c nh v trí bên trong chip m t cách tr c ti p có a ch t 80H n 0FFH. Nhà phát tri n Keil ã cung c p các công c g m các t p tin ho c các file tiêu có th nh nghĩa các thanh ghi nà cho b n. B n có th s d ng các file tiêu ư c cung c p s n ho c t t o cho mình m t file nh a ch các chip ngo i vi. Ki b n t o m t chương trình v i µVision b n có th chèn vi c nh nghĩa các thanh ghi c bi t c a thi t b b ng cách dùng menu trong c a s làm vi c.
  • 55. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 55 Nhi u chương trình m u trong chương này u s d ng o n mã b t u như sau: #include <reg51.h> Các t p tin nh nghĩa thanh ghi ư c lưu trong thư m c C:KEILC51INC. o n mã sau ây ư c trích t m t t p tin nh nghĩa thanh ghi cho các port song song I/O . sfr P0 = 0x80; // 8-bit I/O Port P0 sfr P1 = 0x90; // 8-bit I/O Port P1 sfr P2 = 0xA0; // 8-bit I/O Port P2 sfr P3 = 0xB0; // 8-bit I/O Port P3 B n có th nh các giá tr SFRs m t cách tr c ti p b ng các mã ngu n C các tiêu flie. sfr IE = 0xA8; // Interrupt Enable register at SFR address 0xA8 sbit EA = IE^7; // global Interrupt Enable Flag (bit 7 of SFR IE) Chú ý: Khi b n l y ho c ghi giá tr các thanh ghi c bi t b n c n ph i khai báo SFR trong t p tin ngu n. Bit ký hi u SFR ch có th nh nghĩa cho bit a ch c a thanh ghi SFR, mà nó ư c nh v theo a ch 0x80, 0x88, 0x90 … 0xF8. Register Banks ( các thanh ghi lưu tr ) Vi i u khi n 8051 ư c xây d ng d a vào các vùng nh căn b n v i tám thanh ghi thông d ng (R0 –R70). M i thanh ghi là m t thanh ghi byte ơn. Tám thanh ghi a d ng này có th qu n lý vi c lưu tr và các thanh ghi lưu tr . 8051 cung c p 4 thanh ghi lưu tr mà b n có th s d ng. Quá trình làm vi c cơ b n c a các thanh ghi d dàng ư c nh n th y khi b n th c hi n ng t. Dùng cho chương trình C trên 8051 thì ta không c n ch n ho c m thanh ghi vì chương trình ã m c inh ch n thanh ghi lưu tr 0. Các thanh ghi lưu tr 1, 2, 3 trong quá các quá trình ng t vì tránh vi c lưu tr và khôi ph c các ngăn x p. Các i u ki n ng t ( Interrupt Service Routines ) Trình biên d ch C51 cho phép vi t nh ng i u ki n ng t trong C. trình biên d ch ư c s d ng m t cách hi u qu b ng mã kh i u và mã k t thúc và i u ti t m các thanh ghi lưu tr . Các i u ki n ng t ư c khai báo như sau: void function_name (void) interrupt interrupt_number [using register_bank] Ch s ng t (interrupt number) giúp xác nh a ch véc tơ ng t c a hàm ng t. S d ng b ng sau xác nh ch s ng t: Interrupt Number Address Interrupt Number Address 0 (EXTERNAL INT 0) 0003h 16 0083h 1 (TIMER/COUNTER 0) 000Bh 17 008Bh 2 (EXTERNAL INT 1) 0013h 18 0093h 3 (TIMER/COUNTER 1) 001Bh 19 009Bh 4 (SERIAL PORT) 0023h 20 00A3h 5 (TIMER/COUNTER 2) 002Bh 21 00ABh 6 (PCA) 0033h 22 00B3h 7 003Bh 23 00BBh
  • 56. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 56 8 0043h 24 00C3h 9 004Bh 25 00CBh 10 0053h 26 00D3h 11 005Bh 27 00DBh 12 0063h 28 00E3h 13 006Bh 29 00EBh 14 0073h 30 00F3h 15 007Bh 31 00FBh Vi c s d ng các thu c tính cho ta có th ch rõ m t thanh ghi lưu tr trong su tt th i gian th c hi n hàm ng t. Nh ng i u ng t kho ng ng n có th hi u qu hơn không s d ng thu c tính, khi chúng s d ng thanh ghi lưu tr 0. b n có th ki m ch ng b ng hai o n mã essembler xem hi u qu c a chúng. Chú ý: Các hàm kèm theo i u ki n ng t c n ph i ư c biên t p v i ch th NOAREGS. Vi c này b o m r ng vi c biên d ch không phát sinh vi c thay i các thanh ghi tuy t i. Ví d sau cho ta th y m t hàm ng t tiêu bi u: #include <reg51.h> // Special Function Registers of 80C51 CPU #pragma NOAREGS // do not use absolute register symbols (ARx) // for functions called from interrupt routines. static void HandleTransmitInterrupt (void) { : : } static void HandleReceiveInterrupt (void) { : : } #pragma AREGS // for other code it is save to use ARx symbols static void com_isr (void) interrupt 4 using 1 { if (TI) HandleTransmitInterrupt (); if (RI) HandleReceiveInterrupt (); } Trong ví d trên i u ki n ng t chi ch s ng t 4 ư c thi t l p. Tên c a hàm ng t là com_isr. Khi l nh ng t ư c th c hi n s kéo theo, các mã m c ư c lưu vào thanh ghi CPU và ch n thanh ghi lưu tr 1. Khi th t c ng t k t thúc thì giá tr các thanh ghi ư c khôi ph c. Sau ây là o n mã sinh ra b i l nh ng t k trên. Chú ý r ng n i dung thanh ghi lưu tr s ư c hoán i và ư c khôi ph c l i sau khi thoát. ; FUNCTION com_isr (BEGIN) 0000 C0E0 PUSH ACC ; Save the Accumulator and Data Pointer 0002 C083 PUSH DPH 0004 C082 PUSH DPL 0006 C0D0 PUSH PSW ; Save PSW (and the current Register Bank) 0008 75D008 MOV PSW,#08H ; This selects Register Bank 1
  • 57. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 57 : : 0052 D0D0 POP PSW ; Restore PSW (and prior reg bank) 0054 D082 POP DPL 0056 D083 POP DPH 0058 D0E0 POP ACC ; Restore the Accumulatorand DPTR 005A 32 RETI ; FUNCTION com_isr (END) Các thanh ghi cho phép ng t (Interrupt Enable Registers) 8051 cung c p i u ki n ng t cho nhi u chip ngo i vi. Quá trình ng t hoàn toàn ph thu c vào bit EA c a Interrupt Enable (IE) SFR. Khi bit EA lên m c 1 thì quá trình ng t ư c th c hi n. Khi bit EA xu ng m c 0 thì quá trình ng t b vô hi u. M i quá trình ng t thì ư c ki m soát b i than ghi IE SFR. Tên m t s chip 8051 có th có hơn 1 thanh ghi IE. Ki m tra tài li u v chip ó t n d ng các quá trình ng t. Các port song song vào/ra (Parallel Port I/O) M t chip 8051 bình thư ng có 4 port vào ra song song mà b n có th k t n i v i các thi t b ngo i vi. Chúng là Port 0, Port 1, Port 2, Port 3. M t s IC 8051 m rông có t i 8 Port xu t nh p. Port Direction Width Alternate use P0 I/O 8 bits Mux'd. 8-bit bus: A0-A7 & D0-D7 P1 I/O 8 bits P1.0-P1.7: Available for user I/O P2 I/O 8 bits Mux'd. 8-bit bus: A8-A15 P3 I/O 8 bits P3.0: RXD (Serial Port Receive) P3.1: TXD (Serial Port Transmit) P3.2: /INT0 (Interrupt 0 input) P3.3: /INT1 (Interrupt 1 input) P3.4: T0 (Timer/Counter 0 Input) P3.5: T1 (Timer/Counter 1 Input) P3.6: /WR (Write Data Control) P3.7: /RD (Read Data Control) Các Port trên IC 8051 bình thư ng thì không có các d li u trên thanh ghi i u khi n. Thay vào ó, các chân c a Port 1, Port 2, Port 3 m i chân có th tăng lên mà chúng có th là u nh p hay u xu t. ghi giá tr vào m t Port b n ch ơn gi n ghi giá tr tùng chân c a Port ó. l y giá tr t Port trư c h t giá tr c a chân ph i ư c ghi là 1 ( ây cũng là giá tr ban u sau khi RESET ). Ví d sau là chương trình ghi và xu t giá tr các Port I/O: sfr P1 = 0x90; // SFR definition for Port 1 sfr P3 = 0xB0; // SFR definition for Port 3 sbit DIPswitch = P1^4; // DIP switch input on Port 1 bit 4 sbit greenLED = P1^5; // green LED output on Port 1 bit 5 void main (void) { unsigned char inval;
  • 58. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 58 inval = 0; // initial value for inval while (1) { if (DIPswitch == 1) { // check if input P1.4 is high inval = P1 & 0x0F; // read bit 0 .. 3 from P1 greenLED = 0; // set output P1.5 to low } else { // if input P1.4 is low greenLED = 1; // set output P1.5 to high } P3 = (P3 & 0xF0) | inval; // output inval to P3.0 .. P3.3 } } Timer/Counter ( b nh th i và b m ) IC 80C52 có ba b Timer/Counter (Timer 0, Timer 1, và Timer 2). Timer 1 và Timer 0 có các ch c năng thông thư ng như nhau trong khi Timer 2 có kh năng ng d ng cao hơn. Các timer có th ho t ng c l p v i nhau v i các ki u nh th i, ki u m, ki u phát t c baud (cho các Port tu n t ). Chương trình sau là m t ví d dùng Timer 1 t o m t xung vuông có t n s 10KHz. #include <reg52.h> /* * Timer 1 Interrupt Service Routine: executes every 100 clock cycles */ static unsigned long overflow_count = 0; void timer1_ISR (void) interrupt 3 { overflow_count++; // Increment the overflow count } /* * MAIN C function: sets Timer1 for 8-bit timer w/reload (mode 2). * The timer counts to 255, overflows, is reloaded with 156, and * generates an interrupt. */ void main (void) { TMOD = (TMOD & 0x0F) | 0x20; // Set Mode (8-bit timer with reload) TH1 = 256 - 100; // Reload TL1 to count 100 clocks TL1 = TH1; ET1 = 1; // Enable Timer 1 Interrupts TR1 = 1; // Start Timer 1 Running EA = 1; // Global Interrupt Enable while (1); // Do Nothing (endless-loop): the timer 1 ISR will
  • 59. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 59 // occur every 100 clocks. Since the 80C51 CPU runs // at 12 MHz, the interrupt happens 10 KHz. } B bi n i tương t – s Các b bi n i tương t s A/D là các linh ki n ch có trên m t s thành viên c a h 8051 nhưng khá ph bi n. Các b bi n i A/D thư ng ư c i u khi n thông qua thanh ghi ch ADCON, thanh ghi này ư c gán cho m t v trí còn tr ng nào ó trong o n nh dành cho các SFR, thanh chi ADCON cho phép ngư i s d ng ch n l a kênh c n ư c bi n i A/D, b u m t bi n i m i và ki m tra tr ng thái c a l n bi n i hi n t i. Các b bi n i A/D i n hình c n 40 chu kỳ l nh ho c ít hơn hoàn t t vi c bi n i và chúng ư c c u hình t o ra ng t vào lúc hoàn t t vi c bi n i, vi c này làm cho b vi i u khi n nh hư ng n m t vector ng t c th dành cho vi c bi n i A/D. thông thư ng khuy t i m c a b bi n i A/D là b này yêu c u b vi i u khi n ph i m c tính c c thay vì i vào ngh ch ng t do vi c bi n i hoàn t t. K t qu c a vi c bi n i ư c c t m t SFR khác ho c m t c p SFR, ph thu c vào phân giãi c a b bi n i. Chương trình sau là ví d chuy n i tương t t tín hi u ngõ vào sang s : #include <ADUC812.H> #include <stdio.h> void main (void) { unsigned char chan_2_convert; SCON = 0x50; // Configure the serial port. TMOD |= 0x20; TH1 = 0xA0; TR1 = 1; TI = 1; // Configure A/D to sequentially convert each input channel. ADCCON1 = 0x7C; // 0111 1100 while (1) { unsigned int conv_val; unsigned char channel; // Start a conversion and wait for it to complete. chan_2_convert = (chan_2_convert + 1) % 8; ADCCON2 = (ADCCON2 & 0xF0) | chan_2_convert; SCONV = 1; while (ADCCON3 & 0x80); // Read A/D data and print it out. channel = ADCDATAH >> 4;
  • 60. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 60 conv_val = ADCDATAL | ((ADCDATAH & 0x0F) << 8); printf ("ADC Channel %bu = 0x%4.4Xrn", channel, conv_val); } } B bi n i s sang tương t ( D/A coverter) B bi n i nàychuye63n i tían hi u s i vào thành tín hi u dòng i n ngõ ra. IC Philips 87LPC769 là m t trong các IC có tích h p b chuy n i s – tương t . IC Philips 87LPC769 g m 2 kênh, và b chuy n i 8bit D/A d dàng th c hi n v i chương trình. Ví d sau cho ta th y cách dùng b chuy n i s d ng D/A SFRs. /* * This program generates sawtooth waveforms on the DAC * of the Philips 87LPC769. */ #include <REG769.H> void main (void) { // Disable the A/D Converter (this is required for DAC0) ADCI = 0; // Clear A/D conversion complete flag ADCS = 0; // Clear A/D conversion start flag ENADC = 0; // Disable the A/D Converter // Set P1.6 and P1.7 to Input Only (Hi Z). P1M2 &= ~0xC0; P1M1 |= 0xC0; ENDAC0 = 1; // Enable the D/A Converters ENDAC1 = 1; while (1) { unsigned int i; // Create a sawtooth wave on DAC0 and the // opposite sawtooth wave on DAC1. for (i = 0; i < 0x100; i++) { DAC0 = i; DAC1 = 0xFF - i; } } }
  • 61. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 61 i u khi n c p i n (Power Reduction Modes) Ch ngh (Idle mode) ư c kích ho t b ng cách thi t l p bit IDLE b ng 1. ch ngh làm d ng m i vi c th c thi chương trình. Các n i dung trên RAM ư c b o toàn và m ch dao ng ti p t c ho t ng nhưng xung clock b khó không n ư c CPU. Các b nh th i và UART ti p t c th c hi n bìn thư ng các ch c năng c a chúng. Ch ngh ư c k t thúc b ng cách kích ho t m t i m ng t b t kỳ. Khi vi c th c thile65nh ng t ISR k t thúc thì h th ng s làm vi c l i t lênh set bit IDLE lên 1. Sau ây là chương trình th c hi n ch ngh : sfr PCON = 0x87; void main (void) { while (1) { task_a (); task_b (); task_c (); PCON |= 0x01; /* Enter IDLE Mode - Wait for enabled interrupt */ } } Ch gi m c p i n ( power down mode) ư c thi t l p b ng cách set bit PDWN lên 1. trong ch nàyma5ch dao ng trong chip b d ng. Như v y các b nh th i và UART cũng như vi c th c hi n ph n m m u t m ngưng. Mi n là có i n áp t i thi u 2V t vào chip thì các n i dung lưu trên RAM v n ư c b o toàn. Cách duy nh t bu c b vi i u khi n ra kh i ch gi m công su t là áp t thi t l p l i (RESET) b vi i u khi n này khi c p i n. Sau ây là chương trình th hi n quá trình giãm c p i n: sfr PCON = 0x87; void main (void) { while (1) { task_a (); task_b (); task_c (); PCON |= 0x02; /* Enter Power Down Mode */ } } B nh th i WATCHDOG B nh th i Watchdog có s n trên nhóm m r ng c a các thành viên h 8051. m c ích c a b nh th i Watchdog là thi t l p l i (reset) l i b vi i u khi n n u b nh th i không ư c cung c p m t trình t thao tác c th trong m t kho ng th i gian xác nh. i u này ngăn ng a vi c n p l i Wachdog m t cách trùng kh p ng u nhiên b i các ph n m m khác. Trong h 8051, watchdog thư ng ư c th c hi n dư i d ng m t b nh th i khác trên chip, b nh th i này l p t l gi m t n s m ch dao ng h th ng và k n m xung clock ã ư c chia t l . Khi b nh th i quay vòng, h th ng thi t l p l i t u (reset). Watchdog có th ư c c u hình i v i t c quay vòng và thư ng có th ư c s d ng làm b nh th i khác m c dù ây là b nh th i có phân gi i th p.
  • 62. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 62 Chương trình sau ây cho th y cách thi t l p giá tr ban u và reset watchdog: #include <reg51f.h> /* This function adjusts the watchdog timer compare value to the current * PCA timer value + 0xFF00. Note that you must write to CCAP4L first, * then write to CCAP4H. */ void watchdog_reset (void) { unsigned char newval; newval = CH + 0xFF; CCAP4L = 0; CCAP4H = newval; } void main (void) { unsigned int i; /* Configure PCA Module 4 as the watchdog and make sure it doesn't time-out immediately. */ watchdog_reset (); CCAPM4 = 0x48; /* Configure the PCA for watchdog timer. */ CMOD = (CMOD & 0x01) | 0x40; /* Start the PCA Timer: From this point on, we must reset the watchdog timer every 0xFF00 clock cycles. If we don't, the watchdog timer will reset the MCU. */ CR = 1; /* Do something for a while and make sure that we don't get reset by the watchdog. */ for (i = 0; i < 1000; i++) { watchdog_reset (); } /* Stop updating the watchdog and we should get reset. */ while (1); }
  • 63. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 63 PH N III THI CÔNG M CH VÀ NG D NG L P TRÌNH C TRONG AT89C2051 I. i u khi n led ơn Sơ nguyên lý: Code C: #include < at892051.h > char const num[ ] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 }; void wait (void) { ; } void main( void ) { unsigned int i; unsigned char j; P1 = 0; while(1){ for( j = 0; j < 8; j++ ) { P1 = num[ j ]; for ( i = 0; i < 10000; i++ ) { wait(); } } } }
  • 64. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 64 II. NG D NG CHO 2 LED 7 O N V I NÚT NH N Sơ nguyên lý: Code C: #include < at892051.h > char num[ ] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void wait (void) { ; } void main ( void ){ unsigned char cnt, right; unsigned int i; P1 = 0; P3 = 0; for( ;; ){ for (right=0;right<3;right++) { P3 = right; for (cnt=0;cnt<10;cnt++) { P1 = num[cnt]; for (i = 0; i < 10000; i++) { wait(); } } } } }
  • 65. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 65 III. NG D NG CHO LED MATRIX 5x7. • Sơ Nguyên Lý: • Code C: #include < at892051.h > char const pat[5]={ 0x3f, 0x02, 0x04, 0x02, 0x3f }; void wait (void) { ; } void main( void ) { unsigned char cnt, col; unsigned int i; P3 = 0; P1 = 0; for( ;; ) { col = 1; for (cnt=0;cnt<5;cnt++) { for(col = 0;col < 32;col<<=1) { P1 = pat[cnt]; P3 = col; for (i = 0; i < 10000; i++) { wait();
  • 66. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 66 } } } } } SO N TH O VÀ BIÊN D CH CHƯƠNG TRÌNH CHO H VI I U KHI N 8051 1. So n th o chương trình Dùng ch c năng Edit c a NC (Norton Commander) ho c b t c ph n m m so n th o văn b n nào khác. Lưu dư i d ng file .A51 ho c .ASM, ho c .C v.v.. 2. Chuy n thành file object (.obj) b ng chương trình A51.exe, ho c ASM51.exe. A51 baitap.a51 [enter] ASM51 baitap.a51 [enter] Chương trình d ch s t o ra file baitap.obj và baitap.lsl. File.obj là file cơ s cho vi c liên k t thành chương trình th c thi ư c. Còn file .lsl là file văn b n ch a các l nh, mã l nh và a ch tương ng. File .lsl còn ch a các thông báo c a chương trình biên d ch v nh ng l i cú pháp (n u có). Sau khi th c hi n biên d ch xong s nh n ư c thông báo: ASSEMBLY COMPLETE, NO ERRORS FOUND Ho c ASSEMBLY COMPLETE, x ERRORS FOUND (y) V i x là s l i cú pháp và y là s th t c a hàng l nh b l i cu i cùng trong chương trình. M file baitap.lsl xem các l i. Sau ó, m file baitap.a51, ho c file baitap.asm s a các l i r i ti n hành biên d ch l i. 3. Chuy n file object thành file hex (.HEX) b ng chương trình OHS51.EXE ho c OH.EXE. Ohs51.exe baitap.obj [enter] Oh.exe baitap.obj [enter]
  • 67. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 67 PH N IV K T LU N VÀ HƯ NG PHÁT TRI N TÀI K T LU N Trong tài này chúng tôi tìm hi u và nghiên c u l p trình C cho h vi i u khi n 8051 và m i ch i vào m t s ng d ng nh như là i u khi n led ơn , led b y o n, và led ma tr n . Tôi chưa khai thác h t t m h n c a ph n m m Keil C cũng như chip AT89C2051. Kh o sát qua ph n m m Keil C. Th c hi n biên d ch mã ngu n C cho led ơn, led 7 o n, led matrix 5x7. HƯ NG PHÁT TRI N Hư ng phát tri n c a án là: dùng ngôn ng l p trình C ng d ng vào h th ng nhúng c a h vi i u khi n 8051 ho c các h vi i u khi n khác như là Philips P89C51Rx2/P89V51 Rx2 mà không ch xu t ơn thu n là led ơn , mà là led matrix 5x7, matrix 8x8 , ho c LCD 1 line, LCD 2 line, LCD 4 line…Và ng d ng ngôn ng l p trình C thi t k nh ng ng d ng th c ti n ph c v cho i s ng c a con ngư i.
  • 68. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 68 TÀI LI U THAM KH O Datasheet AT8051/AT89C51/AT89C2051 Preliminary (Complete) c a hãng Atmel Corporation. User’s Guide for Keil µVision. Ph m Quang Trí, Giáo trình Vi x lý c a trư ng HCN TP.HCM. Giáo trình Vi x lý c a trư ng HBKTPHCM. Website : http://www.keil.com / Sách embedded C Sách Ngôn ng C c a các tác gi Quách Tu n Ng c . Handel-C Language Reference Manual.
  • 69. Án T t Nghi p GVHD:Huỳnh Minh Ng c SVTH:Lê Văn Long & ng c Trung CDDT6K Trang 69 M C L C 1. Ph n I t ng quan tài .......................................................... trang 4 • t v n .............................................................. trang 4 • N i dung tài 2. Ph n II N i dung tài........................................................... trang 5 Chương 1: Gi i thi u b vi i u khi n ĂT9C2051 và 89C51 • Gi i thi u b vi i u khi n AT89C2051................ trang 5 • Gi i thi u sơ lư c v vi i u khi n AT89C51 ....... trang 19 Chương 2: Gi i thi u ph n m m Keil µVision............ trang 21 3. Ph n III Thi công m ch và ng d ng l p trình C trong AT89C2051 trang 62 4. Ph n IV K t lu n và Hư ng phát tri n tài ............................. trang 67 5. Tài li u tham kh o............................................................. trang 68 6. M c l c ............................................................................ trang 69