Ngày nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật và trong dân dụng. Các bộ vi điều khiển có khả năng xử lý nhiều hoạt động phức tạp mà chỉ cần một chip vi mạch nhỏ, nó đã thay thế các tủ điều khiển lớn và phức tạp bằng những mạch điện gọn nhẹ, dễ dàng thao tác sử dụng.
Vi điều khiển không những góp phần vào kỹ thuật điều khiển mà còn góp phần to lớn vào việc phát triển thông tin. Chính vì các lý do trên, việc tìm hiểu, khảo sát vi điều khiển là điều mà các sinh viên ngành điện mà đặc biệt là chuyên ngành kỹ thuật điện-điện tử phải hết sức quan tâm. Đó chính là một nhu cầu cần thiết và cấp bách đối với mỗi sinh viên, đề tài này được thực hiện chính là đáp ứng nhu cầu đó.
Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử dụng đươc lại là một điều rất phức tạp. Phần công việc xử lý chính vẫn phụ thuộc vào con người, đó chính là chương trình hay phần mềm. Nếu không có sự tham gia của con người thì hệ thống vi điều khiển cũng chỉ là một vật vô tri. Do vậy khi nói đến vi điều khiển cũng giống như máy tính bao gồm 2 phần là phần cứng và phần mềm.
Mặc dù vi điều khiển đã đi được những bước dài như vậy nhưng để tiếp cận được với kỹ thuật này không thể là một việc có được trong một sớm một chiều. Để tìm hiểu bộ vi điều khiển một cách khoa học và mang lại hiệu quả cao làm nền tản cho việc xâm nhập vào những hệ thống tối tân hơn. Việc trang bị những kiến thức về vi điều khiển cho sinh viên là hết sức cần thiết. Xuất phát từ thực tiển này nhóm chúng em đã đi đến quyết định TRÌNH BÀY VỀ BỘ ĐỊNH THỜI TRONG VI ĐIỀU KHIỂN PIC16F877A nhằm đáp ứng nhu cầu ham muốn học hỏi của bản thân và giúp cho các bạn sinh viên dễ tiếp cận và hiểu sâu hơn về VĐK PIC.
17 trang |
Chia sẻ: lvbuiluyen | Lượt xem: 5510 | Lượt tải: 5
Bạn đang xem nội dung tài liệu Đề tài Trình bày về bộ định thời trong vi điều khiển pic16f877a, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
BỘ CÔNG THƯƠNG
TRƯỜNG: ĐẠI HỌC CÔNG NGHIỆP TP HỒ CHÍ MINH
KHOA: CÔNG NGHỆ ĐIỆN TỬ
MÔN: VI XỬ LÍ
BÀI TIỂU LUẬN
ĐỀ TÀI: TRÌNH BÀY VỀ BỘ ĐỊNH THỜI TRONG VI ĐIỀU KHIỂN PIC16F877A
GVHD: Huỳnh Minh Ngọc
SVTH MSSV
Nguyễn Phú Huy 10261121
Nguyễn Ngọc Hà 10242381
Nguyễn Văn Tuấn 10058371
LỚP: DHDT6A
KHÓA: 2010-2014
Tp HCM ngày 09 tháng 11 năm 2012
LỜI MỞ ĐẦU
Ngày nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật và trong dân dụng. Các bộ vi điều khiển có khả năng xử lý nhiều hoạt động phức tạp mà chỉ cần một chip vi mạch nhỏ, nó đã thay thế các tủ điều khiển lớn và phức tạp bằng những mạch điện gọn nhẹ, dễ dàng thao tác sử dụng.
Vi điều khiển không những góp phần vào kỹ thuật điều khiển mà còn góp phần to lớn vào việc phát triển thông tin. Chính vì các lý do trên, việc tìm hiểu, khảo sát vi điều khiển là điều mà các sinh viên ngành điện mà đặc biệt là chuyên ngành kỹ thuật điện-điện tử phải hết sức quan tâm. Đó chính là một nhu cầu cần thiết và cấp bách đối với mỗi sinh viên, đề tài này được thực hiện chính là đáp ứng nhu cầu đó.
Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử dụng đươc lại là một điều rất phức tạp. Phần công việc xử lý chính vẫn phụ thuộc vào con người, đó chính là chương trình hay phần mềm. Nếu không có sự tham gia của con người thì hệ thống vi điều khiển cũng chỉ là một vật vô tri. Do vậy khi nói đến vi điều khiển cũng giống như máy tính bao gồm 2 phần là phần cứng và phần mềm.
Mặc dù vi điều khiển đã đi được những bước dài như vậy nhưng để tiếp cận được với kỹ thuật này không thể là một việc có được trong một sớm một chiều. Để tìm hiểu bộ vi điều khiển một cách khoa học và mang lại hiệu quả cao làm nền tản cho việc xâm nhập vào những hệ thống tối tân hơn. Việc trang bị những kiến thức về vi điều khiển cho sinh viên là hết sức cần thiết. Xuất phát từ thực tiển này nhóm chúng em đã đi đến quyết định TRÌNH BÀY VỀ BỘ ĐỊNH THỜI TRONG VI ĐIỀU KHIỂN PIC16F877A nhằm đáp ứng nhu cầu ham muốn học hỏi của bản thân và giúp cho các bạn sinh viên dễ tiếp cận và hiểu sâu hơn về VĐK PIC.
Nhóm chúng em xin chân thành cảm ơn!
TP.Hồ Chí Minh, ngày 9 tháng 11 năm 2012
Giới thiệu về vi điều khiển Pic 16F877A
Khái quát
PIC là tên viết tắt của “Programmable Intelligent computer” do hãng General Instrument đặt tên cho con vi điều khiển đầu tiên của họ.Hãng Micrchip tiếp tục phát triển sản phầm này và cho đến hàng đã tạo ra gần 100 loại sản phẩm khác nhau.
PIC16F887A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ cho hầu hết tất cả các ứng dụng thực tế. Đây là dòng PIC khá dễ cho người mới làm quen với PIC có thể học tập và tạo nền tản về họ vi điều khiển PIC của mình.
PIC 16F877A thuộc họ vi điều khiển 16Fxxx có các đặt tính sau:
Ngôn ngữ lập trình đơn giản với 35 lệnh có độ dài 14 bit.
Tất cả các câu lệnh thực hiện trong 1 chu kì lệnh ngoại trừ 1 số câu lệnh rẽ nhánh thực hiện trong 2 chu kì lệnh. Chu kì lệnh bằng 4 lần chu kì dao động của thạch anh.
Bộ nhớ chương trình Flash 8Kx14 words, với khả năng ghi xoá khoảng 100 ngàn lần.
Bộ nhớ Ram 368x8bytes.
Bộ nhớ EFPROM 256x8 bytes.
Khả năng ngắt (lên tới 14 nguồn cả ngắt trong và ngắt ngoài).
Ngăn nhớ Stack được chia làm 8 mức.
Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián tiếp.
Dải điện thế hoạt động rộng: 2.0V đến 5.5V.
Nguồn sử dụng 25mA.
Công suất tiêu thụ thấp:
<0.6mA với 5V, 4MHz
20uA với nguồn 3V, 32 kHz.
Có 3 timer: timer0, 8 bit chức năng định thời và bộ đếm với hệ số tỷ lệ trước.Timer1, 16 bit chức năng bộ định thời, bộ đếm với hệ số tỷ lệ trước, kích hoạt chế độ Sleep.Timer2, 8 bit chức năng định thời và bộ đếm với hệ số tỷ lệ trước và sau.
Có 2 kênh Capture/ so sánh điện áp (Compare)/điều chế độ rộng xung PWM 10 bit / (CCP).
Có 8 kênh chuyển đổi ADC 10 bit.
Cổng truyền thong nối tiếp SSP với SPI phương thức chủ và I2C (chủ/phụ).Bộ truyền nhận thông tin đồng bộ, dị bộ (USART/SCL) có khả năng phát hiện 9 bit địa chỉ.
Cổng phụ song song (PSP) với 8 bít mở rộng, với RD, WR và CS điều khiển.
\
.
.
Hình: Hình ảnh 1 vi điều khiển PIC 16F877A
Sơ đồ khối
- Khối ALU – Arithmetic Logic Unit.
- Khối bộ nhớ chứa chương trình – Flash Program Memory.
- Khối bộ nhớ chứa dữ liệu EPROM – Data EPROM.
-Khối bộ nhớ file thanh ghi RAM – RAM file Register.
-Khối giải mã lệnh và điều khiển – Instruction Decode Control.
-Khối thanh ghi đặc biệt.
-Khối ngoại vi timer.
-Khối giao tiếp nối tiếp.
-Khối chuyển đổi tín hiệu tương tự sang số - ADC.
-Khối các port xuất nhập.
Sơ đồ và chức năng các chân
Chức năng của các chân:
• Chân OSC1/CLK1(13): ngõ vào kết nối với dao động thạch anh hoặc ngõ vàonhận xung clock từ bên ngoài.
•Chân OSC2/CLK2(14): ngõ ra dao động thạch anh hoặc ngõ ra cấp xungclock.
• Chân MCLR/Vpp (1) có 2 chức năng: ngõ vào reset tích cực ở mức thấp.
-Vpp: ngõ vào nhận điện áp lập trình khi lập trình cho PIC.
• Chân RA0/AN0(2), RA1/AN1(3), RA2/AN2(3): có 2 chức năng- RA0,1,2: xuất/ nhập số.- AN 0,1,2: ngõ vào tương tự của kênh thứ 0,1,2.
• Chân RA2/AN2/VREF-/CVREF+(4): xuất nhập số/ ngõ vào tương tự củakênh thứ 2/ nhõ vào điện áp chuẩn thấp của bộ AD/ ngõ vào điện áp chẩn caocủa bộ AD.
• Chân RA3/AN3/VREF+(5): xuất nhập số/ ngõ vào tương tự kênh 3/ ngõ vàođiện áp chuẩn (cao) của bộ AD.
• Chân RA4/TOCK1/C1OUT(6): xuất nhập số/ ngõ vào xung clock bên ngoàicho Timer 0/ ngõ ra bộ so sánh 1.
• Chân RA5/AN4// C2OUT(7): xuất nhập số/ ngõ vào tương tự kênh 4/ ngõvào chọn lựa SPI phụ/ ngõ ra bộ so sánh 2.
• Chân RB0/INT (33): xuất nhập số/ ngõ vào tín hiệu ngắt ngoài.
• Chân RB1(34), RB2(35): xuất nhập số.
•Chân RB3/PGM(36): xuất nhập số/ cho phép lập trình điện áp thấp ICSP.
•Chân RB4(37), RB5(38): xuất nhập số.
•Chân RB6/PGC(39): xuất nhấp số/ mạch gỡ rối và xung clock lập trình ICSP.
•Chân RB7/PGD(40): xuất nhập số/ mạch gỡ rối và dữ liệu lập trình ICSP.
• Chân RC0/T1OCO/T1CKI(15): xuất nhập số/ ngõ vào bộ giao động Timer1/ngõ vào xung clock bên ngoài Timer 1.
• Chân RC1/T1OSI/CCP2(16) : xuất nhập số/ ngõ vào bộ dao động Timer 1/ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2.
• Chân RC2/CCP1(17): xuất nhập số/ ngõ vào Capture1 ,ngõ ra compare1, ngõra PWM1.
• Chân RC3/SCK/SCL(18): xuất nhập số/ ngõ vào xung clock nối tiếp đồng bộ,ngõ ra chế độ SPI./ ngõ vào xung clock nối tiếp đồng bộ, ngõ ra của chế độI2C.
• Chân RC4/SDI/SDA(23): xuất nhập số/ dữ liệu vào SPI/ xuất nhập dữ liệuI2C.
• Chân RC5/SDO(24): xuất nhập số/ dữ liệu ra SPI.
• Chân RC6/TX/CK(25): xuất nhập số/ truyền bất đồng bộ USART/ xung đồng bộ USART.
• Chân RC7/RX/DT(26): xuất nhập số/ nhận bất đồng bộ USART.
• Chân RD0-7/PSP0-7(19-30): xuất nhập số/ dữ liệu port song song.
• Chân RE0/ /AN5(8): xuất nhập số/ điều khiển port song song/ ngõ vàotương tự 5.
• Chân RE1/ /AN6(9): xuất nhập số/ điều khiển ghi port song song/ ngõ vàotương tự kênh thứ 6.
• Chân RE2/ /AN7(10): xuất nhấp số/ Chân chọn lụa điều khiển port songsong/ ngõ vào tương tự kênh thứ 7.
• Chân VDD(11, 32) và VSS(12, 31): là các chân nguồn của PIC.
Hình 4: Sơ đồ nguyên lí cácPort của PIC 16F877A
Sơ đồ nguyên lý
c/Tổng quát:
Từ sơ đồ chân và sơ đồ nguyên lý ở trên, ta rút ra các nhận xét ban đầu như sau :
PIC16F877A có tất cả 40 chân
40 chân trên được chia thành 5 PORT, 2 chân cấp nguồn, 2 chân GND, 2 chân thạch anh và một chân dùng để RESET vi điều khiển.
5 port của PIC16F877A bao gồm :
+ PORT B: 8 chân
+ PORT D: 8 chân
+ PORT C: 8 chân
+ PORT A: 6 chân
+ PORT E: 3 chân
Đặt điểm vi điều khiển PIC16F877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit. Mỗi lệnh đều được thực thi trong một chu kì xung clock. Tốc độ hoạt động tối đacho 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 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte. Số PORT I/O là 5 với 33 pin I/O. Có 8 kênh chuyển đổi A/D
Các đặc tính ngoại vi bao gồmcác khối chức năng sau:
Timer 0: bộ đếm 8 bit với bộ chia tần số 8 bit.
Timer 1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếmdựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độsleep.
Timer 2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler.-Hai bộ Capture/so sánh/điều chế độ rông xung.-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ỉ.
-Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiểnRD, WR,
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
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.
- Nạp được chương trình ngay trên mạch điện ICSP (In Circuit SerialProgramming) thông qua 2 chân.
-Watchdog Timer với bộ dao động trong
-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ộđịnh thời của Pic 16F877A (Timer)
Timerlà các module độc lập với CPU. Chức năng chính của các bộ Timer, là định thì (tạo ra một khoảng thời gian, đếm thời gian…) và đếm sự kiện. Trên các chip AVR, các bộ Timer còn có thêm chức năng tạo ra các xung điều rộng PWM (Pulse Width Modulation), ở một số dòng AVR, một số Timer còn được dùng như các bộ canh chỉnh thời gian (calibration) trong các ứng dụng thời gian thực. Các bộ Timer được chia theo độ rộng thanh ghi chứa giá trị định thời hay giá trị đếm của chúng, cụ thể trên chip PIC 16F877A có 2 bộ Timer 8 bit (Timer 0 và Timer2) và 1 bộ 16 bit (Timer1). Chế độ hoạt động và phương pháp điều khiển của từng Timer cũng không hoàn toàn giống nhau. Gồm có:
Timer 0
Đây là một trong ba bộ đếm hoặc bộ định thời của vi điều khiển PIC16F877A.Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần số (prescaler) 8 bit. Cấu trúc củaTimer0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực của xung clock. Ngắt Timer0 sẽ xuất hiện khi Timer0 bị tràn.Bit TMR0IE (INTCON) là bit điềukhiển của Timer0. TMR0IE=1 cho phép ngắt Timer0 tác động, TMR0IF= 0 khôngcho phép ngắt Timer0 tác động. Sơ đồ khối của Timer0 như sau:
Hình 2. 1 Sơ đồ khối của Timer0.
Muốn Timer0 hoạt động ở chế độ Timer ta clear bit TOSC (OPTION_REG),khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kì xung đồng hồ (tần số vàoTimer0 bằng ¼ tần số oscillator). Khi giá trị thanh ghi TMR0 từ FFh trở về 00h, ngắtTimer0 sẽ xuất hiện.Thanh ghi TMR0 cho phép ghi và xóa được giúp ta ấn định thời điểm ngắt Timer0xuất hiện một cách linh động. Muốn Timer0 hoạt động ở chế độ counter ta set bitTOSC (OPTION_REG). Khi đó xung tác động lên bộ đếm được lấy từ chânRA4/TOCK1. Bit TOSE (OPTION_REG) cho phép lựa chọn cạnh tác động vào bột đếm. Cạnh tác động sẽ là cạnh lên nếu TOSE=0 và cạnh tác động sẽ là cạnhxuống nếu TOSE=1.Khi thanh ghi TMR0 bị tràn, bit TMR0IF (INTCON) sẽ được set. Đây chínhlà cờ ngắt của Timer0. Cờ ngắt này phải được xóa bằng chương trình trước khi bộđếm bắt đầu thực hiện lại quá trình đếm. Ngắt Timer0 không thể “đánh thức” vi điềukhiển từ chế độ sleep.Bộ chia tần số (prescaler) được chia sẻ giữa Timer0 và WDT (Watchdog Timer).Điều đó có nghĩa là nếu prescaler được sử dụng cho Timer0 thì WDT sẽ không có hỗ trợ của prescaler và ngược lại. Prescaler được điều khiển bởi thanh ghiOPTION_REG. Bit PSA (OPTION_REG) xác định đối tượng tác động của prescaler. Các bit PS2:PS0 (OPTION_REG) xác định tỉ số chia tần số của prescaler. Xem lại thanh ghi OPTION_REG để xác định lại một cách chi tiết về các bit điều khiển trên.Các lệnh tác động lên giá trị thanh ghi TMR0 sẽ xóa chế độ hoạt động của prescaler. Khi đối tượng tác động là Timer0, tác động lên giá trị thanh ghi TMR0 sẽxóa prescaler nhưng không làm thay đổi đối tượng tác động của prescaler. Khi đốitượng tác động là WDT, lệnh CLRWDT sẽ xóa prescaler, đồng thời prescaler sẽngưng tác vụ hỗ trợ cho WDT.
Các thanh ghi điều khiển liên quan đến Timer0 bao gồm:
TMR0 (địa chỉ 01h, 101h) : chứa giá trị đếm của Timer0.
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIEvà PEIE).
OPTION_REG (địa chỉ 81h, 181h): điều khiển prescaler.
Timer 1
Timer1 là bộ định thời 16 bit, giá trị của Timer1 sẽ được lưu trong hai thanh ghi(TMR1H:TMR1L). Cờ ngắt của Timer1 là bit TMR1IF (PIR1). Bit điều khiểncủaTimer1 sẽ là TMR1IE (PIE).Tương tự như Timer0, Timer1 cũng có hai chế độ hoạt động: chế độ định thời(timer) với xung kích là xung clock của oscillator (tần số của timer bằng ¼ tần số củaoscillator) và chế độ đếm (counter) với xung kích là xung phản ánh các sự kiện cầnđếm lấy từ bên ngoài thông qua chân RC0/T1OSO/T1CKI (cạnh tác động là cạnhlên). Việc lựa chọn xung tác động (tương ứng với việc lựa chọn chế độ hoạt động làtimer hay counter) được điều khiển bởi bit TMR1CS (T1CON).Sau đây là sơ đồ khối của Timer1:
Hình 2.2 Sơ đồ khối của Timer1.
Ngoài ra Timer1 còn có chức năng reset input bên trong được điều khiển bởi mộttrong hai khối CCP (Capture/Compare/PWM). Khi bit T1OSCEN (T1CON) đượcset, Timer1 sẽ lấy xung clock từ hai chân RC1/T1OSI/CCP2 và RC0/T1OSO/T1CKIlàm xung đếm. Timer1 sẽ bắt đầu đếm sau cạnh xuống đầu tiên của xung ngõ vào.Khi đó PORTC sẽ bỏ qua sự tác động của hai bit TRISC và PORTC đượcgán giá trị 0. Khi clear bit T1OSCEN Timer1 sẽ lấy xung đếm từ oscillator hoặc từchân RC0/T1OSO/T1CKI.Timer1 có hai chế độ đếm là đồng bộ (Synchronous) và bất đồng bộ(Asynchronous). Chế độ đếm được quyết định bởi bit điều khiển (T1CON).Khi =1 xung đếm lấy từ bên ngoài sẽ không được đồng bộ hóa với xungclock bên trong, Timer1 sẽ tiếp tục quá trình đếm khi vi điều khiển đang ở chế độsleep và ngắt do Timer1 tạo ra khi bị tràn có khả năng “đánh thức” vi điều khiển. Ởchế độ đếm bất đồng bộ,Timer1 không thể được sử dụng để làm nguồn xung clock cho khối CCP(Capture/Compare/Pulse width modulation). Khi =0 xung đếm vào Timer1sẽ được đồng bộ hóa với xung clock bên trong. Ở chế độ này Timer1 sẽ không hoạtđộng khi vi điều khiển đang ở chế độ sleep.
Các thanh ghi liên quan đến Timer1 bao gồm:
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIEvà PEIE).
PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer1 (TMR1IF).
PIE1( địa chỉ 8Ch): cho phép ngắt Timer1 (TMR1IE).
TMR1L (địa chỉ 0Eh): chứa giá trị 8 bit thấp của bộ đếm Timer1.
TMR1H (địa chỉ 0Eh): chứa giá trị 8 bit cao của bộ đếm Timer1.
T1CON (địa chỉ 10h): xác lập các thông số cho Timer1.
Thanh điều khiển Timer1:
T1CON (địa chỉ 10h): xác lập các thông số cho Timer1
Bit 7,6 Không sử dụng, đọc là 0.
Bit 5,4T1CKPS1 : T1CKPS0: Các bit chọn tỉ lệ xung ngõ vào cho Timer1.
11 1 : 8 giá trị tỉ lệ
10 1 : 4 giá trị tỉ lệ
01 1 : 2 giá trị tỉ lệ
00 1 : 1 giá trị tỉ lệ
Bit 3T10SCEN: Bit cho phép bộ dao động Timer 1 Oscillator
: Cho phép dao động
: Không cho phép dao động
Bit 2T1SYNC: Bit lựa chọn đồng bộ hóa xung clock ngoài của Timer 1(
Chú ý: Bit này chỉ có tác dụng khibit TMR1CS = 1
1: Không đồng bộ hóa xung clock ngoại
0: Đồng bộ hóa xung clock ngoại.
Bit 1TMR1CS: Bit chọn nguồn xung clock choTimer 1
1: Chọn xung clock ngoài qua chânT1OSC/T1CKI( tác động cạnh lên)
0: Chọn xung clock nội (Fosc/4)
Bit 0TMR1ON: Bit cho phép ngoặc ngưngTimer 1
1: Cho phép
0: Không cho phépChi tiết về các thanh ghi khác sẽ được
Timer 2
Timer2 là bộ định thời 8 bit và được hỗ trợ bởi hai bộ chia tần số prescaler và postscaler. Thanh ghi chứa giá trị đếm của Timer2 là TMR2. Bit cho phép ngắtTimer2 tác động là TMR2ON (T2CON). Cờ ngắt của Timer2 là bit TMR2IF(PIR1). Xung ngõ vào (tần số bằng ¼ tần số oscillator) được đưa qua bộ chia tầnsố prescaler 4 bit (với các tỉ số chia tần số là 1:1, 1:4 hoặc 1:16 và được điều khiển bởi các bit T2CKPS1:T2CKPS0 (T2CON)).
Hình 2.3 Sơ đồ khối Timer2
Timer2 còn được hỗ trợ bởi thanh ghi PR2. Giá trị đếm trong thanh ghi TMR2 sẽtăng từ 00h đến giá trị chứa trong thanh ghi PR2, sau đó được reset về 00h. Kh I resetthanh ghi PR2 được nhận giá trị mặc định FFh.Ngõ ra của Timer2 được đưa qua bộ chia tần số postscaler với các mức chia từ1:1 đến 1:16. Postscaler được điều khiển bởi 4 bit T2OUTPS3:T2OUTPS0. Ngõ racủa postscaler đóng vai trò quyết định trong việc điều khiển cờ ngắt. Ngoài ra ngõ ra của Timer2 còn được kết nối với khối SSP, do đó Timer2 còn đóng vai trò tạo ra xung clock đồng bộ cho khối giao tiếp SSP.
Các thanh ghi liên quan đến Timer2 bao gồm:
- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn bộ các ngắt(GIE và PEIE).
-PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer2 (TMR2IF).
-PIE1 (địa chị 8Ch): chứa bit điều khiển Timer2 (TMR2IE).
-TMR2 (địa chỉ 11h): chứa giá trị đếm của Timer2.
-T2CON (địa chỉ 12h): xác lập các thông số cho Timer2.
-PR2 (địa chỉ 92h): thanh ghi hỗ trợ cho Timer2
Thanh điều khiển Timer2:
T2CON (địa chỉ 12h): xác lập các thông số cho Timer2.
Hình 2.4 :Thanh điều khiển Timer2
Bit 7: không sử dụng
Bit 6:3 TOUTPS3:TOUTPS0: Bit chọn tỉ lệ ngõ ra của Timer 2
0000: 1:1 Tỷ lệ ngõ ra
0001: 1:2 Tỷ lệ ngõ ra.
1111: 1:16 Tỷ lệ ngõ ra
Bit 2 TMR2ON: Bit cho phép hoạt động của Timer 21: Cho phép0: Không cho phép.
Bit 1:0T2CKPS1:T2CKPS0 : Bit chọn tỉ lệ ngõ vào của Timer 2
00 : Prescaler 1
01 : Prescaler 4
1x : Prescaler 16
PHẦN KẾT LUẬN
Qua thời gian thực hiện đề tài tiểu luận “TRÌNH BÀY VỀ BỘ ĐỊNH THỜI TRONG VI ĐIỀU
KHIỂN PIC16F877A”.Cuối cùngthì chúng em cũnghoàn thành đề tài này. Chúng em đã giải
quyết tốt mục đích chính của đề tài là trình bày về bộ đinh thời trong vi điều khiển píc6f877a
Nhưng vẫn còn những vấn đề hạn chế màchúng em vẫn chưa giải quyết được như:
Ø Thiết kế và ứng dụng bộ định thời
Ø Viết các chương trình ví dụ
Hướng giải quyết:
Chúng em sẽ cố gắng nghiên cứu tìm hiểu qua nhiều tài liệu để khắc phụcnhững hạn chế vẫn
chưa giải quyết được .
Trong quá trình thực hiện đề tài này chúng em đã gặp rất nhiều khó khăn dobị hạn chế về kiến
thức cũng như thời gian thực hiện đề tài nhưng cuối cùng chúngem đã hoàn thànhnó đúng
thời hạn.
Xin chân thành cảm ơn!
TÀI LIỆU THAM KHẢO
Huỳnh Minh Ngọc - Giáo trình Vi xử lý -Đại Học Công NghiệpTP.Hồ Chí Minh, năm2009