Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 82 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
82
Dung lượng
3,53 MB
Nội dung
tổng công ty công nghiệp tàu thủy việt nam công ty khí - điện - điện tử tàu thủy _ Chơng trình KHCN cấp nhà nớc KC 06 "ứng dụng công nghệ tiên tiến sản xuất sản phẩm xuất sản phẩm chủ lực" Dự án Chế tạo số phần tử thiết bị điều khiển, đo lờng quan trọng tàu thủy phơng pháp chuẩn module ứng dụng công nghệ tiên tiến Mã số KC 06 DA.13.CN Chuyên đề: hồ sơ chuẩn hóa: module đo báo mức nớc két kS phạm thị thu phơng 5473-19 Hà Nội - 5/2005 Module đo báo mức nớc két Mục lục Lời nói đầu Chơng I Giới thiệu chung 1.1 Tổng quan đo lờng, điều khiển tự động 1.2 Vai trò ứng dụng đo lờng, điều khiển tự động tàu thuỷ 1.3 Yêu cầu thiết bị lắp đặt tàu Chơng II Hiện trạng ngành công nghiệp tàu thuỷ Việt Nam 2.1 Tình hình ứng dụng KHCN tàu thuỷ Việt Nam 2.2 Đặc điểm đo lờng, điều khiển tự động tàu thủy Việt Nam 10 2.3 Hớng phát triển đo lờng, điều khiển tự động tàu thuỷ Việt Nam năm tới 13 Chơng III 15 Nội dung hoàn thiện thiết kế kỹ thuật 15 3.1 ứng dụng số hoá 15 3.2 ứng dụng xử lý số vào xử lý thông tin đo 16 3.3 ứng dụng mạng truyền thông công nghiệp 20 3.4 Chuẩn hoá vào (I/O) 24 Chơng IV 27 nội dung hoàn thiện thiết kế công nghệ công nghệ chế tạo 27 4.1 Phần mềm thiết kế 27 4.2 Công nghệ phủ Epoxy 28 4.3 Công nghệ làm mạch in thiết kế vỏ hộp 35 a Công nghệ làm mạch in 35 b Công nghệ làm vỏ hộp 39 Chơng V 41 -1KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két Chuẩn mẫu mã kiểu dáng công nghiệp 41 5.1 Chuẩn kích thớc hộp panel 41 5.2 Chuẩn jack đấu ốc xiết cáp 42 5.3 Chuẩn thiết bị lắp đặt mặt panel 42 5.4 Chuẩn Font chữ ký hiệu 42 Chơng VI 44 Nội dung thiết kế chế tạo chuẩn module đo báo mức két nớc 44 6.1 Chức module 44 6.2 Sơ đồ khối tổng quan 44 6.3 Nguyên lý làm việc module 46 6.3 Chuẩn giao tiếp mạng tàu thuỷ 47 6.4 Sai số xử lý tín hiệu đo 49 a Các sai số gặp phải trình thiết kế 49 b Xử lý tín hiệu đo 50 c Bù sai số 52 6.5 Quá trình thử nghiệm chế tạo hoàn chỉnh 53 a Thử nghiệm xởng 53 b Qui trình bảo vệ mạch epoxy 54 c Thử nghiệm trờng 55 d Bảo dỡng trì hoạt động 56 Chơng VII 58 Hớng dẫn sử dụng lắp đặt 58 7.1 Giao diện thiết bị 58 7.2 Phạm vi ứng dụng module 61 Kết luận 64 Phụ lục 65 Bản đấu lắp dây chi tiết: 65 Sơ đồ tổng quan main xử lý: 66 Lu đồ giải thuật: 67 Phần mềm: 73 Tài liệu tham khảo 81 -2KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két Lời nói đầu Ngành vận chuyển hàng hải ngành vận chuyển quan trọng quốc gia Phơng tiện chủ yếu để vận chuyển tàu thuỷ, việc đại hoá công nghiệp tàu thuỷ đẩy mạnh việc giao lu hàng hoá quốc gia với Đặc biệt phơng tiện vận chuyển hàng hoá trọng tải nặng, với khối lợng vận chuyển lên đến hàng trăm nghìn Hiện tại, Việt Nam ngành công nghiệp hạn chế nhiều mặt, thể việc chế tạo trang thiết bị tàu thuỷ với tỷ lệ nội địa hoá thiết bị thấp Nhà Nớc Chính Phủ có chủ trơng triển khai cho tổng công ty tàu thuỷ Việt Nam nội địa hoá sản phẩm để thay đợc sản phẩm ngoại nhập Đáp ứng yêu cầu dự án nghiên cứu khoa học KC.06.DA 13.CN đợc công ty Cơ khí Điện Điện tử tàu thuỷ (Vinamarel) triển khai Dự án nhằm chế tạo thiết bị đo lờng, điều khiển tự động phục vụ tàu Mục tiêu đề dự án hoàn thiện công nghệ vốn có tàu thuỷ với chế tạo thiết bị lạc hậu Yêu cầu đề sản phẩm phải có tuổi thọ độ tin cậy cao, giá thành thấp nhiều so với nhập ngoại Trong chuyên đề giới thiệu qui trình thiết kế hoàn thiện module đo báo mức 15 két nớc Có khả giao tiếp với mạng toàn tàu, thành lập đợc hệ thống giám sát tập trung cách tích hợp module Đối với tàu có trọng tải lớn số két lên đến vài chục hàng trăm két lên Module tỏ có u điểm vợt trội Hà nội, ngày tháng năm 200 -3KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két Chơng I Giới thiệu chung 1.1 Tổng quan đo lờng, điều khiển tự động Đi song song với tiến KHKT ngành đo lờng, điều khiển tự động trải qua giai đoạn lịch sử phát triển khác nhau: Cho đến năm 40 kỷ trớc sở lý thuyết điều khiển tự động hình thành Giai đoạn đợc coi điều khiển cổ điển với phơng pháp khảo sát single input, single output (SISO) Xung quanh năm 1960 giai đoạn phát triển kỹ thuật điều khiển tự động gọi điều khiển đại (Modern Control) Khảo sát theo phơng pháp multi-input, multi-output (MIMO), hệ thống trở lên phức tạp Giai đoạn từ năm 1980 đến giai đoạn Điều khiển bền vững hệ đa biến Với ứng dụng toán học phần mềm máy tính đa phơng pháp thiết kế điều khiển để hệ kỹ thuật đảm bảo tính sử dụng có tác động nhiễu sai số, từ hình thành nhánh điều khiển nh nonlinear, adaptive, fuzzy, nơron Ngày với phát triển Khoa học Công nghệ ngành đo lờng, điều khiển tự động đạt thành tựu to lớn Nó đóng vai trò quan trọng định đến suất chất lợng sản phẩm, khả linh động, đáp ứng thay đổi thị trờng Hiện nay, thị trờng hệ điều khiển thay đổi nhanh chóng Một điều đáng lu ý trị giá phần cứng giảm nhng chức -4KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két ngày nhiều hơn, đồng thời trị giá phần mềm dịch vụ kèm tăng lên, điều định giá trị đóng góp trí tuệ vào sản phẩm ngày lớn Về mặt kỹ thuật, hệ điều khiển tự động thực đợc chức điều khiển truyền thống Các chức bao gồm kết hợp điều khiển giám sát thu thập số liệu, điều khiển theo mẻ, khối, điều khiển liên tục, điều khiển lai, điều khiển chất lợng Các chức đợc thực qua kết hợp phần cứng, phần mềm dịch vụ khác Các hệ thống điều khiển tự động hoá trình sản xuất xuất năm gần có số đặc điểm chung: + Tính mở + Các giao thức truyền thông đợc chuẩn hoá, tốc độ truyền liệu cao + Có hệ thống bus trờng (fieldbus) kết nối từ điều khiển xuống vào phân tán thiết bị trờng thông minh + Tích hợp hệ thống Một đặc điểm công nghệ cần điều khiển nhiều tham số dạng không điện: áp suất, nhiệt độ, lu lợng, tốc độ, tỷ lệ thành phầncác tham số có quan hệ chặt chẽ tác động đa chiều, biến đổi phức tạp ảnh hởng lớn tới chất lợng sản phẩm Để điều khiển thông số cần phải đo kiểm tra trạng thái chúng Vì hệ tự động khâu đo lờng đóng vai trò định tính chất sản phẩm đầu Đòi hỏi cao tính an toàn cần tự động hoá cao cần giám sát chặt chẽ thông tin Đặc biệt việc đo chất dễ gây cháy nổ -5KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két 1.2 Vai trò ứng dụng đo lờng, điều khiển tự động tàu thuỷ Trên tàu thuỷ hệ thống nhà máy khép kín nhng mang nhiều đặc điểm đặc trng riêng, với môi trờng làm việc thiết bị lắp ráp tàu có đặc điểm khác đặc điểm sau: + Đặc điểm khí hậu thay đổi thờng xuyên, môi trờng nhiễm mặn cao + Điều kiện tác động học lắc thân tàu, dao động sóng tác động lên tàu + Điều kiện độ tin cậy phục vụ thấp + Điều kiện giới hạn không gian, tập trung thiết bị diện tích hẹp + Điều kiện công tác an toàn, phòng tránh cháy nổ cấp cao phơng tiện hay nhà máy xí nghiệp Với điều kiện việc ứng dụng đo lờng, điều khiển tự động có đặc điểm chung nhng mang nhiều đặc điểm riêng Thể việc điều khiển hoạt động toàn tàu, ta cần đo xác định hàng nghìn thông số, chúng chia thành cụm sau: + Thông số khí hậu, môi trờng nh nhiệt độ không khí, độ ẩm, nồng độ muối không khí + Thông số máy máy phụ: nhiệt độ dầu bôi trơn, nhiệt độ nớc làm mát, nhiệt độ khí xả, áp suất dầu bôi trơn, tốc độ động + Thông số mức két: két nớc thải, két nớc thải, két nớc máy, két ballast, két nớc -6KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két + Thông số môi trờng toàn tàu nh độ ẩm nhiệt độ phòng làm việc, nhiệt độ, phòng máy + Đo thông số khói, nhiệt độ phòng để kiểm tra cháy nổ Thiết lập hệ điều khiển tàu: Những thông số quan trọng việc điều khiển hệ thống toàn tàu Đặc biệt tàu thông số lại nằm rải rác tàu, cần điều khiển tức thời chỗ nhiều tham số thích hợp thiết lập hệ thống điều khiển phân tán DCS (Disstributed Control System) Hệ điều khiển phân tán tàu với nhiều u điểm phù hợp tàu thuỷ khả quản lý đầu vào analog tốt, khả hỗ trợ nhiều giao thức truyền thông, độ tin cậy cao, sở liệu hệ sở liệu toàn cục thống nhất, khả mở rộng tích hợp cao, tuổi thọ ứng dụng lớn (15 20 năm) Với u điểm hệ DCS hoàn toàn đáp ứng yêu cầu giải pháp điều khiển tự động tổng thể Thiết lập hệ thống giám sát tập trung: Đặc biệt tàu trọng tải lớn với hàng nghìn thông số cần thiết lập hệ thống giám sát tập trung Trong hệ thống két tàu chiếm tỷ lệ lớn thông số giám sát Mỗi két có chiều cao đến chục mét, đồng thời gồm nhiều két chứa nớc nớc phục vụ tàu Nh việc giám sát mức két trở lên quan trọng khối lợng két cần theo dõi lớn việc giám sát báo động cần thiết thiếu Nhiều nhà thiết kế vận dụng đa hàng loạt hệ giám sát khác lên tàu thuỷ nhng hệ thống SCADA (Supervisor Control And Data Acquisition ) tỏ có u điểm vợt trội -7KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két 1.3 Yêu cầu thiết bị lắp đặt tàu Với tình hình thực tế môi trờng làm việc thiết bị sản phẩm đợc chế tạo lắp đặt tàu thuỷ phải đảm bảo đợc tiêu chí sau: - Nhỏ gọn, xác, đảm bảo mỹ quan công nghiệp - An toàn bền vững với môi trờng nớc biển, điện từ trờng cao, dao động lớn thân tàu - Tính chuẩn hóa cao, xây dựng theo tiêu chuẩn nhằm sản xuất hàng loạt lắp ghép module theo chuẩn - Độ tin cậy cao, có tính mở, tích hợp cao - Giá thành hoàn toàn thấp nhiều so với sản phẩm loại đợc nhập từ nớc tiên tiến mà chất lợng không thua -8KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két Chơng II Hiện trạng ngành công nghiệp tàu thuỷ Việt Nam 2.1 Tình hình ứng dụng KHCN tàu thuỷ Việt Nam Hiện nay, đợc quan tâm nhà nớc phủ, ngành công nghiệp tàu thuỷ Việt Nam thời gian qua có đầu t lớn có thành tựu vợt bậc, chí xuất tàu cho nớc tiên tiến, nhng dừng việc gia công phần vỏ lắp ráp thiết bị mua nớc Thực tế, chế tạo đợc vài phần tử đơn lẻ với chức hạn chế chất lợng thấp so với sản phẩm loại nớc tiên tiến Để đáp ứng nhu cầu cần thiết cho ngành công nghiệp tàu thuỷ cần phải thiết kế chế tạo hàng loạt sản phẩm mang đặc trng ngành tàu thuỷ, đặc biệt hệ thống điều khiển tự động Qua khảo sát thực trạng ngành tàu thuỷ đa mặt tồn sau: + Tồn nhiều hệ tàu thuỷ khác nhau, với nhiều tàu có độ an toàn thấp, hiệu hoạt động + Cha có nhiều sở nớc cung cấp thiết bị phục vụ tàu thuỷ, sở tham gia nghiên cứu chế tạo hệ thống thiết bị tàu + Khả đóng tàu trọng tải lớn hạn chế + Các tàu đóng chất lợng thấp so với nớc khu vực + Sự đầu t cha đùng mức cha có trọng tâm -9KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két Lu đồ giải thuật: Giải thuật Start Đặt địa bắt đầu chuơng trình Tắt còi , tắt đèn báo động Khai báo tham số Khai báo biến Khởi động ngắt Khởi tạo cho LCD Gán R2 = Lcall Scanchanel (chuơng trình quét kênh ) Lcall Scanchanel (chuơng trình báo động ) yes Có báo động no - 67 - KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két Giải thuật ngắt cho keypad Start Int0 = (P3.2 = 0) Up = no yes yes Lcall delay 50ms Inc R2 Down = R2 16 Lcall delay50ms Dec R2 no Gán R2 = R2 Desound Buzoff = Gán R2 = 15 End - 68 KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két Giải thuật quét kênh (Scanchanel) Start R2 = R2 = yes Lcall hienthi1 no Lcall hienthi2 yes R2 = no R2 = no Lcall hienthi4 yes yes Lcall hienthi3 R2 = no R2 = yes Lcall hienthi5 no Lcall hienthi6 yes R2 = no R2 = yes Lcall hienthi7 no Lcall hienthi8 yes R2 = no R2 = no Lcall hienthi10 yes yes Lcall hienthi9 R2 = 10 no R2 = 11 no Lcall hienthi12 yes yes Lcall hienthi11 R2 = 12 no R2 = 13 yes Lcall hienthi13 no Lcall hienthi14 yes R2 = 14 no R2 = 15 no yes Lcall hienthi15 End - 69 KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két Giải thuật quét kênh báo động (Scanalarm) Start Select Chanel1 Lcall Delay35ms Lcall ReadADC Write data R2 Lmax1 no yes no R2 Lmin1 yes Select Chanel2 Lcall Delay35ms Lcall ReadADC Select Chanel 15 Lcall Delay35ms Lcall ReadADC Write data 15 R2 Lmax15 no yes no Lcall Alarmlow R2 Lmin15 yes Lcall Alarmhigh End - 70 - KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két Giải thuật báo động mức cao (Alarmhigh) Start Setb Led (P3.4 = 1) yes Buzoff = Clear Sound (P3.3 = 0) no Lcall displayhigh End Giải thuật báo động mức thấp (Alarmhigh) Start Setb Led (P3.4 = 1) Buzoff = yes Clear Sound (P3.3 = 0) no Lcall Displaylow End - 71 KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két Giải thuật hiển thị tên két giá trị (Display) Start Select first row Clear the monitor Lcall tank name Select second row Read data Display value Lcall delay50ms End - 72 KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két Phần mềm: Làm việc với LCD 20x2 ký tự LCD có chơng trình dùng để điều khiển LCD: - BusyLCD: chơng trình kiểm tra trạng thái bận LCD - Datawrite: chơng trinh gửi liệu tới LCD - Dataread: chơng trinh đọc liệu từ LCD - Comwrite: chơng trình gửi lệnh điều khiển tới LCD Trớc LCD làm việc cần khởi tạo cho LCD LCDsetup: mov P2,#38h acall comwrite acall delayms mov P2,#06h acall comwrite acall delayms mov P2,#0fh acall comwrite acall delayms mov P2,#01h acall comwrite acall delayms ret ;00111100 dung mode bit ;loai 5x7 ;00000110 dat che tang tro ;00001111 h/hit,bat tro ;nhay tro ;xoa hien thi Các chơng trình điều khiển LCD làm việc BusyLCD: clr EC setb P2.7 setb WR clr RD lb1: clr EC setb EC jb P2.7,lb1 clr EC ret Datawrite: mov P2,a setb RD clr WR nop setb EC - 73 KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két nop nop clr EC acall busyLCD ret Dataread: mov P2,a setb RD setb WR nop setb EC nop nop clr EC acall busyLCD ret Comwrite: clr RD clr WR nop setb EC nop nop clr EC lcall busyLCD ret Các chơng trình đặt vị trí trỏ điều khiển hiển thị LCD BEGLINEONE: mov P2,#80h acall comwrite acall delayms ret BEGLINETWO: mov P2,#0c0h acall comwrite acall delayms ret Cleardisplay: mov P2,#01h acall comwrite acall delayms acall beglineone ret Ketthuc: mov P2,#00001100b acall comwrite acall delayms ret Dichtrai: mov P2,#00011011b ;dia chi cua dong ;dia chi cua dong ;xoa hien thi ;tro o vi tri dau tien ;dung khong hien thi tro ;dich trai - 74 KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két acall comwrite acall delayms sjmp dichtrai ret Làm việc với phím điều khiển dùng ngắt Khai báo ngắt phần cứng: clr EA mov IE,#81h mov IP,#01h ;uu tien ngat ngoat, ;cho phep ngat ngoai ;uu tien ngat ngoai ;tac dong canh am setb EA setb IT0 Chơng trình phục vụ ngắt: ;quet phim IE0ISR: jnb P1.5,tang ;tang kenh jnb P1.6,giam ;giam kenh mov a,R2 mov R4,a ;nut desound endkey: clr buzoff reti ;nut tang tang: lcall delayms inc R2 cjne R2,#17,testmax mov R2,#16 ajmp endkey testmax: jc endkey mov R2,#1 ajmp endkey ;nut giam giam: lcall delayms dec R2 cjne R2,#0,testmin mov R2,#1 sjmp endkey testmin: jnc endkey mov R2,#15 ajmp endkey - 75 KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két Chơng trình demo chức làm việc LCD hienthi0: clr P1.0 clr P1.1 clr P1.2 clr P1.3 lcall delayns mov P2,#01h lcall comwrite lcall delayms lcall beglineone mov A,#'S' lcall datawrite lcall delayms mov A,#'T' lcall datawrite lcall delayms mov A,#'B' lcall datawrite lcall delayms mov A,#11h lcall datawrite lcall delayms mov A,#'S' lcall datawrite lcall delayms mov A,#'E' lcall datawrite lcall delayms mov A,#'T' lcall datawrite lcall delayms mov A,#'T' lcall datawrite lcall delayms mov A,#'L' lcall datawrite lcall delayms mov A,#'I' lcall datawrite lcall delayms mov A,#'N' lcall datawrite lcall delayms mov A,#'G' lcall datawrite lcall delayms mov A,#11h lcall datawrite mov A,#'T' lcall datawrite lcall delayms mov A,#'K' lcall datawrite - 76 KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két lcall delayms mov P2,#0c0h lcall comwrite mov A,#'V' lcall datawrite mov A,#'a' lcall datawrite mov A,#'l' lcall datawrite mov A,#'u' lcall datawrite mov A,#'e' lcall datawrite mov A,#':' lcall datawrite lcall IE1ISR lcall value lcall delayhs ret ;dia chi cua dong 2:11000000 Chơng trình xử lý liệu hiển thị lên LCD chia: mov X1,kq1 mov a,X1 cjne a,#0,chia1 mov X1,#0 chia1: mov X0,kq0 mov y1,#0h mov y0,#29h acall udiv16 mov R0,b2 mov R1,X0 ret ;kq byte low value: mov a,R0 acall htso acall delayms mov b,R1 mov a,#64h mul ab mov X0,a mov X1,b mov y1,#0h mov y0,#29h acall udiv16 ;phan du ;ket qua phep nhan la a ;ket qua phep nhan la b mov R0,b2 mov a,R0 acall htso - 77 KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két mov a,#6dh acall datawrite acall delayms mov a,#6dh acall datawrite acall delayms ret ;hien thi don vi hexbcd: inc a movc a,@a+pc ret db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;0-9 db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;10-19 db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;20-29 db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;30-39 db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;40-49 db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;50-59 db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;60-69 db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;70-79 db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;80-89 db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h ;90-99 ;============================================================ ; subroutine binasc ; binasc takes the contents of the accumulator and ; converts it into two ascii characters (hex numbers) ; The result is returned in the accumulator (the high ; digit) and in register R2 (the low digit) ; ; input : binary value in the accumulator ; output : ASCII codes of the digits in acc and r3 ; destroys: flags ;============================================================ binasc: mov R3,a ; save in r3 anl a,#0fh ; convert least sig digit add a,#0f6h ; check num/chr and adjust it jnc noadj1 ; if - then re_adjust add a,#07h ; else A - F then add_on 41h noadj1: add a,#3ah ; make ascii xch a,r3 ; put result in r3 swap a ; convert most sig digit anl a,#0fh ; look at least sig half of acc add a,#0f6h ; adjust it jnc noadj2 ; if a-f then re-adjust add a,#07h noadj2: add a,#3ah ; make ascii ret ;============================================================ ; subroutine USUB16 ; 16-Bit Unsigned subtraction ; input : internal registers X1:X0 and Y1:Y0 hold the high - 78 KC.06.DA.13.CN-MDL: WL.04 Module đo báo mức nớc két ; and low bytes of the unsigned words ; output :internal registers Z1:Z0 hold high and low bytes ; of the signed word Z=X-Y Addressable bit ZOV is set ; if the result (Z) is out of range (if an external ; borrow is produced) ; destroys:a,flags ;============================================================== USUB16: clr C ; clear carry flag mov a,X0 ; load X low byte into accumulator subb a,Y0 ; subtract Y low byte mov Z0,a ; put result in Z low byte mov a,X1 ; load X high byte into accumulator subb a,Y1 ; subtract Y high byte with the borrow ; from low byte operation mov Z1,a ; save result in Z high byte mov psw.2,C ; set ZOV if an external borrow is ; produced ret ;============================================================== ; subroutine UDIV16 ; 16-Bit Unsigned Division ; ; input : internal registers X1:X0 and Y1:Y0 hold the ; unsigned dividend and divisor ; output : internal registersZ1:Z0 hold the quotient of ; Z=X/Y internal registers X1:X0 hold the remainder ; addressable bit ZOV is set if Y=0, i.e., the result ; is out of range ; b1 and b0 store the high and low bytes of the ; partial remainder b3 and b2 hold the partially ; computed quotient ; calls : SUB16 ; destroys: a, b0, b1, b2, b3, flags ;============================================================== UDIV16: mov a,Y1 ; get divisor high byte orl a,Y0 ; OR with low byte jnz div16_OK ; divisor OK if not setb psw.2 ; else, overflow ret div16_OK: mov b3,#0 ; r3:r2 partial quotient mov b2,#0 mov b1,#0 ; r1:r0 holds the "1