intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng vi xử lý-Chương số 2: Cấu trúc

Chia sẻ: Cao Van Manh | Ngày: | Loại File: PDF | Số trang:21

48
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bộ nhớ dữ liệu được chia tnafnh 4 Bank: Bnak 0. Bank 1, Bank 2 và Bank 3. Mỗi Bank có dung lượng là 128 byte bao gồm vùng Ram đa mục đíc , vùng Ram chứa các thanh ghi chức năng đặc biệt SFRs. Các Bank này dược lựa chọn bởi 2 bit RPQ và RP0 nằm trong thanh ghi STATUS

Chủ đề:
Lưu

Nội dung Text: Bài giảng vi xử lý-Chương số 2: Cấu trúc

  1. CHƯƠNG 2 C U TRÚC PH N C NG PIC 16F877A 1. C u trúc t ng quát c a PIC16F877A 8K x 14 words Flash ROM. 368 x 8 Bytes RAM. 256 x 8 Bytes EEPROM. 5 Port xuất/nhập (A, B, C, D, E) tương ứng 33 chân. 2 Bộ định thời 8 bit Timer 0 và Timer 2. 1 Bộ định thời 16 bit Timer 1, có thể hoạt động ở chế độ tiết kiệm năng lượng (SLEEP MODE) với nguồn xung clock ngoài. 2 Bộ CCP Capture/ Compare/ PWM. (Bắt Giữ/ So Sánh/ Điều Biến Xung) 1 Bộ biến đổi Analog to Digital 10 bit, 8 ngõ vào. 1
  2. 1. C u trúc t ng quát c a PIC16F877A 1 Bộ định thời giám sát (Watch Dog Timer). Giao tiếp song song 8 bit (PSP). Giao tiếp nối tiếp(MSSP,USART). 15 Nguồn ngắt (Interrupt). Chế độ tiết kiệm năng lượng (Sleep Mode). Nạp chương trình bằng cổng nối tiếp ( ICSP™ ) Tập lệnh gồm 35 lệnh có độ dài 14 bit. Tần số hoạt động tối đa 20 MHz. 2. Sơ đ và ch c năng các chân PIC16F877A PIC16F877A laø hoï Vi ñieàu khieån coù 40 chaân(dạng PDIP) 2
  3. 2. Sơ đồ và chức năng các chân PIC16F877A PIC16F877A là họ vi điều khiển có 40 chân (dạng TQFP) 2. Sơ đ và ch c năng các chân PIC16F877A Cấu tạo tổng quát của PIC16F877A 3
  4. 2.1 PORTA và thanh ghi TRISA Port A gồm 6 chân từ RA5-RA0. Việc ghi các giá trị vào thanh ghi TRISA sẽ qui định các chân của PortA. Nếu bằng 0: ngõ Output, bằng 1: ngõ Input. Chân RA0/AN0 RA0: Xuất/ nhập số AN0: Ngõ vào tương tự kênh 0 Chân RA1/AN1 RA1: Xuất/ nhập số AN1: Ngõ vào tương tự kênh 1 2.1 PORTA và thanh ghi TRISA Chân RA2/AN2/VREF-/CVREF RA2: Xuất/ nhập số AN2: Ngõ vào tương tự kênh 2 VREF-: Ngõ vào điện áp chuẩn (thấp) của bộ A/D CVREF: Điện áp tham chiếu ngõ ra bộ so sánh Chân RA3/AN3/VREF+ RA3: Xuất/ nhập số AN3: Ngõ vào tương tự kênh 3 VREF+: Ngõ vào điện áp chuẩn (cao) của bộ A/D 4
  5. 2.1 PORTA và thanh ghi TRISA Chân RA4/T0CKI/C1OUT RA4: Xuất/ nhập số T0CKI: Ngõ vào xung clock bên bên ngoài cho Timer0 C1OUT: Ngõ ra bộ so sánh 1 Chân RA5/AN4/SS/C2OUT RA5: Xuất/ nhập số AN4: Ngõ vào tương tự kênh 4 SS : ngõ vào chọn lựa SPI C2OUT: Ngõ ra bộ so sánh 2 2.2 PORTB và thanh ghi TRISB Port B gồm 8 chân từ RB7-RB0. Việc ghi các giá trị vào thanh ghi TRISB sẽ qui định các chân của PortB. Nếu bằng 0: ngõ Output, bằng 1: ngõ Input. RB0/INT: RB0: Xuất/ nhập số INT: ngõ vào nhận tín hiệu ngắt RB0 RB1: xuất/nhập số RB2: xuất/nhập số RB3/PGM: RB3: xuất/nhập số PGM: chân cho phép lập trình điện áp thấp ICSP 5
  6. 2.2 PORTB và thanh ghi TRISB RB4: xuất/nhập số RB5: xuất/nhập số RB6/PGC: RB6: xuất/nhập số PGC: mạch gỡ rối và xung clock lập trình ICSP RB7/PGD: RB7: xuất/nhập số PGD: mạch gỡ rối và dữ liệu lập trình ICSP 2.3 PORTC và thanh ghi TRISC Port C gồm 8 chân từ RC7-RC0. Việc ghi các giá trị vào thanh ghi TRISC sẽ qui định các chân của PortC. Nếu bằng 0: ngõ Output, bằng 1: ngõ Input. RC0/T1OSO/T1CKI: RC0: Xuất/ nhập số T1OSO: ngõ ra bộ dao động Timer1 T1CKI: ngõ vào xung clock bên ngoài Timer1 RC1/T1OSI/CCP2: RC1: Xuất/ nhập số T1OSI: ngõ vào bộ dao động Timer1 CCP2: ngõ vào Capture 2, ngõ ra so sánh 2, ngõ ra PWM2 6
  7. 2.3 PORTC và thanh ghi TRISC RC2/CCP1: RC2: Xuất/ nhập số CCP1: ngõ vào Capture 1, ngõ ra so sánh 1, ngõ ra PWM1 RC3/SCK/SCL: RC3: Xuất/ nhập số SCK: Ngõ vào xung clock nối tiếp đồng bộ/ ngõ ra chế độ SPI SCL: Ngõ vào xung clock nối tiếp đồng bộ/ ngõ ra chế độ I2C RC4/SDI/SDA: RC4: Xuất/ nhập số SDI: Ngõ vào data SPI SDA: Xuất/ nhập dữ liệu I2C RC5/SDO: RC5: Xuất/ nhập số SDO: Ngõ ra data SPI 2.3 PORTC và thanh ghi TRISC RC6/TX/CK: RC6: Xuất/ nhập số TX: Truyền bất đồng bộ USART CK: Xung đồng bộ USART RC7/RX/DT: RC7: Xuất/ nhập số RX: Nhận bất đồng bộ USART DT: Dữ liệu đồng bộ USART 7
  8. 2.4 PORTD và thanh ghi TRISD Port D gồm 8 chân từ RD7-RD0. Các giá trị thanh ghi TRISD sẽ qui định các chân của PortD. Nếu bằng 0: ngõ Output, bằng 1: ngõ Input. Ngoài chức năng là Port xuất / nhập, Port D còn được cấu hình như một Port vi xử lý 8 bit (parallel slave port) bằng cách set bit PSPMODE (TRISE). RD0/PSP0: RD0: Xuất/nhập số PSP0: Dữ liệu Port tớ song song Các chân còn lại PORTD giống RD0. 2.5 PORTE và thanh ghi TRISE Port E gồm 3 chân từ RE2-RE0. Các giá trị thanh ghi TRISE sẽ qui định các chân của PortE. Nếu bằng 0: ngõ Output, bằng 1: ngõ Input. RE0 /RD/AN5: RE0: Xuất/ nhập số RD: cho phép đọc dữ liệu song song từ các ngoại vi AN5: Ngõ vào tương tự kênh 5 8
  9. 2.5 PORTE và thanh ghi TRISE RE1 /WR/AN6: RE1: Xuất/ nhập số WR: cho phép ghi dữ liệu song song từ các ngoại vi AN6: Ngõ vào tương tự kênh 6 RE2 /CS/AN7: RE2: Xuất/ nhập số CS: Chip chọn lựa điều khiển port tớ song song AN7: Ngõ vào tương tự kênh 7 2.6 Chân OSC1- OSC2 PIC 16F877A có bộ dao động hoạt động ở 4 trường hợp - LP Low Power Crystal - XT Crystal/Resonator - HS High Speed Crystal/Resonator - RC Resistor/Capacitor RC LP, XT, HS 9
  10. 2.7 Chân MCLR (Master Reset) - Chân MCLR\ là chân reset ở mức thấp. - Đa hợp với chân Vpp là chân nhận điện áp trong chế độ lập trình cho PIC. 2.8 Chân c p ngu n PIC 16F877A hoạt động với điện áp +5V. - Hai chân VDD (số 11 và 32) nối với cực dương nguồn 5V - Hai chân VSS (số 12 và 31) nối với Mass Tất cả 4 chân này đều phải được kết nối thì PIC mới hoạt động. 3. T ch c b nh PIC16F877A bao gồm 3 khối bộ nhớ riêng biệt: - Bộ nhớ chương trình (Program Memory) - Bộ nhớ dữ liệu (Data Memory) - Bộ nhớ dữ liệu EEPROM (EEPROM data Memory) 10
  11. 3.1 B nh chương trình Gồm có 8K x 14 words bộ nhớ Flash ROM. Gồm 1 thanh ghi bộ đếm chương trình 13 bit (PC). (Program Counter) Vector Reset đặt tại 0000h khi xảy ra Reset. Vector Ngắt đặt tại 0004h khi xảy ra Ngắt. 3.2 B nh d li u Bộ nhớ dữ liệu được chia thành 4 Bank: Bank 0, Bank 1, Bank 2 và Bank 3. Mỗi Bank có dung lượng là 128 byte bao gồm: vùng Ram đa mục đích , vùng Ram chứa các thanh ghi chức năng đặc biệt SFRs (Special Function Registers ). Các Bank này được lựa chọn bởi 2 bit RP1 và RP0 nằm trong thanh ghi STATUS. RP1 RP0 Bank 0 0 Bank 0 0 1 Bank 1 1 0 Bank 2 1 1 Bank 3 11
  12. 3.2 B nh d li u Vùng RAM đa mục đích gồm các ô nhớ 8 bit và được truy xuất trực tiếp hoặc gián tiếp thông qua thanh ghi FSR (File Select Register) Vùng RAM chứa các thanh ghi chức năng đặc biệt, các thanh ghi này được truy xuất bởi CPU và các hàm chức năng ngoại vi để điều khiển hoạt động của các thiết bị ngoại vi. 3.2.1 Các thanh ghi ch c năng đ c bi t a. Thanh ghi STATUS Bit Chức năng C Cờ nhớ(Carry/Borrow bit) dùng cho phép cộng trừ 1: Phép cộng có nhớ và phép trừ có mượn tại bit 7 0: Ngược lại DC Cờ nhớ phụ(Digit Carry/Borrow bit) ở phép cộng trừ 4 bit thấp 1: Phép cộng có nhớ và phép trừ có mượn tại bit 3 0: Ngược lại Z Cờ Zero 1: Khi kết quả các phép toán số học và phép logic bằng 0 0: Ngược lại PD\ (Power-down) Bit báo chế độ nguồn giảm 1: khi chế độ nguồn bình thường hoặc sau lệnh CLRWDT 0: khi VĐK ở chế độ SLEEP(chế độ nghĩ-nguồn thấp) 12
  13. a. Thanh ghi STATUS(tt) Bit Chức năng TO\ (Time-out) Bit báo trạng thái WDT 1: Ở trạng thái nguồn bình thường, hoặc sau lệnh CLRWDT, SLEEP 0: Khi WDT đi vào hoạt động và thời gian chờ được tính RP1, 2 bit chọn bank thanh ghi (dùng địa chỉ trực tiếp) RP0 RP1RP0=00,01,10,11 chọn bank 0,1,2,3 IRP Bit chọn bank thanh ghi(dùng địa chỉ gián tiếp) 1: Chọn bank 2,3 0: Chọn bank 0,1 b. Thanh ghi OPTION Bao gồm các Bit thiết lập bộ chia tỉ lệ cho WDT/Timer0, Ngắt ngoài RB0, Timer0 và chế độ có điện trở treo ở PortB. Bit Chöùc naêng PS0 Bit chọn lựa hệ số tỉ lệ của bộ chia Prescaler PS1 PS2 PSA Bit gán bộ chia tỉ lệ(Prescaler Assignment bit) 1: bộ chia được gán cho WDT 0: bộ chia được gán cho TIMER 13
  14. b. Thanh ghi OPTION Bit Chức năng T0SE Bit chọn kiểu tác động Timer0(TMR0 Source Edge Select bit) 1: cho phép chọn xung vào ngõ RA4/T0CKI tác động bởi cạnh lên 0: cho phép chọn xung vào ngõ RA4/T0CKI tác động bởi cạnh xuống T0CS Bit chọn nguồn xung clock cho Timer0(TMR0 Source Edge Select bit) 1: cho phép nhận xung clock từ chân RA4/T0CKI 0: cho phép nhận xung clock từ bộ dao động nội INTEDG Bit chọn kiểu tác động nguồn ngắt(Interrupt Edge Select bit) 1: cho phép ngõ vào ngắt RB0/INT tác động ở cạnh lên 0: cho phép ngõ vào ngắt RB0/INT tác động ở cạnh xuống RBPU\ Bit cho phép PORTB treo điện trở lên nguồn HIGH 1: không cho phép LOW RBx 0: cho phép c. Thanh ghi INTCON Bao gồm các Cờ báo ngắt và các Bit cho phép Ngắt Timer0, Ngắt do sự thay đổi các chân PortB và Ngắt ngoài chân RB0/INT. Bit Chức năng RBIF Cờ báo khi có sự thay đổi trạng thái ở PortB 1: khi có sự thay đổi trạng thái ít nhất 1 chân tại RB7-RB4 0: khi không có sự thay đổi ở PortB INTF Cờ báo ngắt ngoài tại chân RB0/INT 0: khi không có ngắt ngoài tại RB0/INT 1: khi có ngắt ngoài tại RB0/INT xảy ra T0IF Cờ báo tràn của Timer0 0: khi bộ đếm Timer0 chưa tràn 1: khi bộ đếm Timer tràn RBIE Bit cho phép ngắt ngoài tại PortB 1: cho phép xảy ra ngắt khi trạng thái PortB thay đổi 0: không cho phép 14
  15. c. Thanh ghi INTCON Bit Chức năng INTE Bit cho phép ngắt ngoài tại chân RB0/INT 1: cho phép ngắt ngoài tại chân RB0/INT 0: không cho phéo T0IE Bit cho phép ngắt tràn Timer0 1: cho phép ngắt khi tràn Timer0 0: không cho phép PEIE Bit cho phép ngắt ngoại vi 1: cho phép ngắt ngoại vi 0: không cho phép GIE Bit cho phép ngắt toàn cục 1: cho phép các ngắt 0: cấm các ngắt d. Thanh ghi PIE1 Bao gồm các bit cho phép các ngắt ngoại vi(chú ý PEIE=1) Bit Chức năng TMR1IE Bit cho phép ngắt tràn Timer1 1: cho phép ngắt khi xảy ra khi tràm Timer1 0: không cho phép TMR2IE Bit cho phép ngắt tràn Timer2 bởi thanh ghi PR2 1: cho phép ngắt 0: không cho phép ngắt CCP1IE Bit cho phép ngắt CCP1(ở chế độ so sánh và bắt giữ) 1: cho phép ngắt 0: không cho phép ngắt SSPIE Bit cho phép ngắt ở Port nối tiếp(Synchronous Serie Port IE) 1: cho phép ngắt bởi chế độ hoạt động Port nốt tiếp 0: không cho phép 15
  16. d. Thanh ghi PIE1(tt) Bit Chức năng TXIE Bit cho phép ngắt khi truyền dữ liệu USART 1: cho phép ngắt 0: không cho phép ngắt RCIE Bit cho phép ngắt khi nhận dữ liệu USART 1: cho phép ngắt 0: không cho phép ngắt ADIE Bit cho phép ngắt chuyển đổi A/D 1: cho phép ngắt 0: không cho phép ngắt PSPIE Bit cho phép ngắt khi ghi/đọc Port song song 1: cho phép ngắt 0: không cho phép ngắt e. Thanh ghi PIR1 Bao gồm các cờ cho phép từng ngắt ngoại vi Bit Chức năng TMR1IF Cờ báo tràn ở ngắt Timer1 1: khi xảy ra tràn Timer1 0: không xảy ra tràn Timer1 TMR2IF Cờ báo tràn ở ngắt Timer2 bởi thanh ghi PR2 1: khi xảy ra tràn Timer2 0: không xảy ra tràn Timer2 CCP1IF Cờ báo ngắt CCP1( ở chế độ so sánh và bắt giữ) -So sánh: 1: khi giá trị so sánh thanh ghi TMR1 được thỏa 0: khi giá trị so sánh thanh ghi TMR1 không thỏa -Bắt giữ: 1: thanh ghi bắt nhịp TMR1 có xảy ra(xóa bằng phần mềm) 0: thanh ghi bắt nhịp TMR1 không xảy ra 16
  17. e. Thanh ghi PIR1(tt) Bit Chöùc naêng SSPIF Cờ báo ngắt ở chế độ Port nối tiếp đồng bộ 1: khi quá trình truyền nhận port nối tiếp hoàn thành 0: không xảy ra TXIF Cờ báo ngắt truyền USART 1: bộ đệm truyền của USART còn trống 0: bộ đệm truyền của USART đầy RCIF Cờ báo ngắt nhận USART 1: USART nhận xong 0: USART nhận chưa xong ADIF Cờ báo ngắt bộ chuyển đổi A/D 1: quá trình chuyển đổi A/D hoàn tất 0: quá trình chuyển đổi A/D chưa hoàn tất e. Thanh ghi PIR1(tt) Bit Chức năng PSPIF Cờ báo ngắt của quá trình ghi/đọc port song song 1: khi hoạt động ghi/đọc xảy ra 0: không xảy ra 17
  18. f. Thanh ghi PIE2 Gồm các Bit cho phép Ngắt ngoại vi CCP2, ngắt do bộ s sánh, ngắt do xung đột đường truyền SSP, ngắt khi ghi EEPROM. Bit Chức năng CCP2IE Bit cho phép ngắt CCP2 1: cho phép 0: không cho phép BCLIE Bit cho phép ngắt khi có sự xung đột đường truyền 1: cho phép 0: không cho phép EEIE Bit cho phép ngắt ở quá trình ghi vào EEPROM 1: cho phép 0: không cho phép CMIE Bit cho phép ngắt ở bộ so sánh 1: cho phép 0: không cho phép g. Thanh ghi PIR2 Gồm các cờ ngắt ở ngắt ngoại vi CCP2, ngắt do bộ s sánh, ngắt do xung đột đường truyền SSP, ngắt khi ghi EEPROM. Bit Chức năng CCP2IF Cờ báo ngắt CCP2 Chế độ so sánh: 1: khi giá trị so sánh ở thanh ghi TMR1 được thỏa Chế độ bắt giữ: 1: khi có sự bắt nhịp ở thanh ghi TMR1 xảy ra BCLIF Cờ báo ngắt khi có sự xung đột đường truyền 1: xung đột đường truyền xảy ra ở quá trình SSP 0: không có xung đột đường truyền xảy ra ở quá trình SSP EEIF Cờ báo ngắt ở quá trình ghi vào EEPROM 1: khi quá trình ghi EEPROM hoàn thành 0: khi quá trình ghi EEPROM chưa hoàn thành CMIF Cờ báo ngắt ở bộ so sánh 1: khi ngõ vào bộ so sánh thay đổi, 0: không thay đổi 18
  19. h. Thanh ghi PCON Gồm các bit kiểm tra trạng thái các chế độ Reset của PIC Bit Chức năng BOR\ Bit trạng thái ở chế độ Brown-Out Reset 0: khi chế độ Reset Brown-Out xảy ra( được set bằng phần mềm) 1: không xảy ra POR\ Bit trạng thái ở chế độ Power-On Reset 0: khi chế độ Reset Power-on xảy ra( được set bằng phần mềm) 1: không xảy ra i. Thanh ghi INDF và INDF Thanh ghi FSR và INDF là cặp thanh ghi luôn được sử dụng cùng nhau trong chế độ định địa chỉ gián tiếp. Để chọn bank thanh ghi có chứa thanh ghi cần truy cập thì cần kết hợp giữa thanh ghi FSR và STATUS 19
  20. i. Thanh ghi INDF và INDF Thanh ghi FSR trỏ đến thanh ghi cần truy cập Thanh ghi INDF chứa nội dung thanh ghi có địa chỉ nằm trong FSR Ví dụ: FSR=55h, INDF=100 thì thanh ghi 55h có giá trị là 100 Thanh ghi INDF không phải là một thanh ghi vật lý. Nó chứa giá trị của thanh ghi có địa chỉ được lưu trữ ở thanh ghi FSR. j. Thanh ghi PC (Program Counter) Có độ rộng 13 bit, 8 bit thấp được chứa trong thanh ghi PCL, 5 bit cao không thể đọc nhưng có thể ghi gián tiếp vào thanh ghi PCH thông qua thanh ghi PCLATH. Khi reset thì 5 thanh ghi này bị xóa Hình bên trình bày cách thức thanh ghi PC được nạp giá trị thông qua lệnh CALL hoặc lệnh GOTO. 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2