Chương 2 Vi điều khiển MCS51

Các vi bộ điều khiển và các bộ vi xử lý có ba điểm khác nhau chính sau: - Kiến trúc phần cứng - Phạm vi ứng dụng - Đặc điểm tập lệnh Các họ vi điều khiển phổ biến - Intel 8051 - PIC16C5x - Motorola MC68xxx - AVR - PSoC

pdf30 trang | Chia sẻ: lylyngoc | Lượt xem: 1747 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Chương 2 Vi điều khiển MCS51, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
DuyTan University Kỹ thuật Vi xử lý CHƯƠNG 2 VI ĐIỀU KHIỂN MCS51 ĐẠI HỌC DUY TÂN KHOA CÔNG NGHỆ THÔNG TIN Nguyễn Văn Thọ Khoa Điện tử viễn thông Đại học Duy Tân – 2010 Nguyen Van Tho – Duy Tan University 5-2 GIỚI THIỆU Các vi bộ điều khiển và các bộ vi xử lý có ba điểm khác nhau chính sau: 9 Kiến trúc phần cứng 9 Phạm vi ứng dụng 9 Đặc điểm tập lệnh Các họ vi điều khiển phổ biến 9 Intel 8051 9 PIC16C5x 9 Motorola MC68xxx 9 AVR 9 PSoC DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-3 VI ĐIỀU KHIỂN 8051 Hiện nay có hơn 40 công ty sản xuất các loại vi điều khiển khác nhau của họ 8051. Một số công ty có trên 40 version 8051. Các CORE 8051 có thể được tổ hợp trong các FPGA hay ASIC. Trên 100 triệu vi điều khiển 8051 được bán ra mỗi năm. Họ 8051 gặt hái được rất nhiều thành công và nó cũng trực tiếp ảnh hưởng đến cấu trúc của các họ vi điều khiển hiện nay. Nguyen Van Tho – Duy Tan University 5-4 VI ĐIỀU KHIỂN 8051 8051 thuộc họ vi điều khiển MCS-51. MCS-51 được phát triển bởi Intel và các nhà sản xuất khác (như Siemens, Philips) là các nhà cung cấp đứng thứ hai của họ này. Tóm tắt một số đặc điểm chính của họ 8051: • 4K bytes ROM trong • 128 bytes RAM trong • 4 cổng I/O 8-bit • 2 bộ định thời 16 bit • Giao diện nối tiếp • Quản lý được 64K bộ nhớ code bên ngoài • Quản lý được 64K bộ nhớ dữ liệu bên ngoài DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-5 SƠ ĐỒ KHỐI 8051 CPU On-chip RAM On-chip ROM for program code 4 I/O Ports Timer 0 Serial PortOSC Interrupt Control External interrupts Timer 1 Timer/Counter Bus Control TxD RxDP0 P1 P2 P3 Address/Data Counter Inputs Nguyen Van Tho – Duy Tan University 5-6 CÁC CHÂN CỦA 8051 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST (RXD)P3.0 (TXD)P3.1 (T0)P3.4 (T1)P3.5 XTAL2 XTAL1 GND (INT0)P3.2 (INT1)P3.3 (RD)P3.7 (WR)P3.6 Vcc P0.0(AD0) P0.1(AD1) P0.2(AD2) P0.3(AD3) P0.4(AD4) P0.5(AD5) P0.6(AD6) P0.7(AD7) EA/VPP ALE/PROG PSEN P2.7(A15) P2.6(A14) P2.5(A13) P2.4(A12) P2.3(A11) P2.2(A10) P2.1(A9) P2.0(A8) 8051 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-7 CÁC CHÂN CỦA 8051 ƒ Vcc (chân 40): 9Cung cấp nguồn cho chip 9+5V ƒ GND (chân 20): đất ƒ XTAL1 & XTAL2 (chân 19, 18) 92 chân cung cấp xung clock ngoài 9Cách 1: dao động dùng thạch anh 9Cách 2: dao động từ nguồn xung clock TTL bên ngoài 9Quan hệ giữa chu kỳ máy và XTAL Nguyen Van Tho – Duy Tan University 5-8 CÁC CHÂN CỦA 8051 ƒ RST (chân 9): reset 9input & kích hoạt mức cao 9Để đảm bảo hoạt động reset xảy ra, xung kích khởi phải kéo dài ít nhất là 2 chu kỳ máy 9Giá trị các thanh ghi chịu tác động bởi hoạt động reset, xem bảng trong phần 5 bài giảng 9Mạch reset có chống rung DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-9 CÁC CHÂN CỦA 8051 ¾ /EA (chân 31): External Access 9/EA nối mass chỉ định rằng code lưu trên bộ nhớ ngoài 9/PSEN & ALE dùng cho ROM ngoài 9Với 8051, 8031, 8032 thì /EA nối Vcc 9“/”: chỉ định tác động mức thấp ¾ /PSEN (chân 29): Program Store Enable 9Output, cho phép truy xuất bộ nhớ chương trình ngoài 9Nối tới chân /OE của ROM/EPROM 9Khi thực thi chương trình ở ROM nội, /PSEN được giữ ở mức 1 Nguyen Van Tho – Duy Tan University 5-10 CÁC CHÂN CỦA 8051 ¾ ALE (pin 30):Address Latch Enable ¾Là chân output cho phép chốt địa chỉ để giải đa hợp (de- multiplexing) bus dữ liệu và bus địa chỉ ¾ALE xuất tín hiệu để chốt địa chỉ (byte thấp địa chỉ 16-bit) vào 1 thanh ghi ngoài trong suốt nửa đầu của chu kỳ bộ nhớ (memory cycle). Trong nửa chu kỳ bộ nhớ còn lại, P0 sẽ xuất/nhập dữ liệu ¾ALE có f=1/6fclock ¾Có 1 ngoại lệ: trong thời gian thực thi lệnh MOVX, một xung ALE bị bỏ qua ¾ Cổng I/O: P0, P1, P2, & P3. Mỗi cổng: 8 chân. DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-11 CÁC CỔNG I/O ¾ 4 cổng I/O Port 0 (chân 32-39) :P0 (P0.0~P0.7) Port 1 (chân 1-8) :P1 (P1.0~P1.7) Port 2 (chân 21-28) :P2 (P2.0~P2.7) Port 3 (chân 10-17) :P3 (P3.0~P3.7) Mỗi cổng có 8 chân Đánh tên P0.X (X=0,1,...,7), P1.X, P2.X, P3.X Ex:P0.0 là bit 0 (LSB) của P0 Ex:P0.7 là bit 7 (MSB) của P0 8 bits này cấu thành 1 byte Mỗi cổng có thể được dùng như input hay output Nguyen Van Tho – Duy Tan University 5-12 TỔ CHỨC BỘ NHỚ PSEN External (ngoài) External (ngoài) EA=0 Internal (trong) EA=1 FFFFh 0000h RD WR External Internal FFFFh 0000h00h FFh Bộ nhớ chương trình Bộ nhớ dữ liệu Kiến trúc Harvard DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-13 KHÔNG GIAN BỘ NHỚ RAM NỘI RAM đa mục đích 7FH 30H RAM định địa chỉ bit 2FH 20H Bank 31FH Bank 2 17H 10H Bank 1 (Stack)0FH 07H Default Register Bank for R0-R7 08H 18H 00H R7 R6 R4 R3 R5 R2 R0 R1 7F 7E 7D 7C 7B 7A 79 78 … … 1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00 2F 2E 20 Byte address Bit address Nguyen Van Tho – Duy Tan University 5-14 GHÉP NỐI VÀ TRUY XUẤT ROM NGOÀI DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-15 GHÉP NỐI VÀ TRUY XUẤT RAM NGOÀI Nguyen Van Tho – Duy Tan University 5-16 CÁC CHẾ ĐỘ ĐỊA CHỈ Các kiểu định địa chỉ cho phép xác định nguồn và đích của dữ liệu theo nhiều cách khác nhau tùy tình huống lập trình ¾ Định địa chỉ tức thời : MOV A, #65H ; đưa giá trị 65h vào thanh ghi A Æ A=65h ¾ Định địa chỉ thanh ghi MOV R1, A ; đưa dữ liệu trong thanh ghi A vào thanh ghi R1 Æ R1=A ¾ Định địa chỉ trực tiếp MOV R0, 40H ; lấy dữ liệu tại địa chỉ 40h đưa vào thanh ghi R0 ¾ Định địa chỉ gián tiếp MOV A, @R1 ; lấy dữ liệu tại địa chỉ được chứa trong thanh ghi R1 đưa vào thanh ghi A DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-17 CÁC THANH GHI Nguyen Van Tho – Duy Tan University 5-18 THANH GHI PSW Thanh ghi PSW (bit addressable) C AC F0 RS1 OVRS0 P-- RS1 RS0 Register Bank Byte Address of R0-R7 0 0 0 00H-07H 0 1 1 08H-0FH 1 0 2 10H-17H 1 1 3 18H-1FH CPSW.7Cờ nhớ ACPSW.6Cờ nhớ phụ --PSW.5Available to user for general purpose RS1PSW.4Bit chọn dãy thanh ghi 1 RS0PSW.3Bit chọn dãy thanh ghi 0 OVPSW.2Cờ tràn --PSW.1Dự trữ - User define bit PPSW.0Cờ chẵn lẻ Địa chỉ bitD7 D6 D5 D4 D3 D2 D1 D0 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-19 THANH GHI B B được dùng với thanh chứa A trong các phép toán nhân, chia MUL A,B ; nhân 2 số 8-bit không dấu chứa trong A & B, KQ 16-bit chứa vào cặp thanh ghi B:A (B chứa byte cao) DIV AB ; chia A bởi B, thương số cất trong A, dư cất trong B B còn được xử lý như thanh ghi nháp B được định địa chỉ bit F7 F6 F5 F4 F3 F2 F1 F0 Nguyen Van Tho – Duy Tan University 5-20 CON TRỎ NGĂN XẾP SP ¾ SP chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack ¾ Muốn stack bắt đầu ở 60H: • MOV SP,#5FH • Thì vùng stack sẽ là 32 byte trên 8051 vì địa chỉ cao nhất của RAM nội là 7FH • 5FH được dùng vì SP tăng lên 60H trước khi thao tác cất vào stack đầu tiên được thực thi ¾ Nếu không khởi động SP, nội dung mặc định là 07H Æ thao tác cất vào stack đầu tiên sẽ lưu dữ liệu vào vị trí nhớ có địa chỉ 08H DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-21 CON TRỎ DỮ LIỆU DPTR DPTR được dùng để truy xuất bộ nhớ chương trình ngoài hoặc bộ nhớ dữ liệu ngoài Phần cao và phần thấp của DPTR cũng có thể được dùng như 2 thanh ghi 8bit (DPH và DPL) VD: MOV A,#55H MOV DPTR,#1000H MOVX @DPTR,A DPTR (High) DPTR (Low) 83H 82H Nguyen Van Tho – Duy Tan University 5-22 THANH GHI CỔNG I/O ¾ 8051 có 4 thanh ghi cổng I/O : P0, P1, P2, P3 ¾ Tất cả port đều được định địa chỉ bit ¾ Để truy cập đến các bit ta dùng cú pháp sau : . Ví dụ để xóa bit 4 của cổng P0 CLR P0.4 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-23 CÁC THANH GHI KHÁC ¾ THANH GHI ĐỊNH THỜI 8051 có 2 bộ đếm/định thời 16-bit để định các khoảng thời gian hoặc đếm các sự kiện Hoạt động của bộ định thời được thiết lập bởi: • TMOD (Timer Mode Register) • TCON (Timer Control Register) ¾ THANH GHI PORT NỐI TIẾP 8051 có 1 port nối tiếp để truyền thông với các thiết bị nối tiếp SBUF (Serial Data Buffer): lưu trữ dữ liệu truyền và nhận SCON (Serial Port Control Register): chọn chế độ hoạt động ¾ THANH GHI NGẮT IE (interrupt enable) IP (interrupt priority Nguyen Van Tho – Duy Tan University 5-24 TẬP LỆNH ¾Lệnh chuyển dữ liệu MOV dest, source ; dest = source Ví dụ : MOV A, #72H ;A=72H MOV A, R4 ;A=62H MOV B, 7EH MOV P1, A ;mov A to port 1 Chú ý : ¾ MOV A,#72 ≠ MOV A,72 ¾ MOV DPTR, A ¾ MOV #30,A ¾ dest và source không được đồng thời là Rn MOV R1,R2 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-25 TẬP LỆNH ¾Truy cập bộ nhớ ROM ngoài MOVC A, @A + DPTR MOVC A, @A + PC ¾ Truy cập bộ nhớ RAM ngoài MOVX A, @Ri MOVX A, @DPTR MOVA @Ri, A MOVX @DPTR, A ¾ Tráo đổi dữ liệu XCH A, Rn XCH A, mem XCH A, @Ri ¾Thao tác ngăn xếp PUSH mem POP mem Nguyen Van Tho – Duy Tan University 5-26 TẬP LỆNH ¾Nhóm lệnh số học ADD A,Rn ADD A,mem ADD A,@Ri ADD A,#data ADDC A,Rn ADDC A,mem ADDC A,@Ri ADDC A,#data SUBB A,Rn SUBB A,mem SUBB A,@Ri SUBB A,#data INC A INC Rn INC mem INC @Ri INC DPTR DEC A DEC Rn DEC mem DEC @Ri MUL AB ; Lấy giá trị trong thanh ghi A nhân với giá trị trong thanh ghi B ; byte thấp của kết quả chứa trong A, byte cao chứa trong B DIV AB ; Lấy A chia B ; kết quả thương Æ A ; số dư Æ B DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-27 TẬP LỆNH ¾ Nhóm lệnh logic ANL A,Rn ANL A,mem ANL A,@Ri ANL A,#data ANL mem,A ANL mem,#data ORL A,Rn ORL A,mem ORL A,@Ri ORL A,#data ORL mem,A ORL mem,#data XRL A,Rn XRL A,mem XRL A,@Ri XRL A,#data XRL mem,A XRL mem,#data CLR A CPL A RL A RLC A RR A RRC A Nguyen Van Tho – Duy Tan University 5-28 TẬP LỆNH ¾Nhóm lệnh xử lý bit ƒ SETB bit ; bit=1 ƒ CLR bit ; bit=0 Vi dụ : SETB C ; CY=1 SETB P0.0 ;bit 0 của port 0 =1 SETB ACC.2 ;bit 2 của Accumulator =1 CLRB P3.7 ;bit 7 của port 3 = 0 ƒ ANL C,bit ; AND cờ C với bit ƒ ORL C, bit ; OR cờ C với bit DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-29 TẬP LỆNH ¾ Lệnh nhảy không điều kiện ƒ SJMP rel ; ƒ AJMP Addr11 ; ƒ LJMP Addr16 ; ¾ Lệnh gọi chương trình con ƒ ACALL addr11 ; ƒ LCALL adde16 ; ¾ Lệnh trở về từ chương trình con ƒ RET ¾Lệnh trở về từ ngắt ƒRETI Nguyen Van Tho – Duy Tan University 5-30 TẬP LỆNH JZ rel Jump if A=0 JNZ rel Jump if A≠0 DJNZ byte, rel Decrement & jump if A≠0 CJNE dest, source, rel Jump if dest ≠ source JC rel Jump if CY=1 JNC rel Jump if CY=0 JB bit, rel Jump if bit=1 JNB bit, rel Jump if bit=0 JBC bit, rel Jump if bit=1 & clear bit Lệnh nhảy có điều kiện DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-31 LẬP TRÌNH HỢP NGỮ CHO 8051 Nguyen Van Tho – Duy Tan University 5-32 KHUÔN DẠNG CHƯƠNG TRÌNH Dạng chương trình không có ngắt và không khai báo dữ liệu ORG 00H ; Bắt đầu vùng nhớ chương trình ; các mã lệnh của chương trình END ; kết thúc chương trình ORG 00H LJMP Main ORG 20h ; khai báo các hằng số ORG 30h ; khai báo các ô nhớ đệm (biến) ORG 100h Main ; Bắt đầu vùng nhớ chương trình ; các mã lệnh của chương trình END ; kết thúc chương trình Dạng chương trình không ngắt và có khai báo dữ liệu DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-33 KHUÔN DẠNG CHƯƠNG TRÌNH Dạng chương trình sử dụng ngắt ORG 0H LJMP MAIN ; nhảy tới Main ORG 03H ; external interrupt 0 JMP EXINTER0 ORG 0BH ; timer 0 interrupt JMP COUNTER0 ORG 13H ; external interrupt 0 JMP EXINTER1 ORG 1BH ;timer 1 interrupt JMP COUNTER1 MAIN: EXINTER0 ; chương trình phục vụ ngắt 0 RETI EXINTER1 ; chương trình phục vụ ngắt 1 RETI COUNTER0 ; chương trình phục vụ bộ đếm 0 RETI COUNTER1 ; chương trình phục vụ bộ đếm 1 RETI END Nguyen Van Tho – Duy Tan University 5-34 LẬP TRÌNH I/O ¾ Xuất dữ liệu ra cổng : Xuất dữ liệu ra thanh ghi cổng tương ứng Ví dụ : MOV P1,#54H ; xuất giá trị 54h ra cổng P1 ¾Lấy dữ liệu từ cổng : Đọc thanh ghi cổng tương ứng Ví dụ : MOV A, P2 ; lấy dữ liệu từ cổng P2 lưu vào A Chú ý : Một chân là Input thì phải đưa giá trị 1 ra chân đó trước khi thao tác với nó. DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-35 LẬP TRÌNH I/O Ví dụ 1 : Viết chương trình đọc dữ liệu từ cổng P2 vào A, sau đó cộng 3 vào A mười lần? GIẢI : ORG 00H MOV P2,#FFH MOV A, P2 MOV R2, #10 AGAIN: ADD A, #03 DJNZ R2, AGAIN ;repeat until R2=0 (10 lần) MOV R5, A END Nguyen Van Tho – Duy Tan University 5-36 LẬP TRÌNH I/O Ví dụ 2 : Viết 1 chương trình so sánh R0, R1: Nếu R0>R1: gửi 1 ra port 2 Else if R0<R1: gửi 0FFH ra port 2 Else gửi 0 ra port 2 Giải đáp: CJNE R0, 1, NOT_EQ … ;R0=R1 NOT_EQ: JC R0_NHO_HON … ;R0>R1 R0_NHO_HON: … ;R0<R1 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-37 TẠO TRỄ (DELAY) CHU KỲ MÁY : ƒ Chy kỳ máy (machine cycle) là đơn vị đo thời gian thực thi các lệnh ƒ Tần số dao động của thạch anh cho họ 8051 có thể từ 4MHz đến 30 MHz, tùy thuộc nhà sản xuất. Song thông thường, loại 11.0592 MHz được dùng nhằm làm cho các hệ thống dựa trên 8051 tương thích với cổng nối tiếp của IBM PC. 1 Chu kỳ dao động = 1/f = 0.0904 µs ƒ Với họ 8051, một chu kỳ máy kéo dài 12 chu kỳ dao động 1 chu kỳ máy = 12 x 0.0904 µs = 1.085µs Nguyen Van Tho – Duy Tan University 5-38 TẠO TRỄ (DELAY) Tìm thời gian trễ cho chương trình con say đây, (với tần số dao động thạch anh là 11.0592 MHz) DELAY: MOV R3,#250 ; 1 MC HERE: NOP ; 1 MC NOP ; 1 MC NOP ; 1 MC NOP ; 1 MC DJNZ R3,HERE ; 2 MC RET ; 1 MC Answer: [250x(1+1+1+1+2)+2]x1.085 us=1629.67 us DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-39 TẠO TRỄ (DELAY) MOV R1, #250 D1: MOV R0, #250 DJNZ R0, $ MOV R0, #250 DJNZ R0, $ DJNZ R1, D1 MOV R1, #250 D2: MOV R0, #250 DJNZ R0, $ MOV R0, #250 DJNZ R0, $ DJNZ R1, D2 Đoạn chương trình tạo trễ 500ms Nguyen Van Tho – Duy Tan University 5-40 TẠO TRỄ (DELAY) Ví dụ : Giả sử có 1 hệ thống gồm 8 đèn led ghép nối với port 0 của 8051. Đèn led sáng khi xuất tín hiệu mức 0, tắt khi xuất tín hiệu mức 1. Hãy lập trình sáng lần lượt từng Led 1 trong thời gian 1 giây DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-41 ORG 0000 L1: MOV P2,#00000000b LCALL DELAY_500ms LCALL DELAY_500ms MOV P2,#00000001b LCALL DELAY_500ms LCALL DELAY_500ms MOV P2,#00000010b LCALL DELAY_500ms LCALL DELAY_500ms MOV P2,#00000100b LCALL DELAY_500ms LCALL DELAY_500ms MOV P2,#00001000b LCALL DELAY_500ms LCALL DELAY_500ms MOV P2,#000100000b LCALL DELAY_500ms LCALL DELAY_500ms MOV P2,#001000000b LCALL DELAY_500ms LCALL DELAY_500ms MOV P2,#010000000b LCALL DELAY_500ms LCALL DELAY_500ms MOV P2,#100000000b LCALL DELAY_500ms LCALL DELAY_500ms SJMP L1 DELAY_500ms: PUSH 00H PUSH 01H MOV R1, #250 D1: MOV R0, #250 DJNZ R0, $ MOV R0, #250 DJNZ R0, $ DJNZ R1, D1 MOV R1, #250 D2: MOV R0, #250 DJNZ R0, $ MOV R0, #250 DJNZ R0, $ DJNZ R1, D2 POP 01H POP 00H RET END Nguyen Van Tho – Duy Tan University 5-42 Dùng lệnh quay chương trình sẽ gọn hơn ORG 0000 MOV A,#01H L1: RL A MOV P2,A LCALL DELAY_500ms LCALL DELAY_500ms SJMP L1 DELAY_500ms: PUSH 00H PUSH 01H MOV R1, #250 D1: MOV R0, #250 DJNZ R0, $ MOV R0, #250 DJNZ R0, $ DJNZ R1, D1 MOV R1, #250 D2: MOV R0, #250 DJNZ R0, $ MOV R0, #250 DJNZ R0, $ DJNZ R1, D2 POP 01H POP 00H RET END DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-43 LẬP TRÌNH TIMER/COUNTER 8051 có 2 bộ timer/counter ¾Timer/counter 0 ¾Timer/counter 1 Chúng có thể được dùng như ƒ Bộ định thời (Timer) dùng như 1 bộ tạo trễ ƒ Bộ đếm sự kiện (Event Counter) 9Đầu vào từ chân bên ngoài để đếm số sự kiện 9Có thể dùng để đếm số người qua cổng, số vòng quay của bánh xe ƒ Tạo tốc độ baud cho cổng nối tiếp của 8051 Nguyen Van Tho – Duy Tan University 5-44 LẬP TRÌNH TIMER/COUNTER Thanh ghi điều khiển trạng thái TCON TR (run control bit) • TR0 for Timer/counter 0; TR1 for Timer/counter 1. • TR được thiết lập hay xóa bởi phần mềm để bật tắt timer/counter ¾TR=0: off (stop) ¾TR=1: on (start) TF (timer flag, control flag) • Cờ tràn của bộ định thời • TF0 cho timer/counter 0; TF1 cho timer/counter 1 • Ban đầu TF=0 và được thiết lập =1 khi có tràn ( TH-TL Æ 0) • Được xóa bởi phần mềm hoặc phần cứng khi bộ vi xử lý trỏ đến trình phục vụ ngắt TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Timer 1 Timer0 for Interrupt (MSB) (LSB) DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-45 LẬP TRÌNH TIMER/COUNTER Thanh ghi chế độ định thời TMOD • Thanh ghi 8-bit • Thiết lập chế độ hoạt động cho các bộ định thời : ¾4 bits thấp dành cho Timer 0 (Thiết lập = 0000 nếu không sử dụng ) ¾4 bits cao dành cho Timer 1 (Thiết lập = 0000 nếu không sử dụng ) • Không được định địa chỉ bit. GATE C/T M1 M0 GATE C/T M1 M0 Timer 1 Timer 0 (MSB) (LSB) Nguyen Van Tho – Duy Tan University 5-46 LẬP TRÌNH TIMER/COUNTER Thanh ghi chế độ định thời TMOD GATE C/T M1 M0 GATE C/T M1 M0 Timer 1 Timer 0 ƒ GATE = 0 9 Điều khiển bên trong 9Bật hay tắt timer bằng phần mềm 9Timer được cho phép khi TR được thiết lập =1 ƒGATE = 1 9Điều khiển bên ngoài 9Bật hay tắt timer bằng cả phần mềm và nguồn bên ngoài 9Timer được cho phép khi chân /INT ở mức cao và TR được thiết lập bằng 1 DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-47 LẬP TRÌNH TIMER/COUNTER Thanh ghi chế độ định thời TMOD C//T : Bit chọn chức năng đếm hay định thời đếm : C//T=1 ; định thời : C//T=0 M1 & M0 : Chọn mode M1 M0 MODE HOẠT ĐỘNG 0 0 1 1 0 1 0 1 0 1 2 3 Chế độ định thời 13 bit 8 bit TH + 5 bit cao của TL Chế độ 16 bit 8 bit TH + 8 bit TL Chế độ 8 bit auto reload Tự động nạp lại giá trị của TH vào TL khi đếm tràn Chế độ 1 bộ đếm 8 bit riêng lẻ Chỉ cho TL0 và TH0 Nguyen Van Tho – Duy Tan University 5-48 LẬP TRÌNH TIMER/COUNTER Ví dụ : Tìm giá trị TMOD nếu muốn lập trình Timer 0 làm việc ở mode 2 ? Dùng 8051 XTAL cho xung clock, & dùng lệnh để bật hay tắt timer timer 1 timer 0 TMOD= 0000 0010 Timer 1 không dùng Timer 0, mode 2 C/T = 0 Æ dùng nguồn xung clock (Timer) GATE = 0 Æ điều khiển bằng phần mềm GIẢI : DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-49 LẬP TRÌNH TIMER/COUNTER Hoạt động của Timer/Counter Ví dụ : Chọn Timer 0 làm việc ở Mode 1 - Chế độ 16 bit MOV TMOD,#01H ; chọn chế độ làm việc MOV TH0,#FFH ; Khởi tạo giá trị ban đầu MOV TL0,#FCH ; cho TH0 & TL0. CLR TF0 ; Xóa cờ TF0 về 0 SETB TR0 ; bật timer0 Nguyen Van Tho – Duy Tan University 5-50 LẬP TRÌNH TIMER/COUNTER TH0 TL0 FF FC TF TR0 0 1DEF00 00 1 t 1.085 µs ¾ Khi có xung clock 8051 đếm lên (tăng giá trị TH-TL) ¾Khi có sự chuyển số đếm về 0000 , cờ TF=1 Hoạt động của Timer/Counter Clock DuyTan University Kỹ thuật Vi xử lý Nguyen Van Tho – Duy Tan University 5-51 LẬP TRÌNH TIMER/COUNTER Tính toán tạo trễ : ( với XTAL =11.0592MHz) Chuyển giá trị ban đầu của TH – TL sang dạng thập phân Thời gian trễ = (65536 – giá trị ban đầu) * 1.085µs Nguyen Van Tho – Duy Tan University 5-52 LẬP TRÌNH TIMER/COUNTER Ví dụ : Viết lại chương trình nháy led sử dụng Timer để làm bộ trễ MOV A,#01H MOV TMOD, #01 ;Timer 0,mode 1(16-bit) HERE: MOV TL0, #064H ;Giá trị Timer0 = FC64H MOV TH0, #0FCH RL A MOV P0,A ACALL DELAY1s SJMP HERE ;tạo trễ dùng timer 0 DELAY1s: SETB TR0 ;start the timer 0 AGAIN: JNB TF0,AGAIN CLR TR0 ;stop timer 0 CLR TF0 ;clear timer 0 flag RE
Tài liệu liên quan