1 / 30

8253

8253. 8254. 8253. 8253 เป็น IC ผลิตโดยบริษัท INTEL เพื่อใช้ทำงานเป็นโปรแกรมทางด้านไทเมอร์ (Timer) และเคาว์เตอร์ (Counter) ร่วมกับซีพียู 8080,8085 ซึ่งเราสามารถประยุกต์ใช้เป็นฐานเวลาและงานนับสำหรับซีพียู Z-80 ได้ โครงสร้างภายในของ 8253 แสดงบล็อกไดอะแกรม ดังรูป. 8253. CLK0. D 0 -D 7.

meg
Télécharger la présentation

8253

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 8253 8254

  2. 8253 8253 เป็น IC ผลิตโดยบริษัท INTEL เพื่อใช้ทำงานเป็นโปรแกรมทางด้านไทเมอร์ (Timer) และเคาว์เตอร์ (Counter) ร่วมกับซีพียู 8080,8085 ซึ่งเราสามารถประยุกต์ใช้เป็นฐานเวลาและงานนับสำหรับซีพียู Z-80 ได้ โครงสร้างภายในของ 8253 แสดงบล็อกไดอะแกรม ดังรูป

  3. 8253 CLK0 D0-D7 บัสข้อมูล เคาน์เตอร์ #0 GATE0 OUT0 CLK1 RD GATE1 R/W ควบคุม เคาน์เตอร์ #1 WR OUT1 A1 CLK2 A0 รีจีสเตอร์ควบคุม เคาน์เตอร์ #2 GATE2 CS OUT2 แสดงบล็อกไดอะแกรมโครงสร้างภายในของ 8253 8254

  4. 8253 จากรูปจะพบว่าภายใน 8253 ประกอบด้วยเคาน์เตอร์อยู่ 3 ตัว คือ #0,#1 และ #2 ซึ่งแต่ละตัวทำงานอิสระต่อกัน โดยทุกตัวจะมีสัญญาน CLKและ GATE เป็นขาอินพุตและ OUT จะเป็นสัญญานขาเอาต์พุตตาม ลำดับ โดยมีรีจีสเตอร์ตัวหนึ่งที่ใช้ในการควบคุมการทำงาน คือ MWR (Mode Word Register) ใช้ในการโปรแกรมให้เคาน์เตอร์แต่ละตัวทำงาน ตามที่เราต้องการ การทำงานเพื่อเลือกอ่านและเขียนเคาน์เตอร์แต่ละตัว และ MWR แสดงรายละเอียดดังตารางนี้ 8254

  5. แสดงการทำงานของขาสัญญานที่ใช้ในการอ่านและเขียนเคาน์เตอร์แสดงการทำงานของขาสัญญานที่ใช้ในการอ่านและเขียนเคาน์เตอร์ แต่ละตัวและ MWR 8253 การเลือก RD WR A0 A1 การทำงาน เคาน์เตอร์ #0 1 0 0 0 เขียนข้อมูล#0 0 1 0 0 อ่านข้อมูล #0 เคาน์เตอร์ #1 1 0 0 1 เขียนข้อมูล#1 0 1 0 1 อ่านข้อมูล #1 เคาน์เตอร์ #2 1 0 1 0 เขียนข้อมูล#2 0 1 1 0 อ่านข้อมูล #2 MWR 1 0 1 1 เขียนข้อมูล MWR 0 1 1 1 อ่านข้อมูล MWR 8254

  6. 8253 การเชื่อมต่อ Z-80 กับ 8253 8253 ออกแบบมาเพื่อเชื่อมต่อเข้ากับซีพียูขนาด 8 บิต เมื่อนำมาประยุกต์ใช้เชื่อมต่อกับ Z-80 จึงไม่ยุ่งยากมากนัก หากพิจารณาจากตารางที่ผ่านมา พบว่าการเชื่อมต่อมีการถอดรหัสแอดเดรสเข้ามา CS และ A1 , A0 โดยให้ซีพียู Z-80 มอง 8253 เป็นแอดเดรสพอร์ต 4 แอดเดรสกรณีเมื่อมีการถอดรหัสแอดเดรสหมายเลขพอร์ตเป็น 30H-33H การเขียนและอ่านข้อมูลสัญญานที่เชื่อมต่อ Z-80 เข้ากับขา WR และ RD ของ 8253 ต้องใช้สัญญาน IOW และ IOR จาก Z-80 เราสามารถสร้างได้โดยนำ IORQ+WR และ IORQ+RD ตามลำดับ การเชื่อมต่อ Z-80 กับ 8253 รายละเอียดของวงจรดังรูป 8254

  7. 8253 8254

  8. 8253 ซอฟต์แวร์ควบคุม 8253 การเขียนโปรแกรมควบคุมการทำงาน 8253 เริ่มจากการกำหนด โหมดการทำงาน โดยโปรแกรมเขียนลงใน MWR ข้อมูลแต่ละบิตจะมีความ หมายดังรูป ข้อมูล 8 บิตที่เขียนใน MWR 8254

  9. 8253 D7 D6 SC1 SC0 เลือกเคาน์เตอร์ 00 - เคาน์เตอร์ #0 01 - เคาน์เตอร์ #1 10 - เคาน์เตอร์ #2 11 - ไม่ใช้งาน แสดงรายละเอียดของข้อมูลแต่ละบิตที่โปรแกรมเขียนใน MWR 8254

  10. 8253 D5 D4 RL1 RL0 เลือกเขียน / อ่านข้อมูล 00 - เคาน์เตอร์ค้างข้อมูลให้ซีพียูอ่าน 01 - อ่าน / เขียนข้อมูลไบต์ต่ำ 10 - อ่าน / เขียนข้อมูลไบต์สูง 11 - อ่าน / เขียนข้อมูลไบต์ต่ำและไบต์สูง แสดงรายละเอียดของข้อมูลแต่ละบิตที่โปรแกรมเขียนใน MWR 8254

  11. D3 D2 D1 8253 M2 M1 M0 เลือกโหมดการทำงาน (0-5) 000 - โหมด 0 001 - โหมด 1 010 - โหมด 2 011 - โหมด 3 100 - โหมด 4 101 - โหมด 5 แสดงรายละเอียดของข้อมูลแต่ละบิตที่โปรแกรมเขียนใน MWR 8254

  12. 8253 D0 BCD 1 - BCD code 0 - BIN code แสดงรายละเอียดของข้อมูลแต่ละบิตที่โปรแกรมเขียนใน MWR 8254

  13. 8253 การใช้งาน 8253 ในแต่ละโหมด มีรายละเอียดดังต่อไปนี้ 1.โหมด 0 (Interrupt From Counter) พิจารณาวงจรที่แสดงดังรูปข้างล่าง สมมติให้เคาน์เตอร์ทำการนับ CLK แบบ BCD เมื่อนับได้ 125 ก็ให้มีการส่งสัญญานขออินเทอร์รัพต์แก่ Z-80 โดยที่จะทำให้ Z-80 ทำงานที่ตำแหน่ง 38H (เมื่อทำงานขออินเทอร์ รัพต์ INT โหมด 1) 8254

  14. 8253 CLK # 8253 GATE # ลอจิก “1” OUT INT ลอจิก 1 ของ Z-80 แสดงวงจรนับ BCD จำนวน 125 ลูก จึงทำการส่งสัญญานขออินเทอร์รัพต์ INT แก่ Z-80 8254

  15. 8253 การโปรแกรมเขียนข้อมูลไปที่ MWR มีความหมายดังนี้ 00 11 000 1 = 31H เคาน์เตอร์ # 0 โหมด 0 BCD ฉะนั้นเราสามารถทำการเขียนโปรแกรมได้ แสดงรายละเอียดดังรูปข้างล่าง และเมื่อเคาน์เตอร์นับครบ 125 ก็จะกระโดดไปที่แอดเดรส 38H (INT โหมด 0) แสดงรายละเอียดของโปรแกรม ตามลำดับ 8254

  16. 8253 LD A,31H ;รหัสควบคุม MWR OUT (33H),A ;เขียนข้อมูล LD A,25H ;ไบต์ต่ำ OUT (30H),A ;โหลดข้อมูลแก่เคาน์เตอร์ #0 LD A,01H ;ไบต์สูง OUT (30H),A ;โหลดข้อมูลแก่เคาน์เตอร์ #0 แสดงรายละเอียดโปรแกรมนับแบบ BCD ถึง 125 ลูก จึงมีการ ส่งสัญญาน INT แก่ Z-80 8254

  17. 8253 ORG 038H LD A,25H ;ไบต์ต่ำ OUT (30H),A ;โหลดข้อมูลแก่เคาน์เตอร์ #0 LD A,01H ;ไบต์สูง OUT (30H),A ;โหลดข้อมูลแก่เคาน์เตอร์ #0 แสดงรายละเอียดโปรแกรมรูทีน เมื่อเกิดการอินเทอร์รัพต์ INT โหมด 0 โปรแกรมกระโดดไปทำงานที่แอดเดรส 38H ซึ่งวงจรจะ เริ่มนับอีกครั้ง 8254

  18. 8253 2.โหมด 1 (Nonostable) โหมด 1 สามารถโปรแกรมให้เอาต์พุต 8253 เป็นสัญญานพัลส์ (Pulse) ที่สามารถปรับความกว้างได้ตามต้องการโดยค่าความกว้างของพัลส์ จะเป็นจำนวนเท่าของสัญญาน CLK ที่เข้ามาสมมติว่าสัญญาน CLK ที่อิน พุตเข้ามามีความถี่ 1 เมกกะเฮิรตซ์ ในกรณีที่เราต้องการความกว้างของพัลส์ เอาต์พุตเท่ากับ 75 ไมโครนาที สามารถกระทำได้โดยเขียนโปรแกรมควบคุม 8253 แสดงรายละเอียดดังนี้คือ 8254

  19. 8253 LD A,0111 0010 B ;รหัสควบคุม MWR OUT (33H),A ;เขียนข้อมูล LD A,75H ;ไบต์ต่ำ OUT (31H),A ;โหลดข้อมูลแก่เคาน์เตอร์ #1 LD A,00H ;ไบต์สูง OUT (31H),A ;โหลดข้อมูลแก่เคาน์เตอร์ #1 แสดงรายละเอียดโปรแกรมควบคุมการกำเนิดพัลส์ความกว้าง 75 ไมโครวินาที เมื่อสัญญานทริก (Trip) เข้าที่ขา GATE1 ก็จะให้สัญญานพัลส์ที่ขา OUT1 ความกว้างของพัลส์เท่ากับ 75 ไมโครวินาที ซึ่งเป็นแบบโมโน สเตเบิล (Monostable) 8254

  20. 8253 3.โหมด 2 (Generator Pluse Continus) ในโหมด 2นี้จะทำหน้าที่เป็นวงจรหารความถี่ ซึ่งเป็นไปในลักษณะที่ ต่อเนื่อง (Continue) สมมติว่าสัญญานนาฬิกาเข้าที่ขา CLK2 เท่ากับ 1 เมกกะเฮริตซ์ ต้องการให้สัญญานดังกล่าวผ่านการหารเหลือความถี่เท่ากับ 638 เฮริตซ์ เอาต์พุตออกทางขา OUT2 เมื่อพิจารณาความถี่ 638 เฮริตซ์ จะมีค่าเท่ากับ 1,567 มิลลิวินาที หรือเท่ากับ 1,567 ไมโครวินาทีตามลำดับ การเขียนโปรแกรมควบคุม 8253 เพื่อให้ทำงานดังกล่าว แสดงรายละเอียด ดังนี้คือ 8254

  21. 8253 LD A,1011 0101 B ;รหัสควบคุม MWR OUT (33H),A ;เขียนข้อมูล LD A,67H ;ไบต์ต่ำ OUT (32H),A ;โหลดข้อมูลแก่เคาน์เตอร์ #2 LD A,15H ;ไบต์สูง OUT (32H),A ;โหลดข้อมูลแก่เคาน์เตอร์ #2 แสดงรายละเอียดโปรแกรมควบคุมการกำเนิดพัลส์ความกว้าง 1,567 ไมโครวินาที 8254

  22. 8253 4.โหมด 3 (Generator Squar Wave) การทำงานคล้ายกับโหมด 2 แต่จะให้สัญญาณเอาท์พุต คาบเวลา แต่ละช่วงเท่ากัน ถ้าโปรแกรมค่าเป็นคี่ (odd) สัญญาณที่เป็นลอจิก 1 จะเท่า กับ (n + 1) และเป็นคู่ (even) สัญญาณลอจิก 0 เท่ากับ (n - 1)/2 การเขียน โปรแกรมก็คล้ายๆกับโหมด 2 สมมติว่าต้องการสร้างสัญญาณคลื่นสี่เหลี่ยม ออกที่ขา OUTO เท่ากับ 1 เมกะเฮิรตซ์ โดยสัญญาณเข้าที่ขา CLK0 มีค่า เท่ากับ 1 เมกะเฮิรตซ์ สามารถเขียนโปรแกรมแสดงดังนี้ 8254

  23. 8253 LD A,0011 0110 B :ควบคุม MWR (ฐานสอง) OUT (33H),A LD A,100D :โหลดข้อมูลไบต์ต่ำ (ฐานสอง) OUT (36H),A :สู่เคาน์เตอร์ # 0 LD A,10D :โหลดข้อมูลไบต์สูง (ฐานสิบ) OUT (36H),A :สู่เคาน์เตอร์ # 0 แสดงรายละเอียดโปรแกรมกำเนิดสัญญาณคลื่นสี่เหลี่ยมความถี่ เท่ากับ 1 กิโลเฮิรตซ์ จะพบว่าการโหลดข้อมูลไบต์ต่ำค่า 100D และไบต์สูงค่า 10D นั้น จะเป็นค่าที่ใช้ในการหารสัญญาณที่เข้ามาทางขา CLK0 เพื่อให้ได้ สัญญาณคลื่นสี่เเหลี่ยมออกมาทางขาOUTO มีค่าเท่ากับ 1 กิโลเฮิรตซ์ ตามที่ต้องการ 8254

  24. 8253 5.โหมด 4 (Strobe Trigger By Solfware) โหมด 4 สามารถตั้งเคาน์เตอร์ให้ได้ OUT ตามที่ต้องการใน ลักษณะที่เป็นสัญญาณสโตรบ (Strobe) คือ เมื่อมีการเขียนโปรแกรม เสร็จเรียบร้อย เคาน์เตอร์จะทำการนับค่าลดลงเรื่อยๆ จนมีค่าเป็น 0 ขา OUT จะมีลอจิกเป็น 0 1ลูก ตามสัญญาณCLK ที่อินพุตเข้ามาและ จะมีลอจิก 1 อีกครั้ง ซึ่งการทำงานโหมดนี้สามารถใช้ในลักษณะตรวจ สอบได้ สมมติว่าต้องการสัญญาณสโตรบความกว้าง 100มิลลิวินาที โดยใช้เคาน์เตอร์ # 1 เมื่อมีการอินพุตสัญญารเข้าขา CLK เท่ากับ 1 เมกะเอิรตซ์ 8254

  25. 8253 ถ้าพิจารณาดูให้ละเอียดจะพบปัญหาที่ว่า การเขียนโปรแกรมให้ สัญญาณ 1เมกะเฮิรตซ์เหลือเป็น 0.1 วินาที ต้องใช้ค่าถึง 105 ซึ่งใช้ เคาน์เตอร์ตัวเดียวไม่พอ เพราะเคาน์เติร์แต่ละตัวจะมีค่าสูงสุดเพียง 104 เท่านั้น (เมือนับ BCD) ดังนั้นจึงใช้ 2 ตัวทำงานร่วมกัน โดยตัวแรกจะ ลดสัญญาณความถี่ให้เหลือเพียง 1กิโลเฮิรตซ์ (ใช้เคาน์เตอร์ # 0) และ ตัวที่สองจะทำการนับต่อไปโดยใช้ Solfware Trigger (ใช้เคาน์เตอร์) เพื่อให้ได้ค่า 0.1 วินาทีตามต้องการ รายละเอียดการต่อสายสัญญาณ ระหว่างเเคาน์เตอร์ # 0 และเคาน์เตอร์ # 1 และโปรแกรมควบคุม 8253 แสดงดังนี้ตามลำดับ 8254

  26. 8254 8253 1 MHz CLK0 OUT0 เคาน์เตอร์ # 0 CLK1 OUT1 หน่วยเวลาเท่ากับ 100 us เคาน์เตอร์ # 1 แสดงรายละเอียดการต่อสัญญาณระหว่างเคาน์เตอร์ # 0 และเคาน์เตอร์ # 1

  27. CT # 0 : LD A,0011 0101 B :ควบคุม MWR (เคาน์เตอร์ # 0) OUT (3?H),A LD A,00D :โหลดไบต์ต่ำสู่เคาน์เตอร์ # 0 OUT (30H),A LD A,10D : โหลดไบต์สูงเคาน์เตอร์ # 0 OUT (30H),A CT # 0 : LD A,0111 1001 B :ควบคุม MWR (เคาน์เตอร์ # 1) OUT (33H),A LD A,00D :โหลดไบต์ต่ำสู่เคาน์เตอร์ # 1 OUT (31H),A LD A,01D : โหลดไบต์สูงเคาน์เตอร์ # 1 OUT (31H),A 8253 8254

  28. 8253 แสดงรายละเอียดโปรแกรมควบคุมการทำงานของเคาน์เตอร์ # 0 และ เคาน์เตอร์ # 1เพื่อให้ได้สัญญาณสโตรบออกทางขา OUT1 มีค่า 0.1วินาที 8254

  29. 8253 6.โหมด 5 (Strobe Trigger By Hardware) การทำงานในโหมด 5 นี้จะทำงานในสัญญาณขอบขาขึ้น ของ สัญญาณอินพุตเข้าขา GATE จึงจะมีการนับเกิดขึ้น ซึ่งเป็นเช่นเดียวกัน กับโหมด 4 เพียงแต่ GATE ในโหมด 0 ถึง 4 นั้น ทำงานที่ลอจิก 1 หมายถึง การอีนาเบิลการทำงานของเคาน์เตอร์นั้นเอง 8254

More Related