Đề cương ôn tập môn vi điều khiển

9 1.2K 12
Đề cương ôn tập môn vi điều khiển

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

Thông tin tài liệu

Hoạt động của một vi điều khiển:1. Khi không có nguồn điện cung cấp, vi điều khiển chỉ là một con chip có chương trình nạpsẵn vào trong đó và không có hoạt động gì xảy ra.2. Khi có nguồn điện, mọi hoạt động bắt đầu được xảy ra với tốc độ cao. Đơn vị điều khiểnlogic có nhiệm vụ điều khiển tất cả mọi hoạt động. Nó khóa tất cả các mạch khác, trừ mạch dao độngthạch anh. Sau mini giây đầu tiên tất cả đã sẵn sàng hoạt động.3. Điện áp nguồn nuôi đạt đến giá trị tối đa của nó và tần số dao động trở nên ổn định. Các bitcủa các thanh ghi SFR cho biết trạng thái của tất cả các mạch trong vi điều khiển. Toàn bộ vi điềukhiển hoạt động theo chu kỳ của chuỗi xung chính.4. Thanh ghi bộ đếm chương trình được xóa về 0. Câu lệnh từ địa chỉ này được gửi tới bộ giảimã lệnh sau đó được thực thi ngay lập tức

 ! Hoạt động của một vi điều khiển: 1. Khi không có nguồn điện cung cấp, vi điều khiển chỉ là một con chip có chương trình nạp sẵn vào trong đó và không có hoạt động gì xảy ra. 2. Khi có nguồn điện, mọi hoạt động bắt đầu được xảy ra với tốc độ cao. Đơn vị điều khiển logic có nhiệm vụ điều khiển tất cả mọi hoạt động. Nó khóa tất cả các mạch khác, trừ mạch dao động thạch anh. Sau mini giây đầu tiên tất cả đã sẵn sàng hoạt động. 3. Điện áp nguồn nuôi đạt đến giá trị tối đa của nó và tần số dao động trở nên ổn định. Các bit của các thanh ghi SFR cho biết trạng thái của tất cả các mạch trong vi điều khiển. Toàn bộ vi điều khiển hoạt động theo chu kỳ của chuỗi xung chính. 4. Thanh ghi bộ đếm chương trình được xóa về 0. Câu lệnh từ địa chỉ này được gửi tới bộ giải mã lệnh sau đó được thực thi ngay lập tức. 5. Giá trị trong thanh ghi PC được tăng lên 1 và toàn bộ quá trình được lặp lại vài triệu lần trong một giây. "#$%&'()&*( ! Bộ nhớ (Memory) - &+,'-(+.&'(! Read Only Memory (ROM) là một loại bộ nhớ được sử dụng để lưu vĩnh viễn các chương trình được thực thi. trường ngoại vi. Kích thước của dãy ROM từ 512B đến 64KB - &,.*+//(+.&*(! Random Access Memory (RAM) là một loại bộ nhớ sử dụng cho các dữ liệu lưu trữ tạm thời và kết quả trung gian được tạo ra và được sử dụng trong quá trình hoạt động của bộ vi điều khiển. Nội dung của bộ nhớ này bị xóa một khi nguồn cung cấp bị tắt. - 0-+ 0/-+1 -+&'(001&'(! EEPROM là một kiểu đặc biệt của bộ nhớ chỉ có ở một số loại vi điều khiển. Nội dung của nó có thể được thay đổi trong quá trình thực hiện chương trình (tương tự như RAM), nhưng vẫn còn lưu giữ vĩnh viễn, ngay cả sau khi mất điện (tương tự như ROM). Các thanh ghi chức năng đặc biệt (SFR) Thanh ghi chức năng đặc biệt (Special Function Registers) là một phần của bộ nhớ RAM. Mục đích của chúng được định trước bởi nhà sản xuất và không thể thay đổi được. Bộ đếm chương trình (PC: Program Counter) Bộ đếm chương trình chứa địa chỉ chỉ đến ô nhớ chứa câu lệnh tiếp theo sẽ được kích hoạt. Central Processor Unit (CPU) Đây là một đơn vị có nhiệm vụ điều khiển và giám sát tất cả các hoạt động bên trong vi điều khiển và người sử dụng không thể tác động vào hoạt động của nó. Các cổng vào/ra (I/O Ports) Để vi điều khiển có thể hoạt động hữu ích, nó cần có sự kết nối với các thiết bị ngoại vi. Mỗi vi điều khiển sẽ có một hoặc một số thanh ghi (được gọi là cổng) được kết nối với các chân của vi điều khiển. Bộ dao động (Oscillator) Bộ dao động làm nhiệm vụ đồng bộ hóa hoạt động của tất cả các mạch bên trong vi điều khiển Bộ định thời/đếm (Timers/Counters) Truyền thông nối tiếp Truyền thông giữa các thiết bị ở khoảng cách xa Chương trình 2345/678/629) )92/45/65/6: ! Bài làm: Chuyển sang nhị phân 34 : 100010 225: 11100001 143: 10001111 Chuyển sang hệ 16: 34: 22H 225: 0E1H 143: 8FH 98/6//472;)77<)77<)9*; ! 23H: 2x16 + 3 = 35 11010B = 2x2x2x2 + 2x2x2 + 2x1 = 26 101011B = 2x2x2x2x2 + 2x2x2 + 2x1 + 1 = 43 4AH = 4x16 + 10 = 74 Bài tập chương 4 Bài làm: 47 sang nhị phân là: 00101111 30 sang nhị phân là: 00011110 Thực hiện phép cộng: 00101111 + 00011110 01001101 Vậy S1 = 00101111 + 00011110 = 01001101 :=>7  ! <-. AT89C51 là vi điều khiển do Atmel sản xuất, chế tạo theo công nghệ CMOS có các đặc tính như sau: + 4 KB PEROM (Flash Programmable and Erasable Read Only Memory), có khả năng tới 1000 chu kỳ ghi xoá + Tần số hoạt động từ: 0Hz đến 24 MHz + 3 mức khóa bộ nhớ lập trình + 128 Byte RAM nội. + 4 Port xuất /nhập I/O 8 bit. + 2 bộ Timer/counter 16 Bit. + 6 nguồn ngắt. + Giao tiếp nối tiếp điều khiển bằng phần cứng. + 64 KB vùng nhớ mã ngoài + 64 KB vùng nhớ dữ liệu ngoài. + Cho phép xử lý bit. + 210 vị trí nhớ có thể định vị bit. + 4 chu kỳ máy (4 µs đối với thạch anh 12MHz) cho hoạt động nhân hoặc chia. + Có các chế độ nghỉ (Low-power Idle) và chế độ nguồn giảm (Power-down). + Ngoài ra, một số IC khác của họ MCS-51 có thêm bộ định thời thứ 3 và 256 byte RAM nội. ?@A/5B>7 "#CD827! <-. E5B*>F  Ý nghĩa các chân: - Tín hiệu vào /EA trên chân 31 thường đặt lên mức cao ( +5V) hoặc mức thấp (GND). Nếu ở mức cao, 8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp (4K hoặc tối đa 8k đối với 89C52). Nếu ở mức thấp, chương trình được thi hành từ bộ nhớ mở rộng (tối đa đến 64Kbyte). - Các chân nguồn: AT89C51 hoạt động ở nguồn đơn +5V. Vcc được nối vào chân 40, và Vss (GND) được nối  G4HIH8/J>K ! S1 = 47 + 30 ; S2 = 64 – 37 ; S3 = 28H + 33H ; S4 = 49H – 2CH ; vào chân 20. + Chân 40: VCC = 5V± 20% + Chân 20: GND - /PSEN /PSEN (chân 29) cho phép đọc bộ nhớ chương trình mở rộng đối với các ứng dụng sử dụng ROM ngoài. - ALE/ PROG (chân 30) cho phép tách các đường địa chỉ và dữ liệu tại Port 0 khi truy xuất bộ nhớ ngoài. - EA (chân 31) dùng để cho phép thực thi chương trình từ ROM ngoài. Khi nối chân 31 với Vcc, AT89C51 sẽ thực thi chương trình từ ROM nội (tối đa 8KB), ngược lại thì thực thi từ ROM ngoài (tối đa 64KB). - RST (chân 9) cho phép reset AT89C51 khi ngõ vào tín hiệu đưa lên mức 1 trong ít nhất là 2 chu kỳ máy. - X1, X2: Ngõ vào và ngõ ra bộ dao động, khi sử dụng có thể chỉ cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường sử dụng cho AT89C51 là 12Mhz. Port 0 : có 2 chức năng ở các chân 32 – 39 của AT89C51: - Chức năng I/O (xuất/nhập): dùng cho các thiết kế nhỏ. - Chức năng địa chỉ / dữ liệu đa hợp: khi dùng các thiết kế lớn, đòi hỏi phải sử dụng bộ nhớ ngoài thì Port 0 vừa là bus dữ liệu (8 bit) vừa là bus địa chỉ (8 bit thấp). Port 1: Port1 (chân 1 – 8) chỉ có một chức năng là I/O, Port 2: Port 2 (chân 21 – 28) là port có 2 chức năng: - Chức năng I/O (xuất / nhập) - Chức năng địa chỉ: dùng làm 8 bit địa chỉ cao khi cần bộ nhớ ngoài có địa chỉ 16 bit. Khi đó, Port 2 không được dùng cho mục đích I/O. Port 3: Port 3 (chân 10 – 17) là port có 2 chức năng: - Chức năng I/O. Khi dùng làm ngõ vào, Port 3 phải được set mức logic 1 trước đó. - Chức năng khác mô tả như sau: >8L,MN>7 O$K,P.Q ! 1. Địa chỉ tức thời Trong chế độ đánh địa chỉ này toán hạng nguồn là một hằng số, toán hạng đích là một thanh ghi dụ: MOV A, #20; 2. Địa chỉ thanh ghi: cả toán hạng đích và toán hạng nguồn là các thanh ghi dụ: MOV A, R1 3. Địa chỉ trực tiếp: Một toán hạng là thanh ghi, toán hạng còn lại là địa chỉ của ô nhớ dụ: MOV R1, 30H; 4. Địa chỉ gián tiếp: Một toán hạng là thanh ghi, toán hạng còn lại là thanh ghi R0 hoặc R1 chứa địa chỉ của ô nhớ. dụ: MOV A, @R1 5. Địa chỉ theo chỉ số: Một toán hạng là thanh ghi tích lũy A, toán hạng còn lại là ô nhớ của bộ nhớ ROM dụ: MOVC A, @A + DPTR F$%.-4RHSK,P ! Bài làm: Câu trúc chung của một lệnh hợp ngữ: nhãn: từ gợi nhớ các toán hạng T%U dụ: KIEMTRA: JNB P3.2, BAT T<*V0" JNB P3.3, TAT T*V0" - Nhãn: là tên chương trình con. Kết thúc bằng dấu hai chấm (:) - Từ gợi nhớ: là các câu lệnh của hợp ngữ. - Các toán hạng: là các thanh ghi, giá trị, địa chỉ, … - Chú giải: là phần giải thích ý nghĩa của câu lệnh. Bắt đầu bằng dấu chấm phẩy (;) 7@LW597;XY27;&*(/Z,PL8MN GLH8LH27! <-.  L8MNGLH ('@*)[97;T97;* ('@27;)*T,*XY\MN27;  LMN8LH ('@&7)[27;TV]&7^MNXY&*(-27; ('@*)[97;T97;* ('@_&)*T,*XY\MN^ &7 @LW5.`,S-4B.7+&*(\MNa- 27;L]&*(\MNa-97;27! <-. ('@&7)[27;T,]&7^MNa27; ('@&)[97;T,]&^MNa97; ('@&)[7T,]&-.L.7-a OH ('@*)_&7T,XY\MN&7* ('@_&)*T,*XY\MNXY^& b"&7 b"& Vc"d&)OHT3U.&3.e+.&7WLW7-fH- TW58,$g3OH)L&7L% @LW5Kh/27! S = 1 + 2 + 3 + … + 10; Bài làm: MOV A, #0 ; ban đầu tổng trong thanh ghi A là 0 MOV R1, #1 ; MOV R2, 10 ; chứa số đếm là 10 lần Lap: ADD A, R1 ; INC R1 ; DJNZ R2, Lap Bài 13: Chương trình con tạo trễ 0.5ms dùng timer (Xtal = 11.0592MHZ) MOV TMOD, #01H ; sử dụng Timer 0 chế độ 16 bít Delay1: MOV TH0, #0FDH ; TIMER TRỄ 0.5ms MOV TL0, #0BH ; số đếm 0FFFFH – 0FD0BH = 2F4H = 500 SETB TR0 ; LAP: JNB TF0, LAP ; CLR TF0 ; CLR TR0 ; Bài 14: Viết chương trình con tạo sóng vuông 1k HZ trên chân p1.0 (Xtal = 11.0592MHZ) T = 1/f = 1ms ORG 000H MOV TMOD, #01H ; sử dụng timer0 chế độ 16 bít ANSWER_BACK: MOV TL0, # 08H ; số đếm 0FFFFH – 0FB08H = 3E7H = 999 (hệ 10) MOV TH0, #FBH ; CPL P1.0 ACALL PENDING SJMP ANSWER_BACK ; chương trình tạo trễ sử dụng Timer 0 PENDING: SETB TR0 ; STANDBY: JNB TF0, STANDBY ; CLR TR0 ; CLR TF0 ; RET END Bài 15. Chương trình hiển thị led 7 thanh số từ 00 đến 99 Dùng Led 7 thanh Cathode chung MOV 30H,#0 SJMP Hienthi Main: INC 30H ; Tăng ô nhớ 30h MOV A,30H CJNE A,#100,Hienthi ; Nếu giá trị ô nhớ 30h = 10 MOV 30H,#0 ; thì gán 30h = 0 SJMP Hienthi ; Hiển thị ma Led 7 đoạn ACALL Delay SJMP Main ; Hienthi: MOV A,30H MOV B,#10 DIV AB MOV DPTR,#Maled7 MOVC A,@A+DPTR MOV P2,A CLR P1.1 SETB P1.1 MOV A,B MOV DPTR,#Maled7 MOVC A,@A+DPTR MOV P2,A CLR P1.0 SETB P1.0 CALL Delay SJMP Main Maled7: DB 0C0H,0F9H,0A4H,0B0H, 99H,92H,82H,0F8H,80H,90H ; Delay: MOV R7,#255 DJNZ R7,$ RET END Câu 21: Thiết kế mạch, Viết chương trình hiển thị trên Led 7 thanh từ 0 đến 9 khi ấn nút tăng INC hay nút giảm DEC Thiết kế mạch: Chương trình: MOV 30H,#0 SJMP Hienthi Main: JNB P1.0,Sw1 ; Nếu P3.0 = 0 thì nhấn SW1 JNB P1.1,Sw2 ; Nếu P3.1 = 0 thì nhấn SW2 SJMP Main SW1: INC 30H ; Tăng ô nhớ 30h MOV A,30H CJNE A,#10,Hienthi ; Nếu giá trị ô nhớ 30h = 10 MOV 30H,#0 ; thì gán 30h = 0 SJMP Hienthi ; Hiển thị ra Led 7 đoạn ; Sw2: DEC 30H ; Giảm ô nhớ 30h MOV A,30H CJNE A,#255,Hienthi ; Nếu giá trị giảm = -1 (255) MOV 30H,#9 SJMP Hienthi ; thì gán 30h = 9 Hienthi: MOV A,30H MOV DPTR,#Maled7 MOVC A,@A+DPTR MOV P2,A CALL Delay SJMP Main Maled7: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H,82H, 0F8H, 80H, 90H ; Delay: MOV R7,#255 DJNZ R7,$ RET END Câu 16: Chương trình khởi động động cơ qua 3 cấp điện trở phụ Main: SETB P1.0 ; khởi động từ chính ACALL Delay ; trễ 10s SETB P1.1 ; khởi động từ loại Rf1 ACALL Delay ; trễ 10s SETB P1.2 ; khởi động từ loại Rf2 ACALL Delay ; trễ 10s SETB P1.3 ; khởi động từ loại Rf3 ACALL Delay Delay: PUSH 07h PUSH 06h PUSH 05H MOV R6,#200 Delay1: MOV R7,#250 Delay2: MOV R5, # 200 DJNZ R5, $ DJNZ R7, Delay1 DJNZ R6, Delay1 POP 05h POP 06h POP 07h RET END Bài 17: Viết chương trình điều khiển động cơ 1 chiều quay thuận, quay nghịch - Vẽ sơ đồ - Viết chương trình MAIN: MOV P0, #00h; STAY: JNB P1.0, THUAN ;JNB P1.1, NGUOC ;JNB P1.2, STOP ; SJMP STAY ; chương trình quay thuận THUAN: SETB P0.0 RET ; chương trình quay ngược NGUOC: SETB P0.1 RET ; chương trình dừng STOP: ; CLR P0.0 CLR P0.1 RET ; END Câu 18: LL.)LW55WYijMkUKC D8-4 LL. Chương trình: // Chuong trinh dieu khien dong co buoc don gian ORG 0H MAIN: JNB P2.0, THUAN JNB P2.1, NGUOC JNB P2.2, STOP SJMP MAIN THUAN: MOV P1, #00000001B ACALL DELAY MOV P1, #00000010B ACALL DELAY MOV P1, #00000100B ACALL DELAY MOV P1, #00001000B ACALL DELAY RET NGUOC: MOV P1, #00000001B ACALL DELAY MOV P1, #00000010B ACALL DELAY MOV P1, #00000100B ACALL DELAY MOV P1, #00001000B ACALL DELAY RET DELAY: MOV R1, #20 H1: MOV R2,#255 H2: MOV R3,#255 H3: DJNZ R3,H3 DJNZ R2,H2 DJNZ R1,H1 RET END 7@LW5.L./UH=./Z,P.+LM# .O+,?kUKCD8-4 7! MOV TMOD, #01100000B; Chọn bộ đếm 1, chế độ 2, bít C/T = 1 xung ngoài. MOV TH1, #0 ; Xoá TH1 SETB P3.5 ; Lấy đầu vào T1 AGAIN: SETB TR1 ; Khởi động bộ đếm BACK: MOV A, TL1 ; Lấy bản sao số đếm TL1 CALL Hienthi JNB TF1, Back ; Duy trì nó nếu TF = 0 CLR TR1 ; Dừng bộ đếm CLR TF1 ; Xoá cờ TF SJMP AGAIN ; Tiếp tục thực hiện Hienthi: MOV DPTR,#Maled7 MOVC A,@A+DPTR MOV P2,A CLR P1.2 SETB P1.2 CALL Delay Maled7: DB 0C0H,0F9H,0A4H,0B0H, 99H,92H,82H,0F8H,80H,90H ; MÃ SỐ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 RET ; Delay: MOV R7,#255 DJNZ R7,$ RET END Câu 19. Thiết kế mạch, viết chương trình điều khiển dãy 8 led đơn sáng dần từ trái qua phải, nhấp nháy, sau đó sáng lần lượt từ phải qua trái. Giải thích ý nghĩa các câu lệnh. Bài làm: Thiết kế mạch: Chương trình: Main: MOV P0,#01h CALL Delay MOV P0,#03h CALL Delay MOV P0,#07h CALL Delay MOV P0,#0fh CALL Delay MOV P0,#1fh CALL Delay MOV P0,#3fh CALL Delay MOV P0,#7fh CALL Delay MOV P0,#0ffh CALL Delay ; nhấp nháy MOV P0, #00H; CALL Delay ; sáng dần từ phải sang trái MOV P0,#80h CALL Delay MOV P0,#40h CALL Delay MOV P0,#20h CALL Delay MOV P0,#10h CALL Delay MOV P0,#08h CALL Delay MOV P0,#04h CALL Delay MOV P0,#02h CALL Delay MOV P0,#01h SJMP main

Ngày đăng: 24/06/2014, 23:18

Từ khóa liên quan

Mục lục

  • Bộ nhớ (Memory)

  • Các thanh ghi chức năng đặc biệt (SFR)

  • Bộ đếm chương trình (PC: Program Counter)

  • Central Processor Unit (CPU)

  • Các cổng vào/ra (I/O Ports)

  • Bộ dao động (Oscillator)

  • Bộ định thời/đếm (Timers/Counters)

  • Truyền thông nối tiếp

  • Chương trình

  • Bài làm:

  • Câu trúc chung của một lệnh hợp ngữ:

  • nhãn: từ gợi nhớ các toán hạng ; chú giải

  • Ví dụ:

  • KIEMTRA: JNB P3.2, BAT ; BAT DEN

  • JNB P3.3, TAT ; TAT DEN

  • Nhãn: là tên chương trình con. Kết thúc bằng dấu hai chấm (:)

  • Từ gợi nhớ: là các câu lệnh của hợp ngữ.

  • Các toán hạng: là các thanh ghi, giá trị, địa chỉ, …

  • Chú giải: là phần giải thích ý nghĩa của câu lệnh. Bắt đầu bằng dấu chấm phẩy (;)

  • Bài 13: Chương trình con tạo trễ 0.5ms dùng timer (Xtal = 11.0592MHZ)

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

Tài liệu liên quan