Mục lục:
- Quân nhu
- Bước 1: Bảng mạch
- Bước 2: Lý thuyết lập trình
- Bước 3: Chương trình và đầu ra Arduino
- Bước 4: Kết luận
Video: Máy tính tối thiểu 6502 & 6522 (với Arduino MEGA) Phần 2: 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
Tiếp theo từ Thiết bị hướng dẫn trước đây của tôi, giờ đây tôi đã đặt 6502 vào bảng mạch dải và thêm Bộ điều hợp giao diện đa năng 6522 (VIA). Một lần nữa, tôi đang sử dụng phiên bản WDC của 6522, vì nó là phiên bản hoàn hảo cho 6502. Các chip mới này không chỉ sử dụng ít năng lượng hơn nhiều so với các phiên bản MOS ban đầu mà còn có thể chạy ở tốc độ chậm hơn hoặc thậm chí là chạy qua một chương trình mà không có bất kỳ vấn đề.
Chương trình Arduino ban đầu được viết bởi Ben Eater (người có nhiều video trên YouTube) và đã được tôi sửa đổi để đạt được kết quả này.
Quân nhu
1 x Bộ xử lý WDC W65C02
1 x Bộ điều hợp giao diện đa năng WDC W65C22
1 x 74HC00N IC (4 cổng NAND 2 đầu vào) hoặc tương tự
1 x rộng 10cm (35 dòng) bảng dải
2 x 40 chân cắm DIL
Ổ cắm DIL 1 x 14 chân
Chân tiêu đề PCB 2,54mm
Ổ cắm tiêu đề PCB 2,54mm
1 x 12mm Công tắc nút nhấn xúc giác tạm thời PCB được gắn SPST hoặc tương tự
1 x 1K điện trở
1 x 3K3 điện trở
2 x 0,1 uF tụ gốm
Đèn chiếu sáng nước 1 x 8 đường LED 5mm màu đỏ
Dây màu khác nhau cho các kết nối
8 dây liên kết nam - nam
Bước 1: Bảng mạch
Bảng mạch khá nhỏ gọn và mặt dưới cắm trực tiếp vào Arduino MEGA. Để đạt được điều này, các chốt được đẩy càng xa càng tốt vào các giá đỡ bằng nhựa trước khi được hàn vào mặt dưới của bảng. Các chân dài hơn có thể đã được sử dụng cho việc này, nhưng các chân tiêu chuẩn có nghĩa là bo mạch nằm chắc chắn trên đầu MEGA.
Tôi đã xếp các IC 6502 và 6522 để chúng sử dụng các rãnh của bảng mạch dải để kết nối với MEGA. Ngoài ra còn có một số kết nối cho 6502 ẩn dưới IC. Khi tạo bảng, việc đầu tiên cần làm là cắt 16 dải sẽ kết nối với hàng ổ cắm đôi của Arduino. 2 bên ngoài không cần phải cắt vì 5v và Gnd ở cả hai bên. Hàn tiếp theo trong 2 hàng 18 chân ở mặt dưới và 2 hàng 18 ổ cắm ở mặt trên.
Sau đó, các ổ cắm DIL được hàn tại chỗ và các rãnh cắt giữa chúng. Tôi có thể đã lưu kết nối bằng cách đặt chân 14 của 74HC00 trên cùng một rãnh với 5v. Tôi chỉ cắt các bản nhạc khi tôi chắc chắn rằng chúng cần phải có trong khi tôi đang hàn các dây kết nối. Tuy nhiên, mọi thứ không phải lúc nào cũng theo kế hoạch, ban đầu tôi thiết kế bảng mạch dải từ bảng mạch bánh mì trước đó bằng cách sử dụng các chân 2, 3 và 7 của Arduino, nhưng chúng không khớp với các lỗ trên bảng dải, vì vậy phải sử dụng chân 18, 31 và 37. Do đó, các liên kết trên bảng của tôi trên 31 và 37. Bạn có thể thắc mắc tại sao tôi không sử dụng một trong các chân không sử dụng (23, 24, v.v.) cho đồng hồ, điều này là do chúng không hỗ trợ ngắt, vì vậy phải sử dụng chân 18, 19, 20 hoặc 21. May mắn thay, 4 chân này thẳng hàng với các lỗ trên bảng dải và giữ cho mọi thứ nhỏ gọn. Chân 18 cũng ở xa nhất so với tất cả các dây khác.
Bạn cũng có thể nhận thấy rằng bảng đã hoàn thành của tôi không hoàn toàn giống với sơ đồ của tôi. Điều này là do tôi đã theo dõi sơ đồ của người khác. Do đó, các kết nối với 74HC00. Tôi cũng đã thêm một đèn LED nguồn và thêm 2 hàng ổ cắm cho Gnd và 5v cũng như một vài tụ điện nữa.
Tôi có thể đã kết nối 2 ổ cắm dữ liệu, nhưng điều này có nghĩa là có nhiều dây hơn qua bảng. Tôi đã chọn 8 dây liên kết để làm điều này như một biện pháp tạm thời.
Cổng A và B của 6522 có các ổ cắm được hàn vào các rãnh của chúng để có thể dễ dàng lắp các đèn LED vào.
Giờ đây, số lượng dây ít hơn nhiều so với phiên bản bảng mạch bánh mì.
Bước 2: Lý thuyết lập trình
6522 có hai cổng I / O cũng như nhiều tính năng khác, nhưng cổng A và B có thể dễ dàng truy cập. Để xuất dữ liệu trên cổng, thanh ghi hướng dữ liệu (DDR) cần được đặt tương ứng và dữ liệu được gửi đến chính cổng.
Với thiết lập ở trên, 6522 có giá $ E000.
Để xuất dữ liệu trên cổng B, DDR tại $ E002 được đặt thành $ FF (255 - tất cả các đầu ra) và dữ liệu được gửi đến $ E000.
Để xuất dữ liệu trên cổng A, DDR tại $ E003 được đặt thành $ FF (255 - tất cả các đầu ra) và dữ liệu được gửi đến $ E001.
Đoạn mã dưới đây tải $ FF vào thanh ghi 6502 A và ghi nó vào DDR B ở $ E002. Sau đó, nó tải $ 55 và ghi nó vào ORB. Mã được xoay (cho $ AA) và được ghi vào ORB. Chương trình nhảy trở lại $ 1005 và lặp lại liên tục. LƯU Ý: DDR chỉ cần được khởi tạo một lần.
Địa chỉ Hexdump Dissassembly
$ 1000 a9 ff LDA # $ ff $ 1002 8d 02 e0 STA $ e002 $ 1005 a9 55 LDA # $ 55 $ 1007 8d 00 e0 STA $ e000 $ 100a 6a ROR A $ 100b 8d 00 e0 STA $ e000 $ 100e 4c 05 10 JMP $ 1005
$ 55 trong hệ nhị phân là 010101010 và $ AA là 10101010 khiến các đèn LED luân phiên 4 bật, 4 tắt.
Sửa chữa nhanh và bẩn:
Thay thế 74HC00 (Cổng NAND đầu vào Quad 2) bằng 74HC08 (Cổng AND đầu vào Quad 2) và 6522 hiện có giá $ 6000 thay vì $ E000. Điều này di chuyển nó từ 32K trên xuống 32K thấp hơn của bộ nhớ địa chỉ của 6502.
Bước 3: Chương trình và đầu ra Arduino
Vì 6502 không có RAM để đọc nên Arduino đang cung cấp chương trình để nó đọc. Khi phát hiện xung đồng hồ trên chân 18, Arduino đưa dữ liệu chương trình lên bus dữ liệu (các chân Arduino 39, 41, 43, 45, 47, 49, 51 và 53). 6502 tạo ra các địa chỉ riêng của nó mà chỉ được Arduino giám sát trên các chân được đánh số chẵn từ 22 đến 52. Arduino cũng đang cung cấp xung đồng hồ trên chân 37. Dòng R / W của 6502 được giám sát trên chân 31.
Vì Arduino đang cung cấp dữ liệu, cho đến nay vẫn chưa thể lấy 6502 để nhập dữ liệu từ VIA (trừ khi bạn biết rõ hơn).
Chương trình Arduino ở dưới và đầu ra mẫu từ Màn hình nối tiếp ở trên.
Bước 4: Kết luận
Một lần nữa, tôi đã cố gắng chỉ ra cách thiết lập một "Máy tính 6502" tối thiểu.
Ở giai đoạn này, 6502 vẫn dựa vào Arduino để cung cấp cho nó một chương trình và một xung đồng hồ để nó chạy.
Nó là một bước xa hơn so với khi tôi thiết lập nó trên bảng bánh mì.
Tôi đã không sử dụng 74HC373 lần này nhưng 6522 phức tạp hơn để chốt kết quả đầu ra dữ liệu. Ngoài ra 6522 có hai cổng I / O.
Tôi dự định thực hiện dự án này xa hơn bằng cách cài đặt một số SRAM hoặc EEPROM.
Đề xuất:
Tự làm 8 kênh Analog Màn hình điện áp tối đa / tối thiểu: 13 bước
Tự làm 8 kênh Analog Max / Min Voltage Monitor: Hệ thống điều khiển và các thiết bị liên quan xử lý nhiều nguồn điện, chẳng hạn như đường phân cực hoặc pin và phải theo dõi dòng cao nhất (hoặc thấp nhất) trong một bộ nhất định. Ví dụ: chuyển đổi tải trong hệ thống cấp nguồn “nhiều pin” yêu cầu t
Máy tính tối thiểu 6502 (với Arduino MEGA) Phần 3: 7 bước
Máy tính tối thiểu 6502 (với Arduino MEGA) Phần 3: Tiếp tục xa hơn, bây giờ tôi đã thêm Chốt bát phân, 8 đèn LED hình chữ nhật và mảng điện trở 220 Ohm vào bảng mạch chính. Ngoài ra còn có một dây nối giữa chân chung của mảng và mặt đất, để có thể tắt đèn LED. Cổng 74HC00 NAND h
Máy tính tối thiểu 6502 (với Arduino MEGA) Phần 1: 7 bước
Máy tính tối thiểu 6502 (với Arduino MEGA) Phần 1: Bộ vi xử lý 6502 xuất hiện lần đầu tiên vào năm 1975 và được thiết kế bởi một nhóm nhỏ do Chuck Peddle lãnh đạo cho MOS Technology. Hồi đó, nó được sử dụng trong các bảng điều khiển video và máy tính gia đình bao gồm Atari, Apple II, Nintendo Entertainment System, BBC Micr
Cách làm cho máy tính xách tay của bạn tiết kiệm pin với hiệu suất giảm thiểu tối thiểu: 4 bước
Làm thế nào để máy tính xách tay của bạn tiết kiệm pin với mức giảm hiệu suất tối thiểu: Ai nói rằng máy tính xách tay của bạn phải chịu hiệu suất chậm để tiết kiệm một chút năng lượng? Hiệu suất hoặc tuổi thọ pin của bạn thay đổi như thế nào phụ thuộc vào tuổi máy tính xách tay, tuổi thọ pin cũng như các chương trình và cài đặt khác. Dưới đây là một số bước đơn giản để giúp tăng
Nhiệt kế kỹ thuật số dựa trên Picaxe với tối đa và tối thiểu: 13 bước
Nhiệt kế kỹ thuật số dựa trên Picaxe với Max và Min: (Vui lòng để lại tin nhắn, nhưng đừng quá quan trọng, đây là hướng dẫn đầu tiên của tôi !!) Đây là nhiệt kế tôi làm cho xe tải cắm trại của chúng tôi, để hiển thị nhiệt độ bên ngoài. Nó dựa trên chip Picaxe vì chúng rẻ và dễ sử dụng. Nếu điều này dành cho