Khôi xử lý trung tađm CPU

Một phần của tài liệu Thiết kế và thi công mô hình điều khiển thiết bị qua mạng điện thoại (Trang 89)

5. Giáo vieđn hướng dăn : Th.S TÁ COĐNG ĐỨC

4.2.11. Khôi xử lý trung tađm CPU

a. Sơ đoă nguyeđn lý

LE0 RING_DETECT OE3\ COL1 RS0 AD4 KEY _INT\ RD\ WR\ C300 10u C RN301 10k 1 2 3 4 5 LINE_CONTROL PLAY E\ ROW2 AD2 COL3 MT_IQR\ AD3 ROW0 RST ROW3 SCL AD7 AD0 C RN300 10k 1 2 3 4 5 6 7 8 9 AD5 RST 1 2 4 3 12MHz IR_EOM\ N301 AT 89C 5 1 9 18 19 20 29 30 31 40 1 2 3 4 5 6 7 8 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 39 38 37 36 35 34 33 32 RST XTAL2 XTAL1 GN D PSEN ALE/PROG EA/VPP VC C P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INTO P3.3/INT1 P3.4/TO P3.5/T1 P3.6/WR P3.7/RD P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 COL0 VCC AD1 LE2 VCC VCC AD6 OE0-2\ ROW1 VCC R302 10k SDA OE1\ COL2 Hình 4 - 14 : Mách xử lý trung tađm. b. Nguyeđn lý hốt đoơng cụa mách

Khôi kêt nôi xử lý trung tađm trong heơ thông này sử dúng IC AT89C51, khôi xử lý trung tađm có nhieơm vú là nhaơn biêt tín hieơu thu được từ các khôi đưa veă. Sau đó xử lý các tín hieơu đó và xuât ra các tín hieơu đieău khieơn thích hợp đeơ đieău khieơn heơ thông theo chương trình laơp sẵn.

Khi mách hốt đoơng, boơ xử lý kieơm soát heơ thông baỉng cách quét từ địa chư đaău đên địa chư cuôi trong vùng nhớ 64Kbyte (vì AT89C51 có 16 đường địa chư A0÷ A15). Chức naíng kêt nôi cụa heơ thông xử lý trung tađm như sau:

Port 0 :

P0.0 ÷ P0.3 : Đieău khieơn dữ lieơu dáng nhị phađn 4 bit cụa MT8888. P0.0 ÷ P0.7 : Kêt nôi đieău khieơn thiêt bị.

Port 1 :

P1.0 ÷ P1.3 : Đieău khieơn coơt cụa boơ đieău khieơn phím. P1.4 ÷ P1.7 : Đieău khieơn hàng cụa boơ đieău khieơn phím.

Port 2 :

P2.0 : Kêt nôi với chađn PLAYE\ cụa ISD1420. P2.1 : Kêt nôi với chađn OEM\ cụa ISD1420. P2.2 : Kêt nôi với chađn RSO cụa MT8888.

P2.3 ÷ P2.7 : Kêt nôi với các chađn đeơ đieău khieơn IC chôt 74HC573. Port 3 :

P3.0 : Đieău khieơn boơ đóng ngaĩt Relay.

P3.1 : Đieău khieơn chađn SCL cụa boơ nhớ ngoài. P3.2 : Nhaơn tín hieơu ngaĩt phím IQR\ KEY.

P3.3 : Nhaơn tín hieơu từ chađn IRQ\CP cụa IC MT8888. P3.4 : Nhaơn tín hieơu chuođng.

P3.5 : Đieău khieơn chađn SDA cụa boơ nhớ ngoài và đieău khieơn IR maĩt nhaơn hoăng ngối.

P3.6 : Đieău khieơn chađn WR\ cụa MT8888. P3.7 : Đieău khieơn chađn RD\ cụa MT8888.

CHƯƠNG 5. THIÊT KÊ PHAĂN MEĂM.

5.1. Chương trình chính

Chương trình phúc vú cho vieơc đieău khieơn ở tráng thái On Hook và Off Hook. Ở tráng thái On Hook, ta có theơ đieău khieơn heơ thông thođng qua bàn phím hoaịc thođng qua remote; ở tráng thái Off hook, ta có theơ đieău khieơn heơ thông thođng qua đường line đieơn thối, từ bàn phím đieơn thối hoaịc thođng qua giao dieơn đieău khieơn tređn máy tính.

Các cờ tráng thái được khai báo và sử dúng trong chương trình:

- OnHook: cờ này cho biêt tráng thái kêt nôi hieơn tái cụa. OnHook=[1], heơ thông chưa kêt nôi ra đường line đieơn thối; OnHook=[0], heơ thông đã kêt nôi ra đường line đieơn thối.

- PWE (Password Entered) : cờ này cho biêt tráng thái hieơn tái người đieău khieơn đã nhaơp đúng maơt mã xađm nhaơp vào heơ thông hay chưa. PWE=[1] cho biêt raỉng maơt

Begin PWE=0 Nhaơn mã đieău khieơn từ Remote OnHook=0 N Y Ring=0 Đêm tín hieơu chuođng. IR=0 T=30s OnHook=0 HaveCmd=1 T=0 HaveCmd=0 Y N Y N F0=1 F0=1

Đieău khieơn OffHook.

OnHook=0. Xử lý mã đieău khieơn.

Đieău khieơn OnHook. OnHook=1. Y Y T=T-1 Y T.báo OffHook. Y Y N N N N N

mã đã được người đieău khieơn nhaơp đúng; PWE=[0] cho biêt raỉng người đieău khieơn chưa nhaơp đúng maơt mã xađm nhaơp heơ thông. (xem chương trình xử lý ngaĩt MT8888).

- F0 : cờ này cho biêt kêt quạ làm vieơc cụa moơt chương trình con được gĩi trước đó. Tuỳ chương trình nào được gĩi mà cờ F0 có ý nghĩa khác nhau.

- HaveCmd (Have Command): cờ này cho biêt heơ thông có nhaơn được mã đieău khieơn qua đường truyeăn đieơn thối hay khođng (đieău khieơn qua bàn phím đieơn thối hoaịc đieău khieơn qua giao dieơn tređn máy tính).

- Ring: Cờ này cho biêt raỉng có nhaơn được tín hieơu chuođng hay khođng.

- IR: Cờ này cho biêt raỉng có nhaơn được tín hieơu từ maĩt thu hoăng ngối hay

khođng.

5.2. Chương trình khởi táo các thođng sô ban đaău

Chương trình này được gĩi moêi khi heơ thông baĩt đaău khởi đoơng đeơ khởi táo các thođng sô caăn thiêt cho heơ thông, cũng như các thođng sô lựa chĩn chê đoơ làm vieơc cho các IC lieđn quan.

Begin

End -Đieău khieơn On Hook -OnHook=1

-Khởi táo các đường đieău khieơn IC chôt. Khởi táo MT8888

Đĩc PW từ AT24C08 -Cho phép ngaĩt phím (INT0). -Cho phép ngaĩt MT8888 (INT1). -Cho phép ngaĩt toàn cúc.

5.3. Chương trình phúc vú ngaĩt phím

Chương trình này được gĩi thực hieơn moêi khi xãy ra ngaĩt từ bàn phím. Code là các mã nhaơn được sau khi gĩi chương trình con Nhaơn mã đieău khieơn từ bàn phím.

Mã đoơi PW, mã OnHook là các haỉng được sử dúng đeơ so sánh với mã nhaơn được

đeơ thực hieơn các chức naíng tương ứng.

Với chương trình phúc vú ngaĩt này, khi heơ thông đang ở tráng thái OffHook, ngõ vào bàn phím có theơ đieău khieơn cho heơ thông vào tráng thái OnHook, nhưng khođng theơ đieău khieơn tráng thái cụa thiêt bị được do cờ OnHook được kieơm tra trước khi gĩi chương trình con xử lý mã đieău khieơn.

Begin

Y N Khođng cho phép ngaĩt toàn cúc.

F0=1

Nhaơn mã đieău khieơn từ bàn phím.

Code=mã đoơi PW Đoơi maơt mã.

Code=mã OnHook Đieău khieơn OnHook. OnHook=1.

Xử lý mã đieău khieơn. Y Y N N End

Cho phép ngaĩt toàn cúc. OnHook=0

5.4. Chương trình phúc vú ngaĩt từ MT8888

Chương trình này được gĩi khi xãy ra ngaĩt từ MT8888. Chương trình nhieău cođng vieơc (nhaơn maơt khaơu, nhaơn mã đieău khieơn từ bàn phím đieơn thối) baỉng cách kieơm soát cờ PWE.

Begin

N Khođng cho phép ngaĩt toàn cúc.

F0=1

Nhaơn mã đieău khieơn từ đieơn thối. Code=mã OnHook Xử lý mã đieău khieơn. Y Y N End HaveCmd=1

Cho phép ngaĩt toàn cúc.

PWE=1 Nhaơn 6 mã DTMF

F0=1 PWE=1

Đieău khieơn OnHook. OnHook=1.

N Y

Y

5.5. Chương trình kieơm tra tráng thái bàn phím Input (Thođng tin đaău vào) Input (Thođng tin đaău vào)

Output (Thođng tin đaău ra):

- Nêu có phím đang nhân, cờ C=[1] và mã phím chứa trong thanh ghi A. - Nêu khođng có phím nào đang nhân, cờ C=[0].

Begin Xác định mã coơt Count =4 Có Phím nhân Taíng coơt. Count = count +1

Lưu giá trị phím vào A. Set cờ C. Xác định hàng Xác định giá trị phím Kieơm tra hàng Y Count =0 End N N Y

5.6. Chương trình đêm tín hieơu chuođng Input Input

Output :

- Cờ F0=[1] nêu nhaơn được 5 chu kỳ tín hieơu chuođng.

- Cờ F0=[0] nêu khođng nhaơn chu kỳ tín hieơu chuođng nào sau 8 giađy chờ.

N Count = 5 F0=0 Time = 8s Ring = 0 Ring = 1 Count = Count + 1 Count =0 F0 = 1 Begin End

Time =Time - 1 Time = 0

Y Y Y N N N Y

5.7. Lưu đoă chương trình thay đoơi Password

End. T.báo nhaơp PW hieơn tái. Nhaơn 6 phím từ bàn phím.

Thođng báo nhaơp PW mới. F0=1

Nhaơn 6 phím từ bàn phím. F0=1

Thođng báo nhaơp lái PW mới. Nhaơn 6 phím từ bàn phím. Kieơm tra PW hieơn taị.

F0=1

F0=1 Kieơm tra PW mới. F0=1

Ghi PW mới vào AT24C08. Thođng báo PW đã thay đoơi. Sao chép tương ứng các ođ nhớ Temp0- Temp5 sang các ođ nhớ Temp6-Temp11

Sao chép tương ứng các ođ nhớ Temp0- Temp5 sang các ođ nhớ PW0-PW5.

Begin.

T.báo sai PW hieơn tái.

T.báo sai PW mới. Y Y Y Y Y N N N N N

Input :

- Maơt mã hieơn tái chứa trong các ođ nhớ PW0 đên PW5.

Output :

- Nêu nhaơp đúng maơt mã hieơn tái và maơt mã mới, maơt mã mới được châp nhaơn và caơp nhaơt vào boơ nhớ EEPROM AT24C08.

- Nêu nhaơp khođng đúng maơt mã hieơn tái hoaịc nhaơp maơt mã mới khođng hợp leơ thì maơt mã mới khođng được châp nhaơn, maơt mã khođng thay đoơi.

5.8. So sánh maơt mã hieơn tái Input : Input :

- Maơt mã hieơn tái trong các ođ nhớ PW0 đên PW5.

- Maơt mã muôn so sánh chứa trong các ođ nhớ Temp0 đên Temp5.

Output :

- Cờ F0=[1] nêu 2 maơt mã giông nhau.

- Cờ F0=[0] nêu 2 maơt mã khođng giông nhau. Begin End. F0=0 PW0=Temp0 PW1=Temp1 PW2=Temp2 PW3=Temp3 PW4=Temp4 PW5=Temp5 F0=1 Y Y Y Y Y Y N N N N N N

5.9. So sánh maơt mã mới Input : Input :

- Maơt mã thứ nhât chứa trong các ođ nhớ Temp0 đên Temp5. - Maơt mã thứ hai chứa trong các ođ nhớ Temp6 đên Temp11.

Output :

- Cờ F0=[1] nêu 2 maơt mã giông nhau.

- Cờ F0=[0] nêu 2 maơt mã khođng giông nhau.

5.10. Nhaơp 6 phím từ bàn phím Input Input

Output:

- Cờ F0=[1]: hoàn tât vieơc nhaơn 6 phím, mã 6 phím nhaơn được lưu trữ trong các ođ nhớ Temp0 đên Temp5.

-Cờ F0=[0]:khođng hoàn tât,do nhân phím ‘*’hoaịc quá thời gian quy định (5s). Begin End. F0=0. Temp6=Temp0 Temp7=Temp1 Temp8=Temp2 Temp9=Temp3 Temp10=Temp4 Temp11=Temp5 F0=1 Y Y Y Y Y Y N N N N N N

Begin

End F0=0

Count=6

Ram= Địa chư đaău cụa vùng Ram lưu trữ mã phím.

Time=5s Kieơm tra phím nhân.

Cờ C=1 T=A (lưu tám). Kieơm tra phím nhân.

Cờ C=0

T=mã phím ‘*’ Lưu T vào Ram.

Taíng vị trí lưu trữ trong Ram. Count=Count-1.

Count=0 Giại mã 6 phím nhaơn được. Lưu trữ mã sau giại mã vào các ođ nhớ từ Temp0 -->Temp5.

F0=1 Time=Time -1 Time=0 Y Y Y Y N N N Y N N

5.11. Nhaơp mã đieău khieơn từ bàn phím

Begin

End F0=0

Count=3

Ram= Địa chư đaău cụa vùng Ram lưu trữ mã phím.

Time=5s Kieơm tra phím nhân.

Cờ C=1 T=A (lưu tám). Kieơm tra phím nhân.

Cờ C=0

T= mã phím Lưu T vào Ram.

Taíng vị trí lưu trữ trong Ram. Count=Count-1.

Count=0 Giại mã 3 phím nhaơn được. Lưu trữ 3 mã sau giại mã vào 2 ođ nhớ: IndexEQ và Event.

F0=1 Time=Time-1 Time=0 Y Y Y Y N N N Y N N

Input Output:

- Cờ F0=[1] nêu nhaơn thành cođng mã đieău khieơn, 3 sô cụa mã đieău khieơn lưu vào 2 ođ nhớ IndexEQ và Event. IndexEQ chứa 2 sô chư chư sô thiêt bị, Event chứa mã cụa chư thị (mã mở thiêt bị, taĩt thiêt bị, xem tráng thái).

- Cờ F0=[0] nêu vieơc nhaơn mã khođng thành cođng, do nhân phím ‘*’ hoaịc quá thời gian quy định.

5.12. Khởi táo MT8888

Input Output:

- Các thođng sô thích hợp được ghi vào các thanh ghi đieău khieơn cụa MT8888 đeơ thiêt đaịt chê đoơ hốt đoơng cho MT8888.

5.13. Nhaơp mã đieău khieơn từ đieơn thối Input Input

Output:

- Cờ F0=[1] nêu nhaơn thành cođng mã đieău khieơn, 3 sô cụa mã đieău khieơn lưu vào 2 ođ nhớ IndexEQ và Event. IndexEQ chứa 2 sô chư chư sô thiêt bị, Event chứa mã cụa chư thị (mã mở thiêt bị, taĩt thiêt bị, xem tráng thái).

- Cờ F0=[0] nêu vieơc nhaơn mã khođng thành cođng, do nhân phím ‘*’ hoaịc quá thời gian quy định.

Begin

End

Đĩc thanh ghi tráng thái MT8888. Ghi giá trị 00h vào thanh ghi CRA Ghi giá trị 08h vào thanh ghi CRA Ghi giá trị 00h vào thanh ghi CRB Đĩc thanh ghi tráng thái MT8888. Ghi giá trị 0Dh vào thanh ghi CRA (Select CRB, IQR\, DTMF, Tone

O )

Ghi giá trị 00h vào thanh ghi CRB (Dual Tone, Burst Mode)

Begin

End F0=0

Count=3

Ram= Địa chư đaău cụa vùng Ram lưu trữ mã phím.

Time=5s Đĩc thanh ghi tráng thái cụa MT8888 vào A

Bít A.2=1

A=mã phím ‘*’ Lưu A vào Ram.

Taíng vị trí lưu trữ trong Ram. Count=Count -1

Count=0

Lưu trữ 3 mã nhaơn được vào 2 ođ nhớ: IndexEQ và Event.

F0=1 Time=Time-1 Time=0 Y Y Y N N N Y N

Đĩc thanh ghi dữ lieơu nhaơn cụa MT8888 vào A

5.14. Nhaơp 6 mã DTMF

Input Output:

-Cờ F0=[1]: hoàn tât vieơc nhaơn 6 phím, mã 6 phím nhaơn được lưu trữ trong các ođ nhớ Temp0 đên Temp5.

Begin

End F0=0

Count=6

Ram= Địa chư đaău cụa vùng Ram lưu trữ mã phím.

Time=5s Đĩc thanh ghi tráng thái cụa MT8888 vào A

Bít A.2=1

A=mã phím ‘*’ Lưu A vào Ram.

Taíng vị trí lưu trữ trong Ram. Count=Count -1

Count=0

Lưu trữ 6 mã nhaơn được vào 6 ođ nhớ: Temp0 -->Temp5

F0=1 Time=Time-1 Time=0 Y Y Y N N N Y N

Đĩc thanh ghi dữ lieơu nhaơn cụa MT8888 vào A

-Cờ F0=[0]:khođng hoàn tât, do nhân phím ‘*’hoaịc quá thời gian quy định (5s).

5.15. Ghi 1 byte dữ lieơu vào AT24C08

5.16. Ghi 6 sô cụa maơt mã vào AT24C08 Input : Input :

- 6 sô cụa maơt mã naỉm trong vùng Ram có địa chư được khai báo từ PW0 đên PW5.

Output

Begin

End

Táo đieău kieơn Start. Náp Slave Address vào A với

chư thị Write (R/W=0). Ghi Byte chứa trong A vào AT24C08.

C=0

C=0 Y

Náp Word Address vào A Ghi Byte chứa trong A vào AT24C08.

Náp Byte Data vào A Ghi Byte chứa trong A vào AT24C08.

C=0

Táo đieău kieơn Stop. Y

Y

N

N

Begin

End Táo đieău kieơn Start.

Count=6

Náp Slave Address vào A với chư thị Write (R/W=0). Ghi Byte chứa trong A vào AT24C08.

C=0

C=0 Y

Náp Word Address vào A Ghi Byte chứa trong A vào AT24C08.

Náp sô thứ nhât vào A Ghi Byte chứa trong A vào AT24C08.

C=0

Táo đieău kieơn Stop. Y Y N N N Count=Count-1 Count=0 Y N

5.17. Đĩc 6 sô cụa maơt mã từ AT24C08

Begin

End Táo đieău kieơn Start.

Count=6

Náp Slave Address vào A với chư thị Write (R/W=0).

Ghi Byte chứa trong A vào C=0

C=0 Y

Náp Word Address vào A Ghi Byte chứa trong A vào AT24C08.

Náp Slave Address vào A với chư thị Read (R/W=1).

Ghi Byte chứa trong A vào AT24C08. C=0

Táo đieău kieơn Stop. Y Y N N N Lưu trữ A vào vùng nhớ (PW0-PW5) Count=Count-1 Count=0 Y N

Táo đieău kieơn Acknowlege.

Táo đieău kieơn No Acknowlege. Đĩc 1 Byte từ AT24C08 vào A

Input Output :

- 6 sô maơt mã naỉm trong vùng Ram có địa chư được khai báo từ PW0 đên PW5.

5.18. Phát moơt cađu thođng báo

Input :

- Địa chư cụa ođ nhớ chứa địa chư cụa đốn thođng báo đaău tieđn chứa trong con trỏ DPTR.

Output

5.19. Nhaơn mã đieău khieơn từ Remote Input Input

Output :

Begin

End Đĩc địa chư cụa đốn thođng báo tái địa

chư chứa trong DPTR vào A

Ghi địa chư ra các đường địa chư cụa ISD Táo xung kích cho ISD phát đốn thođng báo.

A=0FFh

EOM=1

EOM=0

Taíng giá trị con trỏ DPTR

Y Y N N N Y

- Cờ F0=[1] nêu nhaơn thành cođng mã đieău khieơn, 3 sô cụa mã đieău khieơn lưu vào 2 ođ nhớ IndexEQ và Event. IndexEQ chứa 2 sô chư chư sô thiêt bị, Event chứa mã cụa chư thị (mã mở thiêt bị, taĩt thiêt bị, xem tráng thái).

- Cờ F0=[0] nêu vieơc nhaơn mã khođng thành cođng, do nhân phím ‘*’ hoaịc quá thời gian quy định.

Begin

End F0=0

Count=3

Ram= Địa chư đaău cụa vùng Ram lưu trữ mã phím. Time=5s IR=0 Nhaơn 1 mã từ Remote, lưu vào A A= mã phím ‘*’ Lưu A vào Ram.

Taíng vị trí lưu trữ trong Ram. Count=Count-1.

Count=0 Giại mã 3 phím nhaơn được. Lưu trữ 3 mã sau giại mã vào 2 ođ nhớ: IndexEQ và Event.

F0=1 Time=Time-1 Time=0 Y Y Y N N N Y N

5.20. Phát tín hieơu DTMF cụa moơt dãy sô

Input :

-Địa chư đaău tieđn cụa vùng Ram lưu trữ các sô caăn phát được chứa trong ođ nhớ R0

-Sô lượng sô muôn phát chứa trong R2.

Output

5.21. Xử lý mã đieău khieơn Input : Input :

- Chư sô thiêt bị chứa trong ođ nhớ IndexEQ, Chư thị chứa trong ođ nhớ Event : IndexEQ=01h :Thiêt bị sô 1.

IndexEQ=02h :Thiêt bị sô 2. . . . .

IndexEQ=09h :Thiêt bị sô 9. IndexEQ=10h :Thiêt bị sô 10.

Begin

End

Đĩc giá trị cụa ođ nhớ có địa chư chứa trong ođ nhớ R0 vào A.

Ghi dữ lieơu chứa trong A vào thanh ghi phát cụa MT8888.

Đĩc g.trị cụa thanh ghi tráng thái cụa MT8888 vào A. A.1=1 R2=0 R0=R0+1 R2=R2-1

Một phần của tài liệu Thiết kế và thi công mô hình điều khiển thiết bị qua mạng điện thoại (Trang 89)

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

(189 trang)