Các chức năng của họ vi điều khiển MCS-51_chương 4

20 659 0
Các chức năng của họ vi điều khiển MCS-51_chương 4

Đ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

Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 http://www.ebook.edu.vn 1 CHƯƠNG 4: CÁC CHỨC NĂNG CỦA HỌ VI ĐIỀU KHIỂN MCS-51 I. TIMER 1. Giới thiệu - Một bộ đònh thời (timer) là một chuỗi các Flip Flop (FF) với mỗi FF là một mạch chia 2. Chuỗi này nhận một tín hiệu ngõ vào làm xung clock kích cho tầng đầu tiên, ngõ ra của tầng đầu lại trở thành nguồn xung clock cho tầng kế tiếp. Ngõ ra của tầng cuối cùng làm xung clock cho một FF báo tràn timer hay còn gọi là cờ tràn (overflow flag). Cờ tràn này sẽ được kiểm tra bởi phần mềm hay tạo ra một ngắt (interrupt). Hình 4.1 minh họa một timer đơn giản 3-bit. - Giá trò nhò phân trong các FF của timer được dùng để tính số xung clock (số chu kì) của tín hiệu ngõ vào từ khi timer bắt đầu đếm. Hình 4.1 - 8051/8031 có 2 timer 16 bit: + Timer 0: số đếm chứa trong thanh ghi TH0 (byte cao) và TL0 (byte thấp) + Timer 1: số đếm chứa trong thanh ghi TH1 (byte cao) và TL1 (byte thấp) Ngoài ra, các chip 8032/8052 còn có thêm timer 2. - Các timer chỉ đếm lên (0000H ÷ FFFFH). Khi số đếm tràn từ FFFFH xuống 0000H, cờ tràn sẽ được đặt lên 1. 2. Các thanh ghi của timer: a. Thanh ghi chế độ đònh thời (TMOD): MSB LSB Gate T/C M1 M0 Gate T/C M1 M0 Timer 1 Timer 0 - Không được đònh đòa chỉ bit. - Được dùng để đònh chế độ hoạt động cho các timer. - Chức năng từng bit: + M1, M0: chọn chế độ hoạt động. M1 M0 Chế độ (Mode) 0 0 0 0 1 1 1 0 2 1 1 3 + T/C : bit chọn chức năng đếm hoặc đònh thời cho timer. + Gate: bit điều khiển cổng cho bộ đònh thời. D/Q Q D/Q Q D/Q Q D /Q Q Flag Clock LSB MSB Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 http://www.ebook.edu.vn 2 b. Thanh ghi điều khiển đònh thời (TCON): MSB LSB TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Timer Interrupt - Chứa các bit điều khiển và trạng thái của timer 0 và 1 ở 4 bit cao, 4 bit thấp được dùng cho chức năng ngắt (interrupt). - Được đònh đòa chỉ bit. - Chức năng từng bit: + TFx: cờ tràn của timer x (x là 0 hay 1) + TRx = 0: không cho phép timer chạy. TRx = 1: cho phép timer chạy. 3. Điều khiển các bộ đònh thời Hình 4.2 - T/C (Counter/Timer): + T/C = 0: timer nhận xung clock từ bộ dao động nội (sau khi qua bộ chia 12). → Ứng dụng: thường dùng cho việc đònh thời một khoảng thời gian (mỗi số đếm tương ứng với 1 chu kỳ máy). + T/C = 1: timer nhận xung clock từ chân Tx (P3.4 đối với timer 0 và P3.5 đối với timer 1). → Ứng dụng: thường dùng để đếm sự kiện bên ngoài. Mỗi sự kiện tạo ra một xung kích vào chân Tx (tích cực cạnh xuống). Số các sự kiện được xác đònh trong phần mềm bằng cách đọc các thanh ghi đònh thời (THx/TLx), giá trò 16-bit trong các thanh ghi này tăng theo mỗi sự kiện. - Gate: + Gate = 0: việc điều khiển timer x chỉ phụ thuộc vào TRx. TRx = 0: không cho phép timer x chạy. TRx = 1: cho phép timer x chạy. ÷12 On-chip Osc. T/C TRx Gate 0: trên 1: dưới 0: trên 1: dưới TLx THx TFx Tx INTx 8051 Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 http://www.ebook.edu.vn 3 + Gate = 1: việc điều khiển timer x phụ thuộc vào TRx và xINT . TRx = 1 và xINT = 1: cho phép timer chạy. → Ứng dụng: thường dùng để đo độ rộng xung (thời gian xung ở mức cao) đưa vào ở chân xINT . Độ rộng xung tương ứng với số đếm trong THx/TLx. 4. Các chế độ đònh thời a. Chế độ 0 - Xác lập M1M0 = 00 - Là chế độ đònh thời 13-bit tương thích với bộ vi điều khiển 8048 trước đó. Chế độ này thường ít dùng. b. Chế độ 1 - Xác lập M1M0 = 01 - Là chế độ đònh thời 16-bit: số đếm 16-bit chứa trong cặp thanh ghi THx/TLx → khoảng đếm tối đa là 65536 chu kì máy. - Giá trò bắt đầu đếm được nạp vào THx và TLx. Khi timer tràn, để nạp lại giá trò bắt đầu đếm cần phải dừng timer. dụ 1.1: Viết 1 đoạn chương trình khởi động timer 0 ở chế độ 1 và dùng timer 0 để tạo ra 1 xung mức cao rộng 1ms ở chân P1.0. Giả sử dùng thạch anh 12MHz. Giải: MOV TMOD,#00000001B ; khởi động timer 0 ở chế độ 1 CLR P1.0 ; xóa P1.0 MOV TH0,#HIGH(-1000) ; nạp byte cao của -1000 (FCH) vào TH0 MOV TL0,#LOW(-1000) ; nạp byte thấp của -1000 (18H) vào TL0 SETB TR0 ; cho timer 0 chạy SETB P1.0 ; đặt P1.0 lên mức cao JNB TF0,$ ; chờ cho đến khi timer tràn (TF0 = 1) CLR P1.0 ; xóa P1.0 CLR TF0 ; xóa cờ tràn TF0 để dùng cho các lần sau dụ 1.2: Viết chương trình con tạo trễ 200ms dùng timer 1. Giả sử f OSC = 12MHz. Giải: f OSC = 12MHz → chu kỳ máy s1 f 12 T OSC M μ== Nếu dùng timer 1 ở chế độ 1 thì thời gian đònh thời tối đa là 65536 μ s < 200.000 μ s = 200ms → phải dùng thêm vòng lặp ngoài. Để đơn giản, mỗi vòng lặp sẽ delay 50.000 μ s → số lần lặp là 4. Chương trình: DELAY_200MS: MOV TMOD,#10H MOV R7,#4 LOOP: MOV TH1,#HIGH(-50000) MOV TL1,#LOW(-50000) SETB TR1 JNB TF1,$ CLR TR1 CLR TF1 DJNZ R7, LOOP RET Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 http://www.ebook.edu.vn 4 dụ 1.3: Viết chương trình dùng timer tạo sóng vuông đối xứng có tần số 1KHz trên chân P1.0. Giải: f = 1KHz → chu kỳ s1000s10 10 1 f 1 T 3 3 μ==== − → t H = t L = 500 μ s Tần số thạch anh: f OSC = 12MHz → chu kỳ máy s1 f 12 T OSC M μ== → t H = t L = 500T M Chương trình: (sử dụng timer 0) ORG 0 MOV TMOD,#01H LOOP: MOV TH0,#HIGH(-500) MOV TL0,#LOW(-500) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 CPL P1.0 SJMP LOOP END c. Chế độ 2 - Xác lập M1M0 = 10 - Là chế độ đònh thời 8 bit tự động nạp lại. + TLx: bộ đếm 8 bit → khoảng đếm tối đa là 256 chu kì máy. + THx: lưu giá trò bắt đầu đếm được cài đặt. - Mỗi khi timer tràn từ FFH xuống 00H, không chỉ cờ tràn được đặt lên 1 mà giá trò lưu trong THx còn được tự động nạp vào cho TLx (không cần dừng timer) và việc đếm sẽ tiếp tục từ giá trò này cho đến khi xảy ra lần tràn kế tiếp rồi lặp lại… dụ 1.4: Viết chương trình con delay 100 μ s dùng timer. Giả sử f OSC = 12MHz. Giải: Do khoảng thời gian tạo trễ là 100 μ s = 100 T M < 256 → có thể dùng timer ở chế độ 2. Chương trình: DELAY_100US: MOV TMOD,#02H ; khởi động timer 0 ở chế độ 2 MOV TH0,#-100 ; nạp giá trò bắt đầu đếm –100 vào TH0 MOV TL0,TH0 SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET t H t L T Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 http://www.ebook.edu.vn 5 Lưu ý: thông thường lệnh khởi động chế độ timer được đặt trong chương trình chính. dụ 1.5: Viết chương trình dùng timer 1 để tạo sóng vuông đối xứng, tần số f = 10KHz tại chân P1.7 (giả sử f OSC = 6MHz). Giải: f = 10KHz → chu kỳ s100s10 10.10 1 f 1 T 4 3 μ==== − → t H = t L = 50 μ s Tần số thạch anh: f OSC = 6MHz → chu kỳ máy s2 f 12 T OSC M μ== → t H = t L = 25T M Chương trình: ORG 0 MOV TMOD,#20H MOV TH1,#-25 SETB TR1 LOOP: JNB TF1,$ CPL P1.7 CLR TF1 SJMP LOOP END 4. Chế độ 3 - Xác lập M1M0 = 11 - Là chế độ tách timer: timer 0 16-bit được chia thành 2 timer 8-bit riêng lẽ TL0 và TH0 với cờ tràn tương ứng là TF0 và TF1 (TF1 lúc này không còn là cờ tràn của timer 1 nữa). - Timer 1 không hoạt động ở chế độ 3 nhưng có thể được dùng trong các chế độ khác (không sử dụng cờ tràn TF1). Chú ý: Các kỹ thuật thường được dùng để tạo các khoảng thời gian đònh thời khác nhau Khoảng thời gian (chu kỳ máy) Kỹ thuật ≈ 10 Điều chỉnh phần mềm 256 Bộ đònh thời 8 bit tự động nạp lại 65536 Bộ đònh thời 16 bit Không giới hạn Bộ đònh thời 16 bit + các vòng lặp II. PORT NỐI TIẾP 1. Giới thiệu - Chức năng cơ bản của port nối tiếp là chuyển đổi dữ liệu từ song song thành nối tiếp khi phát và từ nối tiếp thành song song khi thu. - Truy xuất port nối tiếp thông qua 2 chân: + RxD (P3.0): chân thu của port nối tiếp. + TxD (P3.1): chân phát của port nối tiếp. - Có khả năng hoạt động song công (full duplex), tức là thu và phát đồng thời. Ngoài ra port nối tiếp còn có chức năng đệm dữ liệu khi thu cho phép một ký tự được nhận và lưu giữ trong bộ đệm thu trong khi ký tự tiếp theo được nhận vào. Nếu vi điều khiển đọc ký tự thứ nhất trước khi ký tự thứ hai được thu đầy đủ, dữ liệu sẽ không bò mất. - Các thanh ghi liên quan đến port nối tiếp: + SCON: chứa các bit trạng thái và các bit điều khiển port nối tiếp. + SBUF: là bộ đệm của port nối tiếp. Thực tế, port nối tiếp gồm 2 bộ đệm riêng cho phát và thu. Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 http://www.ebook.edu.vn 6 - Tần số hoạt động của port nối tiếp, hay còn gọi là tốc độ baud (baud rate), có thể cố đònh hoặc thay đổi. Khi dùng tốc độ baud thay đổi, timer 1 được lập trình để cung cấp xung clock tốc độ baud phù hợp. Hình 4.3 2. Thanh ghi điều khiển port nối tiếp SCON MSB LSB SM0 SM1 SM2 REN TB8 RB8 TI RI - Đòa chỉ 99H. - Đònh đòa chỉ bit. - Chức năng các bit: + SM0, SM1: chọn chế độ hoạt động của port nối tiếp SM0 SM1 Chế độ (Mode) Mô tả 0 0 0 Thanh ghi dòch 0 1 1 UART 8 bit tốc độ thay đổi 1 0 2 UART 9 bit tốc độ cố đònh 1 1 3 UART 9 bit tốc độ thay đổi + SM2: chọn chế độ hoạt động của port nối tiếp. SM2 = 1: cho phép truyền thông đa xử lý ở các chế độ 2 và 3; bit RI sẽ không được tích cực nếu bit thứ 9 nhận được là 0. + REN: bit cho phép thu. REN = 1: cho phép thu. REN = 0: không cho phép thu. + TB8: bit phát thứ 9 (ở chế độ 2 và 3), có thể đặt và xóa bằng phần mềm. + RB8: bit thu thứ 9 (ở chế độ 2 và 3), có thể đặt và xóa bằng phần mềm. SBUF Q (write-only) CLK D Thanh ghi dòch CLK SBUF (read-only) TXD (P3.1) RXD (P3.0) Xung clock tốc độ baud (thu) Xung clock tốc độ baud (phát) Bus nội 8051 Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 http://www.ebook.edu.vn 7 + TI: cờ ngắt phát. Cờ này được đặt lên 1 bằng phần cứng khi phát xong 1 ký tự (để báo bộ đệm phát đã rỗng), được xóa bằng phần mềm. + RI: cờ ngắt thu. Cờ này được đặt lên 1 bằng phần cứng khi thu xong 1 ký tự (để báo bộ đệm thu đã đầy), được xóa bằng phần mềm. 3. Các chế độ hoạt động của port nối tiếp a. Chế độ 0 (thanh ghi dòch 8 bit) - Xác lập SM0 SM1 = 0 0 - Dữ liệu nối tiếp được thu/phát thông qua chân RxD. - Chân TxD phát xung clock để dòch bit. - Khi thu/phát dữ liệu 8 bit, bit LSB được thu/phát trước tiên. - Tốc độ baud cố đònh và bằng 1/12 tốc độ dao động trên chip (f = f M = f OSC /12). Một ứng dụng khả thi của chế độ 0 là mở rộng thêm các ngõ ra cho 8051. Một vi mạch thanh ghi dòch nối tiếp-song song có thể được nối với các chân TxD và RxD của 8051 để cung cấp thêm 8 đường xuất. Các thanh ghi dòch khác có thể ghép cascade với thanh ghi dòch đầu tiên để mở rộng thêm nữa. Hình 4.4 b. Chế độ 1 (UART 8 bit tốc độ baud thay đổi) - Xác lập SM0 SM1 = 0 1 - Port nối tiếp hoạt động như một bộ thu/phát bất đồng bộ (universal asynchronous receiver/transmitter) UART 8 bit có tốc độ baud thay đổi được. - Truyền 10 bit: 1 bit Start + 8 bit data + 1 bit Stop (luôn mức 0) (bit LSB trước) (luôn mức 1) - Tốc độ baud = (tốc độ tràn của timer 1) / 32 (nếu bit SMOD = 0) = (tốc độ tràn của timer 1) /16 ( nếu bit SMOD = 1) * Khi phát: - Trước tiên, dữ liệu được ghi vào SBUF (phát). - Dữ liệu được dòch bit để xuất ra trên đường TxD sẽ bắt đầu bằng bit Start , tiếp theo là 8 bit dữ liệu với LSB phát trước và cuối cùng là bit Stop. Bit Start và Stop do phần cứng tự động chèn vào. Thời gian của mỗi bit là nghòch đảo của tốc độ baud. - Cờ ngắt TI sẽ được tự động đặt bằng 1 bởi phần cứng ngay khi bit Stop xuất hiện trên đường TxD (tức là đã phát xong 1 ký tự dữ liệu) để báo bộ đệm phát đã rỗng. * Khi thu: - Việc thu được khởi động bởi sự chuyển trạng thái từ 1 xuống 0 trên đường RxD (bắt đầu bit Start). - Khi 1 bit Start hợp lệ được phát hiện, bit Start được bỏ qua và 8 bit dữ liệu được nhận tuần tự vào thanh ghi dòch bit của port nối tiếp. Sau khi thu xong cả 8 bit, các điều sau sẽ xảy ra: + Bit thứ 9 (bit Stop) được đưa đến bit RB8 trong SCON. 8051 TXD (P3.1) RXD (P3.0) CLOCK Data Thanh ghi dòch 8 ngõ ra mở rộng Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 http://www.ebook.edu.vn 8 + 8 bit data được nạp vào SBUF (thu). + Cờ ngắt thu RI được đặt lên 1 bởi phần cứng. Tuy nhiên các điều trên chỉ xảy ra nếu tồn tại các điều kiện sau: + REN = 1 + RI = 0 (báo bộ đệm thu chưa đầy). + SM2 = 0 hoặc SM2 = 1 và bit Stop nhận được bằng 1. c. Chế độ 2 (UART 9 bit, tốc độ baud cố đònh) - Xác lập SM0 SM1 = 1 0 - Port nối tiếp hoạt động ở chế độ UART 9 bit có tốc độ baud cố đònh. - Truyền 11 bit: 1 bit Start + 8 bit data + bit data thứ 9 + 1 bit Stop (luôn mức 0) (bit LSB trước) (lập trình được) (luôn mức 1) - Tốc độ baud = f OSC / 64 (nếu bit SMOD = 0) hay f OSC / 32 (nếu bit SMOD = 1) - Khi phát, bit data thứ 9 là bit bất kỳ đặt ở TB8 trong thanh ghi SCON. - Khi thu, bit data thứ 9 nhận được sẽ đặt vào RB8 trong thanh ghi SCON. d. Chế độ 3 (UART 9 bit, tốc độ baud thay đổi được) - Xác lập SM0 SM1 = 1 0 - Port nối tiếp hoạt động ở chế độ UART 9 bit có tốc độ baud thay đổi được, tương tự như chế độ 2 nhưng tốc độ baud được lập trình và được cung cấp bởi timer 1. - Tốc độ baud = (tốc độ tràn của timer 1) / 32 (nếu bit SMOD = 0) = (tốc độ tràn của timer 1) / 16 (nếu bit SMOD = 1) * Giải thuật chương trình con thu và phát một byte: * Chương trình: INCHAR: ; CT con thu 1 byte OUTCHAR: ; CT con phát 1 byte JNB RI,$ JNB TI,$ CLR RI CLR TI MOV A,SBUF MOV SBUF,A RET RET 4. Tốc độ baud cho port nối tiếp Ở chế độ 1 và 3, tốc độ baud cho port nối tiếp được lập trình bởi timer 1: Tốc độ baud = (tốc độ tràn timer 1) / 32 (SMOD = 0) / 16 (SMOD = 1) INCHAR RI = 1 ? Xóa cờ RI Đọc SBUF RET OUTCHAR TI = 1 ? Xóa cờ TI Ghi ra SBUF RET YY NN Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 http://www.ebook.edu.vn 9 → tốc độ tràn timer 1 (f tràn ) = tốc độ baud x 32 (hay x16) → thời gian tràn timer 1 (T tràn ) = 1 / (tốc độ tràn timer 1) tràn M M tràn f f T T 1 timer cho nạp cần Số == dụ: Viết 1 đoạn chương trình tạo tốc độ baud 2400 (với f OSC = 12MHz, SMOD = 0) f tràn timer 1 = 2400 x 32 = 76800 Hz → T tràn timer 1 = 1/76800 = 13,021 μ s f OSC = 12MHz → T M = 1 μ s → Thời gian tràn timer 1 = 13,021/1 ≈ 13 μ s → sai số: (13,021 – 13)/13 = 0,16% MOV TMOD,#00100000B ; khởi động timer 1 ở mode 2 MOV TH1,#-13 ; thời gian tràn là 13T M SETB TR1 dụ: Tạo tốc độ baud 9600 (với f OSC = 12MHz, SMOD = 0) 3≈= × == 3,255 329600 12MHz/12 f f 1 timer cho nạp cần Số tràn M → sai số: (3,255 – 3) / 3 = 8,5% : khá lớn. dụ: Tạo tốc độ baud 1200 (với f OSC = 12MHz, SMOD = 0) 2626,042 321200 12MHz/12 f f 1 timer cho nạp cần Số tràn M ≈= × == → sai số: (26,042 – 26) / 26 = 0,16% Bảng tóm tắt một số tốc độ baud Tốc độ baud Tần số thạch anh SMOD Giá trò nạp cho TH1 Tốc độ baud thực tế Sai số 9600 12,000MHz 1 -7 (F9H) 8923 7% 2400 12,000MHz 0 -13 (F3H) 2404 0,16% 1200 12,000MHz 0 -26 (E6H) 1202 0,16% 19200 11,059MHz 0 -3 (FDH) 19200 0 9600 11,059MHz 0 -3 (FDH) 9600 0 2400 11,059MHz 0 -12 (F4H) 2400 0 1200 11,059MHz 0 -24 (E8H) 1200 0 → Cần truyền với tốc độ chính xác thì sử dụng thạch anh 11,059MHz. 5. Các dụ dụ 2.1: Viết chương trình phát 1 chuỗi mã ASCII kết thúc bằng ký tự null (có mã ASCII là 00H) ra port nối tiếp (không gởi ký tự null). Biết rằng chuỗi mã ASCII nằm trong RAM ngoài bắt đầu tại đòa chỉ 2000H. Giả sử truyền UART 8 bit, tốc độ baud 2400, f OSC = 12MHz. Giải: ORG 0 ; khởi động port nối tiếp MOV SCON,#01010010B ; port nối tiếp ở mode 1 MOV TMOD,#20H ; timer 1 ở mode 2 MOV TH1,#-13 ; tốc độ baud = 2400 SETB TR1 ; cho phép timer 1 chạy để tạo xung clock tốc độ baud Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 http://www.ebook.edu.vn 10 ; phát chuỗi mã ASCII MOV DPTR,#2000H ; trỏ đến đòa chỉ RAM ngoài 2000H LOOP: MOVX A,@DPTR ; lấy nội dung ô nhớ RAM ngoài vào A CJNE A,#00H,CONT ; kiểm tra xem có phải ký tự null không SJMP EXIT ; nếu đúng, kết thúc chương trình CONT: ; nếu không, phát ký tự đó ACALL OUTCHAR ; gọi chương trình con OUTCHAR INC DPTR ; tăng nội dung con trỏ SJMP LOOP ; lặp lại việc phát ký tự ; chương trình con OUTCHAR phát 1 byte dữ liệu (1 ký tự) OUTCHAR: JNB TI,$ ; chờ cờ TI bằng 1 báo bộ đệm phát rỗng CLR TI ; xóa cờ TI MOV SBUF,A ; chuyển nội dung thanh ghi A ra SBUF RET EXIT:NOP ; thêm lệnh NOP do END không phải là lệnh của 8051 END dụ 2.2: Viết chương trình nhập 1 chuỗi mã ASCII từ port nối tiếp và cất vào RAM nội bắt đầu từ đòa chỉ 30H. Chuỗi mã ASCII kết thúc bằng ký tự CR (có mã ASCII là 13H). Cất cả ký tự CR vào RAM nội và kết thúc chuỗi bằng cách thêm ký tự null. Giả sử truyền UART 8 bit, tốc độ baud 2400, f OSC = 12MHz, bit SMOD = 0. Giải: ORG 0 ; khởi động port nối tiếp MOV SCON,#01010010B ; port nối tiếp ở mode 1 MOV TMOD,#20H ; timer 1 ở mode 2 MOV TH1,#-13 ; tốc độ baud = 2400 SETB TR1 ; cho phép timer 1 chạy để tạo xung clock tốc độ baud ; nhập chuỗi mã ASCII MOV R0,#30H ; trỏ đến ô nhớ RAM nội 30H LOOP: ACALL INCHAR ; nhập 1 byte từ port nối tiếp vào A MOV @R0,A ; cất byte ký tự vào ô nhớ RAM nội INC R0 ; tăng nội dung con trỏ CJNE A,#13H,LOOP ; kiểm tra ký tự thu được có phải là CR không, ; nếu không thì lặp lại MOV @R0,#0 ; nếu đúng, kết thúc và chèn thêm ký tự null SJMP EXIT INCHAR: JNB RI,$ CLR RI MOV A,SBUF RET EXIT:NOP END [...]... Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 BÀI TẬP CHƯƠNG 4 Phần timer (Giả sử hệ thống dùng thạch anh 12MHz) 4. 1 Vi t chương trình dùng timer tạo trễ 200μs 4. 2 Vi t chương trình dùng timer tạo trễ 50ms 4. 3 Vi t chương trình dùng timer tạo một xung mức cao trên chân P1.7 trong 1s 4. 4 Vi t chương trình dùng timer tạo sóng vuông đối xứng có tần số f = 500Hz trên chân P1.0 4. 5 Vi t chương... ra port nối tiếp với điều kiện chỉ truyền các ký tự hoa Giả sử truyền ở chế độ UART 8 bit, tốc độ baud là 240 0, fOSC = 8MHz và bit SMOD = 0 http://www.ebook.edu.vn 19 Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 Phần ngắt (interrupt) 4. 14 Vi t chương trình dùng ngắt tạo sóng vuông đối xứng có tần số f = 40 0Hz trên chân P1.7 Giả sử hệ thống dùng thạch anh 12MHz 4. 15 Vi t chương trình dùng... để phát liên tiếp các ký tự hoa ra port nối tiếp Giả sử truyền ở chế độ UART 8 bit, tốc độ baud là 240 0, fOSC = 12MHz và bit SMOD = 0 4. 16 Làm lại bài 4. 9 của phần port nối tiếp nhưng dùng ngắt 4. 17 Làm lại bài 4. 13 của phần port nối tiếp nhưng dùng ngắt 4. 18 Làm lại bài 4. 6 của phần timer nhưng dùng ngắt, lúc này xung từ bộ cảm biến đưa vào chân INT1 (P3 .4) thay chân T1 4. 19 Vi t chương trình dùng... 000BH ; điểm nhập của trình phục vụ ngắt timer 0 LJMP T0_ISR ; nhảy đến chương trình phục vụ ngắt timer 0 ORG 0030H …… MAIN: ;SJMP $ ; các chương trình con http://www.ebook.edu.vn ; bắt đầu chương trình chính tại 0030H Thường là các khởi động ban đầu, các lệnh gọi chương trình con, … 14 Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 …… CTCON_1: …… RET CTCON_2: …… RET …… ; các chương trình... timer 1) - Khi timer x tràn, cờ TFx được đặt lên 1→ vi điều khiển thực hiện chương trình phục vụ ngắt của timer x - Cờ TFx được tự động xóa về 0 bởi phần cứng khi vi điều khiển chuyển đến chương trình phục vụ ngắt c Các ngắt port nối tiếp - Khi TI = 1 (phát xong 1 byte) hay RI = 1 (thu xong 1 byte)→ vi điều khiển thực hiện chương trình phục vụ ngắt của port nối tiếp - Cờ TI hay RI không được xóa tự... SJMP $ ; không làm gì, chỉ chờ ngắt END dụ 3.2: Vi t chương trình sử dụng các ngắt timer để tạo đồng thời 2 sóng vuông đối xứng có tần số là 7KHz và 500Hz trên các chân P1.7 và P1.6 Giả sử fOSC = 12 MHz Giải: http://www.ebook.edu.vn 15 Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 - Hai sóng vuông có tần số khác nhau: + f1 = 7KHz → T1 ≈ 142 μs → tL1 = tH1 = 71μs → dùng timer 0, chế độ 2 (8... ứng sẽ được đặt bằng 1 → vi điều khiển thực hiện chương trình phục vụ ngắt của ngắt ngoài tương ứng - Khi một ngắt ngoài được tạo ra, cờ ngắt sẽ được tự động xóa bởi phần cứng khi vi điều khiển chuyển đến chương trình phục vụ ngắt nếu ngắt thuộc loại tác động cạnh xuống Còn nếu ngắt thuộc loại tác động mức, nguyên nhân ngắt ngoài sẽ điều khiển mức của cờ thay phần cứng b Các ngắt timer (timer 0 và...Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 dụ 2.3: Vi t chương trình con gởi liên tục các ký tự chữ thường ra port nối tiếp Giải: - Phần khởi động port nối tiếp được vi t ở chương trình chính - Sử dụng chương trình con OUTCHAR đã trình bày ở trên để xuất 1 btye ra port nối tiếp SEND: MOV A,#‘a’ ; chuyển mã ASCII của ký tự ‘a’ vào thanh ghi A LOOP: ACALL... cả các ngắt ở mức ưu tiên thấp http://www.ebook.edu.vn 12 PT0 LSB PX0 Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 - Nếu 2 ngắt với mức ưu tiên khác nhau xuất hiện đồng thời, ngắt có mức ưu tiên cao sẽ được phục vụ trước Đồng thời, ngắt có mức ưu tiên cao cũng có thể tạm dừng chương trình phục vụ ngắt của ngắt có mức ưu tiên thấp - Nếu các ngắt có cùng mức ưu tiên xuất hiện đồng thời, vi c... mã ASCII của ký tự ‘.’ vào thanh ghi A OUT: ACALL OUTCHAR ; xuất ký tự ra port nối tiếp SJMP LOOP ; lặp lại INCHAR: JNB RI,$ CLR RI MOV A, SBUF RET OUTCHAR: JNB TI,$ CLR TI MOV SBUF,A RET END http://www.ebook.edu.vn 11 Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 III INTERRUPT (NGẮT) 1 Giới thiệu - Interrupt (Ngắt): là vi c ngưng thực hiện chương trình hiện hành do sự tác động của bên ngoài . Bài giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 http://www.ebook.edu.vn 1 CHƯƠNG 4: CÁC CHỨC NĂNG CỦA HỌ VI ĐIỀU KHIỂN MCS-51 I. TIMER 1 giảng VI XỬ LÝ Chương 4: Các chức năng của họ MCS-51 http://www.ebook.edu.vn 19  BÀI TẬP CHƯƠNG 4 Phần timer (Giả sử hệ thống dùng thạch anh 12MHz) 4. 1. Vi t

Ngày đăng: 25/10/2013, 04:15

Hình ảnh liên quan

CHƯƠNG 4: CÁC CHỨC NĂNG CỦA HỌ VI ĐIỀU KHIỂN MCS-51  - Các chức năng của họ vi điều khiển MCS-51_chương 4

4.

CÁC CHỨC NĂNG CỦA HỌ VI ĐIỀU KHIỂN MCS-51 Xem tại trang 1 của tài liệu.
Hình 4.1 - Các chức năng của họ vi điều khiển MCS-51_chương 4

Hình 4.1.

Xem tại trang 1 của tài liệu.
Hình 4.2 - Các chức năng của họ vi điều khiển MCS-51_chương 4

Hình 4.2.

Xem tại trang 2 của tài liệu.
Hình 4.3 2. Thanh ghi điều khiển port nối tiếp SCON  - Các chức năng của họ vi điều khiển MCS-51_chương 4

Hình 4.3.

2. Thanh ghi điều khiển port nối tiếp SCON Xem tại trang 6 của tài liệu.
Hình 4.4 - Các chức năng của họ vi điều khiển MCS-51_chương 4

Hình 4.4.

Xem tại trang 7 của tài liệu.
Bảng các vector ngắt: - Các chức năng của họ vi điều khiển MCS-51_chương 4

Bảng c.

ác vector ngắt: Xem tại trang 13 của tài liệu.
4.6. Giả sử có một hệ thống đếm số người đi vào một siêu thị như trong hình vẽ B4.6. Bộ cảm biến sẽ tạo ra 1 xung (kích cạnh xuống) đưa vào chân T1 của 8051 (P3.5) khi có 1 người đi  vào siêu thị - Các chức năng của họ vi điều khiển MCS-51_chương 4

4.6..

Giả sử có một hệ thống đếm số người đi vào một siêu thị như trong hình vẽ B4.6. Bộ cảm biến sẽ tạo ra 1 xung (kích cạnh xuống) đưa vào chân T1 của 8051 (P3.5) khi có 1 người đi vào siêu thị Xem tại trang 19 của tài liệu.
Hình B4.20 - Các chức năng của họ vi điều khiển MCS-51_chương 4

nh.

B4.20 Xem tại trang 20 của tài liệu.
4.20. Giả sử có một hệ thống đếm sản phẩm như hình B4.20. Cứ mỗi sản phẩm chạy qua bộ cảm biến sẽ tạo ra một xung vuông (kích cạnh xuống) đưa vào chân INT0(P3.2) của 8051 - Các chức năng của họ vi điều khiển MCS-51_chương 4

4.20..

Giả sử có một hệ thống đếm sản phẩm như hình B4.20. Cứ mỗi sản phẩm chạy qua bộ cảm biến sẽ tạo ra một xung vuông (kích cạnh xuống) đưa vào chân INT0(P3.2) của 8051 Xem tại trang 20 của tài liệu.

Từ khóa liên quan

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

Tài liệu liên quan