ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
LỜI NÓI ĐẦU
Ngày nay Khoa học – Kỹ thuật phát triển mạnh
mẽ,cùng với sự phát triển không ngừng của các ngành kỹ
thuật nói chung và kỹ thuật - điện tử nói riêng. Chúng đã đi
sâu vào mọi mặc đời sống hàng ngày của người dân. Đặc
biệt sử dụng vi điều khiển để điều khiển các thiết bị dân dụng
và các thiết bị công nghiệp. Nắm được tầm quan trọng đó,
em làm đề tài: BÃI GIỮ XE TỰ ĐỘNG để làm đồ án tốt
nghiệp cho mình, vừa để tạo ra 1 sản phẩm có khả năng ứng
dụng trong thực tế.
Những kiến thức và năng lực đạt được trong quá trình
học tập tại trường sẽ được đánh giá qua đợt bảo vệ đồ án tốt
nghiệp. Vì vậy em đã cố gắng tận dụng tất cả những kiến
thức đã học ở trường cùng với sự tìm tòi nghiên cứu, để có
thể hoàn thành tốt đồ án tốt nghiệp này. Những kết quả,
những sản phẩm đạt được trong ngày hôm nay tuy không lớn
lao nhưng nó là thành quả của ba năm học tập tại trường. Là
thành công đầu tiên của em trước khi ra trường.
Do khoảng thời gian và kiến thức còn hạn hẹp, mặc dù
em cố gắng hoàn thành đồ án tốt nghiệp này đúng thời hạn.
Nên không tránh khỏi những thiếu xót mong Quý thầy cô
thông cảm. Em mong nhận được những ý kiến đóng góp tận
tình của quý thầy cô và các bạn. Cuối cùng em xin chân
thành cảm ơn quý thầy cô và các bạn .
SVTH: NGUYỄN BÁ ĐÀO 1
ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
Lời Cảm Ơn
Sau những năm học tại trường,em đã được học và tiếp
thu nhiều kiến thức mới từ sự chỉ bảo tận tình của Quý Thầy
Cô,sự giúp đỡ của bạn bè. Đây là khoảng thời gian đầy ý
CHƯƠNG 6:THIẾT KẾ VÀ THI CÔNG MẠCH
I.SƠ ĐỒ KHỐI
II.KHỐI NGUỒN
III.KHỐI HIỂN THỊ
IV.KHỐI CẢM BIẾN HỒNG NGOẠI
V.KHỐI VI XỬ LÝ
VI.LƯU ĐỒ GIẢI THUẬT
VII. CODE CHƯƠNG TRÌNH
CHƯƠNG TỔNG KẾT
I.TỔNG KẾT
II.HƯỚNG PHÁT TRIỂN ĐỀ TÀI
TÀI LIỆU THAM KHẢO
SVTH: NGUYỄN BÁ ĐÀO 3
ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
CHƯƠNG DẪN NHẬP
I.ĐẶT VẤN ĐỀ:
Ngày nay, khi mà cả thế giới như đang nóng lên vì sự vận động, phát triển về
mọi mặt như kinh tế, chính trị, khoa học kỹ thuật….v…v Trong đó, những ứng
dụng của khoa học kỹ thuật tiên tiến đã và đang làm cho thế giới ngày càng thay
đổi, văn minh hơn và hiện đại hơn. Sự phát triển của Kỹ thuật điện tử đã tạo ra hàng
lọat những thiết bị với các đặc điểm nổi bật như sự chính xác cao, tốc độ nhanh, gọn
nhẹ là những yếu tố rất cần thiết góp phần cho họat động của con người đạt hiệu quả
cao.
Tại các đơ thị lớn như Hà Nội Và TP. Hồ Chí Minh ơ tơ là 1 phương tiện đi
lại khá phổ biến . Nhưng với những bãi giử xe thủ cơng như hiện nay thì rất mất
nhiều thời gian cũng như nhân lực. Để khắc phục được những nhược điểm trên, qua
q trình tìm hiểu, khảo sát vi điển khiển PIC 16F877A em nhận thấy rằng: ứng
dụng vi điều khiển PIC 16F877A vào bãi giữ xe là phương pháp tối ưu, vừa tiết
kiệm được thời gian cả về vật chất. Được sự đồng ý của khoa Điện Tử - Tin Hoc
trường Cao Đẳng Kỹ Thuật Cao Thắng em tiến hành thực hiện đề tài “ Bãi giử xe
mạch dùng kỹ thuật vi xử lí còn có những ưu điểm sau:
-Mạch có thể thay đổi một cách linh hoạt bằng việc thay đổi phần mềm,
trong khi đó phần cứng không cần thay đổi mà mạch dùng IC rời không thể thực
hiện được.
- Số linh kiện sử dụng trong mạch ít hơn.
-Mạch đơn giản hơn.
-Mạch có thể lưu lại số liệu của các xe trong bãi.
-Mạch cũng có thể kết nối giao tiếp được với máy tính thích hợp cho những
người quản lí tại phòng kỹ thuật nắm bắt được tình hình trong bãi mà khơng vần
có mặt trực tiếp tại bãi
3. Phương pháp dùng vi điều khiển:
Ngoài những ưu điểm có được của hai phương pháp trên, phương pháp này
còn có những ưu điểm :
-Trong mạch có thể sử dụng ngay bộ nhớ trong đối với những chương trình
có quy mô nhỏ, rất tiện lợi mà vi xử lí không thực hiện được.
-Nó có thể giao tiếp nối tiếp trực tiếp với máy tính mà vi xử lí cũng giao
tiếp được với máy tính nhưng là giao tiếp song song nên cần có linh kiện chuyển
đổi dữ liệu từ song song sang nối tiếp để giao tiếp với máy tính.
Trong thiết kế người ta thường chọn phương pháp tối ưu nhưng kinh tế do
đó em chọn phương pháp dùng kỹ thuật vi điều khiển
III.GIỚI HẠN ĐỀ TÀI:
Với thời gian gần năm tuần thực hiện đề tài cũng như trình độ chun mơn
có hạn,chúng em đã cố gắng hết sức để hồn thành đồ án này nhưng chỉ
giải quyết được nhữngvấn đề sau:
Dùng cảm biến hồng ngoại để nhận biết xe vào , xe ra.
SVTH: NGUYỄN BÁ ĐÀO 5
ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
Hiễn thị số xe có trong bãi bằng led 7 đoạn.
Báo đèn và ngưng đếm số xe vào khi số xe trong bãi đã đầy.
Dùng ngôn ngữ CCS lập trình cho PIC 16F877A.
Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các module ngoại vi
tích hợp sẵn (như USART, PWM, ADC…), với bộ nhớ chương trình từ 512 Word
đến 32K Word.
2. Tại sao dùng Pic?
Họ vi điều khiển này có thể tìm mua dễ dàng tại thị trường Việt Nam. Giá
thành không quá đắt. Có đầy đủ các tính năng của một vi điều khiển khi hoạt động
độc lập. Là một sự bổ sung rất tốt về kiến thức cũng như về ứng dụng cho họ vi điều
khiển mang tính truyền thống: họ vi điều khiển 8051. Số lượng người sử dụng họ vi
điều khiển PIC. Hiện nay tại Việt Nam cũng như trên thế giới, họ vi điều khiển này
được sử dụng khá rộng rãi. Điều này tạo nhiều thuận lợi trong quá trình tìm hiểu và
phát triển các ứng dụng như: số lượng tài liệu, số lượng các ứng dụng mở đã được
phát triển thành công, dễ dàng trao đổi, học tập, dễ dàng tìm được sự chỉ dẫn khi gặp
khó khăn,… Sự hỗ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình, nạp
chương trình từ đơn giản đến phức tạp,… Các tính năng đa dạng của vi điều khiển
PIC, và các tính năng này không ngừng được phát triển.
3. Các dòng Pic và cách lựa chọn Vi điều khiển Pic:
SVTH: NGUYỄN BÁ ĐÀO 7
ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
Các sản phẩm vi điều khiển PIC của Microchip có gần 100 loại sản phẩm từ
họ 10Fxxx đến các họ 12Cxxx, 12Fxxx, 16Cxx, 17Cxx, 16Fxx, 16Fxxx, 16FxxxA,
16LFxxxA, 18Fxxx, 18LFxxx, 18Fxxxx, 18LFxxxx,…
Cách phân loại PIC theo chữ cái:
Các họ PIC xxCxxx được đưa vào một nhóm, gọi là OTP (One Time
Programmable): chúng ta chỉ có thể lập trình và nạp chương trình cho nó được một
lần duy nhất.
Nhóm thứ hai có chữ cái F hoặc LF: chúng ta gọi nhóm này là nhóm Flash,
nhóm này cho phép ghi xóa nhiều lần bằng các mạch điện thông thường.
Cách phân loại theo hai con số đầu tiên của sản phẩm:
Loại thứ nhất là dòng PIC cơ bản( Base – line ), gồm các PIC 12Cxxx, có độ dài
12bit.
tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chương trình
8Kx14 bit, bộ nhớ dữ liệu 368 byte RAM và bộ nhớ dữ liệu EEPROM với dung
lượng 256 byte. Số PORT I/O là 5 với 33 pin I/O
Các đặc tính ngoại vi bao gồm các khối chức năng sau:
• Timer0: bộ đếm 8 bit.
• Timer1: bộ đếm 16 bit với bộ chia tần số, có thể họat động trong cả chế độ tiết
kiệm năng lượng( Sleep Mode) với nguồn xung clock ngoài.
• Timer2: bộ đếm 8 bit.
• 2 bộ Capture/Compare/PWM.
• 1 bộ biến đổi Analog –>Digital 10 bit, 8 ngõ vào.
• 2 bộ so sánh tương tự( Compartor).
• 1 bộ định thời giám sát( Watchdog Timer).
• 15 nguồn ngắt( Interrupts)
• Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD,
WR, CS ở bên ngoài.
• Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C.
• Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.
• Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial
Programming)
thông qua 2 chân.
Một vài đặc tính khác của vi điều khiển như:
• Được chế tao bằng công nghệ CMOS.
• Bộ nhớ flash với khả năng ghi xóa được 100.000 lần.
• Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần.
• Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm.
• Khả năng tự nạp chương trình với sự điều khiển của phần mềm.
• Chức năng bảo mật mã chương trình.
• Chế độ Sleep.
• Có thể hoạt động với nhiều dạng Oscillator khác nhau.
Bảng 1.1: Tóm tắt đặc điểm của PIC16F877A
- CLKI : ngõ vào nguồn xung bên ngoài. Luôn được kết hợp với chức năng OSC1.
* Chân OSC2/CLKO (13) : ngõ vào dao động thạch anh hoặc xung clock
- OSC2 : Ngõ ra dao động thạch anh. Kết nối đến thạch anh hoặc bộ cộng hưởng.
- CLKO : ở chế độ RC, ngõ ra của OSC2, bằng tần số của OSC1 và chỉ ra tốc độ của
chu kỳ lệnh.
* Chân /V
PP
(1) :
- MCLR : Hoạt động Reset ở mức thấp
- V
PP
: ngõ vào áp lập trình
* Chân RA0/AN0 (2) :
- RA0 : xuất/nhập số
- AN0 : ngõ vào tương tự 0
* Chân RA1/NA1 (3) :
- RA1 : xuất/nhập số
- AN1 : ngõ vào tương tự 1
* Chân RA2/NA2/V
REF-
/CV
REF
(4) :
- RA2 : xuất/nhập số
SVTH: NGUYỄN BÁ ĐÀO 11
ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
- AN2 : ngõ vào tương tự 2
- V
REF -:
ngõ
- RB3 : xuất/nhập số
- Chân cho phép lập trình điện áp thấp ICPS
* RB4 (37), RB5 (38) : xuất/nhập số
* RB6/PGC (39) :
- RB6 : xuất/nhập số
- PGC : mạch dũ sai và xung clock lập trình ICSP
* RB7/PGD (40) :
- RB7 : xuất/nhập số
- PGD : mạch dữ sai và dữ liệu lập trình ICSP
SVTH: NGUYỄN BÁ ĐÀO 12
ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
* Chân RC0/T1 OCO/T1CKI (15) :
- RC0 : xuất/nhập số
- T1 OCO : ngõ vào bộ dao động Timer 1
- T1 CKI : ngõ vào xung clock bên ngoài Timer 1
* Chân RC1/T1 OSI/CCP2 (16) :
- RC1 : xuất/nhập số
- T1 OSI : ngõ vào bộ dao động Timer 1
- CCP2 : ngõ vào Capture 2, ngõ ra compare 2, ngõ ra PWM2
* Chân RC2/CCP1 (17) :
- RC2 : xuất/nhập số
- CCP1 : ngõ vào Capture 1, ngõ ra compare 1, ngõ ra PWM1
* Chân RC3/SCK/SCL (18):
- RC3 : xuất/nhập số
- SCK : ngõ vào xung clock nối tiếp đồng bộ/ngõ ra của chế độ SPI
- SCL : ngõ vào xung clock nối tiếp đồng bộ/ ngõ ra của chế độ I
2
C
* Chân RC4/SDI/SDA (23) :
- RC4 : xuất/nhập số
- RE1 : xuất/nhập số
- WR : điều khiển việc ghi ở port nhánh song song
- AN6 : ngõ vào tương tự 6
* Chân RE2/ /AN7 (10) :
- RE2 : xuất/nhập số
- CS : Chip lựa chọn sự điều khiển ở port nhánh song song
- AN7 : ngõ vào tương tự 7
* Chân V
DD
(11,32), và V
SS
(12,31) : là các chân nguồn của PIC.
3.Sơ đồ khối của Pic16F877A
SVTH: NGUYỄN BÁ ĐÀO 14
ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
Hình 2: Sơ đồ khối vi điều khiển PIC16F877A
4.Tổ chức bộ nhớ:
Bộ nhớ chương trình( 8K Flash ROM), bộ nhớ dữ liệu( 368 bytes RAM) và bộ
nhớ dữ liệu EEPROM( 256 bytes).
4.1. Tổ chức của bộ nhớ chương trình:
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ Flash, có bộ
đếm chương trình( Program Counter) dài 13 bit có thể định địa chỉ cho 8K không
gian bộ nhớ, 8K không gian bộ nhớ được chia làm 8 trang bộ nhớ. Mọi sự truy cập
ngoài vùng không gian này sẽ không có tác dụng.
Bộ nhớ chương trình còn bao gồm một ngăn xếp( Stack) 8 mức.
Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h
(Reset vector). Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h
(Interrupt vector).
Ngăn xếp và bản đồ bộ nhớ chương trình:
SVTH: NGUYỄN BÁ ĐÀO 15
hiện trên một byte hoặc một từ được chỉ định. Sự truy cập vào bộ nhớ chương trình
SVTH: NGUYỄN BÁ ĐÀO 17
ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
phải kể đến sự tính toán checksum. Ghi một byte hoặc một word sẽ tự động xóa
vùng nhớ và ghi lên giá trị mới (xóa trước khi ghi). Việc ghi vào bộ nhớ dữ liệu
EEPROM không ảnh hưởng đến hoạt động của thiết bị. Việc ghi vào bộ nhớ chương
trình sẽ dừng thực thi các lệnh cho đến khi quá trình ghi hoàn thành. Bộ nhớ chương
trình không thể được truy cập trong suốt quá trình ghi. Trong suốt quá trình ghi, bộ
dao động tiếp tục chạy, thiết bị ngoại vi vẫn tiếp tục hoạt động và những sự kiện về
ngắt sẽ được phát hiện và đợi cho đến khi quá trình ghi hoàn thành. Khi quá trình
ghi hoàn thành, lệnh tiếp theo trong hàng đợi lệnh sẽ được thực hiện và một rẽ
nhánh đến vectơ ngắt sẽ xảy ra đến ngắt được phép và gây ra trong suốt quá trình
ghi. Việc đọc và ghi truy cập đến cả hai bộ nhớ xảy ra gián tiếp thông qua việc đặt
những thanh ghi mục đích chung (SFR). Có sáu thanh ghi mục đích chung được sử
dụng là:
Bộ nhớ dữ liệu EEPROM cho phép những thao tác đọc và ghi byte không can
thiệp đến những thao tác bình thường của bộ vi điều khiển. Khi có sự trao đổi với bộ
nhớ dữ liệu EEPROM, thanh ghi EEADR giữ địa chỉ sẽ được truy cập. Phụ thuộc
vào thao tác, thanh ghi EEDATA giữ dữ liệu được ghi hoặc được đọc tại địa chỉ
trong thanh ghi EEADR. PIC16F877A có 256 byte cho bộ nhớ dữ liệu EEPROM và
do đó nó sử dụng tất cả 8 bit của EEADR. Bộ nhớ chương trình FLASH không cho
phép truy cập vào quá trình đọc, nhưng quá trình ghi sẽ dừng thực thi các lệnh cho
đến khi quá trình ghi hoàn thành. Khi trao đổi với bộ nhớ chương trình cặp thanh
ghi EEADRH:EEADR sẽ tạo thành một từ hai byte, và sẽ chứa 13 bit địa chỉ của
vùng nhớ được truy cập. Sự kết hợp hai thanh ghi EEDATH:EEDATA sẽ chứa dữ
liệu 14 bit cho việc ghi, hoặc phản ánh giá trị của bộ nhớ chương trình sau mỗi lần
đọc. Giống sự truy cập vào bộ nhớ dữ liệu EEPROM, giá trị của những thanh ghi
EEADRH:EEADR phải bên trong phạm vi hợp lệ của bộ nhớ chương trình, phụ
thuộc vào linh kiện (0000h đến 1FFFh đối với PIC16F873/83.9)
4.4 Quá trình đọc bộ nhớ dữ liệu EEPROM:
7. Thực hiện chuỗi 5 lệnh đặc biệt sau:
o Ghi giá trị 55h vào EECON2 qua hai bước (đầu tiên đưa vào W, sau đó
mới đưa EECON2).
o Ghi giá trị AAh vào EECON2 qua hai bước (đầu tiên đưa vào W, sau đó
mới đưa vào EECON2).
o Set bit WR.
8. Cho phép các ngắt (nếu sử dụng ngắt).
9. Xóa bit WREN để không cho phép các thao tác lập trình.
10.Tại thời điểm chu kỳ ghi hoàn thành, bit WR bị xóa và bit cờ ngắt EEIF được
set. Nếu bước 1 chưa được thực hiện, sau đó vi chương trình sẽ kiểm tra xem
EEIF được set hay chưa hoặc bit WR có bị xóa hay không để báo kết thúc chu
kỳ chương trình.
4.6 Quá trình đọc bộ nhớ chương trình FLASH
Quá trình đọc bộ nhớ chương trình FLASH cũng giống với quá trình đọc bộ
nhớ dữ liệu EEPROM, chỉ cần thêm vào hai lệnh NOP sau khi set bit RD. Hai chu
kỳ lệnh được thực hiện bởi lệnh NOP sẽ được bộ vi điều khiển sử dụng để đọc dữ
liệu ra khỏi bộ nhớ chương trình và chèn giá trị đó vào trong cặp thanh ghi
EEDATH:EEDATA. Dữ liệu sẽ được sẵn sàng ở lệnh thứ hai. EEDATH và
EEDATA sẽ giữ giá trị này cho đến khi thao tác đọc tiếp theo được bắt đầu, hoặc
cho đến khi chúng được ghi bởi vi chương trình.
Các bước trong quá trình đọc bộ nhớ chương trình FLASH:
1. Ghi địa chỉ cần truy cập vào cặp thanh ghi EEADRH:EEADR. Hãy chắc rằng
địa chỉ đó không lớn hơn kích thước bộ nhớ của linh kiện PIC16F877A.
2. Set bit EEPGD để trỏ đến bộ nhớ chương trình FLASH.
3. Set bit RD để bắt đầu thao tác đọc.
4. Thực hiện hai lệnh NOP để cho phép bộ vi điều khiển đọc dữ liệu ra khỏi bộ nhớ
chương trình.
5. Đọc dữ liệu từ cặp thanh ghi EEDATH:EEDATA.
SVTH: NGUYỄN BÁ ĐÀO 19
ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
có thể luôn luôn đọc những giá trị trong bộ nhớ chương trình, bất chấp trạng thái
của những bit bảo vệ mã. Tuy nhiên, trạng thái của những bit bảo vệ mã và bit WRT
sẽ có những ảnh hưởng khác nhau đến quá trình ghi vào bộ nhớ chương trình. Bit
WRT là bit dùng để bảo vệ quá trình ghi vào bộ nhớ chương trình FLASH. Bit này
chỉ có thể được truy cập khi PIC16F87X được lập trình qua ICSP . Khi sự bảo vệ
ghi được cho phép, bất kì lệnh ghi nào đến bộ nhớ chương trình FLASH đều sẽ bị
ngăn cản. Sự bảo vệ chế độ ghi không ảnh hưởng đến quá trình đọc bộ nhớ chương
trình.
Trạng thái đọc ghi của bộ nhớ chương trình FLASH nội
SVTH: NGUYỄN BÁ ĐÀO 20
ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
4.8 Sự phân trang bộ nhớ chương trình:
PIC16F877A có khả năng định vị một khối liên tục 8K từ của bộ nhớ chương
trình. Các lệnh CALL và GOTO chỉ cung cấp 11 bit địa chỉ và chỉ xác định được 2K
bộ nhớ chương trình. Khi thực hiện lệnh CALL hoặc GOTO, 2 bit cao nhất của địa
chỉ được cung cấp bởi PCLATH<4:3>. Khi thực hiện lệh CALL hoặc GOTO, người
sử dụng phải bảo đảm rằng trang chọn bit phải được lập trình để trang bộ nhớ
chương trình được định địa chỉ. Nếu lệnh CALL (hoặc ngắt) được thi hành, toàn bộ
13 bit của PC sẽ được cất vào ngăn xếp. Vì vậy việc vận dụng các bit
PCLATH<3:4> thì không đòi hỏi lệnh Return để lấy địa chỉ từ ngăn xếp.
5. Các đặc tính của Oscillator
Pic16F877A có khả năng sử dụng một trong 4 loại oscillator, đó là:
LP: (low power crystal).
XT: thạch anh bình thường.
HS: (high-speed crystal).
RC: (resistor/capacitor) dao động do mạch rc tạo ra. đối với các loại oscillator lp, hs,
xt, Oscillator được gắn vào vi điều khiển thông
qua các pin osc1/clki và Osc2/Clko.
đối với các ứng dụng không cần các loại oscillator tốc độ cao, ta có thể sử dụng
mạch dao động rc làm nguồn cung cấp xung hoạt động cho vi vi điều khiển. tần số
điều kiện hoạt động) để đảm bảo sự ổn định của xung do oscillator phát ra. Tác
động của OST còn xảy ra đối với POR reset và khi vi điều khiển được đánh thức từ
chế đợ sleep. OST chỉ tác động đối với các lọai oscillator là XT, HS và LP.
- Brown-out reset (BOR): Nếu VDD hạ xuống thấp hơn giá trị VBOR (khoảng 4V)
và kéo dài trong khoảng thời gian lớn hơn TBOR (khoảng 100 us), BOR được kích
hoạt và vi điều khiển được đưa về trạng thái BOR reset. Nếu điện áp cung cấp cho
vi điều khiển hạ xuống thấp hơn VBOR trong khoảng thời gian ngắn hơn TBOR, vi
điều khiển sẽ không được reset. Khi điện áp cung cấp đủ cho vi điều khiển hoạt
động, PWRT được kích hoạt để tạo ra một khoảng thời gian delay (khoảng 72ms).
Nếu trong khoảng thời gian này điện áp cung cấp cho vi điều khiển lại tiếp tục hạ
xuống dưới mức điện áp VBOR, BOR reset sẽ lại được kích hoạt khi vi điều khiển
đủ điện áp hoạt động. Một điểm cần chú ý là khi BOR reset được cho phép, PWRT
cũng sẽ hoạt động bất chấp trạng thái của bit PWRT.
- Tóm lại để vi điều khiển hoạt động được từ khi cấp nguồn cần trải qua các bước
sau: POR tác động.
PWRT (nếu được cho phép hoạt động) tạo ra khoảng thời gian delay TPWRT để ổn
định nguồn cung cấp.
OST (nếu được cho phép) tạo ra khoảng thời gian delay bằng 1024 chu kì xung của
oscillator để ổn định tần số của oscillator.
Đến thời điểm này vi điều khiển mới bắt đầu hoạt động bình thường. Thanh ghi điều
khiển và chỉ thị trạng thái nguồn cung cấp cho vi điều khiển là thanh ghi PCON
SVTH: NGUYỄN BÁ ĐÀO 22
ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
7. Thanh ghi đếm chương trình PC( Program Counter):
Thanh ghi đếm chương trình( PC ) chứa địa chỉ của lệnh được thực hiện kế
tiếp. Bộ đếm chương trình (PC) có độ rộng 13 bit. Byte thấp là thanh ghi PCL, nó có
thể đọc và ghi. Ba bit cao là thanh ghi PCH (PC<12:8>) không cho phép đọc nhưng
nó cho phép ghi gián tiếp thông qua thanh ghi PCLATH. Khi Reset thì ba bit cao
của PC sẽ bị xoá.
Stack
tự động xóa sau khi thao tác đọc kết thúc. Khi đọc bộ nhớ dữ liệu EEPROM, dữ liệu
sẽ được chuẩn bị sẵn trong thanh ghi EEDATA trong chu kỳ lệnh kế tiếp sau khi bit
RD được đặt. Khi đọc bộ nhớ chương trình, sau khi bit RD được đặt, dữ liệu sẽ
được load vào cặp thanh ghi EEDATH:EEDATA sau lệnh thứ hai.
Thao tác ghi có hai bit điều khiển, WR và WREN, và hai bit trạng thái
WRERR và EEIF. Bit WREN được sử dụng để cho phép hoặc không cho phép ghi.
Khi bit WREN bị xóa, thao tác ghi sẽ không được cho phép. Do đó, bit WREN cần
phải được set trước khi thực hiện thao tác ghi. Bit WR được sử dụng để bắt đầu cho
thao tác ghi. Nó sẽ tự động xóa sau khi thao tác ghi kết thúc. Cờ ngắt EEIF được sử
dụng để xác định việc ghi vào bộ nhớ đã hoàn thành. Cờ này cần phải được xóa
bằng phần mềm trước khi bit WR được set. Đối với bộ nhớ dữ liệu EEPROM, mỗi
lần bit WREN và WR đã được set, địa chỉ của vùng nhớ mong muốn trong thanh ghi
EEADR sẽ bị xóa, sau đó là việc ghi dữ liệu vào thanh ghi EEDATA. Khi thao tác
ghi hoàn thành, bit cờ EEIF sẽ được set. Đối với bộ nhớ chương trình, mỗi lần bit
WREN và WR đã được set, bộ vi điều khiển sẽ ngừng thực hiện các lệnh. Vùng nhớ
mong muốn được trỏ đến bởi EEADRH:EEADR sẽ bị xóa. Sau đó, giá trị dữ liệu
trong EEADTH:EEDATA sẽ được chương trình hóa. Khi hòan thành bit cờ EEIF sẽ
được set và bộ vi điều khiển sẽ tiếp tục thực hiện.
Thanh ghi EECON1(địa chỉ 18Ch)
SVTH: NGUYỄN BÁ ĐÀO 24
ĐỒ ÁN TỐT NGHIỆP BÃI GIỮ XE
9.Định địa chỉ gián tiếp , các thanh ghi INDF và FSR:
Thanh ghi INDF không phải là thanh ghi vật lý. Địa chỉ của thanh ghi INDF sẽ
được định vị gián tiếp. Định vị gián tiếp có thể thực hiện được bằng cách sử dụng
thanh ghi INDF. Trên thực tế, bất kì lệnh nào sử dụng thanh ghi INDF để truy cập
thanh ghi con trỏ bằng thanh ghi FSR (File Select Register). Việc đọc chính thanh
ghi INDF, một cách gián tiếp (FSR = ‘0’) sẽ có giá trị 00h. Một địa chỉ 9 bit có hiệu
quả thu được bằng cách ghép 8 bit của thanh ghi FSR với bit IRP (STATUS<7>),
như được chỉ bên dưới. Một chương trình mẫu dùng để xoá vùng RAM từ 20h đến
2Fh sử dụng cách định địa chỉ gián tiếp.