mình chưa hình dung ra lập trình ngắt 8051 là như thế nào . bạn nào biết chỉ mình với được không , có thể thì cho mình xin 1 ví dụ đơn giản về lập trình ngắt và có giải thích nhé . mình dùng ASM . thankssss nhiều .
Thông báo
Collapse
No announcement yet.
xin trợ giúp mình về ngắt của 8051
Collapse
X
-
Nguyên văn bởi phonghp91 Xem bài viếtmình chưa hình dung ra lập trình ngắt 8051 là như thế nào . bạn nào biết chỉ mình với được không , có thể thì cho mình xin 1 ví dụ đơn giản về lập trình ngắt và có giải thích nhé . mình dùng ASM . thankssss nhiều .Ít nhất bạn cũng phải hiểu được ngắt là gì đã thì mới tính đến chuyện lập trình. Bạn cứ hiểu đơn giản là ngắt có nghĩa là dừng công việc đang làm lại để làm một công việc khác khi có yêu cầu (yêu cầu này không biết trước khi nào xảy ra), sau khi hoàn thành công việc khác rồi thì quay lại làm tiếp công việc đang làm dở lúc trước (công việc đang làm trong VĐK nó gọi là chương trình chính, còn công việc khác kia nó gọi là chương trình ngắt).
Ví dụ:
Bạn có 1 cái điện thoại và đang soạn tin nhắn, bỗng dưng có 1 cuộc gọi đến sđt của bạn, thế là công việc soạn tin nhắn của bạn bị tạm dừng, lúc này bạn không thể soạn tin nhắn được nữa mà chỉ còn cách là trả lời điện thoại hoặc kết thúc cuộc gọi. Khi cuộc gọi kết thúc thì bạn mới có thể tiếp tục soan tin nhắn được.
Hoặc một ví dụ khác: Bạn là một nhân viên bán hàng và đang ngồi thống kê sổ sách thì có khách đến mua hàng, thế là công việc thống kê sổ sách của bạn phải tạm dừng lại và bạn phải ra tư vấn và bán hàng cho khác. Khi khách mua hàng về bạn mới có thể tiếp tục công việc thống kê sổ sách của mình.
Như vậy qua 2 ví dụ ta thấy: Chương trình chính đó là soạn tin nhắn và thống kê sổ sách. Chương trình ngắt đó là trả lời điện thoại và tư vấn bán hàng. Chương trình ngắt ở đây không biết trước (vì không biết khi nào có cuộc gọi đến hoặc khi nào có khách đến mua hàng).
Đối với VĐK thì chương trình chính và chương trình ngắt đều do bạn thiết kế trước. Ví dụ như khi dùng ngắt timer thì khi cờ ngắt được bật cũng là lúc chương trình chính của bạn bị tạm dừng và VĐK của bạn bắt đầu thực hiện chương trình ngắt. Chẳng hạn chương trình chính bạn cho VĐK làm công việc là nhấp nháy con LED đỏ, còn chương trình ngắt bạn cho nhấp nháy 2 con LED xanh và vàng, như vậy khi chưa có ngắt xảy ra thì LED đỏ của bạn nhấp nháy (nó nhấp nháy cho đến khi nào có ngắt được đáp ứng) còn LED xanh và vàng không nhấp nháy. Khi có ngắt thì LED đỏ ngừng nhấp nháy (vì đã bị ngắt) còn LED xanh và vàng bắt đầu nhấp nháy. Vậy khi nào thì có ngắt, cài này tùy thuộc vào thiết kế của bạn (tức là phụ thuộc vào việc bạn dùng ngắt timer hay ngắt ngoài hay gọi tắt là điều kiện ngắt).
Còn ví dụ thì trong sách và trên diễn đàn có rất nhiều, chịu khó tìm đọc thì sẽ hiểu được thôi!
-
những điều bạn nói trên thì mình hiểu rồi nhưng đi đến cụ thể phải làm thế nào thì mình chưa biết . mình cũng mò tìm cả ngày nay rồi nhưng không có kết quả . b có thể cho mình xin 1 chương trình đơn giản được không . cho mình xin cả mạch mô phỏng nữa nhé . đó sẽ làm cơ sở để mình tiếp tục tìm hiểu sâu hơn . mình học trên lớp ông thầy không hề cho 1 ví dụ nào về lập trình ngắt và lý thuyết cũng chỉ nói qua , còn trong sách thì mình xem quyển kỹ thuật VXL ... của đỗ xuân tiến thì không hề có bài tập . có thể mình chưa biết cách tìm nên cả ngày nay tìm trên forum nhưng kết quả chưa được như mong muốn . mong b sẽ chỉ giúp thêm . thanks b .Ph.vmr
Comment
-
Để hiểu ngắt Timer thì hiểu phần Timer trước!
Còn ngăt cứng (ngắt ngoài) VD:
Giả sử chân INT1 được nối đến công tắc, bình thường nó ở mức cao. 1 led đc nối đến P1.3, bình thường nó tắt, khi nhấn công tắc thì led sáng (1 khoảng thời gian), khi nhả công tắc thì led lại tắt (sau thời gian sáng)....
Hoạt động/ giải thích thì bác Ck33spkt đã nóiCode:ORG 0000H LJMP MAIN ; chuong trinh phuc vu ngat day ORG 013H ; dia chi ngat ngoai SBIT P1.3 MOV R3,#255 BACK: DJNZ R3,BACK ; de cho led sang 1 thoi gian cho minh nhin thay neu nha nut nhanh qua RETI ORG 30H MAIN: MOV IE,#10000100B ; EA=1; EX1=1; Cho phép ngắt ngoài hoạt động HERE: CLR P1.3 SJMP HERE END
Có gì các bác chỉ giáo thêm
Comment
-
bạn đọc cuốn của Tống Văn Ôn từ trang 105 tới 128 đi, trong đó mô tả chi tiết cả trình phục vụ ngắt kích thước nhỏ và kích thước lớn cùng với vị trí đặt.Nguyên văn bởi phonghp91 Xem bài viếtb student cho minh hoi? chut' . chuong trinh con ngat phai duoc viet sau ham main chu nhi? . van mo ho qua .
Comment
-
Như trong cuốn sách: "Họ Vi điều khiển 8051" của tác giả Tống Văn On & Hoàng Đức Hải mà bác "chung1608" vừa giới thiệu đó, thì chương trình ngắt viết sau hay viết trước hàm main là tùy thuộc và kích thước của chương trình ngắt lớn hay nhỏ. Như trong ví dụ của bạn "student_dtvt" thì nó được viết trước hàm Main.Nguyên văn bởi phonghp91 Xem bài viếtb student cho minh hoi? chut' . chuong trinh con ngat phai duoc viet sau ham main chu nhi? . van mo ho qua .
Thực tế là việc viết trước hay sau chỉ là vị trí thôi còn khi VĐK làm việc thì nó thường làm việc với hàm Main trước rồi khi có ngắt mới làm việc với ngắt. Lúc này, khi đã nhảy vào ngắt thì ngắt của bạn đặt trước hay sau Main đều không quan trọng vì VĐK đều phải chuyển điều khiển của nó vào chương trình ngắt.
Comment
-
SEARCH họ vi điều khiển 8051 Tống Văn OnNguyên văn bởi phonghp91 Xem bài viếtb chung1608 cho minh hoi quyen do co tim duoc tren net khong chu thu vien truong minh khong thay co quyen do . va neu tim duoc tren net thi phai seach voi tieu de la gi . thanks
nếu chỉ có 1 nguyên nhân ngắt thì có thể viết trước hàm MAIN với vị trí của main trong ROM phải đúng. Ví như code trên mà viết kiểu này thì lỗi toàn tập:Nguyên văn bởi Ck33spkt Xem bài viếtNhư trong cuốn sách: "Họ Vi điều khiển 8051" của tác giả Tống Văn On & Hoàng Đức Hải mà bác "chung1608" vừa giới thiệu đó, thì chương trình ngắt viết sau hay viết trước hàm main là tùy thuộc và kích thước của chương trình ngắt lớn hay nhỏ. Như trong ví dụ của bạn "student_dtvt" thì nó được viết trước hàm Main.
Thực tế là việc viết trước hay sau chỉ là vị trí thôi còn khi VĐK làm việc thì nó thường làm việc với hàm Main trước rồi khi có ngắt mới làm việc với ngắt. Lúc này, khi đã nhảy vào ngắt thì ngắt của bạn đặt trước hay sau Main đều không quan trọng vì VĐK đều phải chuyển điều khiển của nó vào chương trình ngắt.
Code:ORG 0000H LJMP MAIN ; chuong trinh phuc vu ngat day ORG 013H ; dia chi ngat ngoai Setb P1.3 MOV R3,#255 BACK: DJNZ R3,BACK ; de cho led sang 1 thoi gian cho minh nhin thay neu nha nut nhanh qua RETI ORG 18H MAIN: MOV IE,#10000100B ; EA=1; EX1=1; Cho phe´p nga´t ngoài hoa?t dô?ng HERE: CLR P1.3 SJMP HERE END
Last edited by chung1608; 13-12-2012, 11:37.
Comment
Bài viết mới nhất
Collapse
-
bởi mèomướpDạ chú rủ cô ấy đi ăn uống, cà phê, xem phim...nhớ nắm tay, rồi thì ôm hôn,...trong vòng 1 tuần mà ko nắm tay được, 1 tháng mà ko ôm đc thì dẹp ngay và luôn ạ. Nhắn tin, gọi điện ít thôi ạ, trả lời quá lâu hoặc ko trả lời cũng dẹp ngay ạ. Nên thể hiện chú là người có điều kiện nữa ạ...
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 18:50 -
-
bởi songchodep76Cảm ơn bác đã nhiệt thành chia sẻ kinh nghiệm bản thân mình cho mọi người.
Tuy nhiên, theo tiếp xúc hạn hẹp của em với mosfet thì vấn đề bác đo vôn ở cực D và thấy đỉnh nó 70V/55V Vds max, như thí nghiệm và trong hình của bác...-
Channel: Hướng dẫn sử dụng diễn đàn
Hôm qua, 09:46 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Cho tới thời điểm này, quả thật Đình Thường đây quá thất vọng, không hào hứng với Suno-AI lắm bởi ra lệnh Creat mấy chục lần với các thay đổi thì mới chọn được 2 bản hát đúng giai điệu tầm 80% để cắt ghép tạo thành bài hát...
-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 17:01 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Kính chào cả nhà, nhân dịp Tết đang về, sắp 23 tháng chạp rồi, xin gởi lời chúc xuân qua bài hát sau ạ:
Bao nhiêu hân hoan
Chúc Mừng Năm Mới, xuân sang!
Nơi nơi hát vang
nâng chén vui chúc câu An Lành.
Vạn Sự đều Hanh Thông,
Rạng...-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 16:46 -
-
bởi ittcChán quá các bác, em nhạt nhẽo quá nên tán em nào cũng tạch, tuyệt vọng vô cùng, nay lại được mấy anh đồng nghiệp cty đối tác mách cho em gái kia sinh năm 2K đầu, em chả biết nhóm đối tượng này phải tán ra sao bây giờ ?
Tính ra em...-
Channel: Tâm tình dân kỹ thuật
06-02-2026, 00:18 -
-
bởi bqvietCó thể, ví dụ phần phản hồi gồm vi mạch cách ly quang, zener thứ cấp, transistor và điện trở phản hồi dòng ... Bất kỳ linh kiện nào nhóm đó hỏng dẫn tới mất đường phản hồi. TNY chính hãng phát hiện được chuyện đó nhưng linh kiện...
-
Channel: Điện tử công suất
05-02-2026, 18:36 -
-
bởi Nexus 6Pcho e hỏi, khi mạch có linh kiện nào đó hư thì có làm hỏng led đắt tiền (osram) không?
-
Channel: Điện tử công suất
05-02-2026, 10:42 -
-
bởi chinhnguyen9· Thí nghiệm 1 (Mạch boost, Vcc=12V, kích bằng dao động PƯM, duty 10%):
* Không có snubber + không tải: Xuất hiện hiện tượng dao động tắt dần tại cực D Mosfet (ringing). Hình 1 cho thấy trong chu kỳ đầu, điện áp spike lên tới hàng trăm V, điện...-
Channel: Hướng dẫn sử dụng diễn đàn
04-02-2026, 09:16 -
-
bởi Nexus 6Pe dùng KiCad 9.0 và đã xuất được file PDF mạch in gòi bác...
-
Channel: Điện tử công suất
03-02-2026, 16:25 -
-
bởi bqvietBấm chuột vào các tệp sẽ bật ra chương trình tương ứng. Nên dùng bản KiCAD sau
https://kicad-downloads.s3.cern.ch/a...ll_version.exe-
Channel: Điện tử công suất
03-02-2026, 14:57 -

Comment