intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

CÁC CHIP BỔ TRỢ

Chia sẻ: Nguyễn Thành Đô | Ngày: | Loại File: DOC | Số trang:13

98
lượt xem
24
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

tài liệu về điện tử.các bạn vào tham khảo nhé.

Chủ đề:
Lưu

Nội dung Text: CÁC CHIP BỔ TRỢ

  1. Chương VII : CÁC CHIP BỔ TRỢ §1. chip PPI 8255 ( programmable periphenal interface ) ( giao diện ngoại vi lập trình được ) PPI-8225 group A I/O Port A Control PA7-PA0 (8) D0-D7 data Port C bus I/O upper buffer PC7-PC4 (4) Port C RD I/O lower read/write WR PC3-PC0 (4) control A1 logic A0 Group RESET I/O Port B B PB7-PB0 (8) Control CS 8bit Internal bus Lựa chọn các cổng được chọn bởi A0, A1 như sau : Địa chỉ Cổng A1 A0 $cơ sở $300 0 0 A $cơ sở + 1 $301 0 1 B $cơ sở + 2 $302 1 0 C Kiểm soát $cơ sở + 3 $303 1 1 thanh ghi điều khiển 8255 có mạch đệm số liệu 2 chiều : D0 -D7 ; các tín hiệu điều khiển : ghi , đọc, reset ; CS ; -> điều khiển bằng phần mềm Thanh ghi điều khiển của 8255 : mức 1 : cổng sẽ làm lối vào mức 0 : cổng sẽ làm lối ra
  2. D7 D6 D5 D4 D3 D2 D1 D0 PORT C LOWER PORT B MODE SELECT OF GROUP B PORT C UPPER PORT A MODE SELECT OF GROUP A FLAG D0 : Cổng C (nửa thấp ) - 0: ra ; 1 : vào D1 : Cổng B - 0 : ra 1 : vào D2 : chọn chế độ 1: mode 1 0: mode 0 (mode của nhóm B) D3 : cổng C (nửa cao) 1: vào 0: ra D4 : Cổng A : 1 vào 0 ra D5 , D6 : Chọn chế độ 0 0 : mode 0 --> mode của nhóm A 0 1 : mode 1 1 1 : mode 2 1 0 : mode 2 D7: Xác lập cổng 1: xác lập cổng port[A] := data out 0: xóa các bit data in := port[B] Có 3 mode hoạt động: + mode 0: vào ra thông thường, số liệu từ CPU ra sẽ được chốt , tức là số liệu từ CPU ra sẽ được giữ lại trong 8255 cho đến khi nó chuyển mode số liệu vào không chốt (thay đổi theo giá trị tức thời của I/O ) + mode 1 : dữ liệu chỉ được giữ lại ở 8255 một khoảng thời gian ngắn (cả vào và ra ); sau đó phải được Strobe (chốt )vào 1 chốt ngoài nếu cần lưu lại . Cổng A, B : thường dùng để trao đổi số liệu Cổng C thường dùng để điều khiển cho cổng A và B .
  3. + Mode 2 họat động 2 chiều (vào ra) chỉ được dùng cho cổng A. Còn cổng B mode 0 (vào) ; mode 1 (ra ). Cổng C làm tín hiệu đi ều khi ển cho A và B Ví dụ 1 0 0 1 0 0 0 0 picture D7: mức 1 : chỉ ra rằng thanh ghi điều khiển đang được sử dụng ( được phép ghi lại ) D2 ,D5, D6, mức 0 : cho biết tất cả các cổng được sử dụng mode 0 D4 : mức 1 cổng A là cổng vào D3D1 D0 mức 0 cổng B và C (cao và thấp ) đựơc dùng làm cổng ra -> biểu diễn trong hệ nhị phân (hexa) 90(h) Câu lệnh : port [$303]:=90h ; Sơ đồ chân của PPI 8255 : 40 chân 1 40 chức năng chân 34 – 27 D0 -D7: databus 4–1 PA0 – PA3 port A 40 -37 PA4 – PA7 port A 18 – 25 PB0 – PB7 port B 14 – 27 PC0 -PC3 port C lower 20 21 13 – 10 PC4 – PC7 port C upper 35 reset ser all port to input 6 CS Chip select 5 RD Read input 36 WR Write input 9,8 A0, A1 Port address select 26 Vcc + 5volt power in 7 GND 0 volt power in 2. Giao diện vào ra 24 bit trên slot PC sử dụng 8255 Đặc điểm : ghép nối 8255 vào slot PC rất đơn gi ản, không c ần các khối logic phụ ; các tín hiệu được nối trực tiếp từ I/O -> 8255 -> slot sơ đồ như hình bên
  4. 74HC425 8255 D0 2 18 A1 B1 D0 D1 3 17 A2 B2 D1 D2 4 16 PORT A A3 B3 D2 D3 5 15 A4 B4 D3 D4 6 14 A5 B5 D4 D5 7 13 A6 B6 D5 D6 8 12 A7 B7 D6 D7 9 11 A8 B8 D7 PORT B 19 DIR G A0 A0 A1 A1 FOR RD FOW PORT C WR RESET RESET CS 74HC688 AEN 1 P=R G 19 A2 2 3 P0 Q0 A3 4 5 P1 Q1 A4 6 7 P2 Q2 A5 8 9 P3 Q3 A6 11 12 P4 Q4 A7 13 14 P5 Q5 A8 15 16 P6 Q6 A9 17 18 P7 Q7 10K + 3. Ví dụ đoạn chương trình nguồn Assembly để sử dụng 8255 DATA SEGMENT ORG 100H CTRLR EQU 0FFFFH ; Control register address INIT EQU 80H ; Control word PA EQU 0FFF8H ; Port A Address DATA 1 EQU AAH ; 1/ pattern DATA END 3 CODE SEGMENT ASSUME CS :CODE, DE : DATA MOV AL,INIT ; LOAD CONTROL WORD MOV DX,CTRLR ; LOAD CONTROL REGISTER ADDRESS OUT DX,AL ; OUTPUT CONTROL WORD
  5. MOV AL,DATA 1 ; LOAD 1/0 PATTERN MOV DX,PA ; LOAD PORT A ADDRESS OUT DX,AL ; OUTPUT DATA CODE END S END giải thích : data segment : đoạn số liệu xác định các giá trị sẽ được dùng để khởi phát và điều khiển mạch 8255 A 0FFFH là địa chỉ bản đồ của thanh ghi điều khiển 0FFF8H là địa chỉ cổng A. 80H là dùng để khởi đầu cả các cổng với vai trò là cổng ra và họat động ở mode 0 (80H bằng 10000000) dữ liệu được đưa ra là trị số AAH (10101010) Đoạn mã bắt đầu bằng động tác chuyển trị số khởi đầu 80H vào thanh ghi DX; lệnh OUT đưa trị số khởi đầu vào DX là địa chỉ của thanh ghi điều khiển 8255; sau đó chuyển số liệu vào AL; đ ịa chỉ cổng A vào DX -> các bit số liệu gửi cho cổng A; 8255 được khởi phát vào cổng A là cổng ra công tác ở mode 0. §2. Chip PIT 8253 / 54 (đếm lập trình được) (programable interval timer / counter) PIT8254 Vi mạch 8253 có ứng dụng rất nhiều như là bộ đếm xung, đếm tần số phát tín hiệu đồng hồ lập trình được, điều khiển ánh sáng, điều khiển môtơ ..... cấu tạo : có 3 bộ đếm lùi 16bit độc lập với nhau, có khả năng lập trình, nó có thể hoạt động trong chế độ đếm nhị phân hoặc đ ến BCD Sơ đồ khối và sơ đồ chân
  6. DATA D0 - D7 CLK 0 BUS I COUNTER GATE 0 BUFFER N 0 DATA OUT 0 T E R N RD READ/ CLK 1 COUNTER A WR WRITE GATE 1 1 A0 LOGIC OUT 1 L A1 CS B CONTROL COUNTER U CLK 2 WORD 2 GATE 2 S REGISTER OUT 2 ký hiệu chức năng chân 24 Vcc +5Volt 12 Gnd tín hiệu 2 chiều 3 trạng thái 8-1 D0 D7 đọc từ CPU vào 8253 22 RD 1 24 đưa số liệu từ 8253 -> CPU 23 WR chọn chế độ 19 – 20 A0 , A1 21 CS chip select 9, 15,18 CLK0, CLK1, CLK2 : tín hiệu đồng hồ lối vào 10,13,17 OUT0, OUT1, OUT2 : các tín hiệu ra riêng biệt của 3 bộ đếm 11,14,16 gate 0, gate 1, gate 2 : cổng lối vào để mở các 12 13 mạch đếm chức năng A1 A0 chọn bộ đếm 0 0 0 chọn bộ đếm 1 0 1 chọn bộ đếm 2 1 0 chọn thanh ghi từ điều khiển 1 1 Bảng chức năng theo các cửa vào điều khiển như sau :
  7. A1 A0 RD WR CS đọc ra từ bộ đếm 0 0 0 0 1 0 đọc ra từ bộ đếm 1 0 1 0 1 0 đọc ra từ bộ đếm 2 1 0 0 1 0 nạp vào bộ đếm 0 bằng từ xuất phát 0 0 1 0 0 nạp vào bộ đếm 1 bằng từ xuất phát 0 1 1 0 0 nạp vào bộ đếm 2 bằng từ xuất phát 1 0 1 0 0 ghi vào từ điều khiển 1 1 1 0 0 bus data ở trạng thái ngắt (điện trở x x x x 1 cao ) bus data ở trạng thái điện trở cao x x 1 1 0 Từ điều khiển D7 D6 D5 D4 D3 D2 D1 D0 chọn bộ đếm đọc / viết loại Mode mã 0 : đếm nhị phân D0 1 : đếm BCD D7 D6 D5 D4 chọn count 0 Khóa - chốt bộ đếm 0 0 0 0 chọn count 1 chỉ đọc , ghi byte thấp 0 1 0 1 chọn count 2 chỉ đọc, ghi byte cao 1 0 1 0 lệnh đọc lại đọc ghi 16bit 1 1 1 1 D3 D2 D1 Chức năng đếm (mode counter) D3 D2 D1 Ngừng ở số đếm cuối cùng; lối ra ở mức 0 0 0 mode 0 cao khi kết thúc đếm đếm từng bộ đếm theo chương trình 0 0 1 mode 1 bộ chia 1/n (giá trị n đặt trước và có thể x 1 0 mode 2 thay đổi được bộ phát tín hiệu vuông góc x 1 1 mode 3 Strobe triger được bằng phần mềm 1 0 0 mode 4 Strobe triger bằng phần cứng 1 0 1 mode 5
  8. Ví dụ : port[$307]:= $B6 có nghĩa là chọn count 2 đọc viết cả byte thấp byte cao, mode 3, đếm nhị phân . ( B6=1011 0110 ) 2. Một số ứng dụng của 8253 a. Bộ đếm xung 16 bit BỘ Đ Ế M 0 MODE 2 CLOCK 0 OUT 0 GATE 0 Có thể chọn giá trị xuất phát là số xung lớn nhất (16bit -> 65535) số xung = gía trị xuất phát – giá trị hiện có ở bộ đếm (start x) - (stand x) Lập trình để đếm 16 bit được tiến hành theo các bước: Trước hết từ điều khiển phải được thiết lập ; giá trị xuất phát được ghi vào bộ đếm -> số liệu hiện có của bộ đếm sau đó tự đọc ra theo 16 bit b. Bộ đếm xung 32 bit MODE 2 MODE 2 CLOCK out 0 CLOCK 1 & out 1 GATE 0 GATE 1 start có thể đếm đến 4.29 tỷ xung c. Đồng hồ rơle lập trình được fREF MODE 3 MODE 2 MODE 2 CLOCK out 0 CLOCK 1 out1 CLOCK 2 & out 1 T 4MHz GATE 0 & GATE 1 GATE 2 100PF & & 10K start
  9. start0.start1.(start2 – 1) T= -------------------------------- fref Start x : ghi giá trị xuất phát của bộ đếm x d. bộ phát xung lập trình được với 3 bộ đếm trong 8253 có thể tạo ra xung rất chính xác có độ rộng cỡ µs đến vài giờ . sơ đồ như hình vẽ COUNTER 0 COUNTER 0 COUNTER 0 MODE 3 MODE 3 MODE 1 T CLOCK0 out CLOCK out CLOCK out fREF GATE GATE GATE start bộ đếm 0 và bộ đếm 1 hoạt động như phát xung vuông góc với h ệ số chia được đặt trước còn bộ đếm 2 như là mạch phát xung 1 trạng thái cân bằng (monoflop) lập trình được Nguyên tắc hoạt động : sau khi khởi động start đến bộ đếm 2, tạo ở lối ra 2 tín hiệu âm và kéo dài n chu kỳ giữ nhịp. (n là giá trị xuất phát của bộ đếm 2) Độ rộng xung start0.start1.start2 T = ------------------------- fref thí dụ : fref = 4MHz start 0 start 1 start 2 T 2 2 10 10 µs 4 100 10000 1s 4 600 60000 1 phút
  10. ( Tham khảo thêm ) §3. Chip ghép nối 8243 Đặc điểm - Tăng nhiều lần các đường dẫn vào / ra - Bus số liệu và bus điều khiển cùng chung chân ra và độ rộng chỉ là 4 bit và cộng thêm 1 đường điều khiển đặc biêt -> 8243 tổng cộng có 5 lối vào điều khiển - Chỉ với 2 con chip 8243 có thể trao đổi 32 bit vào ra Sơ đồ chân - P20 đến P23 (cổng 2: 4 bit ); bus điều khiển và bus số liệu 2 chiều tất cả các số liệu xuất hiện khi truy nhập lên 4 cổng vào ra (port 4, 5, 6 ,7 đều được P50 1 24 +5V P40 2 23 P51 dẫn trên các đường này ) P41 3 22 P52 P42 4 21 P53 P43 5 20 P60 lệnh P23 P22 P21 P20 port /CS 6 19 P61 đọ c 0 0 0 0 port 4 PROG 7 18 P62 P23 8 17 P63 0 1 ghi 0 1 port 5 P22 9 16 P73 1 0 ORLD 1 0 port 6 P21 10 15 P72 1 1 ANLD 1 1 port 7 P20 11 14 P71 GND 12 13 P70 ( còn nữa ) Đoạn chương trình viết cho 8255A ̉ ́ 1/ PORT[$303]:=$80;{Công B,lôi ra,mode 0} PORT[$301]:=$F4;{xxxx|x110}1Mhz nôi với CLR0, out nôi với CLR2 ́ ́
  11. 2/ C0, mode 3, 2byte nhị phân PORT[$307]:=$36;{ 0011|X110 } PORT[$304]:=lo(1000); PORT[$304]:=hi(1000); 3/ C2, mode 2, 2byt, nhị phân PORT[$307]:=$B4;{1011|X100 } PORT[$306]:=lo(1000); PORT[$306]:=hi(1000); REPEAT GIAY:=0;PHUT:=0;GIO:=0; ̉ 4/ Kiêm tra xung 1Hz ́ * xuông 0: repeat begin ̣ ̣ ̣ - lênh đoc lai: port[$307]:=$E8; {1110|1000} ̣ ̣ ̣ ́ (đoc lai trang thai) until – (port[$306]and$80 )=0 thì không tiêp lên 1 ́ ̣ * lênh 1: repeat port[$307]:=$E8; ̣ until (port[$306]and$80 )0 (hoăc = $80) thì giay:=inc(giay); if giay=60 then begin phut:=phut+1; giay:=0; if phut=60 then begin gio:=gio+1; phut:=0; if gio=24 then begin gio:=0; end; end; end; writeln(gio,phut,giay); until keypressed; end. ̣ N-(nôi dung Cy) = N-(N-n)= n ́ ̉ Khoa port[$303]:=$80; {công B, mode 0, ra} Port[$301]:=$FF; {C1 nôi CLK1 với bên ngoai} ́ ̀ ̣ ́ Port[$307]:=$70; {C1 mode 0} đoc viêt 2 byte gan giá trị N cho C1 ́ C1 Port[$305]:=$FF; là FFFF Port[$305]:=$FF; Repeat ́ ́ ̣ Port[$307]:=$D4;{lênh chôt chon c1} ̣ ̣ Đoc lai
  12. ̣ ̣ ̣ ́ ̉ Port[$307]:=$D4{Lênh đoc lai,chon c1,chôt điêm} Đoc số liêu lobyte:=Port[ $305]; ̣ ̣ Hibyte:=Port[$305]; Writeln(‘số đêm= ’;$FFFF-(lobyte+hibyte*$100):5 ), ́ Until keypressed. ̀ Vao-Ra Use crt; Const a=$300; b=$301: c=$302; crippi=$303; var i:integer; begin clrscr; port[a]:=7: port[c]:=224; repeat port[a]:=port[a] shl 1;delay(400);write(‘port[a]=’,port[a];until port[a]=224;) repeat until port[a]=224;{kiêm tra khi nao port[ a]=224 mới bat ̉ ̀ ̀ đâu} repeat port[c]:=port[c] shr 1 delay(400); writeln(port[c]); until port[c]=3; port[a]:=0; port[c]:=0; until key pressed; end. ĐÊM SỰ KIÊN ́ ̣ Uses crt; Const Crppi=$303; b=$301; crpit=$307; c0=$304; c1=$305; c2=$306;
  13. var x1,x2,x3,x,sx:word; {-----------------------------} function loade 1:Boolean;{chot tt bo dem 1} begin port[$307]:=$e4; loade1:=port[c1] and $40=0); end; Begin Clrscr; Port[$307]=$70;{bo dem 1, doc/viet 2 byte,dem nhi phan} Write(‘nhap so x= ’);readln(x); Port[c1]:=lo(x); Port[c1]:=hi(x); Repeat If not loade1 then Begin Gotoxy(1,10);writeln(‘’); End Else port[crpit]:=$64; X1:=port [c];x2:=port[c1]; X3:=x1+x2*256; Sx:=x-x3; Gotoxy(1,10);writeln(sx:8);delay(10); Until sx=x; END.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2