Kỹ thuật Vi điều khiển Th.S LÊ XỨNG và Th.S NGUYỄN BÁ HỘI Trường Đại học Bách khoa, ĐHĐN Lexung59@yahoo.com hoinb@ud.vn Xung & Hoi 1 Sách tham khảo • I. Scott Mackenzie, Họ Vi điều khiển 8051, Dịch: Tống Văn On và Hoàng Đức Hải, 2001 • Ngô Diên Tập, Kỹ thuật ghép nối máy tính, 2000 • Ngô Diên Tập, Đo lường và điều khiển bằng máy tính, 1998 • Đỗ Xuân Tiến, Kỹ thuật Vi xử lý và lập trình Assembly cho hệ vi xử lý, 2003 • Sencer Yeralan, The 8051 Cookbook for Assembly and C with Experiments in Mechatronics amd Robotics, 2000 • Sencer Yeralan, Programming and Interfacing the 8051 Microcontroller, 1995 Xung & Hoi 2 1. Sơ đồ khối và chân 3. Tổ chức bộ nhớ 4.
Các thanh ghi chức năng đặc biệt 5. Dao động và hoạt động reset 6. Các mode định địa chỉ 8. Lập trình IO 9.Lập trình Timer/Counter 11.Lập trình giao tiếp nối tiếp 12.Lập trình ngắt 13.Lập trình hợp ngữ Xung & Hoi 3 1.
Hiển thị với LED 7 đoạn 4. Tạo sóng vuông 7. Đồng hồ số 8. Giao tiếp PC, viết C code 9.
ADC, cảm biến & xuất LED 7 đoạn 10. PWM Xung & Hoi 4 Vi xử lý • CPU cho các máy tính • Không có RAM, ROM, I/O trên CPU chip • Vd: Intel’s x86, Motorola’s 680x0 Data Bus Nhiều chips trên bo mạch chủ CPU I/O Cổng RAM ROM Timer Vi xử lý Port nối tiếp Address Bus Hệ thống vi xử lý Xung & Hoi 5 Vi điều khiển • Là máy tính mini • Có RAM, ROM, I/O ports trên CPU chip • Vd: Motorola’s 6811, Intel’s 8051, Zilog’s Z80, & PIC 16X CPU RAM ROM tất cả bên trong 1 chip Cổng I/O Timer nối tiếp Port Vi điều khiển Xung & Hoi 6 Vi xử lý & Vi điều khiển Vi xử lý Vi điều khiển Ø CPU chip riêng biệt. RAM, Ø CPU, RAM, ROM, I/O & ROM, I/O, Timer bên ngoài Timer nằm trên cùng 1 chip Ø Lượng ROM, RAM, I/O Ø Cố định lượng ROM, RAM, Ports tùy ý I/O Ports trên chip Ø Giá thành cao Ø Thích hợp cho các ứng dụng: Ø Đa năng ügiá cả thấp Ø Đa mục đích ünăng lượng tiêu thụ thấp ükhông gian hạn chế Ø Đơn mục đích Xung & Hoi 7 Hệ thống nhúng (Embedded System) Bộ xử lý được nhúng (embedded) vào một ứng dụng cụ thể Một sản phẩm nhúng chỉ sử dụng VXL,VĐK, FPGA, DSP. để thực thi 1 công việc duy nhất Chỉ có một phần mềm ứng dụng & thông thường được nộp trong ROM vd:printer, keyboard, video game player.
Xung & Hoi 8 3 tiêu chí chọn vi điều khiển 1. Đáp ứng yêu cầu về nhiệm vụ và giá thành thi công Ø Tốc độ, lượng bộ nhớ, cổng I/O, timers, kích cỡ, đóng gói, năng lượng tiêu thụ Ø Dễ nâng cấp Ø Giá thành 2. Các công cụ phát triển phần mềm Ø Assember, bộ sửa lỗi, trình dịch C, mô phỏng, hỗ trợ kỹ thuật 3. Thị trường cung cấp sản phẩm tin cậy Xung & Hoi 9 1.
Sơ đồ khối và chân (block and pin diagrams) 3. Tổ chức bộ nhớ 4. Các thanh ghi chức năng đặc biệt (SFR) 5. Dao động và hoạt động reset 6.
Các mode định địa chỉ 8. Lập trình IO 9.Lập trình Timer/Counter 11.Lập trình giao tiếp nối tiếp 12.Lập trình ngắt 13.Lập trình hợp ngữ Xung & Hoi 1 2-1. Sơ đồ khối External by Timers, Serial Port On-chip Timer/Counter Interrupt ROM for On-chip Timer 1 Counter Control program RAM Timer 0 Inputs code T1,T0 CPU Bus Serial 4 I/O Ports OSC Control Port /EA P0 P1 P2 P3 TxD RxD ALE RST Address/Data /PSEN Xung & Hoi 2 2-2. So sánh các thành viên họ 8051 Specification 8031 8051 8751 8951 8052 8752 Code Mem on 0K 4K 4K 4K 8K 8K chip (bytes) ROM EPROM Flash ROM EPROM Data Mem on 128 128 128 128 256 256 chip (bytes) Timers 2 2 2 2 3 3 I/O pins 32 32 32 32 32 32 Serial Port 1 1 1 1 1 1 Interrupt 5 5 5 5 6 6 sources Xung & Hoi 3 2-3.
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. Xung & Hoi 8 Các cổng I/O Ø 4 cổng I/O Port 0 (chân 32-39) :P0 (P0.7) Mỗi cổng có 8 chân Đánh tên 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 Xung & Hoi 9 1. Sơ đồ khối và chân 3.
Tổ chức bộ nhớ (Memory Organization) 4. Các thanh ghi chức năng đặc biệt 5. Dao động và hoạt động reset 6. Các mode định địa chỉ 8.
Lập trình IO 9.Lập trình Timer/Counter 11.Lập trình giao tiếp nối tiếp 12.Lập trình ngắt 13.Lập trình hợp ngữ Xung & Hoi 1 Hai đặc tính cần lưu ý 1. Các thanh ghi và các I/O port được định địa chỉ theo kiểu ánh xạ bộ nhớ (memory mapped) & do đó được truy xuất như 1 vị trí nhớ trong bộ nhớ 2. Stack là trên RAM nội thay vì trên RAM ngoài như đối với các bộ VXL Xung & Hoi 2 3-1. Không gian bộ nhớ ROM nội 0000H 0000H 0000H 0FFFH 1FFFH 8751 AT89C51 8752 AT89C52 7FFFH DS5000-32 Atmel Corporation Dallas Semiconductor Xung & Hoi 3 3-2.
Không gian bộ nhớ RAM nội 7F 7E 7D 7C 7B 7A 79 78 2F Byte address … 7FH 2E RAM đa mục đích 30H 2FH RAM định địa chỉ bit 20H 1FH 18H Bank 3 17H … 10H Bank 2 1F 1E 1D 1C 1B 1A 19 18 0FH Bank 1 (Stack) 17 16 15 14 13 12 11 10 08H 07H R7 0F 0E 0D 0C 0B 0A 09 08 Default Register R6 07 06 05 04 03 02 01 00 20 00H Bank for R0-R7 R5 R4 Bit address R3 R2 Xung & Hoi 4 R1 R0 3-2-1. Vùng RAM đa mục đích • Truy xuất tự do 80 bytes này theo kiểu định địa chỉ trực tiếp hay gián tiếp • MOV A, 5FH Hoặ MOV R0, #5FH MOV A, @R0 Xung & Hoi 5 3-2-2. Vùng RAM định địa chỉ bit • Truy xuất các bit riêng rẽ là 1 đặc trưng của VĐK. Các bit có thể được set, xóa, AND, OR … chỉ bằng 1 lệnh so với 1 chuỗi lệnh của VXL • Các port cũng được định địa chỉ bit • Vd: để set bit 7FH bằng 1, ta viết: VĐ SETB 7FH VX MOV A,2FH ; đọc cả byte ORL A,#10000000B ; set bit MOV 2FH,A ; ghi trở lại cả byte Xung & Hoi 6 3-2-3.
Các dãy thanh ghi (register banks) • Các lệnh dùng thanh ghi là những lệnh ngắn & thực hiện nhanh hơn – MOV A,R5 ; 1 byte – MOV A,05H ; 2 bytes • Các dữ liệu thường dùng nên chứa ở các thanh ghi • Ý tưởng các dãy thanh ghi cho phép ển đổi ngữ ảnh nhanh và hiệu quả ở các module độc lập nhau của phần mềm Xung & Hoi 7 3-2-4. Ngăn xếp • Thanh ghi dùng truy 7FH cập ngăn xếp gọi là Scratch pad RAM SP (stack pointer) • SP là thanh ghi 8 bit: 30H giá trị từ 00 à FFH. 2FH Bit-Addressable RAM • Khi được cấp nguồn 20H hay sau khi reset, 1FH 18H Register Bank 3 SP=07H 17H Register Bank 2 10H 0FH (Stack) Register Bank 1 08H 07H Register Bank 0 00H Xung & Hoi 8 VD: MOV R6,#25H MOV R1,#12H MOV R4,#0F3H PUSH 6 PUSH 1 PUSH 4 0BH 0BH 0BH 0BH 0AH 0AH 0AH 0AH F3 09H 09H 09H 12 09H 12 08H 08H 25 08H 25 08H 25 Start SP=07H SP=08H SP=09H SP=0AH Xung & Hoi 9 1. Sơ đồ khối và chân 3.
Tổ chức bộ nhớ 4. Các thanh ghi chức năng đặc biệt (SFR) 5. Dao động và hoạt động reset 6. Các mode định địa chỉ 8.
Lập trình IO 9.Lập trình Timer/Counter 11.Lập trình giao tiếp nối tiếp 12.Lập trình ngắt 13.Lập trình hợp ngữ Xung & Hoi 1 SFRs Xung & Hoi 2 m th m H nh t g CPU registers: - ACC : Accumulator. - PSW : Program Status Word. - SP : Stack Pointer. - DPTR : Data Pointer (DPH, DPL).
Interrupt control: -IE : Interrupt Enable. -IP : Interrupt Priority. Xung & Hoi 3 TImers: - TMOD : Timer mode. - TCON : Timer control.
- TH0 : Timer 0 high byte. - TL0 : Timer 0 low byte. - TH1 : Timer 1 high byte. - TL1 : Timer 1 low byte.
Serial I/O: - SCON : Serial port control. - SBUF : Serial data registers. Other: - PCON : Power control & misc. Thanh ghi PSW • Thanh ghi PSW (bit addressable) C AC F0 RS1 RS0 OV -- P Cờ nhớ PSW.7 C Cờ nhớ phụ PSW.6 AC Available to user for general purpose PSW.5 -- Bit chọn dãy thanh ghi 1 PSW.4 RS1 Bit chọn dãy thanh ghi 0 PSW.3 RS0 Cờ tràn PSW.2 OV Dự trữ - User define bit PSW.1 -- Cờ chẵn lẻ PSW.0 P RS1 RS0 Register Ban Byte Address 0 0 0 00H-07H 0 1 1 08H-0FH 1 0 2 10H-17H 1 1 3 18H-1FH D7 D6 D5 D4 D3 D2 D1 D0 Địa chỉ bit Xung & Hoi 5 • C (carry flag) - Cờ nhớ – Được set bằng 1 nếu có số nhớ từ phép cộng bit 7 hay có số mượn mang đến bit 7 • MOV A,#FFH • ADD A,#1 – Còn được dùng như 1 thanh ghi 1 bit đối với các lệnh logic thao tác trên các bit • ANL C,25H • AC (auxiliary carry) – Cờ nhớ phụ – Được set bằng 1 nếu có số nhớ từ bit 3 sang bit 4 • RS1, RS0 - Các bit chọn dãy (bank) thanh ghi – Dùng để xác định dãy thanh ghi tích cực – Chúng được xóa khi reset SETB RS1 º SETB 0D4H SETB RS0 MOV A,R7 Xung & Hoi 6 • OV (overflow flag) - Cờ tràn – Set bằng 1 sau phép toán cộng hoặc trừ nếu có xuất hiện 1 tràn số học.
Khi các số có dấu được cộng hoặc trừ, phần mềm có thể kiểm tra bit tràn OV để xác định KQ có nằm trong tầm hay không – Với các số có dấu, KQ nhỏ hơn -128 hoặc lớn hơn +127 sẽ set cờ OV = 1.