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