Khi đó nếuđược cho phép hoạt động, bộ đếm của WDT sẽ bị xóa nhưng WDT vẫn tiếp tụchoạt động bit PD STATUS được reset về không, bit TO được set, oscillatorngưng hoạt động và các PORT giữ
Trang 1NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
-o0o -
Tp Hồ Chí Minh, ngày… tháng …năm 2009
Tô Hoàng Lộc
Trang 2NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Tp HCM, ngày… tháng… năm 2010
Trương Hoàng Hoa Thám
Trang 31 Sơ lược về vi điều khiển PIC16f877A
2 Sơ lược về các chân của PIC16f877A
3 Một số đặc điểm của CPU
4.2.2 Vùng thanh ghi chức năng đặc biệt
4.2.3 Các chức năng thanh ghi đặc biệt
4.2.3.1Thanh ghi trạng thái(status register)
4.2.3.2Thanh ghi tùy chọn(option_reg register)
4.2.3.3 Thanh ghi điều khiển ngắt INTCON(interput control register) 4.2.3.4 Thanh ghi cho phép ngắt ngoại vi 1
Trang 44.2.3.5 Thanh ghi cờ của các ngắt ngoại vi 1
4.2.3.6 Thanh ghi cho phép ngắt ngoại vi 2
4.2.3.7 Thanh ghi cờ của các ngắt ngoại vi 2
4.2.3.8 Thanh ghi điều khiển nguồn(power control register) 4.2.4 PLC và PCLATH
4.2.5 Ngăn xếp stack
4.2.6 Địa chỉ trực tiếp và địa chỉ gián tiếp,thanh ghi INF và FSR
5 Data eeprom và flash program memory
6.I/O ports
6.1 Porta và thanh ghi TRISA
6.2 Portb và thanh ghi TRISB
6.3 Portc và thanh ghi TRISC
6.4 Porte và thanh ghi TRISE
6.5 Portd và thanh ghi TRISD
Trang 57.2.3 Bộ định thời hoạt động trong timer 1
8.7.2 Chu kỳ nhiệu vụ của PWM
8.7.3 Cài đặt hoạt động cho PWM
9 Module MSSP(master synchonous serial port)
9.1 Giới thiệu
Trang 69.2 Thanh ghi điều khiển
10 Bộ biến đổi ADC
10.1 Các thanh ghi điều khiển
10.1.1 Thanh ghi ADCON0
10.1.2 Thanh ghi điều khiển ADCON1
10.2 Hoạt động
10.3 Thời gian lấy mẫu
10.4 Lựa chọn xung clock cho biến đổi A/D
10.5 Cấu hình các chân anolog
10.6 Chuyển đổi ADC
10.7 Hoat động của ADC trong chế độ ngủ
10.8 ảnh hưởng của reset
11 module comparator
11.1 cài đặt chế độ choo bộ so sánh
11.2 nguồn tham chiếu cho chế độ so sánh
11.2.1 tín hiệu điện thế tham chiếu ngoại
11.2.2 tín hiệu điện thế tham chiêu nội
11.3 thời gian đáp ứng
11.4 tín hiệu ngõ ra của các bộ so sánh
11.5 Ngắt của các bộ so sánh
11.6 hoat động của bộ so sánh trong chế độ ngủ
11.7 ảnh hưởng của reset
12 module điện áp tham chiếu
12.1 thanh ghi diều khiển CVRCON
Trang 712.2 các thanh ghi liên quan đến diện áp tham chiếu so sánh
CHƯƠNG 2: GIỚI THIỆU LINH KIỆN
Trang 8Với su phát triển không ngừng của khoa học công nghệ, cuộc sống con ngườingày càng trở nên tiện nghi và hiện đại hơn Điều đó đem lại cho chúng ta nhiềugiải pháp tốt hơn, đa dạng hơn trong việc xử lý những vấn đề tưởng chừng như rấtphức tạp gặp phải trong cuộc sống Việc ứng dụng các thành tựu khoa học kỹ thuậthiện đại trong tất cả các lĩnh vực đã và đang rất phổ biến trên toàn thế giới, thay thếdần những phương thức thủ công , lạc hậu và ngày càng được cải tiến hiện đại hơn,hoàn mỹ hơn.
Cùng với sự phát triển chung đó, nước ta cũng đang mạnh mẽ tiến hành côngcuộc công nghiệp hóa và hiện đại hóa đất nước để theo kịp sự phát triển của cácnước trong khu vực và trên thế giới Trong đó lĩnh vực điện tử đang ngày càng đóngvai trò quan trọng trong việc phát triển kinh tế và đời sống con người Sự phổ biếncủa nó đóng góp không nhỏ tới sự phát triển của tất cả các ngành sản xuất, giải
trí, trong những năm gần đây đặc biệt trong lĩnh vực vi sử lý đã có sự phát triển
mạnh mẽ, phục vụ những đòi hỏi không ngừng của con người về một cuộc sống tiệnnghi hiện đại
Với lòng đam mê, yêu thích của mình trong lĩnh vực này, nhóm đã quyết
định chọn đề tài “ĐO NHIỆT ĐỘ VÀ ĐIỀU KHIỂN ĐỘNG CƠ DC” làm đề tài
tốt nghiệp
Trong thời gian ngắn thực hiện đề tài cộng với kiến thức còn nhiều hạn chế,nên trong tập đồ án này không tránh khỏi thiếu sót, nhóm thực hiện rất mong được
sự đóng góp ý kiến của thầy cô và các bạn sinh viên
Nhóm sinh viên thực hiện đề tài
Vũ Đức HuyPhạm Văn Thái
Trang 9LỜI CẢM ƠN
Trong suốt khóa học tại Trường Cao Đẳng Kỹ
Thuật Cao Thắng, với sự giúp đỡ của quý Thầy Cô và
giáo viên hướng dẫn về mọi mặt từ nhiều phía và nhất
là trong thời gian thực hiện đề tài, Nhóm thực hiện xinchân thành cảm ơn đến :
Quí Thầy Cô trong khoa Điện tử -Tin học đã giảngdạy những kiến thức chuyên môn làm cơ sở để thựchiện tốt luận văn tốt nghiệp và đã tạo điều kiện thuận lợicho chúng em thực hiện hoàn tất khóa học
Đặc biệt, thầy Tô Hoàng Lộc – giáo viên hướng dẫn
đề tài đã nhiệt tình giúp đỡ và cho chúng em những lờichỉ dạy quý báu, giúp chúng em định hướng tốt trongkhi thực hiện luận văn
Tất cả bạn bè đã giúp đỡ và động viên trong suốt
quá trình làm đồ án tốt nghiệp.
Trang 10
CHƯƠNG 1:
Trang 11
Phần 1:
VI ĐIỀU KHIỂN PIC16F877A
I : CẤU TRÚC PHẦNN CỨNG CỦA PIC 16F877A
1
21.1 Sơ lược về vi điều khiển PIC16F877A:
PIC 16F877A là dòng PIC phổ biến nhất hiện nay (đủ mạnh về tính năng, 40chân, bộ nhớ đủ cho hầu hết các ứng dụng thông thường) Cấu trúc tổng quát củaPIC 16F877A như sau:
0 - 8 K Flash ROM
1 - 368 Bytes RAM
2 - 256 Bytes EEPROM
3 - 5 ports (A, B, C, D, E) vào ra với tín hiệu điều khiển độc lập
4 - 2 bộ định thời 8 bits (Timer 0 và Timer 2)
5 - Một bộ định thời 16 bits (Timer 1) có thể hoạt động trong chế độ tiết kiệmnăng lượng (SLEEP MODE) với nguồn xung Clock ngoài
6 - 2 bô CCP( Capture / Compare/ PWM)
7 - 1 bộ biến đổi AD 10 bits, 8 ngõ vào
8 - 2 bộ so sánh tương tự (Compartor)
9 - 1 bộ định thời giám sát (WatchDog Timer)
10 - Một cổng song song 8 bits với các tín hiệu điều khiển
11 - Một cổng nối tiếp
12 - 15 nguồn ngắt
13 - Có chế độ tiết kiệm năng lượng
14 - Nạp chương trình bằng cổng nối tiếp ICSP(In-Circuit Serial Programming)
15 - Được chế tạo bằng công nghệ CMOS
16 - 35 tập lệnh có độ dài 14 bits
Trang 1217 - Tần số hoạt động tối đa 20MHz
Sơ lược chân PIC 16f877A:
PIC16F877A là họ vi điều khiển có 40 chân, mỗi chân có một chức năngkhác nhau.Trong đó có một số chân đa công dụng: mỗi chân có thể hoạt động như
Trang 13một đường xuất nhập hoặc là một chân chức năng đặc biệt dùng để giao tiếp với cácthiết bị ngoại vi.
Trang 14Sơ đồ Khối PIC
Trang 151.2 Một số điểm đặc biệt của CPU:
1.3.1 Dao động:
PIC16F877A có thể hoạt động trong bốn chế độ dao động khác nhau:
Trong các chế độ LP, XT và HSchúng ta sử dụng thạch anh dao độngnối vào các chân OSC1 và OSC2 đểtạo dao động
Việc lựa chọn tụ trong dao động thạch anh dựa vào bảng sau:
Lưu ý: Tụ có giá trị lớn sẽ tăngtính ổn định của dao động nhưngcũng làm tăng thời gian khởiđộng
Chế độ dao động RC được sửdụng như một giải pháp tiết kiệmtrong các ứng dụng không cần sựchính xác về thời gian
* Cách tính chu kì máy:
Ví dụ ta sử dụng thạch anh 10Mhz Khi đó:
Tần số dao động của thạch anh là Fosc = 10Mhz
Trang 17(Lưu ý: Reset do WDT không làm chân xuống mức thấp).
Trang 191.3.5 Chế độ nguồn thấp Sleep (Power down Mode) :
Đây là chế độ hoạt động của VĐK khi lệnh sleep được thực thi Khi đó nếuđược cho phép hoạt động, bộ đếm của WDT sẽ bị xóa nhưng WDT vẫn tiếp tụchoạt động bit PD (STATUS <3>) được reset về không, bit TO được set, oscillatorngưng hoạt động và các PORT giữ nguyên trạng thái như trước khi lệnh sleepđược thực thi
Do khi chế độ sleep dòng cung cấp cho VĐK là rất nhỏ nên ta cần thực hiệncác bước sau trước khi VĐK thực thi lệnh sleep
1• Đưa tất cả các chân về trạng thái VDD hoặc VSS
2• Cần đảm bảo rằng không có mạch ngoại vi nào được điều khiển bởidòng điện của VĐK vì dòng điện nhỏ không đủ khả năng cung cấpcho các mạch ngoại vi hoạt động
3• Tạm ngưng hoạt động của khối A/D và không cho phép các xung clockbên ngoài tác dụng vào VĐK
4• Để ý chức năng điện trở kéo lên của PORTB
5• Pin phải ở mức logic cao
1.3.6 Bộ định thời giám sát (Watch Dog Timer -WDT):
Giả sử bạn viết một chương trình, bạn mong đợi chương trình này sẽ chạynếu không có gì trục trặc xảy ra thì nó sẽ không bao giờ dừng lại, như vậy bạnphải làm một vòng lặp để khi chương trình chạy đến điểm cuối thì nó lại quay trở
về điểm bắt đầu Nhưng mà hãy xem một trường hợp: Giả sử chương trình kiểmtra một chân input, nếu nó lên mức cao thì con Pic sẽ tiếp tục kiểm tra một châninput thứ hai có lên mức cao hay không, nếu chân input thứ hai không lên mứccao, con Pic sẽ ngồi đó chờ và nó sẽ chỉ thoát ra khỏi chỗ ngồi của nó nếu châninput thứ hai lên mức cao
Bây giờ hãy xem một trường hợp khác, giả sử như bạn viết một chương trình,bạn compiled nó thành công, và ngay cả bạn đã cho chạy mô phỏng từng bước,từng bước một trên máy tính, bằng MPLAB chẳng hạn, có vẻ như mọi chuyện đềutốt, bạn đem nạp vào con Pic Sau một thời gian chạy thử, con Pic thình lình bị kẹtvào nơi nào đó trong chương trình mà không thể thoát ra được trạng thái hiện tại.Điều gì là cần thiết để giải quyết hai trường hợp trên, reset lại hay vẫn để cho nó bịkẹt không thoát ra được, đó là mục đích của mạch Watchdog
Mạch Watchdog thì không phải là mới mẽ gì, có rất nhiều microprocessors vàmicrocontrollers đã có mạch Watchdog, nhưng mà nó làm việc ra sao ?
Bên trong con Pic có một mạch RC, mạch này cung cấp 1 xung Clock độclập với bất kỳ xung Clock nào cung cấp cho Pic Khi Watchdog Timer (viết tắt làWDT) được cho phép (enabled), nó sẽ đếm bắt đầu từ 00 và tăng lên 1 cho đến
Trang 20FFh, khi nó tăng từ FFh đến 00 ( FFh+1) thì con Pic sẽ bị Reset bất kể đang làm
gì, chỉ có 1 cách là ngăn không cho WDT đếm tới 00
Khi con Pic bị kẹt không thể thoát ra khỏi tình trạng hiện tại thì WDT vẫntiếp tục đếm mà không bị bất kỳ điều gì ngăn cấm nó đếm tới FF và đến FF+1, vìvậy nó sẽ reset con Pic làm cho chương trình phải khởi động lại từ đầu
Để sử dụng WDT chúng ta cần làm 3 việc
1• Thứ nhất, cần thời gian bao lâu để reset WDT ?
2• Thứ hai, làm sao xoá WDT ?
3• Cuối cùng, chúng ta phải nói cho con Pic biết chương trình cho phép WDT hoạtđộn
1.4 Tổ chức bộ nhớ:
PIC16F877A có tất cả 3 khối bộ nhớ riêng biệt bao gồm: Bộ
nhớ chương trình, bộ nhớ dữ liệu và bộ nhớ EEPROM
1.4.1 Bộ nhớ chương trình:
PIC16F877A có bộ đếm chương trình dài 13 bits có thể định
địa chỉ cho khoảng không gian nhớ 8K x 14bits Không gian bộ nhớ này được chialàm 8 trang, có địa chỉ từ 0005h đến 1FFFh
Mọi sự truy cập ngoài vùng không gian nhớ này sẽ không có tác dụng
Ngoài ra, bộ nhớ chương trình còn bao gồm một ngăn xếp (Stack) 8 mức.Vector Reset được đặt tại địa chỉ 0000h và vector ngắt được đặt tại địa chỉ 0004h
Trang 211.4.2 Bộ nhớ dữ liệu:
Bản đồ cấu trúc PIC 16F877A
Trang 22
Bộ nhớ dữ liệu bao gồm 4 Bank: Bank 0, Bank1, Bank2 và Bank3 Mỗi bank
có dung lượng 128 Bytes, bao gồm vùng Ram đa mục đích (GPR) và vùng thanhghi chức năng đặc biệt (SFR)
Các Bank này được lựa chọn bằng 2 bit ở thanh ghi STATUS làRP0(Status<5>) và RP1(Status<6>)
1.4.2.1 Vùng Ram đa mục đích:
Vùng RAM đa mục đích có chiều rộng 8 bit và có thể được truy nhập trựctiếp hoặc gián tiếp thông qua thanh ghi FSR Vùng RAM đa mục đích được phânphối ở các Bank như sau:
1- Bank 0: 96 Bytes từ địa chỉ 20h đến địa chỉ 7Fh
2- Bank 1: 80 Bytes từ địa chỉ A0h đến địa chỉ EFh
3- Bank 2: 96 Bytes từ địa chỉ 110h đến địa chỉ 16Fh
4- Bank 3: 96 Bytes từ địa chỉ 190h đến địa chỉ 1EFh
1.4.2.2 Vùng thanh ghi chức năng đặc biệt:
Các thanh ghi chức năng đặc biệt được sử dụng bởi bộ xử lý trung tâm CPUhoặc các module ngoại vi để điều khiển hoạt động của VĐK Các thanh ghi chứcnăng đặc biệt này được chia làm 2 loại: loại thứ nhất dùng cho các chức năng củaCPU, loại thứ 2 dùng cho các chức năng ngoại vi
Trang 23Bảng tóm tắt các chức năng đặc biệt:
Trang 25
1.4.3 Các thanh ghi chức năng đặc biệt:
1.4.3.1 Thanh ghi trạng thái ( Status Register):
Thanh ghi trạng thái chứa các trạng thái số học của bộ ALU, trạng thái Reset
và các bit chọn Bank của bộ nhớ dữ liệu
Bit 7 IRP: Bit lựa chọn bank thanh ghi (Sử dụng cho định địa chỉ gián tiếp)
Each bank is 128 bytes
Bit 4 TO: Bit báo hiệu hoạt động của WDT
1: Lệnh xóa WDT hoặc Sleep xảy ra
0: WDT hoạt động
Bit 3 PD: Bit báo công suất thấp ( Power down bit)
1: Sau khi nguồn tăng hoặc có lệnh xóa WDT
0: Thực thi lệnh Sleep
Bit 2 Z: bit Zero
1: Khi kết quả của một phép toán bằng 0
0: Khi kết quả của một phép toán khác 0
Bit 1 DC: Digit Carry
1: Có một số nhớ được sinh ra bởi phép cộng hoặc phép trừ 4 bit thấp
0: Không có số nhớ sinh ra
Bit 0 C: cờ nhớ (Carry Flag)
1: Có một số nhớ sinh ra bởi phép cộng hoặc phép trừ
0: Không có số nhớ sinh ra
Trang 261.4.3.2 Thanh ghi tùy chọn (Option _Reg Register):
Thanh ghi tùy chọn chứa các bit điều khiển để cấu hình cho các chứa năngnhư: ngắt ngoài, Timer 0 chức năng kéo lên Vdd của các chân Port B, và thời gianchờ của WDT
Bit 7 : Bit cho phép PORTB được kéo lên nguồn
1: Không cho phép PORTB kéo lên nguồn
0:ChophépPORTBkéolênnguồn
Bit 6 INTEDG: Bit lựa chọn cạnh tác động ngắt (INTERRUPT EDGE)
1: Ngắt sẽ được tác động bởi cạnh lên của chân RB0/INT
0: Ngắt sẽ được tác động bởi cạnh xuống của chân RB0/INT
Bit 5 T0CS: Bit lựa chọn nguồn xung Clock cho Timer 0
1: Xung Clock cung cấp bởi nguồn ngoài qua chân RA4/T0CKI
0: Xung Clock cung cấp bởi nguồn dao động nội
Bit 4 T0SE: Bit lựa chọn cạnh nào của xung clock tác động lên timer 0
1: Cạnh xuống
0: Cạnh lên
Bit 3 PSA: Bit quyết định tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0 hay
WDT 1: Tốc độ đếm PS2:PS0 sẽ tác động lên WDT
0: Tốc độ đếm PS2:PS0 sẽ tác động lên Timer 0
Bit 2-0 PS2:PS0: Dùng để lựa chọn tốc độ đếm của timer hay WDT
Trang 271.4.3.3 Thanh ghi điều khiển ngắt INTCON (Interrupt Control Register):
Bit 7 GIE: Bit cho phép ngắt toàn cục
1: Cho phép ngắt toàn cục
0: Không cho phép ngắt
Bit 6 PEIE: Bit cho phép ngắt khi ghi vào EEPROM hoàn tất
1: Cho phép ngắt ghi vào EEPROM hoạt động
0:KhôngchophépngắtghivàoEEPROMhoạtđộng
Bit 5 TMR0IE: Bit cho phép ngắt khi timer 0 tràn
1: Cho phép ngắt khi timer 0 tràn
0: Không cho phép ngắt khi timer 0 tràn
Bit 4 INTE: Bit cho phép ngắt ngoại vi trên chân RB0/INT
1: Cho phép ngắt ngoại vi
0: Không cho phép ngắt ngoại vi
Bit 3 RBIE: Cho phép ngắt khi trạng thái PORTB thay đổi
Trang 281.4.3.4 Thanh ghi cho phép ngắt ngoại vi 1(PIE1 Register):
Chú ý: Bit PEIE (INTCON<6>) phải được set để cho phép bất kì ngắt ngọai vi
nào xảy ra
Bit 7 PSPIE: Bit cho phép ngắt đọc/ ghi Port song song
Trang 291: Cho phép
0: Không cho phép
1.4.3.5 Thanh ghi cờ của các ngắt ngoại vi 1:
Bit 7 PSPIF: Cờ ngắt đọc/ ghi của Port song song
1: Một hoạt động đọc/ghi đã diễn ra (phải xóa bằng phần mềm)
0: Không có hoạt động đọc/ghi
Bit 6 ADIF: Cờ báo ngắt chuyển đổi A/D
1: Một quá trình chuyển đổi A/D đã hoàn thành
0: Chuyển đổi A/D chưa hoàn tất
Bit 5 RCIF: Cờ báo ngắt nhận USART
1: Buffer nhận USART đầy
0: Buffer nhận USART trống
Bit 4 TXIF: Cờ báo ngắt phát USART
1: Buffer truyền USART trống
0: Buffer truyền USART đầy
Bit 3 SSPIF: Cờ báo ngắt port nối tiếp đồng bộ (ngắt SSP)
1: Ngắt SSP xảy ra và phải được xóa bằng phần mềm trước khi trở lại chươngtrình chính từ chương trình phục vụ ngắt
0: Không có ngắt xảy ra
Bit2 CCP1IF:Cờ báo ngắt CCP1
Chế độ Capture (Bắt giữ):
1: Một Capture thanh ghi TMR1 xảy ra( phải được xóa bằng phần mềm)
0: Không xảy ra Capture thanh ghi TMR1
Chế độ Compare ( So sánh):
1: Khi các giá trị so sánh trong thanh ghi TMR1 được thỏa ( phải được xóa bằngphần mềm)
0: Khi các giá trị so sánh trong thanh ghi TMR1 không được thỏa
Chế độ PWM: Không sử dụng trong chế độ này
Trang 30Bit 1 TMR2IF: Cờ báo ngắt xảy ra khi giá trị trong thanh ghi TMR2 bằng
trong thanh ghi PR2 1: Giá trị trong thanh ghi TMR2 bằng thanh ghi PR2 (phải được xóa bằng phầnmềm)
0: Giá trị trong thanh ghi TMR2 chưa bằng thanh ghi PR2
Bit 0 TMR1IF: Cờ báo tràn thanh ghi TMR1
1: Thanh ghi TMR1 tràn (phải được xóa bắng phần mềm)
0: Thanh ghi TMR1 chưa tràn
1.4.3.6 Thanh ghi cho phép ngắt ngoại vi 2:
Chú ý: Bit PEIE (INTCON<6>) phải được set để cho phép bất kì ngắt ngọai vi nàoxảy ra
Bit 7,5,2,1 Unimplemented : read as ‘0’
Bit 6 CMIE: Bit cho phép ngắt do bộ so sánh điện thế
Trang 31Bit 7,5,2,1 Unimplemented : read as ‘0’
Bit 6 CMIF: Cờ báo ngắt do bộ so sánh
1: Ngõ vào bộ so sánh đã thay đổi (phải được xóa bằng phần mềm)
0: Ngõ vào bộ so sánh không thay đổi
Bit 4 EEIF: Cờ báo ngắt ghi EEPROM
1: Ghi EEPROM hoàn tất (phải được xóa bằng phần mềm)
0: Ghi EEPROM chưa hoàn tất
Bit 3 BCLIF: Cờ báo ngắt do xung đột bus
1: Xung đột bus đã xuất hiện trong chế độ SSP
0: Không có xung đột bus xảy ra
Bit 0 CCP2IF: Cờ báo ngắt CPP2
Các bit cao (bit 12:8) chứa trong thanh
ghi PCLATH, không thể đọc nhưng có
thể ghi gián tiếp bằng cách sử dụng
thanh ghi PCLATH Khi có bất kỳ sự
Reset nào xảy ra, các bit cao của bộ
Trang 32đếm chương trình PC sẽ bị xóa Xem thêm hai ví dụ sau đây để hiểu thêm về hoạtđộng của bộ đếm chương trình PC
1.4.5 Ngăn xếp Stack:
Stack cho phép 8 lệnh gọi chương trình con và ngắt hoạt động Stack chứađịa chỉ mà chương trình chính sẽ quay về thực hiện từ sau chương trình con hayngắt Đối với PIC16F877A Stack có độ sâu 8 lớp Stack không nằm trong cả bộnhớ chương trình lẫn bộ nhớ dữ liệu
1.4.6 Địa chỉ trực tiếp và địa chỉ gián tiếp, thanh ghi INF và thanh ghi FSR:
Thanh ghi INF không phải là một thanh ghi vật lí Nó chứa giá trị của thanhghi có địa chỉ nằm ở thanh ghi FSR
Ví dụ:
Thanh ghi tại địa chỉ 10h có giá trị 5Ah
Nếu ta đưa 10h vào thanh ghi FSR thì khi đọc thanh ghi INF ta sẽ có giá trị5Ah
Data EEPROM và Flash Program Memory:
Trang 33EEPROM là bộ nhớ có khả năng đọc và ghi trong điều kiện làm việc bìnhthường (khi nguồn Vdd không đổi) Bộ nhớ này không được định địa chỉ trực tiếptrong bản đồ bộ nhớ mà được định địa chỉ gián tiếp thông qua các thanh ghi chứcnăng đặc biệt:
Trang 341.5 I/O ports:
1.5.1 Port A và thanh ghi TRISA:
Port A gồm 6 chân từ RA0 đến RA5
Việc ghi giá trị vào thanh ghi TRISA sẽ qui
định các chân của Port A là input hay output
(nếu là 1 thì là input, là output nếu là 0) Việc
đọc thanh ghi Port A sẽ đọc trạng thái của các
chân ở Port A Việc ghi giá trị vào thanh ghi
Port A sẽ thay đổi trạng thái của các chân Port
A
Riêng chân RA4 được tích hợp chức
năng là chân cung cấp xung clock ngoài cho
Timer 0 (RA4/T0CKI) Những chân khác của
Port A được đa hợp với các chân ngõ vào
Analog của ADC và chân ngõ vào điện thế so
sánh của bộ so sánh Comparator Hoạt động của những chân này được quy địnhbằng những bit tương ứng trong các thanh ghi ADCCON1 và CMCON1 Khi các
Trang 35chân của Port A được sử dụng làm ngõ vào Analog thì các bit trong thanh ghiTRISA phải được set bằng 1
ChứcnăngcủacácchânPortA
Bảng tóm tắt các thanh ghi liên quan đến Port A
[
Trang 371.5.2 Port B và thanh ghi TRISB:
Port B gồm 8 chân từ chân RB0-RB7 Việc ghi giá trị vào thanh ghi TRISB
sẽ quy định các chân của Port B là input hay output (1: input, 0: output) Việc đọcthanh ghi Port B sẽ đọc trạng thái của các chân ở Port B Việc ghi giá trị vào thanhghi Port B sẽ thay đổi trạng thái của các chân Port B
Ba chân của Port B được đa hợp với chức năng In-Circuit Debugger và LowVoltage Programming function: RB3/PGM, RB6/PGC, RB7/PGD
Mỗi chân Port B có một transistor kéo lên Vdd Chức năng này hoạt động khi bitRBPU (Option <7>) được xóa Chức năng này sẽ tự động được xóa khi Port Bđược quy định là input
Bốn chân của Port B từ RB7 đến RB4 có chức năng ngắt khi trạng thái chânPort B thay đổi (Khi Port B được quy định là output thì chức năng này không hoạtđộng Giá trị chân của Port được so sánh với giá trị đã được lưu trước đó, khi có sựsai lệch giữa 2 giá trị này ngắt sẽ xảy ra với cờ ngắt RBIF (INTCON<0) sẽ bật lên.Ngắt có thể làm cho VĐK thoát khỏi trạng thái SLEEP
Bất cứ sự truy xuất nào trên PortB sẽ xóa trạng thái sai lệch, kết thúc ngắt vàcho phép xóa cờ ngắt RBIF
Trang 38Bảng chức năng PortB :
Bảng tóm tắt các thanh ghi liên quan đến Port B :
Trang 391.5.3 Port C và thanh ghi TRISC:
Port C gồm 8 chân từ chân RC0-RC7 Việc ghi giá trị vào thanh ghi TRISC
sẽ quy định các chân của Port C là input hay output (1: input, 0: output) Việc đọcthanh ghi Port C sẽ đọc trạng thái của các chân ở Port C Việc ghi giá trị vào thanhghi Port C sẽ thay đổi trạng thái của các chân Port C
Các chân của Port C được đa hợp với các chức năng ngoại vi
Khi các chức năng ngoại vi được cho phép ta cần quan tâm chặt chẽ tới giátrị các bit của thanh ghi TRISC Một số chức năng ngoại vi sẽ ghi đè giá trị 0 lêncác bit của thanh ghi TRISC và mặc định các chân này là output, ngoài ra một sốchức năng ngoại vi khác sẽ tự động mặc định một số chân là ngõ vào Do đó cầnxem xét kĩ các tính năng của các hàm ngoại vi để thiết lập giá trị các bit trongthanh ghi TRISC cho thích hợp
Trang 40Bảng chức năng Port C :
Bảng tóm tắt các thanh ghi lien quan đến PortC