Sự cho phép ngắt và sự cấm ngắt

Một phần của tài liệu ĐỒ ÁN VI XỬ LÝ : MẠCH ĐIỀU KHIỂN TỪ XA DÙNG REMOTE (Trang 26 - 44)

Mỗi nguồn ngắt được cho phép riêng biệt hoặc sự cấm riêng biệt qua thanh ghi chức năng đặc biệt có bit định vị IE (Interrupt Enable) tại địa chỉ 0A8H. Cũng như sự cá biệt cho phép các bit của mỗi nguồn ngắt có 1 bit cho phép (hoặc cấm) chung mà nó có được xóa để cấm tất cả các ngắt hoặc được set để cho phép chung các ngắt.

Hoạt động của từng bit trong thanh ghi cho phép ngắt IE được tóm tắt trong bảng sau:

Hoạt động của từng bit trong thanh ghi cho phép ngắt IE

Hai bit phải set để cho phép 1 sự ngắt nào đó: là bit cho phép riêng và bit cho phép chung. Ví dụ để cho phép ngắt timer 1 ta có thể thực hiện trên bit:

SETB ET1 và SETB EA hoặc sự thực hiện trên byte:

MOV IE, #10001000B

Bit Symbol Bit Address Sự mô tả (Enable=1; Disable)

IE.7 EA AFH Cho phép ngắt toàn cục IE.6 - AEH Không định nghĩa

IE.5 ET2 ADH Cho phép ngắt timer 2 (8052) IE.4 ES ACH Cho phép ngắt Port nối tiếp IE.3 ET1 ABH Cho phép ngắt timer 1

IE.2 EX1 AAH Cho phép ngắt ngoài External 1 IE.1 ET0 A9H Cho phép ngắt timer 0

Cả hai phương pháp này có kết quả chính xác sau khi reset hệ thống, nhưng kết quả khác nhau nếu thanh ghi IE được ghi trên tuyến ở giữa chương trình.

Giải pháp thứ nhất không có tác dụng trên các bit còn lại trong thanh ghi IE, còn giải pháp thứ hai xóa các bit còn lại trong thanh ghi IE. Ở đầu chương trình ta nên khởi tạo IE với lệnh MOV BYTE, nhưng sự cho phép ngắt và cấm ngắt trên tuyến trong một chương trình sẽ dùng các lệnh SETB bit và CLR bit để tránh kết quả phụ với các bit khác trong thanh ghi IE.

1.5.3.Xử lý các ngắt

Khi một ngắt xuất hiện và được chấp nhận bởi CPU thì chương trình chính bị ngắt. Các hoạt động sau đây xuất hiện:

 Lệnh hiện hành và kết thúc thực thi.

 Bộ đếm chương trình PC được cất giữ vào Stack.  Trạng thái ngắt hiện hành được cất giữ vào bên trong.  Những sự ngắt bị ngăn lại tại mức ngắt.

 Bộ đếm chương trình PC được LOAD với địa chỉ vectơ của thủ tục phục vụ ngắt ISR.

 Thủ tục phục vụ ngắt ISR được thực thi.

Thủ tục phục vụ ngắt ISR thực thi và đưa hoạt động vào đáp ứng ngắt, thủ tục phục vụ ngắt ISR kết thúc với lệnh RETI (quay trở về chương trình chính từ Stack). Điều này khôi phục lại giá trị của bộ đếm chương trình từ Stack và hoàn toàn dừng lại trạng thái cũ. Sự thực thi của chương trình chính tiếp tục ở nơi mà nó ngừng lại.

CHƯƠNG 2:

TÌM HIỂU VỀ HỒNG NGOẠI

Hồng ngoại là sự bức xạ năng lượng với tần số thấp hơn tần số mắt ta nhìn thấy, vì vậy chúng ta không thể nhìn thấy nó được. Tuy nhiên chúng ta đều biết mặc dù không nhìn thấy tần số âm thanh nhưng nó vẫn tồn tại và tai ta có thể nghe thấy chúng.

Ta không thể nhìn thấy hay nghe thấy hồng ngoại nhưng ta có thể cảm thấy nó từ sự cảm ứng nhiệt trên da. Khi bạn đưa tay đến ngần ngọn lửa hoặc những vật nóng, bạn xẽ cảm thấy nhiệt dù bạn không nhìn thấy. Bạn nhìn thấy ngọn lửa là do nó phát ra nhiều loại bức xạ mắt ta có thể nhìn thấy, đồng thời nó cũng phát ra hồng ngoại mà ta chỉ có thể cảm nhận qua da.

2.2. Hồng ngoại trong điện tử

Hồng ngoại thật thú vị, bởi vì nó tạo ra một cách dễ dàng và không bị ảnh hưởng bởi nhiễu điện từ. Do đó nó được sử dụng rộng rãi và tiện lợi trong thông tin và điều khiển. Tuy nhiên nó không hoàn hảo, nhiều nguồn sáng khác nhau có thể phát ra hồng ngoại và có thể ngây nhiễu đến thông tin này. Mặt trời là một ví dụ, nó phát ra một khoảng phổ rất rộng trong đó có phổ hồng ngoại. Việc sử dụng hồng ngoại trong các thiết bị điều khiển từ xa TV/VCR và nhiều ứng dụng khác cũng một phần là do diode phát và thu hồng ngoại rẻ và sẵn có trên thi trường.

Như đã nói ở trên, nhiều thứ có thể phát ra hồng ngoại, bắt kỳ thứ gì bức xạ nhiệt đều có khả năng đó. Bao gồm cở thể chúng ta, lò vi sóng, chà sát tay vào nhau, thậm chí cả nước nóng nữa. Vì vậy để cho phép sự truyền thông hiệu quả khi sử dụng hồng ngoại và tránh những tín hiệu nhiễu không mong muốn phải sử dụng một khóa để báo cho đầu thu biết đâu là tín hiệu có ích, đâu là nhiễu. Khi nhìn lên bầu trời đêm bạn nhìn thấy nhiều vì sao, nhưng bạn dễ dàng nhận ra một chiếc máy bay bởi ánh sáng nhấp nhái của nó. Ánh

sáng nhấp nháy này cũng có thể coi là một “khóa”, một kiểu mã hóa đối với chúng ta.

Tương tự như máy bay trong bầu trời đêm, TV của chúng ta cũng có thể nhận ra hàng trăm loại hồng ngoại khác nhau. Một cách để tránh những nguồn hồng ngoại khác là tạo ra một khóa. Do đó điều khiểm từ xa dùng để điều biến hồng ngoại của nó tại một tần số nào đó. Đầu thu hồng ngoại ở TV/VCR sẽ đi theo tần số này mà lờ đi các hồng ngoại khác nhận được. Khoảng tần số hay sử dụng là 30  60 KHz, tốt nhất là khoảng 36  38 KHz. Hồng ngoại phát ra từ các diode hồng ngoại theo các xung nhịp với tần số 36000 lần một giây phát ra các mức logic “0” và ”1”.

Để tạo ra tần số 36 KHz là việc đơn giản cái khó ở đây là việc thu và nhận dạng nó. Đó là lý do tại sao nhiều công ty sản xuất thiết bị thu hồng ngoại bao gồm những bộ lọc, mạch giải mã và sửa dạng đầu ra. Một xung vuông chu kỳ xấp xỉ 27µs đưa vào cực bazơ của tranzitor có thể điều khiển

một led hồng ngoại để truyền đi.

Bạn có thể bật hoặc tắt tần số này tại đầu phát, đầu thu xẽ chỉ ra khi nào đầu phát là bật hay tắt.

Những bộ giải điều chế có mức logic đảo tại đầu ra khi có một gói hồng ngoại được gửi, đầu ra ở mức tích cực thấp tương đương với mức logic 1.

Để tránh việc một điều khiển từ xa philip có thể thay đổi kênh của một TV panasonic…người ta sử dụng các cách mã hóa khác nhau cho cùng một khoảng tần số đó. Chúng sử dụng các kiểu tổ hợp bit khác nhau để mã hóa việc truyền dữ liệu và tránh nhiễu.

2.3. Điều khiển TV Sony

Sony sử dụng kiểu mã hóa độ rộng bit, đây là kiểu mã hóa đơn giản cho việc giải mã.

Hãy xem xét khoảng thời gian nhỏ T cỡ 600µs mỗi bit truyền đi là sự

kết hợp của -T+T cho bit “0” và –T+2T cho bit “1”. Vì vậy bit “0” có chiều dài 1200µs và bit “1” có chiều dài 1800µs.

Mức lên (+T) có nghĩa là hồng ngoại được truyền đi, mức xuống (-T) có nghĩa là không có.

Để tiết kiệm pin, hầu hết các nhà sản xuất rút gắn còn 5/6 thậm chí 3/4 độ rộng xung như lý thuyết. Bằng cách này pin 500 giờ có thể sử dụng được 600 giờ (5/6) hoặc 800 (3/4). Một số nhà sản xuất khác không quan tâm đến vấn đề này, họ tăng cường hiệu quả truyền tin bằng cách mở rộng một chút khoảng thời gian sóng mang 36 KHz tích cực và rút ngắn khoảng thời gian kia. Như vậy tín hiệu Remote TV sony có dạng như sau:

- phần đầu tiên được truyền đi gọi là Header (mào đầu), nó cũng được gọi là bit bắt đầu (start bit), phần mào đầu có độ rộng 3T hay 1800µs.

- Tiếp theo phần Header là 12 bit liên tiếp được giải điều chế như sau: 500µs bit im lặng + 700µsbit hồng ngoại = bit 0

500µs bit im lặng + 1300µsbit hồng ngoại = bit 1

Bit đầu tiên sau bit start là bit LSB ta đặt là bit B0, bit cuối cùng là B11: B0 – B6 : 7 bit mã lệnh

B7 – B11 : 5 bit dịa chỉ

Trong hình vẽ trên địa chỉ là 02H, mã lệnh là 16H, có 32 khả năng địa chỉ và 128 lệnh. Toàn bộ thời gian truyền đị của khung có thể thay đổi theo thời gian vì độ rộng của bit 1 > độ rộng bit 0. Nếu bạn giữ nút bấm, khung dữ

liệu sẽ nặp lại sau mỗi 25 ms. Nếu bạn sử dụng mắt nhìn hồng ngoại có sẵn trên thi truờng, tất cả dạng sóng trên sẽ bị đảo như sau:

Để thu và giải mã được tín hiệu Remote TV sony, thực tế không cần thu toàn bộ 12 bit mã hóa, ta chỉ cần thu 7 bit COMMAND và có thể bỏ qua 5 bit địa chỉ. Bởi với cùng điều khiển thì tất cả nút bắm đều phát ra mã địa chỉ như nhau, chỉ khác mã lệnh. Mã địa chỉ Sony để phân biệt giữa các MODEL REMOD SONY khác nhau.

Để thu 7 bit mã lệnh ta có thuật toán sau: 1) thiết lập thanh nghi A = 01000000B

2) khởi đầu bằng cách chờ tín hiệu đi xuống – đây xẽ là bít START 3) chờ cho tín hiệu đi lên – đây là khởi đầu của bit

4) chờ cho tín hiệu đi xuống 5) chờ khoảng 750 – 950 µs

6) đo mức tín hiệu

7) nếu mức tín hiệu là mức cao, bit nhận được là bit 0 - thiết lập cờ nhớ C = 0

- quay phải có nhớ A, như vậy C sẽ được gửi vào MSB của A, LSB của A gửi vào C.

- ban đầu A = 01000000B thì sau khi quay ta có C = 0 và MSB của A là bít đầu tiên của mã lệnh.

- như vậy sau 7 lần quay thì C = 1 và 7 bit bên trái của A sẽ chứa mã lệnh

8) nếu mức tín hiệu là thấp bit nhận được là 1 - thiết lập cờ nhớ C = 1 (bit mã lệnh thu được) - quay phải có nhớ A

- kiểm tra cờ nhớ C, nếu C = 1 nhẩy tới bước 9, nếu C = 3 nhẩy tới bước 3

9) bẩy bit mã lệnh chứa trong 7 bit trái của A: A = D6D5D4D3D2D1D00

- quay phải A ta được 7 bit phải của A chứa ma lệnh A=0D0D1D2D3D4D5D6

2.4. Thiết bị thu và phát

- Thiết bị phát sử dụng điều khiển TV Sony với mỗi một nút bấm hồng ngoại phát ra với một mã hóa khác nhau.

- Thiết bị thu sử dụng mắt nhận hồng ngoại 3 chân, loại mắt nhận được sử dụng trong TV:

- Mắt nhận hồng ngoại nhận tín hiệu hồng ngoại từ điều khiển từ xa phát ra và đưa tín hiệu đảo mức ra chân Out. Tín hiệu từ chân Out được đưa tới P3.3 của Vi xử lý để giải mã, điều khiển Port P2.

CHƯƠNG 4:

SƠ ĐỒ VÀ NGUYÊN LÝ HOẠT ĐỘNG

AD7 AD0 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 AD6 AD5 AD4 AD3 AD2 AD1 XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WRP3.5/T1 16 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C51 C1 33p C2 33p X1 12MHz C3 10uF R9 10k +5V 2 3 4 5 6 7 8 9 1 RP1 10K + 5V So do mach RL2 5V R2 330R D2 D2 D 4007 R6 2K2 +5V L2 220V RL1 5V R1 330R D1 D1 D4007 R5 2K2 +5V L1 220V RL3 5V R3 330R D3 D3 D 4007 R7 2K2 +5V L3 220V RL4 5V R4 330R D4 D4 A1015 R8 2K2 +5V L4 220V V I 1 V O 3 GND 2 U2 Remod +5 V Vin 220 V Q1 A1015 Q2 A1015 Q3 A1015 Q4 A1015 3.2. Nguyên lý hoạt động

Cấp nguồn DC 5V cho mạch, mắt hồng ngoại chân Out được nối với P3.3 của Vi xử lý. Tín hiệu tới chân P3.3 được lập trình giải mã và đưa tín hiệu điều khiển ra cổng P2. Trong mạch sử dụng 8 chân P2, từ P2.0 đến P2.6 để điều khiển 7 thiết bị điện 220V tắt mở theo ý muốn nhờ RELAY 5V và P2.7 dùng để tắt bật led 7 đoạn. Các chân từ P2.0 đến P2.6 nối với cực Base tranzitor A1015, cực Emittor nối với một đầu cuộn dây RELAY (đầu kia của cuộn dây nối với Vcc), cực Collector nối với mass. Khi P2 ở mức cao (+5V) tranzitor không dẫn, Relay ngắt mạch, khi P2 ở mức thấp (0V) tranzitor dẫn làm đóng Relay cho dòng 220V đi qua các thiết bị.

3.4. Mã chương Trình

$MOD51 ORG 00H

MOV P2,#01111111B ; khi cấp nguồn tắt tất cả các thiết bị

LCALL LONG_DELAY ; cho tín hiệu đầu tiên nhận được không bị sai ;--- MAIN: SETB P3.3 MOV A,#01000000B RP1: JB P3.3,RP1 RP2: JNB P3.3,RP2 RP3: JB P3.3,RP3 LCALL DELAY MOV C,P3.3 JC BIT0 SETB C RRC A JC ENG_SINGNAL SJMP RP2 ;--- BIT0: CLR C RRC A JC ENG_SINGNAL SJMP RP3

;--- ENG_SINGNAL: LCALL LONG_DELAY RR A MOV P1,A ;--- PHIM1: CJNE A,#00000000B,PHIM2 CPL P2.0 SJMP MAIN ;--- PHIM2: CJNE A,#1,PHIM3 CPL P2.1 SJMP MAIN ;--- PHIM3: CJNE A,#2,PHIM4 CPL P2.2 SJMP MAIN ;--- PHIM4: CJNE A,#3,PHIM5 CPL P2.3 SJMP MAIN ;--- PHIM5:

CJNE A,#4,PHIM6 CPL P2.4 SJMP MAIN ;---

Một phần của tài liệu ĐỒ ÁN VI XỬ LÝ : MẠCH ĐIỀU KHIỂN TỪ XA DÙNG REMOTE (Trang 26 - 44)

Tải bản đầy đủ (DOCX)

(44 trang)
w