Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
Thông báo
Collapse
No announcement yet.
Đố vui về PIC, các câu đố cực vui và cực hay... hehe..
Vậy thì vẫn chưa đap ứng đưoc sự ham hiểu biết của mỗ. Mỗ muốn đáp án đúng.. khà khà...
Không nghĩ thêm được Bác ơi...Nhưng bác phán hộ em một câu...Chương trình đấy có chạy không????
theo em nghĩ...nếu mà set được GIE trong chương trình ngắt thì ...chương trình của em có chạy.
chết em xin lỗi ...em copy paste loạn cả lên...em có sửa lại ngắt 1 2 3 ở trên roài.
Có chạy, nhưng:
+Bất kể thế nào cũng nhảy vào ngắt sau. CŨng là ưu tiên nhưng là kiểu ưu tiên: hậu sinh khả úy.
+Coi chừng tràn stack.
Mà cứ hỏi bài thế này thì lộ hết cả đáp án... khà.. khà.. sau lần này thì tại hạ sẽ mai danh ẩn tích cho tới khi có đáp án đúng.
Bác gợi ý để anh em suy nghĩ...đây cũng là bác giúp anh em tư duy ...Chứ bác chuồn bây giờ thì là bác đánh đố anh em rồi.
Còn em nghĩ chương trình của em sợ là bị tràn nếu như là ngắt ngoài...ví dụ như dùng ngắt bằng cách ấn nút. Nhưng nếu em chỉnh phần cứng chỉ nhận một xung vào ngắt...hoặc như dùng nhiều ngắt như ngắt timer thì đố nó tràn được.
Trời đất ...em nghĩ mãi ko biết có đúng không...các bác góp ý cái nhé:
Chạy Main()
đầu chương trình ngắt có lệnh GIE=0;
Có ngắt thì đẩy lên stack0 và vào ngắt IN1 bật GIE (không có ngắt nữa thì như thường)
Có ngắt nữa thì dừng IN1, đẩy địa chỉ lên stack1 và vào IN2
Giả sử IN2 là một nút bấm có xung dài(bình thương GIE =0 thì không sao nhưng ở đây phải xử lý khi GIE=1 để stack khỏi tràn).
A```(học anh BinhAnh cai hu'hu') GIE=1 lại Ngắt IN2 đẩy vào ngăn xếp stack2 và chạy lại chương trình ngắt từ đầu. Lúc này có thể dùng lệnh điều kiện để không chương trình ngắt nào được thực hiện. Buộc nó phải rút địa chỉ tại stack 2 ra và chạy từ đó...nhưng ngay ở lệnh này trong điều kiên thứ 2 GIE=1...xung Ngắt 2 vẫn đang tồn tại thì lại đẩy lên stack2 cứ như vậy stack2 sẽ được đẩy lên và rút ra cho đến khi kết thúc xung ... nghĩa là lần ngắt cuối cùng...khi không còn ngắt nữa thì sẽ rút stack2 thực hiện lệnh tại điều kiện 2 ...rồi rút stack1 thực hiện lệnh dang dở ở điều kiện 1...rôi rút stack0 để trở về main
Khà khà, bác CB dạo này làm các fan PIC đau cái đầu nhỉ, em vừa gửi đáp án về câu này cho bác để thõa tính tò mò của bác. Bác đọc rồi phán xét hộ em nhé. Em gửi lên hộp thư trên diễn đàn ấy. Mấy câu thì em thấy câu này của bác là khó nhất vì đơn giản là nó ko có trong datasheet thôi....
Khà khà, bác CB dạo này làm các fan PIC đau cái đầu nhỉ, em vừa gửi đáp án về câu này cho bác để thõa tính tò mò của bác. Bác đọc rồi phán xét hộ em nhé. Em gửi lên hộp thư trên diễn đàn ấy. Mấy câu thì em thấy câu này của bác là khó nhất vì đơn giản là nó ko có trong datasheet thôi....
Đúng là ko qua mặt được bác PPIICC, em vừa xem hộp thư trên diễn đàn, và he he... bác đáp án của bác hoàn toàn đúng. He he...bội phục, bội phục...
Em xin đính chính:câu trên ko dành cho các bác BinhAnh,Falleaf,PPIICC
Thời gian thì ít mà bỏ thì không cam tâm, theo ngu ý của em thì code có thể như sau, viết cho 3 ngắt là timer0, int, onchange, với quyền ưu tiên lần lượt như trên. Việc kiểm tra
bit timer0=1;
bit int0=1;
bit rb=1;
void interrupt my_isr(void)
{
GIE=1;
if (TMR0IF & timer0)
{
timer0=0;
\\ goi chuong trình xử lý ngắt TMR0
timer0=1;
}
if (INTIF & int0 & !(TMR0IF))
{
int0=0;
\\ gọi chương trình xử lý ngắt INT
int0=1;
}
if (RBIF & rb & !(TMR0IF) & !(INTIF))
{
rb=0;
\\ goi chuon trinhg onchange
rb=1;
}
\\ gie tự động được set là 1
}
Anh CHIBANG cho đáp an đi, em nghĩ là em sai, mà ông anh học lên đai gì và tại bang nào nhỉ ?
Vẫn chưa đúng... khà khà.. tràn stack ngay lập tức khi gặp bất cứ 1 ngắt bất kỳ nào.
Tại hạ là kẻ vô danh tiểu tốt, đâu dám xưng tên họ để các đại hiệp cười chế. Trong khi lưu lạc giang hồ, thấy Giang Nam cảnh đẹp, xem phong thủy thấy dientuviet.net là nơi đất lành chim đậu, sơn thủy hữu tình nên lưu lại và nhã hứng uốn 3 tấc lưỡi, họa đôi vần thơ.
Thời gian thì ít mà bỏ thì không cam tâm, theo ngu ý của em thì code có thể như sau, viết cho 3 ngắt là timer0, int, onchange, với quyền ưu tiên lần lượt như trên. Việc kiểm tra
bit timer0=1;
bit int0=1;
bit rb=1;
void interrupt my_isr(void)
{
GIE=1;
if (TMR0IF & timer0)
{
timer0=0;
\\ goi chuong trình xử lý ngắt TMR0
timer0=1;
}
if (INTIF & int0 & !(TMR0IF))
{
int0=0;
\\ gọi chương trình xử lý ngắt INT
int0=1;
}
if (RBIF & rb & !(TMR0IF) & !(INTIF))
{
rb=0;
\\ goi chuon trinhg onchange
rb=1;
}
\\ gie tự động được set là 1
}
Anh CHIBANG cho đáp an đi, em nghĩ là em sai, mà ông anh học lên đai gì và tại bang nào nhỉ ?
Không xóa cờ ngắt thì làm sao được
To ChiBang: Bác chỉ giáo em điều này: đẩy vô stack và rút ra rồi lại đẩy vô...làm như thế có tràn ko???
Em kô nhìn thấy lỗi sai của em mới chết ạ.
Vẫn chưa đúng... khà khà.. tràn stack ngay lập tức khi gặp bất cứ 1 ngắt bất kỳ nào.
Tại hạ là kẻ vô danh tiểu tốt, đâu dám xưng tên họ để các đại hiệp cười chế. Trong khi lưu lạc giang hồ, thấy Giang Nam cảnh đẹp, xem phong thủy thấy dientuviet.net là nơi đất lành chim đậu, sơn thủy hữu tình nên lưu lại và nhã hứng uốn 3 tấc lưỡi, họa đôi vần thơ.
Bảo trọng
Hà hà ... Độc cô cầu bại
Thôi ông anh cho đáp án đi, để đàn em mở rộng tầm mắt.
Quá dễ, Mua cái máy xq quét tòan thân, lấy bàn và khung di chuyển. Tháo đầu xquang ra bán ve chai, mua cái máy siêu âm gắn vào vị trí đầu đèn. Setup máy là chạy chính xác, còn file Setup thì chưa nghĩ ra....
Mạch tạo sương là tự dao động.
Mach 555 là đóng mở chu kỳ tần số thấp.
IC 555 giá rẻ, chỉ chạy lên tần số vài trăm ki lô hẹc thôi. Thăng cao hơn là méo dạng rồi tịt.
Mach sương thì dao động tần số tầm 2 mê ga hẹc cơ !...
Chuyện này cũ rồi.
Họ trả lương cho CN, sau đó lại bán hàng thu tiền về. Họ còn cấp các dịch vụ như chỗ ăn ở, quán cafe , giải trí, phương tiện giao thông. Mục đích là thu tối đa số tiền đã chi trả.
Hàng hóa sx ra, chuyển...
bao nhiêu năm quên bẳng đi, là mình còn có 1 chút xíu nghệ thuật bài bản, đã dạy cho con cháu chơi đàn, dù bố mẹ và chúng không xem là quan trọng. Hôm qua ngày bế mạc lớp lá, bỗng dưng thằng cháu ngoại thấy con bé được sơ giới thiệu...
Chào các anh em, tình hình là mình lo làm ăn không để ý sức khỏe, giờ có chút vấn đề rồi? không biết trên này có anh em nào độ tuổi U35 -> 40 đang có dùng các loại thuốc, thuốc bổ hay thực phẩm chức năng giúp bổ thận tráng dương,...
Trong thế giới phần cứng năm 2026, AMD Ryzen 5 7500X3D không chỉ là một cái tên mới, nó là một tuyên ngôn về hiệu suất. Dựa trên các thử nghiệm khắt khe trong môi trường chơi game chuyên nghiệp, con chip này đã chứng minh rằng: bạn không cần...
Em vừa dự một cái Odoo Business Show 2026 tuần rồi, ngồi nghe mấy session về tự động hóa sản xuất mà em thấy có vài điểm thấy đáng chia sẻ với mấy anh em làm kỹ thuật ở đây.
Mình có cái tay chuyển số chơi game của PXN, hiệu là PXN shifter A7, nó bị lỗi 1 con biến trở chỗ gạt lên xuống dùng để xác định là đang đẩy lên, ở giữa, hay gạt về. Con biến trở này giá trị là 10kOhm, sau khi bị hư thì mình đo chỉ...
Comment