อ่าน 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 ← 8243 พอร์ต(p); A ← 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 ← addr | ||
| อัดฮี | 1 | 0 | 1 | 0 | 0 | แอดโล | โทรเพิ่ม | 2 | (SP) ← PSW :PC; SP ← SP + 1; PC ← DBF:addhi:addlo | ||
| 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | ที่อยู่ | ที่อยู่ JTF | 2 | ถ้า TF = 1 แล้ว PC ← 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 ← 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 (พอร์ต 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 ← addr (อินพุตทดสอบ 1) |
| 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | — | สลับ | 1 | A ↔ A |
| 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | — | ดีเอ เอ | 1 | ถ้า A > 9 หรือ AC = 1 แล้ว A ← A + 6; ถ้า A > 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 ; A ← A ; A ← 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 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | — | อาร์อาร์ เอ | 1 | A ← A ; A ← A |
| 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 ← 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 (พอร์ต 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 ← (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 (พอร์ต 4-7) | ||
| 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | — | MOVP A,@A | 2 | A ← ROM(PC :A) (อ่านหน่วยความจำโปรแกรม) |
| 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | — | พลทหารซี | 1 | C ← ¬C |
| 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | — | เจเอ็มพีพี @เอ | 2 | PC ← A (JMP ทางอ้อม) |
| 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | ที่อยู่ | ที่อยู่ JF0 | 2 | ถ้า F0 = 1 แล้ว PC ← ที่อยู่ |
| 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 ← ที่อยู่ |
| 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 ) |
| 1 | 1 | 1 | เอฟ | 0 | 1 | 1 | 0 | ที่อยู่ | ที่อยู่ JNC JC | 2 | ถ้า F = C แล้ว PC ← ที่อยู่ |
| 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | — | อาร์แอล เอ | 1 | A ← A ; A ← A |
| 1 | 1 | 1 | 0 | 1 | รอาร์อาร์ | ที่อยู่ | DJNZ Rr,ที่อยู่ | 2 | Rr ← Rr - 1; ถ้า Rr ≠ 0 แล้ว PC ← addr | ||
| 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | — | อาร์แอลซี เอ | 1 | C ← A ; A ← A ; A ← 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
ดูเพิ่มเติม
เอกสารอ้างอิง
- ^ Laws, David; Blume Jr., Henry; Ekiss, John; Feng, Yung; Kline, Barbara; Raphael, Howard; Stamm, David (30 กรกฎาคม 2551). คณะผู้เชี่ยวชาญด้านประวัติศาสตร์ปากเปล่าเกี่ยวกับการพัฒนาและการส่งเสริมไมโครคอนโทรลเลอร์ Intel 8048 (PDF)เก็บถาวรจากต้นฉบับ(PDF)เมื่อ 27 ธันวาคม 2557
- ^ a b c คู่มือผู้ใช้ไมโครคอมพิวเตอร์ แบบชิปเดี่ยวตระกูล MCS-48 (PDF) (AFN·01300A-1 ed.) Intel กันยายน 1980 สืบค้นเมื่อ15 พฤศจิกายน 2025
- ^ คู่มืออ้างอิงทางเทคนิค รุ่น TRS-80 IIเรดิโอ แช็ค หน้า 135
- ^ คู่มือการซ่อมบำรุง Tandy 6000/6000HD Tandy/Radio Shack. 1985. หน้า 213.
- ^ "ส่วนที่ 4: แป้นพิมพ์", เอกสารอ้างอิงทางเทคนิค: คอมพิวเตอร์ส่วนบุคคล , ห้องสมุดอ้างอิงฮาร์ดแวร์คอมพิวเตอร์ส่วนบุคคล (ฉบับปรับปรุง), IBM , เมษายน 1984
- ^ "ส่วนที่ 1: เมนบอร์ด", เอกสารอ้างอิงทางเทคนิค: คอมพิวเตอร์ส่วนบุคคล AT , ห้องสมุดอ้างอิงฮาร์ดแวร์คอมพิวเตอร์ส่วนบุคคล, IBM, กันยายน 1985
- ^ "คู่มือการซ่อมบำรุง Korg Trident" . Korg. หน้า 4 . สืบค้นเมื่อ10 กุมภาพันธ์ 2018 – ผ่านทาง Synthfool.
- ^ "คู่มือการซ่อมบำรุง Korg Poly-61" (PDF) . เก็บถาวรจากต้นฉบับ(PDF)เมื่อ 2010-06-02 . เรียกดูเมื่อ2013-03-07 .
- ^กอร์ดอน รีด (พฤศจิกายน 2004). "ประวัติของโรแลนด์ ตอนที่ 1: 1930–1978" . ประวัติของโรแลนด์ . นิตยสาร Sound On Sound . สืบค้นเมื่อ 29 พฤศจิกายน 2010 .
- ^บริษัท อินเทล คอร์ปอเรชั่น ค.ศ. 1978
- ^ a b c Hayes, John P. (1978). สถาปัตยกรรมและองค์ประกอบของคอมพิวเตอร์ . McGraw-Hill International Book Company. หน้า 57–59 . ISBN 0-07-027363-4.
- ^ "คู่มือภาษาแอสเซมบลี MCS-48 และ UPI-41" (PDF) . Intel. 1978. หน้า 4-1 . สืบค้นเมื่อ2026-02-28 .
- ^ "UPI-41AH/42AH ไมโครคอนโทรลเลอร์แบบ Slave 8 บิต สำหรับอินเทอร์เฟซอุปกรณ์ต่อพ่วงสากล" (PDF) . Intel. พฤศจิกายน 1994. หน้า 2 . สืบค้นเมื่อ19 กรกฎาคม 2022 .
- ^เอกสารข้อมูลจำเพาะ (pdf)ตระกูล Philips MAB8400
บรรณานุกรม
- เอ็มซีเอส-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.
ลิงก์ภายนอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ อินเทล เอ็มซีเอส-48
ไมโครคอนโทรลเลอร์ซีรีส์ MCS-48 ซึ่งเป็นไมโครคอนโทรลเลอร์ ตัวแรกของIntel เปิดตัวครั้งแรกในปี 1976 สมาชิกรุ่นแรกได้แก่ 8048 , 8035และ8748โดย 8048...
การใช้งาน
รีจิสเตอร์ Intel 8048 [ 2 ]1 1 0 0 0 0 0 0 0 0 0 0 (ตำแหน่งบิต)รีจิสเตอร์หลัก เอ ตัวสะสม พีซี โปรแกรมเคาน์เตอร์ ตัวจับเวลา/ตัวนับ ที ตัวจับเวลา คำแสดงสถานะโปรแกรม ซีวายเอซีเอฟ0 ปริญญาตรี 1 ซ้อนกันธง ดีบีเอฟ เอฟ1 ฉันหมายเหตุ: รีจิสเตอร์และสแต็กอื่นๆ...
ชุดคำสั่ง
คำสั่งทั้งหมดของ MCS-48 มีความยาวหนึ่งหรือสองไบต์ โดย 70% ของคำสั่งมีความยาวหนึ่งไบต์ MCS-48 สามารถเข้าถึงหน่วยความจำโปรแกรมได้ 4096 ไบต์ หน่วยความจำ RAM 256 ไบต์ หน่วยความจำภายนอก 256 ไบต์ และที่อยู่พอร์ต I/O แปดพอร์ต...
ตัวอย่างโค้ด
โค้ดแอ สเซมเบลอร์ต่อไปนี้เป็นของซับรูทีนชื่อadd32ที่บวกจำนวนเต็ม 32 บิตสองจำนวนที่จัดเก็บใน ลำดับ ลิตเติลเอนเดียน โดยตัวบวกตัวหนึ่งชี้ด้วย R0 และตัวบวกอีกตัวและผลลัพธ์ชี้ด้วย R1 100 100 BA 04 102 97 103 เอฟ0 104 71 105 A1 106 18 107 19 108 อีเอ 03 10A 83 10บี...