Menu English Ukrainian Tiếng Nga Trang Chủ

Thư viện kỹ thuật miễn phí cho những người có sở thích và chuyên gia Thư viện kỹ thuật miễn phí


ENCYCLOPEDIA VỀ ĐIỆN TỬ TRUYỀN THANH VÀ KỸ THUẬT ĐIỆN
Thư viện miễn phí / Sơ đồ của các thiết bị vô tuyến-điện tử và điện

Lập trình mô-đun hệ thống điều khiển trên MCS48. Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện

Thư viện kỹ thuật miễn phí

Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện / Bộ vi điều khiển

Bình luận bài viết Bình luận bài viết

Được biết, cùng một bộ vi điều khiển có thể điều khiển cả thiết bị công nghệ phức tạp và máy xay cà phê gia dụng hay đồng hồ điện tử. Việc thích ứng với một đối tượng cụ thể được thực hiện bằng cách thay đổi chương trình vi điều khiển, phần cứng hầu như không bị ảnh hưởng. Bài báo đề xuất được dành cho các kỹ thuật lập trình cho các bộ vi điều khiển dòng MCS48, được sử dụng rộng rãi trong các hệ thống điều khiển cho các mục đích khác nhau. Các quy định chính của nó cũng có giá trị đối với các thiết bị hiện đại hơn.

Việc phát triển và hiện đại hóa các chương trình điều khiển sẽ thuận lợi hơn rất nhiều nếu chúng được xây dựng theo nguyên tắc mô-đun. Trong trường hợp này, sau khi có được một số kinh nghiệm và quan trọng nhất là thư viện các mô-đun đã sửa lỗi của riêng chúng tôi, việc lập trình một hệ thống điều khiển mới (CS) bắt nguồn từ việc thay thế một số mô-đun của một chương trình đã tồn tại và đã sửa lỗi, đồng thời có thể bổ sung cho nó các đoạn có tính đến các chi tiết cụ thể của một hệ thống cụ thể.

Nguyên tắc này được đưa vào cấu trúc của nhiều ngôn ngữ cấp cao (PASCAL, C++) và lập trình viên buộc phải tuân theo nó theo đúng nghĩa đen. Thật không may, ASSEMBLERS (bao gồm cả MSS48), trong khi cho phép lập trình viên tự do lựa chọn phương tiện và phương pháp giải quyết vấn đề hơn, theo quy định, hoàn toàn không giám sát việc tuân thủ kỷ luật lập trình. Điều này thường dẫn đến việc tạo ra các chương trình khó hiểu đến mức ngay cả tác giả của chúng cũng không thể hiểu được những gì đã được thực hiện sau một thời gian, chưa kể đến việc sử dụng các đoạn đã sửa lỗi trong các chương trình khác. Tuân thủ có ý thức các khái niệm mô-đun phổ biến tạo điều kiện thuận lợi và tăng tốc đáng kể việc lập trình vi điều khiển. Một ví dụ về chương trình mô-đun điển hình cho CS được đưa ra trong bảng. Cú pháp của nó tương ứng với LẮP RÁP dạng bảng TASM cho bộ vi xử lý 8048.

Như bạn có thể thấy, ở phần đầu của văn bản chương trình, các chỉ thị EQU đặt tên cho các hằng số và gán các giá trị. Việc sử dụng các hằng số được đặt tên luôn được ưu tiên hơn so với việc chỉ định trực tiếp các giá trị số trong các hướng dẫn bộ xử lý thực thi. Ví dụ: thời gian trễ được thực hiện bởi một trong các chương trình con được thảo luận bên dưới được xác định bằng ba số. Chúng được cho bởi các hằng số N1, N2 và N3. Nếu bạn cần thay đổi tốc độ cửa trập, chỉ cần chỉ định các giá trị mới trong toán tử EQU là đủ. Nếu không, người ta sẽ phải xem toàn bộ chương trình để biết các hướng dẫn có toán hạng bằng các số này, quyết định xem mỗi hướng dẫn có đề cập đến độ trễ thời gian hay không và chỉ ra các giá trị mới trong các trường hợp cần thiết.

Rõ ràng, công việc như vậy đòi hỏi rất nhiều thời gian và thường không phải là không có sai sót. Nó đặc biệt phức tạp bởi thực tế là một số lệnh có thể không sử dụng toàn bộ số, nhưng, ví dụ, byte cao hoặc byte thấp của nó. ASSEMBER đã ở giai đoạn dịch chương trình có thể tính toán một số hằng số dựa trên giá trị của các hằng số khác. Khả năng này được minh họa bằng cách tính các byte cao (N3N) và thấp (N3L) của số NXNUMX.

Tiếp theo, chương trình cấp phát bộ nhớ cho các biến. Chúng làm điều này với cùng các chỉ thị EQU, nhưng không giống như các mô tả về hằng số, chúng không chỉ định giá trị số của các biến mà là địa chỉ của các ô nhớ mà chúng chiếm giữ.

Lập trình mô-đun hệ thống điều khiển trên MCS48
(bấm vào để phóng to)

Nếu NGƯỜI LẮP RÁP cho phép, không nên bỏ qua khả năng sử dụng macro. Mỗi trong số chúng là một hướng dẫn mới thực hiện một thao tác không được cung cấp trực tiếp bởi hệ thống hướng dẫn của bộ xử lý. Khi mô tả lệnh macro, lập trình viên đặt tên cho nó (tất nhiên, tên này không trùng với tên của bất kỳ lệnh "thực") nào và chỉ định các hành động cần thiết dưới dạng Chuỗi lệnh máy. Mỗi khi nó gặp một lệnh macro trong một chương trình, ASEMBLER sẽ thay thế lệnh đó bằng trình tự đã chỉ định. Trong ví dụ này, hai macro được sử dụng. Một trong số chúng chuyển nội dung của bộ tích lũy sang ô nhớ dữ liệu được chỉ định bởi tham số macro và cái còn lại - ngược lại.

Sau khi bật nguồn (hoặc tín hiệu đặt lại được đưa ra), bộ vi điều khiển bắt đầu thực hiện chương trình từ địa chỉ 3. Địa chỉ này thường được sử dụng để viết lệnh nhảy vô điều kiện đến điểm bắt đầu chương trình thực tế (trong trường hợp này là nhãn START). Điều này là cần thiết vì các ngắt phần cứng luôn chuyển điều khiển đến các địa chỉ cố định 7 và XNUMX (đối với các loại vi điều khiển khác thì địa chỉ có thể khác nhưng chúng vẫn nằm ở đầu bộ nhớ chương trình). Các lệnh chuyển đổi vô điều kiện sang các quy trình dịch vụ của các ngắt tương ứng được đặt tại các địa chỉ này sẽ bị "bỏ qua" bởi chương trình chính.

Bước tiếp theo là cài đặt chế độ hoạt động của bộ điều khiển (ví dụ: chọn ngân hàng bộ nhớ và thanh ghi), khởi tạo biến và thiết bị bên ngoài. Một sai lầm điển hình của các lập trình viên mới làm quen là cho rằng ngay sau khi bắt đầu chương trình, các biến đã có một số giá trị xác định. Quan niệm sai lầm này được củng cố bởi thực tế là một số ngôn ngữ cấp cao (chẳng hạn như BASIC) tự động đặt tất cả các biến thành giá trị ban đầu bằng 1. Trong các chương trình bằng hợp ngữ (và nhiều ngôn ngữ khác), bản thân người lập trình phải lưu ý rằng trước lần đọc đầu tiên giá trị của một biến, một thứ gì đó đã được ghi vào ô nhớ được cấp phát cho nó. Phong cách lập trình tốt yêu cầu các giá trị ban đầu được gán cho các biến ngay từ đầu chương trình. Trong trường hợp này, điều này được thực hiện bởi chương trình con XNUMXINIT.

Phần khởi tạo thiết bị bên ngoài thường trông giống như một lệnh gọi thay thế cho các chương trình con, mỗi lệnh đặt lại một trong số chúng (bộ chuyển đổi tương tự sang số, đèn báo LED, bàn phím, v.v.) và có thể dễ dàng thay thế khi hoàn thiện và cải tiến hệ thống. Thông thường, những thói quen tương tự này sẽ kiểm tra tình trạng của thiết bị.

Tiếp theo, hầu hết các chương trình điều khiển đi vào một vòng lặp chính lặp lại vô tận, việc thực thi vòng lặp này chỉ bị tạm dừng để xử lý các ngắt. Chu trình bao gồm các chương trình con để thăm dò bàn phím và các cảm biến khác, kiểm tra các cờ được đặt bởi các chương trình con xử lý ngắt (ví dụ: cờ khi hết khoảng thời gian xác định hoặc kết thúc bộ chuyển đổi tương tự sang số), xử lý thông tin đến theo thuật toán điều khiển đã chỉ định, xuất các hoạt động điều khiển cho bộ truyền động, xuất thông tin về trạng thái của quy trình công nghệ sang màn hình tinh thể lỏng hoặc các chỉ báo khác. Lối thoát khỏi vòng lặp chính thường chỉ được cung cấp trong các tình huống khẩn cấp, ví dụ: nếu để loại bỏ hậu quả của sự cố, cần phải lặp lại việc khởi tạo tất cả các biến và thiết bị bên ngoài, cũng như khi xử lý các ngắt.

Như vậy, một chương trình được xây dựng trên cơ sở modul là một tập các chương trình con. Ví dụ, nếu một bàn phím khác được sử dụng trong hệ thống điều khiển mới, nó sẽ đủ để thay thế chương trình con BUTT. Để việc thay thế trở nên đơn giản và không gây đau đớn, cần phát triển và luôn tuân thủ các quy tắc nhất định. Các chương trình con, nếu có thể, nên lưu nội dung của tất cả các thanh ghi bộ điều khiển, nhận dữ liệu ban đầu và đưa ra kết quả trong cùng các thanh ghi và ô nhớ, sử dụng cùng một mã hóa ký tự, v.v.

Cần phải chống lại mong muốn đơn giản hóa chương trình bằng cách tránh xa các quy tắc nghiêm ngặt và sử dụng các kỹ thuật phi tiêu chuẩn. Thoạt nhìn, có vẻ như sự phức tạp không chính đáng sẽ được đền đáp hoàn toàn bằng cách tạo điều kiện thuận lợi cho việc gỡ lỗi và làm lại toàn bộ chương trình.

Hãy xem xét một số tính năng của chương trình con. Tôi NCREM và DESREM thực hiện yêu cầu trong nhiều trường hợp, hoạt động tăng hoặc giảm theo một giá trị nhất định của số nhị phân 16 bit (byte cao và byte thấp của nó tương ứng trong các thanh ghi R6 và R5). Các hằng xác định số lượng gia tăng được mô tả ở phần đầu của chương trình.

Vì bất kỳ bộ vi điều khiển nào hoạt động nhanh hơn nhiều so với thiết bị công nghệ, điều rất quan trọng là có thể sắp xếp thời gian trễ trong chương trình. Trong trường hợp này, bộ đếm/bộ đếm thời gian bên trong của bộ xử lý được sử dụng. Nó có dung lượng hạn chế và tràn trong mili giây. Mỗi lần tràn sẽ tạo ra một yêu cầu ngắt. Quy trình dịch vụ ngắt hẹn giờ (TIME) đếm chúng và khi đạt đến số đã chỉ định, đặt cờ hết thời gian chờ FLT thành một. Tất cả các chương trình con có công việc phụ thuộc vào thời gian, vẫn còn phải phân tích trạng thái của cờ này. Vì vậy, có thể nhận ra tốc độ màn trập vài giây và thậm chí vài phút.

Để bắt đầu đếm một khoảng thời gian mới, cần nhập các giá trị ban đầu vào các ô làm việc của chương trình con TIME và bật bộ hẹn giờ. Chương trình con SET2M, ví dụ, đặt thời gian trễ là 2 phút. Việc tính toán các giá trị ban đầu có một số điểm tinh tế.

Được biết, trong các bộ vi điều khiển thuộc dòng MSS48, các xung đến đầu vào của bộ đếm/bộ đếm thời gian bên trong ở tần số thấp hơn 480 lần so với tần số của bộ tạo dao động thạch anh. Ví dụ: với tần số bộ cộng hưởng thạch anh là 7 MHz, số được ghi vào bộ đếm thay đổi sau mỗi 480/7000000 = 0,00006857 s = 68,57 µs. Vì vậy, bộ đếm sẽ tràn (và tạo yêu cầu ngắt) trong 68,57 -(256-N1) µs, trong đó N1 là số ban đầu được ghi vào bộ đếm. Nếu mỗi lần bạn bắt đầu đếm mới từ số này, thì N0,1 = 2 0,1/[7000000 (1480-N256)] tràn sẽ xảy ra trong 1 giây (độ trễ thời gian tối thiểu).

Rõ ràng, có thể đạt được độ trễ thời gian giống nhau với N1 và N2 khác nhau, nhưng vì những con số này không thể là phân số, nên nó sẽ được thực hiện với một số lỗi. Nhiệm vụ là chọn một cặp giá trị sao cho sai số là nhỏ nhất. Trong trường hợp đang xem xét, tùy chọn tốt nhất là N1 = 13, N2 = 6. Có được độ trễ thời gian 2 phút bằng cách lặp lại quy trình được mô tả N3 = 1200 lần.

Thường cần phải sử dụng các thủ tục khác nhau để xử lý các ngắt phần cứng giống nhau trong các chế độ hoạt động khác nhau của chương trình. Một cách để làm điều này được minh họa bởi chương trình con INTER. Nó phân tích mã loại ngắt được nhập bởi chương trình chính trong ô INTT và tùy thuộc vào giá trị của nó, gọi một trong các thường trình phục vụ ngắt ISR1 hoặc ISR2. Lưu ý rằng cả hai đều kết thúc bằng RET chứ không phải RETR. Thật dễ dàng để tăng số lượng tùy chọn xử lý và thậm chí làm cho nó sao cho đối với một giá trị nhất định của mã, một số chương trình con khác nhau sẽ được gọi lần lượt.

Không cần thiết phải viết tất cả các chương trình con cần thiết trong tệp văn bản của chương trình chính. Các mô-đun được gỡ lỗi và sử dụng nhiều lần trong các chương trình khác nhau có thể được đặt trong các tệp riêng biệt và được kết nối với chương trình chính bằng các lệnh INCLUDE. Mỗi tệp bao gồm có thể chứa một hoặc nhiều thường trình. Nhược điểm của phương pháp này là không nên lặp lại tên của các biến, hằng và nhãn trong tất cả các mô-đun đã sử dụng. Thật không may, do khiếm khuyết này, phương pháp dịch các mô-đun riêng biệt với sự hợp nhất tiếp theo của chúng ở cấp mã đối tượng, thật không may, không được TASM ASSEMBLY hỗ trợ.

Tác giả: D. Ryzhov, Vladimir

Xem các bài viết khác razdela Bộ vi điều khiển.

Đọc và viết hữu ích bình luận về bài viết này.

<< Quay lại

Tin tức khoa học công nghệ, điện tử mới nhất:

Máy tỉa hoa trong vườn 02.05.2024

Trong nền nông nghiệp hiện đại, tiến bộ công nghệ đang phát triển nhằm nâng cao hiệu quả của quá trình chăm sóc cây trồng. Máy tỉa thưa hoa Florix cải tiến đã được giới thiệu tại Ý, được thiết kế để tối ưu hóa giai đoạn thu hoạch. Công cụ này được trang bị cánh tay di động, cho phép nó dễ dàng thích ứng với nhu cầu của khu vườn. Người vận hành có thể điều chỉnh tốc độ của các dây mỏng bằng cách điều khiển chúng từ cabin máy kéo bằng cần điều khiển. Cách tiếp cận này làm tăng đáng kể hiệu quả của quá trình tỉa thưa hoa, mang lại khả năng điều chỉnh riêng cho từng điều kiện cụ thể của khu vườn, cũng như sự đa dạng và loại trái cây được trồng trong đó. Sau hai năm thử nghiệm máy Florix trên nhiều loại trái cây khác nhau, kết quả rất đáng khích lệ. Những nông dân như Filiberto Montanari, người đã sử dụng máy Florix trong vài năm, đã báo cáo rằng thời gian và công sức cần thiết để tỉa hoa đã giảm đáng kể. ... >>

Kính hiển vi hồng ngoại tiên tiến 02.05.2024

Kính hiển vi đóng vai trò quan trọng trong nghiên cứu khoa học, cho phép các nhà khoa học đi sâu vào các cấu trúc và quá trình mà mắt thường không nhìn thấy được. Tuy nhiên, các phương pháp kính hiển vi khác nhau đều có những hạn chế, trong đó có hạn chế về độ phân giải khi sử dụng dải hồng ngoại. Nhưng những thành tựu mới nhất của các nhà nghiên cứu Nhật Bản tại Đại học Tokyo đã mở ra những triển vọng mới cho việc nghiên cứu thế giới vi mô. Các nhà khoa học từ Đại học Tokyo vừa công bố một loại kính hiển vi mới sẽ cách mạng hóa khả năng của kính hiển vi hồng ngoại. Thiết bị tiên tiến này cho phép bạn nhìn thấy cấu trúc bên trong của vi khuẩn sống với độ rõ nét đáng kinh ngạc ở quy mô nanomet. Thông thường, kính hiển vi hồng ngoại trung bị hạn chế bởi độ phân giải thấp, nhưng sự phát triển mới nhất của các nhà nghiên cứu Nhật Bản đã khắc phục được những hạn chế này. Theo các nhà khoa học, kính hiển vi được phát triển cho phép tạo ra hình ảnh có độ phân giải lên tới 120 nanomet, cao gấp 30 lần độ phân giải của kính hiển vi truyền thống. ... >>

Bẫy không khí cho côn trùng 01.05.2024

Nông nghiệp là một trong những lĩnh vực quan trọng của nền kinh tế và kiểm soát dịch hại là một phần không thể thiếu trong quá trình này. Một nhóm các nhà khoa học từ Viện nghiên cứu khoai tây trung tâm-Hội đồng nghiên cứu nông nghiệp Ấn Độ (ICAR-CPRI), Shimla, đã đưa ra một giải pháp sáng tạo cho vấn đề này - bẫy không khí côn trùng chạy bằng năng lượng gió. Thiết bị này giải quyết những thiếu sót của các phương pháp kiểm soát sinh vật gây hại truyền thống bằng cách cung cấp dữ liệu về số lượng côn trùng theo thời gian thực. Bẫy được cung cấp năng lượng hoàn toàn bằng năng lượng gió, khiến nó trở thành một giải pháp thân thiện với môi trường và không cần điện. Thiết kế độc đáo của nó cho phép giám sát cả côn trùng có hại và có ích, cung cấp cái nhìn tổng quan đầy đủ về quần thể ở bất kỳ khu vực nông nghiệp nào. Kapil cho biết: “Bằng cách đánh giá các loài gây hại mục tiêu vào đúng thời điểm, chúng tôi có thể thực hiện các biện pháp cần thiết để kiểm soát cả sâu bệnh và dịch bệnh”. ... >>

Tin tức ngẫu nhiên từ Kho lưu trữ

Nhà nổi không sợ lũ 07.03.2005

Sau những trận lũ lụt thảm khốc ở Tây Âu trong những năm gần đây, một dãy nhà chống lũ đã được xây dựng ở thị trấn Maasbommel của Hà Lan.

Ngôi nhà hoàn toàn bằng gỗ được trồng trên cọc bê tông và có thể trượt trên chúng, nổi lên đến độ cao 360 cm. Mỗi ngôi nhà có ba phòng với diện tích ở 65 mét vuông.

Tin tức thú vị khác:

▪ GIS hữu ích cho các chính trị gia

▪ Máy ảnh kỹ thuật số lớn nhất thế giới đang được xây dựng

▪ Cần phải đơn giản hóa việc sử dụng điện thoại di động

▪ Intel Core i7-3970X Extreme Edition

▪ Áp kế với điện thoại thông minh

Nguồn cấp tin tức khoa học và công nghệ, điện tử mới

 

Tài liệu thú vị của Thư viện kỹ thuật miễn phí:

▪ phần công trường Công trình điện. Lựa chọn bài viết

▪ bài viết Người đàn ông với một khẩu súng. biểu thức phổ biến

▪ bài viết Tên của bức tượng trong Piccadilly Circus ở London là gì? đáp án chi tiết

▪ Điều kỹ sư trưởng xây dựng. Mô tả công việc

▪ bài viết Đèn huỳnh quang chiếu sáng trang trí. Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện

▪ bài viết Sơ đồ, sơ đồ chân (pinout) cáp cho điện thoại Ericsson (max 3232). Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện

Để lại bình luận của bạn về bài viết này:

Имя:


Email (tùy chọn):


bình luận:





Tất cả các ngôn ngữ của trang này

Trang chủ | Thư viện | bài viết | Sơ đồ trang web | Đánh giá trang web

www.diagram.com.ua

www.diagram.com.ua
2000-2024