Điện - Điện tử - Viết chương trình và dịch ssembler cho các chương trình vi xử lý

pdf 10 trang vanle 2880
Bạn đang xem tài liệu "Điện - Điện tử - Viết chương trình và dịch ssembler cho các chương trình vi xử lý", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfdien_dien_tu_viet_chuong_trinh_va_dich_ssembler_cho_cac_chuo.pdf

Nội dung text: Điện - Điện tử - Viết chương trình và dịch ssembler cho các chương trình vi xử lý

  1. LUÂÄN VĂN TỐT NGHIỆP 26 Giao tiếp giữa máy tính và thiết bị ngoại vi có thể bằng một trong các cách sau: I. GIAO TIẾP BẰNG SLOT-CARD: Trong máy tính, trên main board hoặc IO-card, thường chế tạo sẵn các rãnh cắm (slot) cho phép mở rộng bộ nhớ, cài đặt thêm phần cứng, mở rộng phạm vi ứng dụng cho máy tính. Để sử dụng được các rãnh cắm này, cần phải có tài liệu chính xác về các thông số cần thiết, ví dụ địa chỉ của cổng là bao nhiêu, thuộc loại rãnh bao nhiêu bit, theo chuẩn nào, kich thước phần mạch in cắm vào , độ dày mạch in, rãnh nguồn, rãnh dữ liệu, rãnh dự trữ, II. GIAO TIẾP BẰNG CỔNG MÁY IN: Mọi máy tính đều có cổng máy in đặt phía sau máy. Cổng máy in không chỉ để kết nối với máy in mà còn có thể kết nối với nhiếu loại thiết bị ngoại vi khác cho mục đích đo lường và điều khiển, Cổng máy in là loại cổng 25 chân, dữ liệu truyền song song, dễ kết nối, các địa chỉ của cổng của các máy tính hầu như giống nhau. Giao tiếp bằng cổng máy in gọi là giao tiếp song song bất đồng bộ. Trong kiểu giao tiếp này, nới phát tín hiệu và nới nhận tín hiệu đều có xung báo phát và xung báo nhận, tần số xung clock tại nơi phát và tần số xung clock tại nơi thu không cần quan tâm. III. GIAO TIẾP BẰNG CỔNG COM: Cổng COM được sử dụng khá phổ biến. Dữ liệu truyền ở cổng này thuộc dạng dữ liệu nối tiếp. Tín hiệu truyền ở cổng này có thể truyền đi xa nhờ có cấu tạo đường dây cáp ít sợi hơn cổng song song, mức áp tín hiệu cao. Cổng COM có loại 9 chân và loại 25 chân như cổng song song, có tổng cộng 8 đường dẫn tín hiệu không kể đường nối đất, từ máy tính đi ra là loại phích cắm nhiều chân khác với cổng song song. Cổng COM, còn gọi là cổng nối tiếp theo chuẩn RS-232. Chuẩn RS-232 từ năm 1969 được chấp nhận chuyên dùng cho truyền số liệu và các đường nối kiểm tra giữa terminal và moderm, tốc độ cực đại là 20Kbps, với khoảng các tối đa không quá 15m. Đây là lại giao tiếp không cân bằng có driver. Mức áp tín hiệu trên đường dây là +15V/-15V. Trên đường dây, mức logic 1 có điện áp từ 5V đến 15V và mức logic 0 từ –5V đến –15V. mức áp này không tương thích TTL do đó thường phải sử dụng thêm các IC chuyên dụng MC1488, MC1489 để thay đổi mức logic cho tương thích TTL. Giao tiếp nối tiếp còn chia ra nối tiếp bất đồng bộ và nối tiếp đồng bộ (sử dụng các chuẩn UART dùng CMOS 6402, USART dùng ngoại vi 8251, chuẩn ACIA dùng NMOS 6850 ). IV. CHỌN PHƯƠNG PHÁP GIAO TIẾP VÀ CỔNG KẾT NỐI: Trong đề tài này, vì lý do thời gian có hạn, nên người thực hiện đề tài chỉ có thể sử dụng một phương pháp truyền dữ liệu, đó là truyền dữ liệu song song bất đồng bộ qua cổng máy in LPT1. Cổng LPT1 là một cổng song song, dữ liệu được truyền với tốc độ khá cao từ máy tính, do đó tốc độ truyền dữ liệu chung chỉ còn phụ thuộc vào Kit.
  2. LUÂÄN VĂN TỐT NGHIỆP 27 Hình dạng một cổng LPT1 được cho trong hình sau: 13 1 25 14 Hình 11: Cổng LPT (DB25). Bảng 5: Bố trí chân ở cổng LPT ở máy tính: Chân Ký hiệu Vào/Ra Mô tả 1 STROBE Output Byte được in 2 D0 Output Đường dữ liệu được in D0 3 D1 Output Đường dữ liệu được in 4 D2 Output Đường dữ liệu được in 5 D3 Output Đường dữ liệu được in 6 D4 Output Đường dữ liệu được in 7 D5 Output Đường dữ liệu được in 8 D6 Output Đường dữ liệu được in 9 D7 Output Đường dữ liệu được in 10 Ack Input Acknowledge 11 Busy Input 1:máy in bận 12 PE Input Hết giấy 13 SCLT Input Select 14 AF Output Autofeet 15 ERROR Input Error 16 INIT Output 0: đặt lại máy in 17 SLCTIN Output Select in 18 GND Nối đât 19 GND 20 GND 21 GND 22 GND 23 GND 24 GND 25 GND Cổng máy in LPT1 có địa chỉ cơ bản là 378Hex và cổng LPT2 có địa chỉ cơ bản là 78Hex. Các thanh ghi trong máy tính kết nối với cổng máy in: Thanh ghi dữ liệu (Data register, địa chỉ = địa chỉ cơ bản )
  3. LUÂÄN VĂN TỐT NGHIỆP 28 D D D D D D D D D0 (Pin 2) D1 (Pin 3) D2 (Pin 4) D3(Pin 5) D4 Thanh ghi trạng thái(status register, địa chỉ = địa chỉ cơ bản +1) D D D D D 0 0 0 7 6 5 4 3 ERROR(Pin 15) SLCT(Pin 13) PE(Pin 12) ACK(Pin 15) BUSY(Pin 11) Thanh ghi điều khiển(control register, địa chỉ = địa chỉ cơ bản + 2) D D D D D D D D 7 6 5 4 3 2 1 0 D0 (Pin 1) D1 (Pin 14) D2 (Pin 16) D3(Pin 17) IRQ-Enable Hình 12: Kết nối các thanh ghi ở cổng máy in của máy tính PC. Cổng LPT là cổng ghép nối song song, tất cả những đường dẫn của cổng này đều tương thích TTL, nghĩa là chúng đều cung cấp một mức áp nằm giữa 0 và 5V. Do đó, rất thích hợp cho kết nối với Kit. Nhìn vào bảng công dụng các chân của cổng LPT và 3 thanh ghi của máy tính, ta thấy có thể sử dụng thanh ghi data là thanh ghi phát, có nhiệm vụ truyền dữ liệu ra ngoài, và thanh ghi điều khiển sẽ gởi tín hiệu điều khiển cho Kit, còn thanh ghi trạng thái sẽ nhận tín hiệu báo trạng thái hiện tại của Kit về máy tính. Để kết nối giữa Kit và máy tính trong trường hợp này, phải sử dụng IC giao tiếp ngoại vi 8255 để xuất và nhận dữ liệu. Còn về phía máy tính, có thể dùng ngôn ngữ lập trình C để đọc và xuất các thanh ghi dữ liệu. Để kết nối đơn giản, có thể khởi tạo 8255 ở mode 0 với port A đọc thanh ghi data, port B xuất trạng thái trả về cho thanh ghi trang thái, và port C dùng để nhận tín hiệu điều khiển từ thanh ghi điều khiển của máy tính.
  4. LUÂÄN VĂN TỐT NGHIỆP 29 Chương V: VIẾT CHƯƠNG TRÌNH VÀ DỊCH SSEMBLER CHO CÁC CHƯƠNG TRÌNH VI XỬ LÝ.
  5. LUÂÄN VĂN TỐT NGHIỆP 30 I. TẠI SAO PHẢI SỬ DỤNG CHƯƠNG TRÌNH DỊCH ASSEMBLER? Khi học vi xử lý, thì mọi sinh viên đều phải học về số Hex, đổi số giữa các hệ, các số bù, , các phép toán số học và logic trên các biến. Ngoài ra, còn phải học môt loại ngôn ngữ máy khó nhớ, chỉ được viết bằng các ký tự Hex, để nạp vào Kit. Một cách khác để tạo ra các ký tự khó nhớ này là sử dụng một chương trình dịch Assembler để dịch từ một file có phần mở rộng là “asm” sang một file có phần mở rộng “prn” chứa ngôn ngữ máy. Đây là lý do phải sử dụng một chương trình dịch Assembler. Với mục đích này, người sử dụng không cần thiết phải biết nhiều về ngôn ngữa Assembly mà chỉ cần một số kiến thức nhỏ để gọi chương trình dịch. Đây chính là cách chính để giảm thiểu thời gian trong việc dịch và nhập dữ liệu vào Kit. II. Một số điều cần lưu ý khi sử dụng chương trình dịch Assebler: Để viết một chương trình và nhập vào Kit, thì đầu tiên phải biết yêu cầu của chương trình, viết lưu đồ tổng quát, lưu đồ chi tiết và tiến hành viết chương trình. tất cả các bước trên đều phải sử dụng lại với cách làm mà đề tài này nêu lên. Tuy nhiên, từ bước dịch từ ngôn ngữ gợi nhớ sang mã máy thì có nhiều điểm khác nhau: 1) Khi viết chương trình ở ngôn ngữ gợi nhớ (ngôn ngữ Assembly), cần phải tuân thủ một số qui định riêng để có thể dùng một chương trình dịch Assembler. a) Phải dùng từ khóa “Org” ở đầu và “End” ở cuối chương trình, nhớ chữ end không có chấm cuối câu. b) Tất cả các lệnh ở dạng gợi nhớ phải ghi chính xác. c) Ở cuốimột số Hex phải ghi ký tự ‘h’ không kể in hay thường. d) Nếu một số Hex bắt đầu bằng một ký tự Alphabet, thì phải thêm liền ngay trước số hex đó một con sô ‘0’. e) Một nhãn khai báo không được vượt quá 6 ký tự. f) Và một số qui định khác. 2) Nhập chương trình vào máy tính: để nhập dể dàng và thuận tiện, có thể sử dụng Norton ở chế độ Edit, và lưu thành một file có phần mở rộng là “asm”. 3) Dùng chương trình dịch Assembler để dịch file trên thành một file mới có phần mở rộng la “prn”, file cũ không thay đổi. 4) Sau đó dùng chương trình download để nạp file vào Kit. Tất cả các yêu cầu trên đều rất dễ nhớ nhờ đi theo một trình tự nhất định một các tự nhiên. Norton là một chương trình tiện ích rất phổ biến. Chương trình Download có giao diện đã được tối giản nhất. III. FILE *.PRN, NỘI DUNG, ĐẶC ĐIỂM, VÀ DỮ LIỆU CHÍNH: Chương trình dịch sẽ dịch từ một file x.asm sang môt file x.prn. Xem nội dung một file có phần ở rộng prn trong ví dụ sau:
  6. LUÂÄN VĂN TỐT NGHIỆP 31 Giả sử dịch file x.asm sau: Org 0000h MVI A,00h STA 0A001h MVI A,80h STA 0A001h MVI A,06h STA 0A000h HLT Thì sẽ được file x.prn sau: END MACRO-80 3.4 01-Dec-80 PAGE 1 Org 0000h 0000' 3E 00 MVI A,00h 0002' 32 A001 STA 0A001h 0005' 3E 80 MVI A,80h 0007' 32 A001 STA 0A001h 000A' 3E 06 MVI A,06h 000C' 32 A000 STA 0A000h 000F' 76 HLT MACRO-80 3.4 01-Dec-80 PAGE S Macros: Symbols: No Fatal error(s) Trong đó, nội dung cần nạp vào Kit là: 3E 00 32 A001 3E 80 32 A001 3E 06 32 A000 76 Nhưng với thứ tự là: 3E 00 32 01 A0 3E 80 32 01 A0 3E 06 32 00 A0 76
  7. LUÂÄN VĂN TỐT NGHIỆP 32 Vấn đề đặt ra là làm thế nào để lọc ra được nội dung chỉ trên theo thứ tự đúng như nội dung nạp vào Kit. Vấn đề này sẽ được giải quyết ở chương kế: Chương trình DownLoad.
  8. LUÂÄN VĂN TỐT NGHIỆP 33 Chương VI: CHƯƠNG TRÌNH DOWNLOAD
  9. Change V -X ie F w e D r P LUÂÄN VĂN TỐT NGHIỆP 34 w Click to buy NOW! w m o w c .d k. ocu-trac I. ĐÔI NÉT VỀ NGÔN NGỮ C: I.1. Nguồn gốc: C được phát minh và cài đặt đầu tiên bởi Dennis Ritchie chạy trên hệ điều hành Unix, được Martin Richards phát triển trong thập niên 70. C sử dụng chuẩn ANSI được đề nghị lần cuối cùng vào năm 1989. I.2. C là ngôn ngữ bậc trung: Được xem là ngôn ngữ bậc trung vì C tổ hợp những thành phần tốt nhất của các ngôn ngữ bậc cao với sự điều khiển và tính linh hoạt của ngôn ngữ Assembly. C cho phép thao tác trên các bit, các byte và các địa chỉ – những phần tử cơ bản với các chức năng của máy tính, mã của chương trình C cũng mang tính khả chuyển. I.3. C là ngôn ngữ của lập trình viên: C được các lập trình viên làm việc thật sự tạo ra, thúc đẩy và kiểm tra, để rồi C lại mang về cho họ những gì họ mong muốn: ít hạn chế, ít lời phàn nàn, các cấu trúc khối, các hàm đơn lẻ, và môt tập đóng kín những từ khóa. II. CÁC PHƯƠNG PHÁP LẬP TRÌNH: II.1. Phương pháp lập trình lệnh: Chương trình là một dãy các lệnh. Lập trình là xác định các lệnh cùng với thứ tự các lệnh đó. Phương pháp này chỉ có giá trị với chương trình lệnh ( < 100 lệnh). II.2. Phương pháp lập trình thủ tục: Chương trình là một hệ thống các thủ tục và hàm, mỗi thủ tục hay hàm là một dãy các lệnh. Lập trình là đi xác định những thủ và hàm, và xác định các lệnh bên tring thủ tục và hàm đó. Phương pháp này tiến bộ hơn phương pháp trên. II.3. Phương pháp lập trình đơn thể: Chương trình là một hệ thông các đơn thể (module). Mỗi đơn thể là một hệ thống thủ tục, hàm có cùng ý nghĩa nào đó. Mỗi thủ tục và hàm là một dãy các lệnh. Các đơn thể có được lưu trữ và biên dịch phân cách, nên dễ dàng lắp ghép. Tuy nhiên phương pháp này còn thiếu tự nhiên, ngài ra nếu chương trình quá rộng và quá sâu thì không thể quản lý được. II.4. Phương pháp lập trình hướng đối tượng: Chương trình là một hệ thống các đối tượng, các đối tượng trong thực tế được diễn tả bằng ngôn ngữ tin học. Lập trình là đi xác định những đối tượng cùng những quan hệ của chúng. Tính tự nhiên của phương pháp này làm nó trở nên sinh động, mỗi đối tượng có thuộc tính và hành động riêng như trong thực tế do đó dễ hình dung, dễ quản lý. Ngoài ra, nhờ dựa trên các đối tượng nên tính tiến hóa và mở rộng rất cao.
  10. Change V -X ie F w e D r P LUÂÄN VĂN TỐT NGHIỆP 35 w Click to buy NOW! w m o w c .d k. ocu-trac Trong phần viết chương trình giao diện vi tính, người viết đã chọn phương pháp lập trình hướng đối tương. Nhờ những ưu điểm trên, phương pháp này cho phép bổ sung một cách dễ dàng, tạo điều kiện thuận lợi cho việc bổ sung sau này nếu cần. III. PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG C III.1. Các khái niệm: Thế giới thực Phương pháp lập trình Ngôn ngữ lập trình Đối tượng bất kỳ trong thế Đối tượng Biến có kiểu lớp giới thực (tương tự kiểu cấu trúc) Khái niện chung của một Lớp đối tượng Kiểu lớp(Class-tương tự đối tương kiểu cấu trúc) Thuộc tính được quan tâm Thuộc tính Thành phần dữ liệu của của đối tượng kiểu lớp Khả năng có thể thực hiện Hành động Thủ tục, hàm của kiểu lớp của một đối tương III.2. Phương pháp: III.2.1. Xác định các lớp đối tượng, quan hệ qua các lớp này (xây dựng sơ đồ lớp) III.2.2. Thiết kế các lớp (biểu diễn trên máy tính) Thành phần dữ liệu (thuộc tính). Thành phần xử lý (hành động). III.2.3. Cài đặt các lớp: Viết hàm main() III.2.4. Thử nghiệm. IV. Thực hiện viết chương trình DownLoad: IV.1. Yêu cầu của giao diện: Cho phép chọn file sẽ truyền. Bằng cách gõ vào tên file Bằng cách click chuột để chọn Xem trước vùng nhớ cần thiết sẽ sử dụng ở RAM ở Kit 8085 Chọn cổng truyền. Truyền file có kiểm tra. IV.2. Chọn ngôn ngữ lập trình: Chọn ngôn ngữ C viết ở môi trường Dos Lý do: yêu cầu thiết bị (máy tính) không cao, phù hợp kiến thức người viết. Ưu điểm: C là một công cụ lập tình gọn nhẹ, chạy nhanh, hiệu quả và khép kín. Vì sử dụng C ở môi trường Dos nên không cần phải kiểm soát các driver như nếu viết ở môi trường Windows. Ngôn ngữ C cho phép truy cập trực tiếp các port, dể dàng kiểm soát từng bit dữ liệu. Khuyết điểm: Vùng nhớ trống ở môi trường Dos chỉ có 640Kbyte, và sau khi khởi động xong (ở màn hình dos) thì chỉ còn lại trên dưới 400Kbyte, không cho phép tạo một giao diện phức tạp. Độ phân giải ở chế độ graph trong Dos không thể so sánh với môi trường Windows.