300 likes | 550 Views
8253. 8254. 8253. 8253 เป็น IC ผลิตโดยบริษัท INTEL เพื่อใช้ทำงานเป็นโปรแกรมทางด้านไทเมอร์ (Timer) และเคาว์เตอร์ (Counter) ร่วมกับซีพียู 8080,8085 ซึ่งเราสามารถประยุกต์ใช้เป็นฐานเวลาและงานนับสำหรับซีพียู Z-80 ได้ โครงสร้างภายในของ 8253 แสดงบล็อกไดอะแกรม ดังรูป. 8253. CLK0. D 0 -D 7.
E N D
8253 8254
8253 8253 เป็น IC ผลิตโดยบริษัท INTEL เพื่อใช้ทำงานเป็นโปรแกรมทางด้านไทเมอร์ (Timer) และเคาว์เตอร์ (Counter) ร่วมกับซีพียู 8080,8085 ซึ่งเราสามารถประยุกต์ใช้เป็นฐานเวลาและงานนับสำหรับซีพียู Z-80 ได้ โครงสร้างภายในของ 8253 แสดงบล็อกไดอะแกรม ดังรูป
8253 CLK0 D0-D7 บัสข้อมูล เคาน์เตอร์ #0 GATE0 OUT0 CLK1 RD GATE1 R/W ควบคุม เคาน์เตอร์ #1 WR OUT1 A1 CLK2 A0 รีจีสเตอร์ควบคุม เคาน์เตอร์ #2 GATE2 CS OUT2 แสดงบล็อกไดอะแกรมโครงสร้างภายในของ 8253 8254
8253 จากรูปจะพบว่าภายใน 8253 ประกอบด้วยเคาน์เตอร์อยู่ 3 ตัว คือ #0,#1 และ #2 ซึ่งแต่ละตัวทำงานอิสระต่อกัน โดยทุกตัวจะมีสัญญาน CLKและ GATE เป็นขาอินพุตและ OUT จะเป็นสัญญานขาเอาต์พุตตาม ลำดับ โดยมีรีจีสเตอร์ตัวหนึ่งที่ใช้ในการควบคุมการทำงาน คือ MWR (Mode Word Register) ใช้ในการโปรแกรมให้เคาน์เตอร์แต่ละตัวทำงาน ตามที่เราต้องการ การทำงานเพื่อเลือกอ่านและเขียนเคาน์เตอร์แต่ละตัว และ MWR แสดงรายละเอียดดังตารางนี้ 8254
แสดงการทำงานของขาสัญญานที่ใช้ในการอ่านและเขียนเคาน์เตอร์แสดงการทำงานของขาสัญญานที่ใช้ในการอ่านและเขียนเคาน์เตอร์ แต่ละตัวและ 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
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
8253 8254
8253 ซอฟต์แวร์ควบคุม 8253 การเขียนโปรแกรมควบคุมการทำงาน 8253 เริ่มจากการกำหนด โหมดการทำงาน โดยโปรแกรมเขียนลงใน MWR ข้อมูลแต่ละบิตจะมีความ หมายดังรูป ข้อมูล 8 บิตที่เขียนใน MWR 8254
8253 D7 D6 SC1 SC0 เลือกเคาน์เตอร์ 00 - เคาน์เตอร์ #0 01 - เคาน์เตอร์ #1 10 - เคาน์เตอร์ #2 11 - ไม่ใช้งาน แสดงรายละเอียดของข้อมูลแต่ละบิตที่โปรแกรมเขียนใน MWR 8254
8253 D5 D4 RL1 RL0 เลือกเขียน / อ่านข้อมูล 00 - เคาน์เตอร์ค้างข้อมูลให้ซีพียูอ่าน 01 - อ่าน / เขียนข้อมูลไบต์ต่ำ 10 - อ่าน / เขียนข้อมูลไบต์สูง 11 - อ่าน / เขียนข้อมูลไบต์ต่ำและไบต์สูง แสดงรายละเอียดของข้อมูลแต่ละบิตที่โปรแกรมเขียนใน MWR 8254
D3 D2 D1 8253 M2 M1 M0 เลือกโหมดการทำงาน (0-5) 000 - โหมด 0 001 - โหมด 1 010 - โหมด 2 011 - โหมด 3 100 - โหมด 4 101 - โหมด 5 แสดงรายละเอียดของข้อมูลแต่ละบิตที่โปรแกรมเขียนใน MWR 8254
8253 D0 BCD 1 - BCD code 0 - BIN code แสดงรายละเอียดของข้อมูลแต่ละบิตที่โปรแกรมเขียนใน MWR 8254
8253 การใช้งาน 8253 ในแต่ละโหมด มีรายละเอียดดังต่อไปนี้ 1.โหมด 0 (Interrupt From Counter) พิจารณาวงจรที่แสดงดังรูปข้างล่าง สมมติให้เคาน์เตอร์ทำการนับ CLK แบบ BCD เมื่อนับได้ 125 ก็ให้มีการส่งสัญญานขออินเทอร์รัพต์แก่ Z-80 โดยที่จะทำให้ Z-80 ทำงานที่ตำแหน่ง 38H (เมื่อทำงานขออินเทอร์ รัพต์ INT โหมด 1) 8254
8253 CLK # 8253 GATE # ลอจิก “1” OUT INT ลอจิก 1 ของ Z-80 แสดงวงจรนับ BCD จำนวน 125 ลูก จึงทำการส่งสัญญานขออินเทอร์รัพต์ INT แก่ Z-80 8254
8253 การโปรแกรมเขียนข้อมูลไปที่ MWR มีความหมายดังนี้ 00 11 000 1 = 31H เคาน์เตอร์ # 0 โหมด 0 BCD ฉะนั้นเราสามารถทำการเขียนโปรแกรมได้ แสดงรายละเอียดดังรูปข้างล่าง และเมื่อเคาน์เตอร์นับครบ 125 ก็จะกระโดดไปที่แอดเดรส 38H (INT โหมด 0) แสดงรายละเอียดของโปรแกรม ตามลำดับ 8254
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
8253 ORG 038H LD A,25H ;ไบต์ต่ำ OUT (30H),A ;โหลดข้อมูลแก่เคาน์เตอร์ #0 LD A,01H ;ไบต์สูง OUT (30H),A ;โหลดข้อมูลแก่เคาน์เตอร์ #0 แสดงรายละเอียดโปรแกรมรูทีน เมื่อเกิดการอินเทอร์รัพต์ INT โหมด 0 โปรแกรมกระโดดไปทำงานที่แอดเดรส 38H ซึ่งวงจรจะ เริ่มนับอีกครั้ง 8254
8253 2.โหมด 1 (Nonostable) โหมด 1 สามารถโปรแกรมให้เอาต์พุต 8253 เป็นสัญญานพัลส์ (Pulse) ที่สามารถปรับความกว้างได้ตามต้องการโดยค่าความกว้างของพัลส์ จะเป็นจำนวนเท่าของสัญญาน CLK ที่เข้ามาสมมติว่าสัญญาน CLK ที่อิน พุตเข้ามามีความถี่ 1 เมกกะเฮิรตซ์ ในกรณีที่เราต้องการความกว้างของพัลส์ เอาต์พุตเท่ากับ 75 ไมโครนาที สามารถกระทำได้โดยเขียนโปรแกรมควบคุม 8253 แสดงรายละเอียดดังนี้คือ 8254
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
8253 3.โหมด 2 (Generator Pluse Continus) ในโหมด 2นี้จะทำหน้าที่เป็นวงจรหารความถี่ ซึ่งเป็นไปในลักษณะที่ ต่อเนื่อง (Continue) สมมติว่าสัญญานนาฬิกาเข้าที่ขา CLK2 เท่ากับ 1 เมกกะเฮริตซ์ ต้องการให้สัญญานดังกล่าวผ่านการหารเหลือความถี่เท่ากับ 638 เฮริตซ์ เอาต์พุตออกทางขา OUT2 เมื่อพิจารณาความถี่ 638 เฮริตซ์ จะมีค่าเท่ากับ 1,567 มิลลิวินาที หรือเท่ากับ 1,567 ไมโครวินาทีตามลำดับ การเขียนโปรแกรมควบคุม 8253 เพื่อให้ทำงานดังกล่าว แสดงรายละเอียด ดังนี้คือ 8254
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
8253 4.โหมด 3 (Generator Squar Wave) การทำงานคล้ายกับโหมด 2 แต่จะให้สัญญาณเอาท์พุต คาบเวลา แต่ละช่วงเท่ากัน ถ้าโปรแกรมค่าเป็นคี่ (odd) สัญญาณที่เป็นลอจิก 1 จะเท่า กับ (n + 1) และเป็นคู่ (even) สัญญาณลอจิก 0 เท่ากับ (n - 1)/2 การเขียน โปรแกรมก็คล้ายๆกับโหมด 2 สมมติว่าต้องการสร้างสัญญาณคลื่นสี่เหลี่ยม ออกที่ขา OUTO เท่ากับ 1 เมกะเฮิรตซ์ โดยสัญญาณเข้าที่ขา CLK0 มีค่า เท่ากับ 1 เมกะเฮิรตซ์ สามารถเขียนโปรแกรมแสดงดังนี้ 8254
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
8253 5.โหมด 4 (Strobe Trigger By Solfware) โหมด 4 สามารถตั้งเคาน์เตอร์ให้ได้ OUT ตามที่ต้องการใน ลักษณะที่เป็นสัญญาณสโตรบ (Strobe) คือ เมื่อมีการเขียนโปรแกรม เสร็จเรียบร้อย เคาน์เตอร์จะทำการนับค่าลดลงเรื่อยๆ จนมีค่าเป็น 0 ขา OUT จะมีลอจิกเป็น 0 1ลูก ตามสัญญาณCLK ที่อินพุตเข้ามาและ จะมีลอจิก 1 อีกครั้ง ซึ่งการทำงานโหมดนี้สามารถใช้ในลักษณะตรวจ สอบได้ สมมติว่าต้องการสัญญาณสโตรบความกว้าง 100มิลลิวินาที โดยใช้เคาน์เตอร์ # 1 เมื่อมีการอินพุตสัญญารเข้าขา CLK เท่ากับ 1 เมกะเอิรตซ์ 8254
8253 ถ้าพิจารณาดูให้ละเอียดจะพบปัญหาที่ว่า การเขียนโปรแกรมให้ สัญญาณ 1เมกะเฮิรตซ์เหลือเป็น 0.1 วินาที ต้องใช้ค่าถึง 105 ซึ่งใช้ เคาน์เตอร์ตัวเดียวไม่พอ เพราะเคาน์เติร์แต่ละตัวจะมีค่าสูงสุดเพียง 104 เท่านั้น (เมือนับ BCD) ดังนั้นจึงใช้ 2 ตัวทำงานร่วมกัน โดยตัวแรกจะ ลดสัญญาณความถี่ให้เหลือเพียง 1กิโลเฮิรตซ์ (ใช้เคาน์เตอร์ # 0) และ ตัวที่สองจะทำการนับต่อไปโดยใช้ Solfware Trigger (ใช้เคาน์เตอร์) เพื่อให้ได้ค่า 0.1 วินาทีตามต้องการ รายละเอียดการต่อสายสัญญาณ ระหว่างเเคาน์เตอร์ # 0 และเคาน์เตอร์ # 1 และโปรแกรมควบคุม 8253 แสดงดังนี้ตามลำดับ 8254
8254 8253 1 MHz CLK0 OUT0 เคาน์เตอร์ # 0 CLK1 OUT1 หน่วยเวลาเท่ากับ 100 us เคาน์เตอร์ # 1 แสดงรายละเอียดการต่อสัญญาณระหว่างเคาน์เตอร์ # 0 และเคาน์เตอร์ # 1
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
8253 แสดงรายละเอียดโปรแกรมควบคุมการทำงานของเคาน์เตอร์ # 0 และ เคาน์เตอร์ # 1เพื่อให้ได้สัญญาณสโตรบออกทางขา OUT1 มีค่า 0.1วินาที 8254
8253 6.โหมด 5 (Strobe Trigger By Hardware) การทำงานในโหมด 5 นี้จะทำงานในสัญญาณขอบขาขึ้น ของ สัญญาณอินพุตเข้าขา GATE จึงจะมีการนับเกิดขึ้น ซึ่งเป็นเช่นเดียวกัน กับโหมด 4 เพียงแต่ GATE ในโหมด 0 ถึง 4 นั้น ทำงานที่ลอจิก 1 หมายถึง การอีนาเบิลการทำงานของเคาน์เตอร์นั้นเอง 8254