อ่าน 4 นาที
อินเทล เอ็มซีเอส-48
ไมโครคอนโทรลเลอร์ซีรีส์ MCS-48 ซึ่งเป็นไมโครคอนโทรลเลอร์ ตัวแรกของIntel เปิดตัวครั้งแรกในปี 1976 สมาชิกรุ่นแรกได้แก่ 8048 , 8035และ8748โดย 8048...
อินเทล เอ็มซีเอส-48


ไมโครคอนโทรลเลอร์ซีรีส์ MCS-48 ซึ่งเป็นไมโครคอนโทรลเลอร์ ตัวแรกของIntel เปิดตัวครั้งแรกในปี 1976 สมาชิกรุ่นแรกได้แก่ 8048 , 8035และ8748โดย 8048 [ 1 ]ถือเป็นสมาชิกที่โดดเด่นที่สุดในตระกูลนี้ ในตอนแรก ตระกูลนี้ผลิตโดยใช้ เทคโนโลยี NMOS (n-type metal–oxide–semiconductor ) ในช่วงต้นทศวรรษ 1980 ก็เริ่มมีให้ใช้งานใน เทคโนโลยี CMOS และยังคง ผลิตต่อไปจนถึงทศวรรษ 1990 เพื่อรองรับการออกแบบรุ่นเก่าที่ยังคงใช้เทคโนโลยีนี้อยู่
ซีรี่ส์ MCS-48 ใช้สถาปัตยกรรม Harvard ที่ได้รับการดัดแปลง โดยมี ROMโปรแกรมภายในหรือภายนอก และ RAMภายใน (บนชิป) ขนาด 64 ถึง 256 ไบต์ ส่วนการรับส่งข้อมูล ( I /O)ถูกจัดสรรไว้ในพื้นที่แอดเดรส ของตัวเอง แยกจากโปรแกรมและข้อมูล
แม้ว่าซีรี่ส์ MCS-48 จะถูกแทนที่ด้วย ซีรี่ส์ MCS-51 ที่ประสบความสำเร็จอย่างมากในภายหลัง แต่ก็ยังคงได้รับความนิยมอย่างมากแม้กระทั่งในปี 2000 เนื่องจากต้นทุนต่ำ หาซื้อได้ง่าย ชุดคำสั่งแบบหนึ่งไบต์ที่ประหยัดหน่วยความจำ และเครื่องมือพัฒนาที่ครบครัน ด้วยเหตุนี้ จึงมีการนำไปใช้ในอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภคที่มีปริมาณการผลิตสูงและคำนึงถึงต้นทุน เช่น รีโมททีวี คีย์บอร์ดคอมพิวเตอร์ และของเล่น
การใช้งาน
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ชิปประมวลผลสัญญาณดิจิทัลซีรีส์ MCS-48 นิยมใช้ในแป้นพิมพ์คอมพิวเตอร์และเทอร์มินัล โดยแปลงการกดปุ่มเป็นโปรโตคอลที่วงจรดิจิทัลสามารถเข้าใจได้ นอกจากนี้ยังช่วยให้สามารถสื่อสารแบบอนุกรมได้ ลดจำนวนตัวนำที่จำเป็นในสายเคเบิลสำหรับแป้นพิมพ์ภายนอก ชิป 8048 ถูกนำมาใช้ในแอปพลิเคชันนี้ตั้งแต่เปิดตัวในปี 1978
Tandy/Radio Shack รุ่น TRS-80 Model IIที่วางจำหน่ายในปี 1979 ใช้ชิป 8021 ในแป้นพิมพ์[ 3 ]โปรเซสเซอร์ 8021 จะสแกนเมทริกซ์ปุ่ม แปลงการปิดสวิตช์เป็นรหัส 8 บิต จากนั้นส่งรหัสดังกล่าวแบบอนุกรมไปยังอินเทอร์เฟซแป้นพิมพ์บนระบบหลัก นอกจากนี้ยังรับคำสั่งเพื่อเปิดหรือปิดไฟ LED แสดงสถานะได้อีกด้วย ชิป 8021 ยังถูกใช้ในแป้นพิมพ์สำหรับ TRS-80 รุ่น 12, 12B, 16, 16B และ Tandy 6000/6000HD ด้วย[ 4 ]
แป้นพิมพ์ IBM PCรุ่นดั้งเดิมและแป้นพิมพ์สำหรับรุ่นก่อนหน้า อย่าง IBM System/23 Datamaster ใช้ ไมโครคอนโทรลเลอร์ 8048 ภายใน[ 5 ] PC AT แทนที่ ชิปอินเทอร์เฟซอุปกรณ์ต่อพ่วงIntel 8255ของ PC ที่พอร์ต I/O แอดเดรส 0x 60–63ด้วย 8042 ที่สามารถเข้าถึงได้ผ่านพอร์ตแอดเดรส0x60และ0x64 [ 6 ]นอกจากการจัดการอินเทอร์เฟซแป้นพิมพ์แล้ว 8042 ยังควบคุมฟังก์ชันA20 line gating สำหรับ CPU Intel 80286ของ AT และสามารถสั่งการด้วยซอฟต์แวร์ให้รีเซ็ต 80286 ได้ (ต่างจาก โปรเซสเซอร์ 80386และรุ่นต่อมา 80286 ไม่มีวิธีเปลี่ยนจากโหมดป้องกันกลับไปเป็นโหมดจริงได้นอกจากการรีเซ็ต) พีซีที่เข้ากันได้รุ่นต่อมาได้รวมฟังก์ชันของ 8042 เข้ากับอุปกรณ์ super I/O ของตน
8048 ถูกใช้ในเครื่องเล่นเกมMagnavox Odyssey² ซีรีส์Korg Trident [ 7 ]และซินเธไซเซอร์อนาล็อกKorg Poly-61 [ 8 ] Roland Jupiter-4และRoland ProMars [ 9 ] Sinclair QLใช้ Intel 8049 ที่เกี่ยวข้องอย่างใกล้ชิดในการจัดการแป้นพิมพ์ พอร์ตจอยสติ๊ก อินพุต RS-232 และเสียง รุ่น 8035 ที่ไม่มี ROM ถูกใช้ใน เกมอาร์เคด Donkey KongของNintendoเพื่อสร้างเพลงประกอบและเอฟเฟกต์เสียงบางส่วนของเกม
ชุดคำสั่ง
คำสั่งทั้งหมดของ MCS-48 มีความยาวหนึ่งหรือสองไบต์ โดย 70% ของคำสั่งมีความยาวหนึ่งไบต์ MCS-48 สามารถเข้าถึงหน่วยความจำโปรแกรมได้ 4096 ไบต์ หน่วยความจำ RAM 256 ไบต์ หน่วยความจำภายนอก 256 ไบต์ และที่อยู่พอร์ต I/O แปดพอร์ต การดำเนินการทางคณิตศาสตร์และตรรกะส่วนใหญ่ใช้ตัวสะสมเป็นพารามิเตอร์และปลายทาง ตำแหน่งหน่วยความจำแปดตำแหน่งถูกแมปเป็นรีจิสเตอร์เพื่อให้สามารถเข้าถึงได้โดยฟิลด์ 3 บิตที่ฝังอยู่ในคำสั่งจำนวนมาก รีจิสเตอร์สองตัวนั้นสามารถใช้เป็นตัวชี้หน่วยความจำได้ การกระโดดแบบมีเงื่อนไขสามารถเข้าถึงได้เฉพาะหน้า 256 ไบต์ปัจจุบันเท่านั้น คำสั่ง JMP และ CALL สามารถเข้าถึงตำแหน่ง 2048 ตำแหน่งได้โดยตรง ในการเข้าถึงพื้นที่โปรแกรมทั้งหมด 4096 ไบต์ ต้องใช้คำสั่งเลือกธนาคารหน่วยความจำที่ค่อนข้างยุ่งยาก อย่างไรก็ตาม คำสั่ง RET สามารถส่งคืนไปยังที่ใดก็ได้ในพื้นที่ที่อยู่ การขัดจังหวะได้รับการสนับสนุนอย่างดีด้วยรีจิสเตอร์ทางเลือกสำหรับการสลับบริบทอย่างรวดเร็วและความสามารถในการกู้คืนสถานะของแฟล็กด้วยคำสั่ง RETR คำสั่งทั้งหมดจะดำเนินการในรอบการทำงานของเครื่องหนึ่งหรือสองรอบ แต่ละรอบการทำงานของเครื่องใช้เวลา 15 นาฬิกาภายนอก[ 2 ]
| รหัสปฏิบัติการ | ตัวถูกดำเนินการ | ตัวช่วยจำ | วงจร | คำอธิบาย | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | โนป | 1 | ไม่มีการดำเนินการใดๆ |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | — | OUTL BUS,A | 2 | สลักรถบัส ← A |
| ALUI | 0 | 0 | 1 | 1 | ข้อมูล | ADD ADDC MOV ORL ANL XRL | 2 | A ← A ALU # | |||
| อัดฮี | 0 | 0 | 1 | 0 | 0 | แอดโล | JMP เพิ่ม | 2 | PC ← DBF:addhi:addlo | ||
| 0 | 0 | 0 | ฉัน | 0 | 1 | 0 | 1 | — | EN/DIS I | 1 | I ← 0 (EN) หรือ I ← 1 (DIS) |
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | — | ธันวาคม เอ | 1 | A ← A - 1 |
| 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | — | อินส์ เอ,บัส | 2 | รถบัส A ← |
| 0 | 0 | 0 | 0 | 1 | 0 | พีพี | — | ใน A, หน้า | 2 | A ← พอร์ต(p) (พอร์ต 1-2) | |
| 0 | 0 | 0 | 0 | 1 | พีพี | — | MOVD A,Pp | 2 | A 0-3 ← 8243 พอร์ต(p); A 4-7 ← 0 (พอร์ต 4-7) | ||
| อลู | 0 | 0 | 0 | อาร์ | — | INC XCH ORL ANL เพิ่ม ADDC MOVaA XRL MOVAa | 1 | dest ← dest ALU @Rr (@R0, @R1 เท่านั้น; ไม่มี DEC) | |||
| อลู | 1 | รอาร์อาร์ | — | INC XCH ORL ANL เพิ่ม ADDC MOVaA DEC XRL MOVAa | 1 | dest ← dest ALU Rr | |||||
| นิดหน่อย | 1 | 0 | 0 | 1 | 0 | ที่อยู่ | ที่อยู่ JBb | 2 | ถ้า A ∧ (1 << b) แล้ว PC 0-7 ← addr | ||
| อัดฮี | 1 | 0 | 1 | 0 | 0 | แอดโล | โทรเพิ่ม | 2 | (SP) ← PSW 4-7 :PC; SP ← SP + 1; PC ← DBF:addhi:addlo | ||
| 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | ที่อยู่ | ที่อยู่ JTF | 2 | ถ้า TF = 1 แล้ว PC 0-7 ← addr (ตั้งค่าแฟล็กตัวจับเวลา) |
| 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | — | บริษัท อิงค์ เอ | 1 | A ← A + 1 |
| 0 | 0 | 1 | ที | 0 | 1 | 0 | 1 | — | EN/DIS TCNTI | 1 | TCNTI ← 0 (EN) หรือ TCNTI ← 1 (DIS) (การขัดจังหวะตัวจับเวลา/ตัวนับ) |
| 0 | 0 | 1 | เอฟ | 0 | 1 | 1 | 0 | ที่อยู่ | ที่อยู่ JNT0 JT0 | 2 | ถ้า F = T0 แล้ว PC 0-7 ← addr (อินพุตทดสอบ 0) |
| 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | — | ซีแอลอาร์ เอ | 1 | A ← 0 |
| 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | — | พลทหารเอ | 1 | A ← ¬A |
| 0 | 0 | 1 | 1 | 1 | 0 | พีพี | — | OUTL Pp,A | 2 | พอร์ต(p) ← A (พอร์ต 1-2) | |
| 0 | 0 | 1 | 1 | 1 | พีพี | — | MOVD Pp,A | 2 | 8243 พอร์ต(p) ← A 0-3 (พอร์ต 4-7) | ||
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | — | MOV A,T | 1 | A ← T (เลื่อนตัวจับเวลาไปที่ A) |
| 0 | 1 | 0 | ที | 0 | 1 | 0 | 1 | — | STRT CNT/T | 1 | ถ้า T = 0 ให้เริ่มนับ มิฉะนั้นให้เริ่มจับเวลา |
| 0 | 1 | 0 | เอฟ | 0 | 1 | 1 | 0 | ที่อยู่ | ที่อยู่ JNT1 JT1 | 2 | ถ้า F = T1 แล้ว PC 0-7 ← addr (อินพุตทดสอบ 1) |
| 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | — | สลับ | 1 | A 0-3 ↔ A 4-7 |
| 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | — | ดีเอ เอ | 1 | ถ้า A 0-4 > 9 หรือ AC = 1 แล้ว A ← A + 6; ถ้า A 4-7 > 9 หรือ C = 1 แล้ว A ← A + 0x60 |
| 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | — | MOV T,A | 1 | T ← A (ย้าย A ไปที่ตัวจับเวลา) |
| 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | — | หยุด TCNT | 1 | หยุดตัวจับเวลาและนับใหม่ |
| 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | — | อาร์อาร์ซี เอ | 1 | C ← A 0 ; A 0-6 ← A 1-7 ; A 7 ← C |
| 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | — | เอ็นทีโอ คล์ค | 1 | ตั้งค่า T0 เป็นเอาต์พุตสัญญาณนาฬิกา |
| 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | ที่อยู่ | ที่อยู่ JF1 | 2 | ถ้า F1 = 1 แล้ว PC 0-7 ← ที่อยู่ |
| 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | — | อาร์อาร์ เอ | 1 | A 0-6 ← A 1-7 ; A 7 ← A 0 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | อาร์ | — | MOVX A,@Rr | 2 | A ← ภายนอก @Rr (@R0, @R1 เท่านั้น) |
| 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | — | เรท | 2 | SP ← SP - 1; PC ← (SP) |
| 1 | 0 | เอ็น | 0 | 0 | 1 | 0 | 1 | — | เอฟเอ็นซีแอลอาร์ | 1 | Fn ← 0 |
| 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | ที่อยู่ | ที่อยู่ JNI | 2 | ถ้าอินพุต = 0 แล้ว PC 0-7 ← addr (อินพุตการขัดจังหวะทดสอบต่ำ) |
| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | ข้อมูล | ORL BUS,# | 2 | รถบัส A ← ∨ # |
| 1 | 0 | 0 | 0 | 1 | 0 | พีพี | ข้อมูล | ORL Pp,# | 2 | A ← พอร์ต(p) ∨ # (พอร์ต 1-2) | |
| 1 | 0 | 0 | 0 | 1 | พีพี | — | โลก หน้า A | 2 | 8243 พอร์ต(p) ← 8243 พอร์ต(p) ∨ A 0-3 (พอร์ต 4-7) | ||
| 1 | 0 | 0 | 1 | 0 | 0 | 0 | อาร์ | — | MOVX @Rr,A | 2 | ภายนอก @Rr ← A (@R0, @R1 เท่านั้น) |
| 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | — | รีทรั | 2 | SP ← SP - 1; PC ← (SP); PSW 4-7 ← (SP) |
| 1 | 0 | เอ็น | 1 | 0 | 1 | 0 | 1 | — | พลทหารเอฟเอ็น | 1 | Fn ← ¬Fn |
| 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | — | ซีแอลอาร์ ซี | 1 | C ← 0 |
| 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | ข้อมูล | รถบัส ANL,# | 2 | รถบัส A ← ∧ # |
| 1 | 0 | 0 | 1 | 1 | 0 | พีพี | ข้อมูล | ANL Pp,# | 2 | A ← พอร์ต(p) ∧ # (พอร์ต 1-2) | |
| 1 | 0 | 0 | 1 | 1 | พีพี | — | ANLD Pp,A | 2 | 8243 พอร์ต(p) ← 8243 พอร์ต(p) ∧ A 0-3 (พอร์ต 4-7) | ||
| 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | — | MOVP A,@A | 2 | A ← ROM(PC 8-11 :A) (อ่านหน่วยความจำโปรแกรม) |
| 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | — | พลทหารซี | 1 | C ← ¬C |
| 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | — | เจเอ็มพีพี @เอ | 2 | PC 0-7 ← A (JMP ทางอ้อม) |
| 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | ที่อยู่ | ที่อยู่ JF0 | 2 | ถ้า F0 = 1 แล้ว PC 0-7 ← ที่อยู่ |
| 1 | 1 | 0 | เอ็น | 0 | 1 | 0 | 1 | — | SEL RBn | 1 | BS ← n (เลือกธนาคารลงทะเบียน) |
| 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | ที่อยู่ | ที่อยู่ JZ | 2 | ถ้า A = 0 แล้ว PC 0-7 ← ที่อยู่ |
| 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | — | MOV A,PSW | 1 | เอ ← พีเอสดับบลิว |
| 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | — | MOV PSW,A | 1 | PSW ← A |
| 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | — | MOVP3 A,@A | 2 | A ← ROM(0011:A) (อ่านหน่วยความจำโปรแกรมหน้า 3) |
| 1 | 1 | 1 | เอ็น | 0 | 1 | 0 | 1 | — | เอสอีแอลเอ็มบีเอ็น | 1 | DBF ← n (เลือกหน่วยความจำ: PC 11 ) |
| 1 | 1 | 1 | เอฟ | 0 | 1 | 1 | 0 | ที่อยู่ | ที่อยู่ JNC JC | 2 | ถ้า F = C แล้ว PC 0-7 ← ที่อยู่ |
| 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | — | อาร์แอล เอ | 1 | A 1-7 ← A 0-6 ; A 0 ← A 7 |
| 1 | 1 | 1 | 0 | 1 | รอาร์อาร์ | ที่อยู่ | DJNZ Rr,ที่อยู่ | 2 | Rr ← Rr - 1; ถ้า Rr ≠ 0 แล้ว PC 0-7 ← addr | ||
| 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | — | อาร์แอลซี เอ | 1 | C ← A 7 ; A 1-7 ← A 0-6 ; A 0 ← C |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ตัวถูกดำเนินการ | ตัวช่วยจำ | วงจร | คำอธิบาย |
| RRR หรือ R | 3 | 2 | 1 | 0 | อลู | ALUI #immed | |||||
| R0 @R0 | 0 | 0 | 0 | 0 | เพิ่ม A,# (A ← A + #) | ||||||
| อาร์1 @อาร์1 | 0 | 0 | 0 | 1 | INC arg (arg ← arg + 1) | ADDC A,# (A ← A + # + C) | |||||
| อาร์2 | 0 | 0 | 1 | 0 | XCH A,arg (A ↔ arg) | MOV R,# (R ← #) | |||||
| อาร์3 | 0 | 0 | 1 | 1 | |||||||
| อาร์4 | 0 | 1 | 0 | 0 | ORL A,arg (A ← A ∨ arg) | ORL A,# (A ← A ∨ #) | |||||
| อาร์5 | 0 | 1 | 0 | 1 | ANL A,arg (A ← A ∧ arg) | ANL A,# (A ← A ∧ #) | |||||
| อาร์6 | 0 | 1 | 1 | 0 | เพิ่ม A,arg (A ← A + arg) | ||||||
| อาร์7 | 0 | 1 | 1 | 1 | ADDC A,หาเรื่อง (A ← A + หาเรื่อง + C) | ||||||
| 1 | 0 | 1 | 0 | MOV arg,A (arg ← A) | |||||||
| 1 | 1 | 0 | 0 | DEC arg (arg ← arg - 1) | |||||||
| 1 | 1 | 0 | 1 | XRL A,arg (A ← A ⊻ arg) | XRL A,# (A ← A ⊻ #) | ||||||
| 1 | 1 | 1 | 1 | MOV A,arg (A ← arg) | |||||||
| RRR หรือ R | 3 | 2 | 1 | 0 | อลู | ALUI #immed | |||||
ตัวอย่างโค้ด
โค้ดแอ สเซมเบลอร์ต่อไปนี้เป็นของซับรูทีนชื่อadd32ที่บวกจำนวนเต็ม 32 บิตสองจำนวนที่จัดเก็บใน ลำดับ ลิตเติลเอนเดียน โดยตัวบวกตัวหนึ่งชี้ด้วย R0 และตัวบวกอีกตัวและผลลัพธ์ชี้ด้วย R1
|
ตัวแปร




ไมโคร คอนโทรลเลอร์ 8049มีROM แบบมาสก์ 2 KB (รุ่น 8748 และ 8749 ใช้EPROM ) ซึ่งสามารถแทนที่ด้วย ROM ภายนอกขนาด 4 KB ได้ นอกจากนี้ยังมี RAMขนาด 128 ไบต์และ พอร์ตI/O 27 พอร์ต [ 10 ] บล็อก ออสซิลเลเตอร์ของไมโครคอนโทรลเลอร์จะแบ่งความถี่อินพุตของสัญญาณนาฬิกาออกเป็นสามส่วน แล้วแบ่งผลลัพธ์นั้นออกเป็นห้าสถานะของเครื่อง การใช้ ความถี่คริสตัลสูงสุด 11 MHz จะสร้าง คำสั่งแบบรอบเดียว ได้ 0.73 MIPSคำสั่งประมาณ 70% เป็นคำสั่งแบบไบต์เดียวและรอบเดียว แต่ 30% ต้องการสองรอบหรือสองไบต์ ดังนั้นประสิทธิภาพโดยทั่วไปจึงใกล้เคียงกับ 0.5 MIPS
| อุปกรณ์ | หน่วยความจำโปรแกรม | หน่วยความจำข้อมูล | หมายเหตุ |
|---|---|---|---|
| 8020 | รอม 1K × 8 | แรม 64 × 8 | เป็นส่วนย่อยของ 8048 มี 20 ขา และมีสาย I/O เพียง 13 สาย |
| 8021 | รอม 1K × 8 | แรม 64 × 8 | เป็นส่วนย่อยของ 8048, 28 พิน, 21 สายอินพุต/เอาต์พุต |
| 8022 | รอม 2K × 8 | แรม 64 × 8 | สับเซตของ 8048, ตัวแปลง A/D |
| 8035 | ไม่มี | แรม 64 × 8 | |
| 8038 | ไม่มี | แรม 64 × 8 | |
| 8039 | ไม่มี | แรม 128 × 8 | |
| 8040 | ไม่มี | แรม 256 × 8 | |
| 8048 | รอม 1K × 8 | แรม 64 × 8 | พอร์ต I/O 27 พอร์ต |
| 8049 | รอม 2K × 8 | แรม 128 × 8 | พอร์ต I/O 27 พอร์ต |
| 8050 | รอม 4K x 8 | แรม 256 × 8 | |
| 8648 | อีพีรอม OTP 1K × 8 | แรม 64 × 8 | EPROM OTP จากโรงงาน |
| 8748 | 1K × 8 EPROM [ 11 ] | แรม 64 × 8 [ 11 ] | หน่วยความจำโปรแกรม 4K ขยายได้[ 11 ]ตัวจับเวลา 8 บิต 2 ตัว พอร์ต I/O 27 ตัว |
| 8749 | อีพีรอม 2K × 8 | แรม 128 × 8 | ตัวจับเวลา 8 บิต 2 ตัว, พอร์ต I/O 27 ตัว |
| 87P50 | ซ็อกเก็ต ROM ภายนอก | แรม 256 × 8 | มีซ็อกเก็ตแบบ piggy-backสำหรับ EPROM รุ่น 2758/2716/2732 |
ซีรี่ส์ UPI-41 เป็นรูปแบบหนึ่งของ MCS-48 ที่ออกแบบมาสำหรับอุปกรณ์ต่อพ่วง โดยมีเป้าหมายเพื่อตอบสนองตามความต้องการบนบัสแบบขนาน ด้วยเหตุนี้ จึงมีการสร้างอินเทอร์เฟซบัสข้อมูลแบบขนานที่มีบัฟเฟอร์ไว้ในชิปเหล่านี้ และมีการเปลี่ยนแปลงคำสั่งโอเปอเรเตอร์โค้ดบางส่วนเพื่อให้สามารถใช้งานอินเทอร์เฟซนี้ได้[ 12 ]
| อุปกรณ์ | หน่วยความจำโปรแกรม | หน่วยความจำข้อมูล | หมายเหตุ |
|---|---|---|---|
| 8041 | รอม 1K × 8 | แรม 64 × 8 | อินเทอร์เฟซอุปกรณ์ต่อพ่วงสากล (UPI) |
| 8041AH | รอม 1K × 8 | แรม 128 × 8 | ยูพีไอ |
| 8741A | อีพีรอม 1K × 8 | แรม 64 × 8 | UPI, EPROM เวอร์ชัน 8041 |
| 8741AH | อีพีรอม OTP 1K × 8 | แรม 128 × 8 | UPI, OTP เวอร์ชัน EPROM 8041AH |
| 8042AH | รอม 2K × 8 | แรม 256 × 8 | ยูพีไอ |
| 8242 | รอม 2K × 8 | แรม 256 × 8 | UPI ที่ตั้งโปรแกรมไว้ล่วงหน้าด้วยเฟิร์มแวร์ควบคุมแป้นพิมพ์[ 13 ] |
| 8742 | อีพีรอม 2K × 8 | แรม 128 × 8 | ยูพีไอ เวอร์ชันอีพีรอม |
| 8742AH | อีพีรอม OTP 2K × 8 | แรม 256 × 8 | UPI, OTP เวอร์ชัน EPROM 8042AH |
ไมโครคอนโทรลเลอร์ที่ดัดแปลง
Philips Semiconductors (ปัจจุบันคือ NXP ) เป็นเจ้าของลิขสิทธิ์ในการผลิตซีรี่ส์นี้และพัฒนาตระกูล MAB8400 ของตนโดยอิงจากสถาปัตยกรรมนี้ ไมโครคอนโทรลเลอร์เหล่านี้เป็นไมโครคอนโทรลเลอร์ตัวแรกที่มีอิน เทอร์เฟซ I²C ในตัว และถูกนำไปใช้ในเครื่องเล่นซีดีPhilips รุ่นแรก ( Magnavoxในสหรัฐอเมริกา) (เช่น CD-100) [ 14 ]
- แหล่งข้อมูล Intel MCS-48 วินาที
- มิตซูบิชิ อิเล็กทริค M5M80C39P-6
- ฟูจิตสึ MBL8742H
- Kvazar Kyiv KM1816VE48 (สหภาพโซเวียต – 8748 โคลน)
- National Semiconductor NS87PC48D (รุ่น piggyback)
- Signetics SCN8048A
- ฟิลิปส์ MAF 8049H
ดูเพิ่มเติม
บรรณานุกรม
- เอ็มซีเอส-48
- MCS-48 ไมโครคอมพิวเตอร์แบบส่วนประกอบเดียว (สมุดบันทึกสำหรับสัมมนาการใช้งาน) บริษัท อินเทล คอร์ปอเรชั่น ปี 1978
- คู่มือการใช้งานไมโครคอมพิวเตอร์ MCS-48 (ไฟล์ PDF)บริษัท อินเทล คอร์ปอเรชั่น ปี 1978
- Smith, Lionel; Moore, Cecil (มกราคม 1979). "โปรแกรมย่อยสำหรับการรับส่งข้อมูลแบบอนุกรมและการคำนวณทางคณิตศาสตร์สำหรับไมโครคอมพิวเตอร์ 8049" . บริษัท Intel. เอกสารประกอบการใช้งาน AP-49.
- โปรแกรมจำลองความเร็วสูงสำหรับไมโครคอมพิวเตอร์ Intel MCS-48บริษัท Intel Corporation สิงหาคม 1979 เอกสารประกอบการใช้งาน AP-55A
- Dahm, Phil; Rosenberg, Stuart (ธันวาคม 1979). ไมโครคอนโทรลเลอร์ Intel MCS-48 และ UPI-41A . บริษัท Intel. รายงานความน่าเชื่อถือ RR-25.
- คู่มือการใช้งานไมโครคอนโทรลเลอร์ (PDF) Intel. 1984. หมายเลขสั่งซื้อ 210918-002.
- ตัวควบคุมฝังตัว 8 บิต (PDF) Intel. 1991. หมายเลขสั่งซื้อ 270645-003.
- ยูพีไอ-41
- Intel (1980). คู่มือผู้ใช้ UPI-41A (PDF)หมายเลขสั่งซื้อ 9800504-02 Rev. B.
- คู่มือผู้ใช้ไมโครโปรเซสเซอร์ Peripherals UPI-41A/41AH/42/42AH (PDF)บริษัท Intel. ตุลาคม 1993. 231318-006.
- Beaston, Johan; Kahn, Jim (พฤษภาคม 1980). ตัวควบคุมเทปคาสเซ็ตดิจิทัล 8741A/8041A . บริษัท Intel. เอกสารประกอบการใช้งาน AP-90.
ลิงก์ภายนอก
- สถาปัตยกรรมครอบครัว MCS-48
- โครงการ Coprolite 8048ในWayback Machine (เก็บถาวรเมื่อวันที่ 17 กรกฎาคม 2014)
- พิพิธภัณฑ์ประวัติศาสตร์คอมพิวเตอร์, การเสวนาประวัติศาสตร์ปากเปล่าเกี่ยวกับไมโครคอนโทรลเลอร์ Intel 8048
- ไมโครคอนโทรลเลอร์ NEC 8741 (ภาพชิปซิลิคอน)
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ อินเทล เอ็มซีเอส-48
ไมโครคอนโทรลเลอร์ซีรีส์ MCS-48 ซึ่งเป็นไมโครคอนโทรลเลอร์ ตัวแรกของIntel เปิดตัวครั้งแรกในปี 1976 สมาชิกรุ่นแรกได้แก่ 8048 , 8035และ8748โดย 8048...
การใช้งาน
ชิปประมวลผลสัญญาณดิจิทัลซีรีส์ MCS-48 นิยมใช้ในแป้นพิมพ์คอมพิวเตอร์และเทอร์มินัล โดยแปลงการกดปุ่มเป็นโปรโตคอลที่วงจรดิจิทัลสามารถเข้าใจได้ นอกจากนี้ยังช่วยให้สามารถสื่อสารแบบอนุกรมได้ ลดจำนวนตัวนำที่จำเป็นในสายเคเบิลสำหรับแป้นพิมพ์ภายนอก ชิป 8048...
ชุดคำสั่ง
คำสั่งทั้งหมดของ MCS-48 มีความยาวหนึ่งหรือสองไบต์ โดย 70% ของคำสั่งมีความยาวหนึ่งไบต์ MCS-48 สามารถเข้าถึงหน่วยความจำโปรแกรมได้ 4096 ไบต์ หน่วยความจำ RAM 256 ไบต์ หน่วยความจำภายนอก 256 ไบต์ และที่อยู่พอร์ต I/O แปดพอร์ต...
ตัวอย่างโค้ด
โค้ดแอ สเซมเบลอร์ ต่อไปนี้เป็นของซับรูทีนชื่อ add32 ที่บวกจำนวนเต็ม 32 บิตสองจำนวนที่จัดเก็บใน ลำดับ ลิตเติลเอนเดียน โดย ตัวบวกตัวหนึ่งชี้ด้วย R0 และตัวบวกอีกตัวและผลลัพธ์ชี้ด้วย R1