báo cáo bài tập lớn môn vi xử lý - Pdf 22

báo cáo bài tập lớn môn Vi xử lý - nhóm I - Lớp ĐT11.K45
Phần I:
Tổng quan về các thiết bị Vi Xử Lý
Chương 1 :
Giới thiệu chung về chíp AT89C51
I. Giới thiệu AT89C51
AT89C51 là một bộ vi xử lý 8 bit, loại CMOS, có tốc độ cao và công
suất thấp với bộ nhớ Flash có thể lập trình được. Nó được sản xuất với công
nghệ bộ nhớ không bay hơi mật độ cao của hãng Atmel, và tương thích với
họ MCS-51
TM
về chân ra và tập lệnh.

Sơ đồ khối của AT89C51
1
báo cáo bài tập lớn môn Vi xử lý - nhóm I - Lớp ĐT11.K45
AT89C51 có các đặc trưng cơ bản như sau: 4 K byte Flash, 128 byte
RAM, 32 đường xuất nhập, hai bộ định thời/đếm 16-bit, một cấu trúc ngắt
hai mức ưu tiên và 5 nguyên nhân ngắt, một port nối tiếp song công, mạch
dao động và tạo xung clock trên chip. AT89C51 được thiết kế với logic tĩnh
cho hoạt động có tần số giảm xuống 0 vaứ hỗ trợ hai chế độ tiết kiệm năng
lượng được lựa chọn bằng phần mềm. Chế độ nghỉ dừng CPU trong khi 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ế độ nguồn giảm duy trì nội dung của RAM nhưng không cho
mạch dao động cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác
của chip cho đến khi có reset cứng tiếp theo.
I.1 Mô tả các chân
Các cấu hình chân ra của AT89C51
2
báo cáo bài tập lớn môn Vi xử lý - nhóm I - Lớp ĐT11.K45
Như vậy AT89C51 có tất cả 40 chân với các chức năng như sau:

INT0
Ngõ vào ngắt ngoài 0
P3.3
INT1
Ngõ vào ngắt ngoài 1
P3.4 T0 Ngõ vào bên ngoài của bộ định thời 1
P3.5 T1 Ngõ vào bên ngoài của bộ định thời 0
P3.6
WR
Điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7
RD
Điều khiển đọc bộ nhớ dữ liệu ngoài
Port 3 cũng nhận một vài tín hiệu điều khiển cho việc lập trình Flash và
3
báo cáo bài tập lớn mơn Vi xử lý - nhóm I - Lớp ĐT11.K45
kiểm tra chương trình.
- RST (9)
Ngõ vào reset. Mức cao trên chân này trong 2 chu kỳ máy trong khi
bộ dao động đang hoat động sẽ reset AT89C51.
Mạch reset tác động bằng tay và tự động reset khi khởi động máy
- ALE/
PROG
(30)
ALE laứ moọt xung ngoừ ra ủeồ choỏt byte thaỏp cuỷa ủũa chổ trong khi
truy xuaỏt boọ nhụự ngoaứi. Chãn naứy cuừng laứm ngoừ vaứo xung laọp trỡnh
(
PROG
) trong thụứi gian laọp trỡnh cho Flash.
Khi hoát o ng b nh th ng, xung ngo ra ALE luủ ọ ỡ ửụứ ừ ơn co tần soự ỏọ


EA
(External Access Enable) laứ chãn cho pheựp truy xuaỏt boọ nhụự
chửụng trỡnh ngoaứi (baột ủầu tửứ ủũa chổ tửứ 0000H ủeỏn FFFFH).
EA
= 0 cho pheựp truy xuaỏt boọ nhụự chửụng trỡnh ngoaứi, ngược lại
EA
=1 seừ thửùc thi chửụng trỡnh bẽn trong chip
Tuy nhiẽn, lửu yự raống neỏu bit khoaự 1 (lock-bit 1) ủửụùc laọp trỡnh,
EA
seừ ủửụùc choỏt bẽn trong khi reset.
Chãn naứy cuừng nhaọn ủieọn aựp cho pheựp laọp trỡnh Vpp=12V khi
laọp trỡnh Flash (khi ủoự điện aựp laọp trỡnh 12V ủửụùc chón).
- XTAL1 vaứ XTAL2
XTAL1 vaứ XTAL2 laứ hai ngoừ vaứo vaứ ra cuỷa moọt boọ khueỏch ủái
ủaỷo cuỷa mách dao ủoọng, ủửụùc caỏu hỡnh ủeồ duứng nhử moọt boọ dao
ủoọng trẽn chip.

Khõng coự yẽu cầu naứo về chu kyứ nhieọm vú cuỷa tớn hieọu xung
clock bẽn ngoaứi do tớn hieọu naứy phaỷi qua moọt flip-flop chia hai trửụực khi
ủeỏn mách táo xung clock bẽn trong, tuy nhiẽn caực chi tieỏt kyừ thuaọt về
thụứi gian mửực thaỏp vaứ mửực cao, ủieọn aựp cửùc tieồu vaứ cửùc ủái cần
phaỷi ủửụùc xem xeựt.
I.2 Các chế độ đặc biệt
I.2.1 Chế độ nghỉ
Trong cheỏ ủoọ nghổ, CPU tửù ủi vaứo tráng thaựi nguỷ trong khi taỏt
caỷ caực ngoái vi bẽn trong chip vn tớch cửùc. Cheỏ ủoọ naứy ủửụùc ủiều
khieồn bụỷi phần mềm. Noọi dung cuỷa RAM trẽn chip vaứ cuỷa taỏt caỷ caực
thanh ghi chửực naờng ủaởc bieọt vn khõng ủoồi trong khi thụứi gian tồn tái
cheỏ ủoọ naứy. Cheỏ ủoọ nghổ coự theồ ủửụùc keỏt thuực bụỷi moọt ngaột baỏt

ALE PSEN PORT O PORT 1 PORT 2 PORT 3
Nghổ Bẽn trong 1 1 Dửừ
lieọu
Dửừ
lieọu
Dửừ
lieọu
Dửừ
lieọu
Nghổ Bẽn ngoaứi 1 1 Thaỷ
noồi
Dửừ
lieọu
Dửừ
lieọu
Dửừ
lieọu
Nguồn
giaỷm
Bẽn trong 0 0 Dửừ
lieọu
Dửừ
lieọu
Dửừ
lieọu
Dửừ
lieọu
Bẽn ngoaứi 0 0 Thaỷ
noồi
Dửừ

ủửụùc laỏy mu vaứ ủửụùc choỏt khi
reset, hụn nửừa vieọc laọp trỡnh trẽn Flash
bũ caỏm
3 P P U Nhử cheỏ ủoọ 2, caỏm thẽm vieọc kieồm
tra chửụng trỡnh
4 P P P Nhử cheỏ ủoọ 3, caỏm thẽm vieọc thửùc thi
chửụng trỡnh ngoaứi

7
báo cáo bài tập lớn mơn Vi xử lý - nhóm I - Lớp ĐT11.K45
Chương 2:
bộ nhớ ngồi (RAM, ROM) - cách ghép với VXL
I.4 Tổ chức bộ nhớ
AT89C51 coự khõng gian boọ nhụự riẽng cho chửụng trỡnh vaứ dửừ
lieọu, caỷ hai ủều ủửụùc ủaởt bẽn trong chip, ngoaứi ra ta coự theồ mụỷ roọng
boọ nhụự chửụng trỡnh vaứ boọ nhụự dửừ lieọu baống caựch sửỷ dúng caực
chip nhụự bẽn ngoaứi.
Khơng gian nhớ chương trình của AT89C51
Bản thân bên trong chip vi điều khiển có dung lượng bộ nhớ chương trình
là 4K có địa chỉ bắt đầu từ 0000h đến 0FFFh. Khi mở rộng bộ nhớ chương trình
ngồi thì bộ nhớ bên trong chip khơng được sử dụng và khơng gian nhớ chương
trình ngồi có thể mở rộng tối đa tới 64K bắt đầu từ địa chỉ 0000h tới FFFFh.
Toựm taột caực khõng gian nhụự dửừ lieọu trong IC AT89C51
Hỡnh veừ trẽn cho ta thaỏy caỏu truực cuỷa khõng gian nhụự cuỷa
8
Boọ nhụự
chửụng
trỡnh
ủửụùc
chón

2E
6F 6E
6D 6C 6B 6A
69
68
2D
67
66 65 64 63 62 61 60
2C
5F
5E
5D 5C 5B 5A
59 58
2B
57 56 55 54 53 52 51 50
2A
4F
4E
4D 4C 4B 4A
49
48
29
47 46 45 44 43 42 41 40
28
3F
3E
3D 3C 3B 3A
39
38
27

18
Bank 217
10
Bank 10F
08
Bank thanh ghi 0
(maởc ủũnh cho R0-R7)
07
00
RAM ủa duùng
7F
30
RAM
ẹũa chổ
bit
ẹũa chổ
byte
87 86 85 84 83 82 81 80
80
P0
khoõng ủửụùc ủũa chổ hoựa
bit
81
SP
khoõng ủửụùc ủũa chổ hoựa
bit
82
DPL
khoõng ủửụùc ủũa chổ hoựa
bit

9F 9E
9D 9C 9B 9A
99 98
98
SCON
khoõng ủửụùc ủũa chổ hoựa
bit
99
SBUF
A7 A6 A5 A4 A3 A2 A1 A0
A0
P2
AF – – A
C
A
B
A
A
A9 A8
A8
IE
– – – BC BB BA B9 B8
B8
IP
E7 E6 E5 E4 E3 E2 E1 E0
E0
ACC
D7 D6 D5 D4 D3 D2 – D0
D0
PSW

chổ (A0-A7), kieồu saộp xeỏp naứy ủửụùc gói laứ saộp xeỏp ủa hụùp.
Saộp xeỏp ủa hụùp hoát ủoọng nhử sau: trong nửỷa chu kyứ ủầu cuỷa
chu kyứ boọ nhụự, byte thaỏp cuỷa ủũa chổ ủửụùc cung caỏp bụỷi port 0 vaứ
ủửụùc choỏt nhụứ tớn hieọu ALE. Trong nửỷa sau cuỷa chu kyứ boọ nhụự, port 0
ủửụùc sửỷ dúng laứm bus dửừ lieọu vaứ dửừ lieọu ủửụùc ủóc hay ghi.
Ta sửỷ dúng IC 73HC373 laứm mách choỏt dửừ lieọu, giửừ cho byte
thaỏp cuỷa bus ủũa chổ oồn ủũnh trong caỷ chu kyứ boọ nhụự
II.1 Bộ nhớ bán dẫn.
Có hai loại chính là RAM và ROM. Riêng với RAM lại có 2 loại là SRAM
(RAM tĩnh) và DRAM (RAM động).
- Bộ nhớ chỉ có thể đọc ROM (Read-Only-Memory) là loại có nội dung
được viết sẵn một lần khi chế tạo và được giữ mãi cố định (non volatile).
10
V+
Tin hiệu
địa chỉ
Các dây bit (j cột)
Các dây từ
(i hàng)
1
1 1
1

0

0
0

0
0

thâm nhập vào đó. Với EEPROM việc nạp điện tử tương tự như EPROM. Để xóa
EEPROM, một lớp kênh màng mỏng oxit giữa vùng cửa nổi trải xuống dưới đế và
cực máng đóng vai trò quan trọng. Các lớp cách điện là không lý tưởng, các điện
tử có thể thấm qua lớp phân cách với một xác suất thấp. Xác suất này sẽ tăng lên
khi bề dày của lớp giảm đi và điện thế giữa hai điện cực ở hai mặt tăng lên. Muốn
phóng các điện tích trong vùng cửa nổi, một điện thế (-20V) được đặt vào cực cửa
điều khiển và cực máng. Lúc này các điện tử âm trong cửa nổi được chảy về cực
máng qua kênh màng mỏng oxit và số liệu lưu trữ được xóa.
Flash memory tương tự như EEPROM nhưng Flash memory xóa tất cả
tong một lần trong khi EEPROM phải xóa từng bit một.
- Các chip RAM (Random Access Memory) là loại bộ nhớ có thể ghi/đọc
được. Đây là loại bộ nhớ không cố định (volatile) tức là thông tin lưu trữ trong
nó sẽ bị mất đi khi cắt nguồn điện nuôi. RAM bán dẫn có hai loại là SRAM
(Static RAM-Ram tĩnh) và DRAM (Dinamic RAM-Ram động).
Một ô nhớ SRAM lưu trữ thông tin bởi trạng thái của một mạch lật (Flip-
flop) với đầu ra của nó ở một trong hai mức logic thấp. Thuật ngữ ‘tĩnh’ chỉ ra
rằng khi nguồn nuôi chưa bị cắt thì nội dung ô nhớ vẫn được giữ nguyên.
11
báo cáo bài tập lớn môn Vi xử lý - nhóm I - Lớp ĐT11.K45
Trong khi đó, bộ nhớ DRAM lưu trữ thông tin bằng mức điện áp trên một tụ
điện có điện dung C. Lượng điện tích trên tụ biến đổi theo thời gian do sự
phóng hay nạp điện qua các điện trở khóa (có giá trị không thể bằng vô cùng).
Vì vậy thuật ngữ ‘động’ hàm ý rằng mặc dù chưa cắt nguồn nuôi nhưng vẫn
phải thường xuyên phục hồi thông tin trong DRAM. Quá trình hồi phục được
gọi là ‘làm tươi’ ô nhớ.
Moọt vi maùch nhụự thửụứng coự caỏu truực bao goàm: nhoựm tớn hieọu
ủũa chổ, nhoựm tớn hieọu dửừ lieọu (data output/input), tớn hieọu choùn voỷ,
tớn hieọu ủieàu khieồn ủoùc/ghi
Một số họ IC nhớ thông dụng:
Rom: Họ 28/27XXX (EPROMs) : 2704 (512K.8bit); 2708 (1K.8bit); 2716

A
n
D
m
WECSOE
Vaứo/r
a dửừ
lieọu
Chaõn
choùn
voỷ
ẹoùc
Ghi
báo cáo bài tập lớn mơn Vi xử lý - nhóm I - Lớp ĐT11.K45
Mi moọt mách nhụự ủửụùc phoỏi gheựp vụựi chip cần phaỷi ủửụùc
chip quy chieỏu tụựi moọt caựch chớnh xaực khi thửùc hieọn caực thao taực
ghi/ủóc. ẹiều ủoự coự nghúa laứ mi mách nhụự phaỷi ủửụùc gaựn moọt
vuứng riẽng bieọt coự ủũa chổ xaực ủũnh naốm trong khõng gian ủũa chổ toồng
theồ cuỷa boọ nhụự. Vieọc gaựn ủũa chổ cú theồ cho mách nhụự ủửụùc thửùc
hieọn nhụứ moọt xung chón voỷ laỏy tửứ mách giaỷi maừ ủũa chổ.

Sụ ủồ toồng quaựt gheựp noỏi boọ nhụự ngoaứi vụựi AT89C51
II.2 Ghép nối tăng dung lượng bộ nhớ.
Caực vi mách nhụự coự dung lửụùng coỏ ủũnh vớ dụ 4K, 8K . v.v. . Vỡ
vaọy ta phaỷi gheựp noỏi caực vi mách nhụự naứy moọt caựch thớch hụùp ủeồ
coự ủửụùc moọt boọ nhụự ngoaứi theo ủuựng yẽu cầu thieỏt keỏ. Coự hai caựch
gheựp noỏi chớnh ủeồ taờng dung lửụùng boọ nhụự laứ gheựp noỏi theo haứng
dóc (taờng ủầu vaứo ủũa chổ) vaứ gheựp noỏi theo haứng ngang (taờng ủầu ra
dửừ lieọu).
- Gheựp noỏi theo haứng ngang (taờng soỏ bit dửừ lieọu)

2
n
.m
ICk
2
n
.m
IC2
2
n
.m
Address Bus (A0-An-1)

CS
báo cáo bài tập lớn mơn Vi xử lý - nhóm I - Lớp ĐT11.K45
- Gheựp noỏi theo haứng dóc (taờng soỏ bit ủũa chổ)
Giaỷ sửỷ ta coự moọt IC nhụự coự dung lửụùng 2
n
.m bit, muoỏn coự moọt
boọ nhụự coự dung lửụùng 2
n+k
.m bit ta gheựp 2
k
IC nhụự 2
n
.m bit với bộ giải mã
địa chỉ có k đường địa chỉ vào chọn 1 trong số 2
k

đường ra.

.
IC 1
2
n
.m
CE
IC 2
2
n
.m
CE
IC 2
k
2
n
.m
CE
Mách
giaỷi
maừ
ủũa chổ
m bit
báo cáo bài tập lớn môn Vi xử lý - nhóm I - Lớp ĐT11.K45
Vớ duù gheựp noỏi AT89C51 vụựi SRAM 6264 (8Kx8)
15
báo cáo bài tập lớn môn Vi xử lý - nhóm I - Lớp ĐT11.K45
Chửụng trỡnh:
; Truy xuat bo nho du lieu ngoai su dung cong vao ra
SRAM_DATA DATA 30h ; SRAM Data
UART_BUSY BIT 00h ; UART Busy Flag

;
ORG PROG+0030h ; Bat dau chuong trinh chinh
START:
MOV PCON,#10000000b ; Tang gap doi toc do baud
MOV TMOD,#00100001b ; Bo dinh thoi 1 o che do 2,Bo dinh thoi0 o che do 1
MOV TH1, #0FFh ; Toc do baud = 57600 bps voi thach anh 11.0592 (Byte cao bo dinh
thoi 1)
MOV SCON,#01010000b ; Che do 1 port noi tiep (khoi dong port noi tiep)
SETB ES ; Cho phep ngat do port noi tiep(IE.4)
SETB EA ; Cho phep ngat(IE.7)
SETB TR1 ; Khoi dong bo dinh thoi 1(TCON)
CLR UART_BUSY
; Vi du ghi bang chu cai A,B,C . . . vao RAM
MOV DPTR,#SRAM_ADDR
MOV SRAM_DATA,#'A'
Lap1: MOV A,SRAM_DATA
CALL SRAM_WRITE
INC SRAM_DATA
16
báo cáo bài tập lớn môn Vi xử lý - nhóm I - Lớp ĐT11.K45
MOV A,SRAM_DATA
CJNE A,#'Z'+1,INC_SRAM_ADDR
MOV SRAM_DATA,#'A'
INC_SRAM_ADDR:
INC DPTR
MOV A,DPH
CJNE A,#20h,Lap1
; Doc byte tu RAM ra roi gui toi port noi tiep
MOV DPTR,#SRAM_ADDR
Lap2: CALL SRAM_READ

MOV HI_ADDR_PORT,DPH
MOV DATA_PORT,#0FFh
CLR SRAM_CS
CLR SRAM_RD
MOV A,DATA_PORT
SETB SRAM_RD
SETB SRAM_CS
RET
; Thu tuc ghi RAM
SRAM_WRITE:
MOV LO_ADDR_PORT,DPL
MOV HI_ADDR_PORT,DPH
CLR SRAM_CS
MOV DATA_PORT,A ; Thanh ghi A chua du lieu can ghi vao RAM
ngoai
17
báo cáo bài tập lớn môn Vi xử lý - nhóm I - Lớp ĐT11.K45
CLR SRAM_WR
SETB SRAM_WR
SETB SRAM_CS
RET
END
II.4 Giới thiệu bộ nhớ EEPROM nối tiếp
Hiện nay bộ nhớ EEPROM trao đổi dữ liệu theo kiểu nối tiếp được
ứng dụng rất nhiều trong thực tế.
Để minh họa ta hãy xét một IC nhớ cụ thể loại này, đó là IC AT24C64 (64K
x 8) .
18
báo cáo bài tập lớn môn Vi xử lý - nhóm I - Lớp ĐT11.K45
Mô tả hoạt động:

Ta có thể ghi dữ liệu theo từng trang tức là bộ nhớ sẽ tự động tăng 1 ở địa
chỉ.
Hoạt động đọc cũng tương tự hoạt động ghi, ta có thể đọc ngẫu nhiên,
đọc tuần tự, current address read.
Sơ đồ nối ghép dưới đây ta ghép một IC AT24C64 với vi điều kiển
AT89C51 nên các chân A
0
,A
1
, A
2
đều được nối với đất.
20
báo cáo bài tập lớn môn Vi xử lý - nhóm I - Lớp ĐT11.K45
Chương trình:
PROG EQU 0000h
;
;Quy dinh cac chan
SEEPROM_SCL EQU P1.0 ; Xung dong ho
SEEPROM_SDA EQU P1.1 ; Du lieu noi tiep
;
; Khoi tao
SEEPROM_MADRS_LO DATA 30h ; Luu dia chi cao
SEEPROM_MADRS_HI DATA 31h ; Luu dia chi thap
SEEPROM_DATA DATA 32h ; Luu du lieu
SEEPROM_SBUF DATA 33h ; Dem port noi tiep
UART_BUSY BIT 00h ; Co bao port noi tiep ban
;
;
SEEPROM_DADRS EQU 0A0h

MOV SEEPROM_MADRS_HI,#00h
MOV SEEPROM_MADRS_LO,#00h
MOV SEEPROM_DATA,#'A'
LOOP_1: CALL SEEPROM_WRITE
21
báo cáo bài tập lớn môn Vi xử lý - nhóm I - Lớp ĐT11.K45
INC SEEPROM_DATA
MOV A,SEEPROM_DATA
CJNE A,#'Z'+1,INC_MADRS_LO_1
MOV SEEPROM_DATA,#'A'
INC_MADRS_LO_1:
INC SEEPROM_MADRS_LO
MOV A,SEEPROM_MADRS_LO
CJNE A,#00h,LOOP_1
INC_MADRS_HI_1:
INC SEEPROM_MADRS_HI
MOV A,SEEPROM_MADRS_HI
CJNE A,#20h,LOOP_1 ; Gioi han 8K voi AT24C64
; Doc byte tu bo nho roi gui ra port noi tiep
MOV SEEPROM_MADRS_HI,#00h
MOV SEEPROM_MADRS_LO,#00h
LOOP_2: CALL SEEPROM_READ
WAIT_UART:
JB UART_BUSY,WAIT_UART
SETB UART_BUSY
MOV SBUF,SEEPROM_DATA
INC_MADRS_LO_2:
INC SEEPROM_MADRS_LO
MOV A,SEEPROM_MADRS_LO
CJNE A,#00h,LOOP_2

báo cáo bài tập lớn môn Vi xử lý - nhóm I - Lớp ĐT11.K45
; Dia chi du lieu : SEEPROM_MADRS_HI and SEEPROM_MADRS_LO
; Du lieu : SEEPROM_DATA
; CY = 1 neu bus ban hay la IC bi loi khi xuat biet xac nhan.
; Thu lai neu CY = 1.
PUSH ACC
CALL SEEPROM_START
JC SEEPROM_WRITE_RET ; Bo neu bus
khong san sang
MOV A,#SEEPROM_DADRS ; Dia chi IC
CLR ACC.0 ; Xac
dinh ghi du lieu
MOV SEEPROM_SBUF,A
CALL SEEPROM_SHOUT ; Gui dia chi IC
JC SEEPROM_WRITE_ERROR ; Bo neu
khong co bit xac nhan
MOV SEEPROM_SBUF,SEEPROM_MADRS_HI ; Phan cao dia chi
CALL SEEPROM_SHOUT ; Gui dia chi phan
cao
JC SEEPROM_WRITE_ERROR ; Bo neu
khong co bit xac nhan
MOV SEEPROM_SBUF,SEEPROM_MADRS_LO ; Phan thap dia
chi
CALL SEEPROM_SHOUT ; Gui phan thap
JC SEEPROM_WRITE_ERROR ; Bo neu
khong co bit xac nhan
MOV SEEPROM_SBUF,SEEPROM_DATA ; Du lieu
CALL SEEPROM_SHOUT ; Gui du lieu
JC SEEPROM_WRITE_ERROR ; Bo neu
khong co bit xac nhan

JC SEEPROM_READ_ERROR
MOV SEEPROM_SBUF,SEEPROM_MADRS_LO
CALL SEEPROM_SHOUT
JC SEEPROM_READ_ERROR
CALL SEEPROM_START
JC SEEPROM_READ_RET
MOV A,#SEEPROM_DADRS
SETB ACC.0
MOV SEEPROM_SBUF,A
CALL SEEPROM_SHOUT
JC SEEPROM_READ_ERROR
CALL SEEPROM_SHIN ; Nhan du lieu
CALL SEEPROM_NAK ; khong
chap nhan byte
MOV SEEPROM_DATA,SEEPROM_SBUF
CLR C

SEEPROM_READ_ERROR:
CALL SEEPROM_STOP
SEEPROM_READ_RET:
POP ACC
JC SEEPROM_READ ; thu lai
neu loi
RET
;
SEEPROM_START:
; Gui bit bat dau, xac dinh chuyen tu cao ve thap o SDA trong khi SCL cao.
; Quay lai SCL, SDA thap.
; Tro lai set CY neu bus ban.
SETB SEEPROM_SDA

NOP
NOP
SETB SEEPROM_SDA
RET
;
SEEPROM_SHOUT:
; Gui den ROM cac bit bat buoc.
; Cho SCL, SDA thu lai. Tro lai SCL thap.
; Duoc goi voi du lieu gui vao thanh dem SEEPROM_SBUF.
; SET lai CY cho biet loi boi tin hieu xac nhan.
PUSH ACC
PUSH B
MOV A,SEEPROM_SBUF
MOV B,#8 ; bit dem
SEEPROM_SHOUT_LOOP:
RLC A ; chuyen bit vao CY
MOV SEEPROM_SDA,C ; xuat bit
NOP ; lam cho SCL thap va thiet lap du
lieu
SETB SEEPROM_SCL ; phat xung
NOP ; lam cho SCL cao
NOP
NOP
NOP
CLR SEEPROM_SCL ; Giam xung
DJNZ B,SEEPROM_SHOUT_LOOP
SETB SEEPROM_SDA ; SDA for ACK
NOP ; lam cho SCL thap va tAA
NOP
SETB SEEPROM_SCL ; phat ACK clock


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status