GIỚI THIỆU CHUNG cấu TRÚC bộ VI điều KHIỂN

14 628 0
GIỚI THIỆU CHUNG cấu TRÚC bộ VI điều KHIỂN

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

I GIỚI THIỆU CHUNG CẤU TRÚC BỘ VI ĐIỀU KHIỂN Lịch sử vi điều khiển PIC 16F877A Sơ đồ chân vi điều khiển PIC 16F877A Hình 9: Sơ đồ chân vi điều khiển PIC16F877A b Một vài thông số vi điều khiển PIC16F877A Đây 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 thực thi chu kì xung clock Tốc độ hoạt động tối đa cho phép 20 MHz với chu kì lệnh 200ns Bộ nhớ chương trình 8Kx14 bit, nhớ liệu 368x8 byte RAM nhớ liệu EEPROM với dung lượng 256x8 byte Số PORT I/O với 33 pin I/O  Các đặc tính ngoại vi bao gồm khối chức sau: - Timer0: đếm bit với chia tần số bit - Timer1: đếm 16 bit với chia tần số, thực chức đếm dựa vào xung clock ngoại vi vi điều khiển hoạt động chế độ sleep - Timer2: đếm bit với chia tần số, postcaler - Hai 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 I2C - Chuẩn giao tiếp nối tiếp USART với bit địa - Cổng giao tiếp song song PSP (Parallel Slave Port) với chân điều khiển RD, WR,CS bên  Các đặc tính Analog: - kênh chuyển đổi ADC 10 bit - Hai so sánh  Bên cạnh vài đặc tính khác vi điều khiển như: - Bộ nhớ flash với khả ghi xóa 100.000 lần - Bộ nhớ EEPROM với khả ghi xóa 1.000.000 lần - Dữ liệu nhớ EEPROM lưu trữ 40 năm - Khả tự nạp chương trình với điều khiển phần mềm - Nạp chương trình mạch điện ICSP (In Circuit Serial Programming) thông qua chân - Watchdog Timer với dao động - Chức 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 c Sơ đồ khối vi điều khiển PIC16F877A Hình 10 Sơ đồ khối vi điều khiển PIC16F877A d Tổ chức nhớ Cấu trúc nhớ vi điều khiển PIC16F877A bao gồm nhớ chương trình (Programmemory) nhớ liệu (Data Memory) • Bộ nhớ chương trình Bộ nhớ chương trình vi điều khiển PIC16F877A nhớ flash, dung lượng nhớ 8K word (1 word = 14 bit) phân thành nhiều trang (từ page0 đến page 3) Như nhớ chương trình có khả chứa 8*1024 = 8192 lệnh (vì lệnh sau mã hóa có dung lượng word (14 bit) Để mã hóa địa 8K word nhớ chương trình, đếm chương trình có dung lượng 13 bit (PC) Khi vi điều khiển reset, đếm chương trình đến địa 0000h (Reset vector) Khi có ngắt xảy ra, đếm chương trình đến địa 0004h (Interrupt vector) Hình 11 Bộ nhớ chương trình PIC • Bộ nhớ liệu Bộ nhớ liệu PIC nhớ EEPROM chia làm nhiều bank Đối vớiPIC16F877A nhớ liệu chia làm bank Mỗi bank có dung lượng 128 byte, baogồm ghi có chức đặc biệt SFG (Special Function Register) nằm vùngđịa thấp ghi mục đích chung GPR (General Purpose Register) nằm vùngđịa lại bank Các ghi SFR thường xuyên sử dụng (ví dụ ghi STATUS) đặt tất cà bank nhớ liệu giúp thuận tiện quátrình truy xuất làm giảm bớt lệnh chương trình Sơ đồ cụ thể nhớ liệu PIC16F877A sau: Hình 12.Sơ đồ nhớ liệu PIC16F877A e Cổng xuất nhập Cổng xuất nhập (I/O port) phương tiện mà vi điều khiển dùng để tương tác với giới bên Sự tương tác đa dạng thông qua trình tương tác đó, chức vi điều khiển thể cách rõ ràng Một cổng xuất nhập vi điều khiển bao gồm nhiều chân (I/O pin), tùy theo cách bố trí chức vi điều khiển mà số lượng cổng xuất nhập số lượng chân cổng khác Bên cạnh đó, vi điều khiển tích hợp sẵn bên đặc tính giao tiếp ngoại vi nên bên cạnh chức cổng xuất nhập thông thường, số chân xuất nhập có thêm chức khác để thể tác động đặc tính ngoại vi nêu giới bên Chức chân xuất nhập cổng hoàn toàn xác lập điều khiển thông qua ghi SFR liên quan đến chân xuất nhập Vi điều khiển PIC16F877A có cổng xuất nhập, bao gồm PORTA, PORTB, PORTC, PORTD PORTE • PORTA PORTA (RPA) bao gồm I/O pin Đây chân “hai chiều” (bidirectional pin), nghĩa xuất nhập Chức I/O điều khiển ghi TRISA (địa 85h) Muốn xác lập chức chân PORTA input, ta “set” bit điều khiển tương ứng với chân ghi TRISA ngược lại, muốn xác lập chức chân PORTA output, ta “clear” bit điều khiển tương ứng với chân ghi TRISA Thao tác hoàn toàn tương tự PORT ghi điều khiển tương ứng TRIS (đối với PORTA TRISA, PORTB TRISB, PORTC TRISC, PORTD TRISD vàđối với PORTE TRISE) Bên cạnh PORTA ngõ ADC, so sánh, ngõ vào analog ngõ vào xung clock Timer0 ngõ vào giao tiếp MSSP (Master Synchronous Serial Port) Các ghi SFR liên quan đến PORTA bao gồm: PORTA (địa 05h) : chứa giá trị pin PORTA TRISA (địa 85h) : điều khiển xuất nhập CMCON (địa 9Ch): ghi điều khiển so sánh CVRCON (địa 9Dh) : ghi điều khiển so sánh điện áp ADCON1 (địa 9Fh): ghi điều khiển ADC • PORTB PORTB (RPB) gồm pin I/O Thanh ghi điều khiển xuất nhập tương ứng TRISB Bên cạnh số chân PORTB sử dụng trình nạp chương trình cho vi điều khiển với chế độ nạp khác PORTB liên quan đến ngắt ngoại vi Timer0 PORTB tích hợp chức điện trở kéo lên điều khiển chương trình Các ghi SFR liên quan đến PORTB bao gồm: PORTB (địa 06h,106h) : chứa giá trị pin PORTB TRISB (địa 86h,186h) : điều khiển xuất nhập OPTION_REG (địa 81h,181h) : điều khiển ngắt ngoại vi Timer0 • PORTC PORTC (RPC) gồm pin I/O Thanh ghi điều khiển xuất nhập tương ứng TRISC Bên cạnh PORTC chứa chân chức so sánh, Timer1, PWM chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART Các ghi điều khiển liên quan đến PORTC: PORTC (địa 07h) : chứa giá trị pin PORTC TRISC (địa 87h) : điều khiển xuất nhập • PORTD PORTD (RPD) gồm chân I/O, ghi điều khiển xuất nhập tương ứng TRISD PORTD cổng xuất liệu chuẩn giao tiếp PSP (Parallel Slave Port) Các ghi liên quan đến PORTD bao gồm: Thanh ghi PORTD: chứa giá trị pin PORTD Thanh ghi TRISD : điều khiển xuất nhập Thanh ghi TRISE : điều khiển xuất nhập PORTE chuẩn giao tiếp PSP • PORTE PORTE (RPE) gồm chân I/O Thanh ghi điều khiển xuất nhập tương ứng TRISE Các chân PORTE có ngõ vào analog Bên cạnh PORTE chân điều khiển chuẩn giao tiếp PSP Các ghi liên quan đến PORTE bao gồm: PORTE : chứa giá trị chân PORTE TRISE : điều khiển xuất nhập chuẩn giao tiếp PSP ADCON1 : ghi điều khiển khối ADC f TIMER Đây ba đếm định thời vi điều khiển PIC16F877A Timer0 đếm bit kết nối với chia tần số (prescaler) bit Cấu trúc Timer0 cho phép ta lựa chọn xung clock tác động cạnh tích cực xung clock Ngắt Timer0 xuất Timer0 bị tràn Bit TMR0IE (INTCON) bit điều khiển Timer0 TMR0IE=1 cho phép ngắt Timer0 tác động, TMR0IF= không cho phép ngắt Timer0 tác động Sơ đồ khối Timer0 sau: Hình 13 Sơ đồ khối Timer0 Muốn Timer0 hoạt động chế độ Timer ta clear bit TOSC (OPTION_REG), giá trị ghi TMR0 tăng theo chu kì xung đồng hồ (tần số vào Timer0 ¼ tần số oscillator) Khi giá trị ghi TMR0 từ FFh trở 00h, ngắt Timer0 xuất Thanh ghi TMR0 cho phép ghi xóa giúp ta ấn định thời điểm ngắt Timer0 xuất cách linh động Muốn Timer0 hoạt động chế độ counter ta set bit TOSC (OPTION_REG) Khi xung tác động lên đếm lấy từ chân RA4/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 cạnh lên TOSE=0 cạnh tác động cạnh xuống TOSE=1 Khi ghi TMR0 bị tràn, bit TMR0IF (INTCON) set Đây cờ ngắt Timer0 Cờ ngắt phải xóa chương trình trước đếm bắt đầu thực lại trình đếm Ngắt Timer0 “đánh thức” vi điều khiển từ chế độ sleep Bộ chia tần số (prescaler) chia sẻ Timer0 WDT (Watchdog Timer) Điều có nghĩa prescaler sử dụng cho Timer0 WDT hỗ trợ prescaler ngược lại Prescaler điều khiển ghi OPTION_REG Bit PSA (OPTION_REG) xác định đối tượng tác động prescaler Các bit PS2:PS0 (OPTION_REG) xác định tỉ số chia tần số prescaler Xem lại ghi OPTION_REG để xác định lại cách chi tiết bit điều khiển Các lệnh tác động lên giá trị ghi TMR0 xóa chế độ hoạt động prescaler Khi đối tượng tác động Timer0, tác động lên giá trị ghi TMR0 xóa prescaler không làm thay đổi đối tượng tác động prescaler Khi đối tượng tác động WDT, lệnh CLRWDT xóa prescaler, đồng thời prescaler ngưng tác vụ hỗ trợ cho WDT Các ghi điều khiển liên quan đến Timer0 bao gồm: TMR0 (địa 01h, 101h) : chứa giá trị đếm Timer0 INTCON (địa 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE PEIE) OPTION_REG (địa 81h, 181h): điều khiển prescaler g TIMER1 Timer1 định thời 16 bit, giá trị Timer1 lưu hai ghi (TMR1H:TMR1L) Cờ ngắt Timer1 bit TMR1IF (PIR1) Bit điều khiển Timer1 TMR1IE (PIE) Tương tự Timer0, Timer1 có hai chế độ hoạt động: chế độ định thời (timer) với xung kích xung clock oscillator (tần số timer ¼ tần số oscillator) chế độ đếm (counter) với xung kích xung phản ánh kiện cần đếm lấy từ bên thông qua chân RC0/T1OSO/T1CKI (cạnh tác động cạnh lê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 timer hay counter) điều khiển bit TMR1CS (T1CON) Sau sơ đồ khối Timer1: Hình 14 Sơ đồ khối Timer1 Ngoài Timer1 có chức reset input bên điều khiển hai khối CCP (Capture/Compare/PWM) Khi bit T1OSCEN (T1CON) set, Timer1 lấy xung clock từ hai chân RC1/T1OSI/CCP2 RC0/T1OSO/T1CKI làm xung đếm Timer1 bắt đầu đếm sau cạnh xuống xung ngõ vào Khi PORTC bỏ qua tác động hai bit TRISC PORTC gán giá trị Khi clear bit T1OSCEN, Timer1 lấy xung đếm từ oscillator từ chân C0/T1OSO/T1CKI Timer1 có hai chế độ đếm đồng (Synchronous) bất đồng (Asynchronous).Chế độ đếm định bit điều khiển T1SYNC (T1CON) Khi T1SYNC =1 xung đếm lấy từ bên không đồng hóa với xung clock bên trong, Timer1 tiếp tục trình đếm vi điều khiển chế độ sleep ngắt Timer1 tạo bị tràn có khả “đánh thức” vi điều khiển Ở chế độ đếm bất đồng bộ, Timer1 sử dụng để làm nguồn xung clock cho khối CCP (Capture/Compare/Pulse width modulation) Khi T1SYNC =0 xung đếm vào Timer1 đồng hóa với xung clock bên Ở chế độ Timer1 không hoạt động vi điều khiển chế độ sleep Các ghi liên quan đến Timer1 bao gồm: INTCON (địa 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE PEIE) PIR1 (địa 0Ch): chứa cờ ngắt Timer1 (TMR1IF) PIE1( địa 8Ch): cho phép ngắt Timer1 (TMR1IE) TMR1L (địa 0Eh): chứa giá trị bit thấp đếm Timer1 TMR1H (địa 0Eh): chứa giá trị bit cao đếm Timer1 T1CON (địa 10h): xác lập thông số cho Timer1 h TIMER2 Timer2 định thời bit hỗ trợ hai chia tần số prescaler postscaler Thanh ghi chứa giá trị đếm Timer2 TMR2 Bit cho phép ngắt Timer2 tác động TMR2ON (T2CON) Cờ ngắt Timer2 bit TMR2IF (PIR1) Xung ngõ vào (tần số ¼ tần số oscillator) đưa qua chia tần số prescaler bit (với tỉ số chia tần số 1:1, 1:4 1:16 điều khiển bit T2CKPS1:T2CKPS0 (T2CON)) Hình 15 Sơ đồ khối Timer2 Timer2 hỗ trợ ghi PR2 Giá trị đếm ghi TMR2 tăng từ 00h đến giá trị chứa ghi PR2, sau reset 00h Khi reset ghi PR2 nhận giá trị mặc định FFh Ngõ Timer2 đưa qua chia tần số postscaler với mức chia từ 1:1 đến 1:16 Postscaler điều khiển bit T2OUTPS3:T2OUTPS0 Ngõ postscaler đóng vai trò định việc điều khiển cờ ngắt Ngoài ngõ Timer2 kết nối với khối SSP, Timer2 đóng vai trò tạo xung clock đồng cho khối giao tiếp SSP Các ghi liên quan đến Timer2 bao gồm: INTCON (địa 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn ngắt (GIE PEIE) PIR1 (địa 0Ch): chứa cờ ngắt Timer2 (TMR2IF) PIE1 (địa chị 8Ch): chứa bit điều khiển Timer2 (TMR2IE) TMR2 (địa 11h): chứa giá trị đếm Timer2 T2CON (địa 12h): xác lập thông số cho Timer2 PR2 (địa 92h): ghi hỗ trợ cho Timer2 [...]... độ đếm là đồng bộ (Synchronous) và bất đồng bộ (Asynchronous).Chế độ đếm được quyết định bởi bit điều khiển T1SYNC (T1CON) Khi T1SYNC =1 xung đếm lấy từ bên ngoài sẽ không được đồng bộ hóa với xung clock 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... bên ngoài thông qua chân RC0/T1OSO/T1CKI (cạnh tác động là cạnh lê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 14 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ột trong hai khối CCP (Capture/Compare/PWM) Khi bit T1OSCEN... đến 1:16 Postscaler được điều khiển bởi 4 bit T2OUTPS3:T2OUTPS0 Ngõ ra củ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... sẽ đượ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 (GIE và 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... Timer0 INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE và PEIE) OPTION_REG (địa chỉ 81h, 181h): điều khiển prescaler g TIMER1 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ển của Timer1 sẽ là TMR1IE (PIE) Tương tự như Timer0, Timer1 cũng có hai chế độ hoạt động: chế độ định thời... được điều khiển bởi các bit T2CKPS1:T2CKPS0 (T2CON)) Hình 15 Sơ đồ khối của 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 Khi reset thanh 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. .. trị 8 bit cao của bộ đếm Timer1 T1CON (địa chỉ 10h): xác lập các thông số cho Timer1 h TIMER2 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ắt Timer2 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ần số... 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

Ngày đăng: 16/11/2016, 09:06

Từ khóa liên quan

Mục lục

  • I. GIỚI THIỆU CHUNG CẤU TRÚC BỘ VI ĐIỀU KHIỂN

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan