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

Người mới bắt đầu lập trình vi điều khiển PIC. 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 / Radio nghiệp dư cho người mới bắt đầu

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

[một lỗi xảy ra trong khi xử lý chỉ thị này]

Dựa trên kinh nghiệm của bản thân khi bắt đầu học lập trình vi điều khiển, tôi sẽ cố gắng đưa ra một số lời khuyên thiết thực về cách viết chương trình bằng trình biên dịch chương trình. Tất cả các ví dụ lập trình được đưa ra dưới đây đều liên quan đến bộ điều khiển Pic thuộc dòng Microchip tầm trung, là phù hợp nhất để bắt đầu làm chủ, do kiến ​​trúc tương đối đơn giản và hệ thống lệnh biên dịch mã không phức tạp.

Các chương trình đề xuất có thể sử dụng dưới dạng macro dựng sẵn (các chương trình con hoàn chỉnh), không gắn với một bộ điều khiển cụ thể nên khi áp dụng cần tính đến dữ liệu từ các datasheet.

1.Sử dụng ngắt tràn bộ định thời TMR0 (RTCC)

Hãy lấy tần số đồng hồ - Fclock. = 4,096 MHz (thạch anh tiêu chuẩn). Khi đó thời gian chu kỳ sẽ là tc = 1/Ftact. * 4 = 0,97656 µs

INI_TMR ; khởi tạo chế độ ngắt từ RTCC
bsf TÌNH TRẠNG,RP0 ; chọn ngân hàng 1
movlw b'00000100'
TÙY CHỌN movwf; bộ chia tỷ lệ trước cho RTCC 1:32
bcf TÌNH TRẠNG,RP0 ; ngân hàng 0
movlw b'10100000'
movwf INTCON ; Đã bật ngắt RTCC
movlw.96; nạp số sơ bộ 96 vào RTCC
movwf TMR0

Lấy thời gian ngắt:
ti = tc * 32 * (256 - 96 = 160)
ti = 0,97656 * 32 * 160 = 5 µs = 000 mili giây

Bây giờ, nếu bạn đưa một vòng lặp vô tận vào bất kỳ chương trình nào của mình (còn gọi là vòng chờ ngắt) và phần cuối của chương trình được chuyển sang vòng lặp này, chúng ta sẽ nhận được tham chiếu thời gian là 5 mili giây. sẽ quay trở lại địa chỉ được chỉ định bởi vectơ ngắt (thường là 04h). Địa chỉ này có thể được sử dụng để làm gì - hãy xem thêm.

Vì vậy:

;
tổ chức 0
BẮT ĐẦU ; bắt đầu thực hiện chương trình sau
; tăng sức mạnh
tổ chức 04h; và đây là địa chỉ của vectơ ngắt, tại đó
chủ yếu ; chương trình chính sẽ được thực thi
;
BẮT ĐẦU ; Đây là nơi khởi tạo bắt buộc thường xảy ra.
INI_TMR ; Tập trung các cổng, chế độ, thanh ghi, v.v.
INI_PORTS
vòng lặp
vòng lặp goto; và đây là một chu kỳ vô tận
;------------------------------------------------ -

chính
; Tiếp theo là phần nội dung của chương trình chính,
; trong đó cần tạo chương trình dịch vụ ngắt từ RTCC,
; được gọi bằng lệnh CALL:

ServTMR
btfsc INTCON,RTIF ; kiểm tra cờ ngắt từ RTCC và
gọi SET_TMR; nếu “có”, thì khởi tạo lại TMR0
trở lại ; nếu "không" - quay lại nơi ServTMR được gọi
; chương trình chính
;
SET_TMR di chuyển 96
movwf TMR0 ; tải lại số 96
bcf INTCON,RTIF ; đặt lại cờ kích hoạt
trả lại ; quay trở lại với kích hoạt ngắt trong ServTMR và
; sau đó vào chương trình chính

Một ví dụ về việc sử dụng ngắt từ RTCC để nhận xung thứ hai trên một trong các đầu ra, chẳng hạn như cổng B - RB0: Chúng tôi sử dụng thanh ghi Rsec, trước đó phải được khai báo trong trường địa chỉ của các thanh ghi làm việc.

Như vậy, ở đầu ra của cổng RB0, mức tín hiệu sẽ thay đổi từ '0' thành '1' mỗi giây.

Trong các thanh ghi điều khiển, thông tin thường ở dạng nhị phân (ở dạng mã nhị phân). Nhưng thường cần phải lấy thông tin ở dạng thập phân nhị phân (mã BCD), để điều khiển chỉ báo bảy đoạn.

Hãy xem các ví dụ về chuyển đổi mã nhị phân b2 sang BCD thập phân nhị phân và ngược lại.

Trong thanh ghi 8 bit, bạn có thể viết một số từ 0 đến 255 (từ b'00000000' đến b'11111111') dưới dạng mã nhị phân. Hãy chuyển đổi số nhị phân thành ba chữ số của mã thập phân nhị phân - "hàng trăm", "hàng chục" và "đơn vị". Để thực hiện việc này, chúng ta sẽ sử dụng các thanh ghi sau, phải được khai báo trước trong trường địa chỉ của các thanh ghi làm việc:

Rbin - đăng ký để lưu trữ một số trong mã nhị phân b2
Rhan - hàng trăm thanh ghi mã BCD
Rdec - đăng ký "chục" của mã BCD
Rsim - Thanh ghi mã BCD "một"

Chúng tôi thực hiện các phép biến đổi bằng cách sử dụng các phép trừ các số 100, rồi 10, đếm số phép trừ dương.

FORM_1S ; trong mỗi chu kỳ và nó kéo dài do ngắt RTCC
incf Rsec,w ; 5 MS, tăng thanh ghi Rsec thêm 1 lên số 200
xorlw .200 ; (5 mili giây * 200 = 1 giây)
btfsc TÌNH TRẠNG,z
đi tới OUT_PORT ; tại Rsec = 200 cờ z = '1' và chuyển sang điều khiển
; Chân RB0 của cổng B
trở lại ; quay lại chương trình chính
;
OUT_PORT btfss PORTB,0 ; kiểm tra trạng thái chân RB0
đi đến OUT_ON ; nếu RB0 ='0' thì đặt thành '1'
bcf PORTB,0 ; nếu không, đặt thành '0'
đi tới chính ; quay lại chương trình chính
;
OUT_ON bsf PORTB,0 ; đặt RB0 = '1'
đi tới phần chính

CON_100 di chuyển .100 ; trừ 100 từ Rbin và kiểm tra xem
subwf Rbin,w ; kết quả không âm tính. Cờ 'c' = 1 khi
btfss TÌNH TRẠNG,c ; kết quả > hoặc = 0 và 'c' = 0 khi < 0
đi đến CON_10
incf Rhan,f ; đếm số "hàng trăm"
movwf Rbin ; kết quả của phép trừ đầu tiên được lưu vào sổ đăng ký
goto CON_100 ;pin và chỉ sau đó quay lại Rbin
; để không bị mất số dư khi âm
; kết quả của phép trừ.
CON_10 di chuyển .10 ; chúng ta định nghĩa “hàng chục” theo cách tương tự
subwf Rbin,w
btfss TÌNH TRẠNG,c
đi tới end_con
incf Rdec,f
movwf Rbin
đi tới CON_10;
end_con
movf Rbin,w
movwf Rsim ; sau khi trừ, nhập số dư vào “đơn vị”
;tiếp tục thực hiện chương trình

Chuyển đổi ngược mã BCD thành b2. Chúng tôi sử dụng cùng các thanh ghi Rhan, Rdec, Rsim trong đó số nằm trong mã BCD, các thanh ghi RbinH - chữ số có nghĩa nhất và RbinL - chữ số có nghĩa nhỏ nhất đối với các số (> 255) trong mã b2 và các thanh ghi phụ RM1 - “ multiplicand", RM2 - "multiplier". Để chuyển đổi BCD thành b2 bạn cần nhân "hàng trăm" với 100, "chục" với 10 và cộng mọi thứ lại với nhau bằng "đơn vị" và tính đến việc chuyển sang chữ số có nghĩa nhất nếu cần .Đối với phép nhân chúng ta sử dụng phép cộng.

B2X_100 di chuyển .99 ; chuyển đổi "hàng trăm"
movwf RM2 ; số nhân = số phép cộng (100) trừ đi một
movf Rhan, w
movwf RM1 ; nhân = "hàng trăm"
loopX100 addwf RM1,w btfsc TÌNH TRẠNG,c ; kiểm tra việc chuyển sang chữ số có ý nghĩa nhất
incf RbinH,f ; nếu có sự chuyển giao
decfsz RM2,f ; kiểm soát số lượng bổ sung
goto loopX100
movwf RbinL ; Kết quả của phép cộng được nhập vào thanh ghi ml. loại
;
B2X_10 di chuyển .9 ; chuyển đổi "hàng chục"
movwf RM2 ; số nhân = số phép cộng (10) trừ đi một
movf Rdec,w
movwf RM1 ; số nhân = "hàng chục"
loopX10 addwf RM1,w ; ở đây việc chuyển tiền không thể được kiểm tra, bởi vì kết quả
decfsz RM2,f ; luôn < 255
goto loopX10
addwf RbinL,f ; thêm kết quả của chuyển đổi "hàng chục"
btfsc TÌNH TRẠNG,c ; có tính đến khả năng mang theo trong chất thải
incf
RbinH,f
movf Rsim,w
addwf Rbin,f ; thêm “đơn vị” có tính đến khả năng chuyển nhượng
btfsc TÌNH TRẠNG,c
incf RbinH,f

Kết thúc các chuyển đổi và tiếp tục thực hiện chương trình. Trong các thanh ghi RbinL và RbinH nhận được số 16 bit ở mã b2.

Để thực hiện phép tính số học của phép chia, tương tự như phép nhân đã thảo luận ở trên, phép trừ được sử dụng. Giả sử chúng ta cần chia một số nằm trong các thanh ghi RHsum (bit bậc cao) và RLsum (bit bậc thấp) cho một ước số (hãy lấy một ước số không > 255) nằm trong thanh ghi Rdel.

Chúng ta sẽ nhập kết quả vào các thanh ghi RHrez và RLrez (tương ứng là chữ số cao và thấp):

OP_DEL
movf Rdel,w
subwf Rlsum,w
btfss TÌNH TRẠNG,c ; Hãy kiểm tra xem kết quả có âm tính không?
đi tới DEF_carry ; nếu “có”, thì chúng tôi thực hiện khoản vay từ Art. loại
incf RLrez,f ; đếm số phép trừ có tính đến
btfsc TÌNH TRẠNG,c ; có thể chuyển lên cấp bậc cao cấp
incf RHrez,f
movwf RLsum ; chúng tôi khôi phục phần còn lại để không bị mất
đi tới OP_DEL ; nếu kết quả phép trừ là âm
;
DEF_carry
di chuyển 0 giờ
xorwf RHsum,w ; mọi người đã chuyển từ cấp cao lên cấp cơ sở chưa?
btfsc TÌNH TRẠNG,z ; nếu "có", tức là RHdel = 0 và trong OP_DEL phủ định
đi đến OUT_ DEL ; tsat. kết quả - kết thúc phân chia và thoát
decf RHsum,f ; nếu “không” - một khoản vay từ hạng cao cấp và chuyên nghiệp
incf RLrez,f ; tiếp tục đi
btfsc TÌNH TRẠNG,c ; kiểm tra nhu cầu chuyển sang chữ số tiêu chuẩn
incf RHrez,f
đi tới OP_DEL

Tác giả: Vladimir D., degvv@mail.ru; Xuất bản: cxem.net

Xem các bài viết khác razdela Radio nghiệp dư cho người mới bắt đầu.

Đọ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ữ

Các bóng bán dẫn thuộc họ MDMESH V 30.06.2010

Các bóng bán dẫn MDMESH V là bóng bán dẫn tốt nhất trên thế giới về điện trở kênh hở trong dải điện áp hoạt động 500 ... 650 V.

Ví dụ: bóng bán dẫn của sê-ri STW77N65M5 từ họ MDMESH V có giá trị Rdson tối đa là 650 ohms cho điện áp hoạt động là 0,033 V và dòng tĩnh tối đa là 69 A. Đồng thời, điện tích cổng của bóng bán dẫn như vậy là chỉ 200 nK. STL21N65M5 là bóng bán dẫn MDMESH V đầu tiên trong gói PowerFlat.

Với điện áp hoạt động là 650 V, bóng bán dẫn STL21N65M5 có điện trở kênh hở là 0,190 ôm và dòng tĩnh tối đa là 17 A, trong khi điện tích cổng của nó là 50 nK.

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

▪ Xe đạp điện Himiway các mẫu Pony, Rambler và Rhino

▪ Tối ưu hóa hình ảnh cộng hưởng từ

▪ Drone có thể ngửi thấy

▪ thuốc chữa bệnh gián

▪ Mùa đông se se lạnh

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 truyền hình của trang web. Lựa chọn các bài viết

▪ bài báo Đây là loại điểm dừng nào, Bologoe hay Popovka? biểu hiện phổ biến

▪ bài viết Công ty giày nào tặng một đôi giày cho trẻ em nghèo cho mỗi đôi giày họ bán? đáp án chi tiết

▪ bài báo nước Omezhnik. Truyền thuyết, canh tác, phương pháp áp dụng

▪ bài viết Breadboard cho vi mạch. Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện

▪ bài Định mức nghiệm thu. tụ điện. 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