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.
Trong hệ thống cầu trục, pa lăng hay cổng trục, nguồn điện phải được truyền liên tục để thiết bị vận hành ổn định. Chỉ cần xảy ra hiện tượng tiếp xúc kém, sụt áp hoặc mất điện cục bộ, toàn bộ dây chuyền sản xuất có thể...
Dạ cháu đọc 1 số bài viết của bác vi... thì nhớ đc bác là 1 cụ già gần 80 tuổi, sức khỏe yếu. Đam mê và làm vc về kỹ thuật điện. Thích thơ ca. Có nhìu bài chia sẻ quý báu cho thế hệ sau. Tuy nhiên già rồi nên khái tính, bảo thủ, nhưng vẫn đáng kính ạ... còn lão nhathung... thì kiểu bố đời
Hãng nào tùy thích thôi bác! bây giờ các hãng đều hỗ trợ xem qua máy tính hay điện thoại đều được. Gắn Trước tiên mua về cắm nguồn set ip hết xong hãy lắp lên, cam poe chỉ cần 4 lõi là hoạt động bình thường nên 1 dây kéo cho 2 cam vẫn ok
Con số đấy biểu thị gần đúng thôi, cái đồng hồ đó có đảm bảo chính xác hay không? pin có cục lên 4v4 vẫn bình thường. Cái gì cũng có sai số trong phạm vi không quá lớn thì không ảnh hưởng gì đâu, bàn ngay ngón ngắn ngón dài mà
Có lẽ nguồn viết bài này chỉ mang tính định tính để nói rằng cần thay đổi tổng trở tải để có Pmax chứ trình bày chưa chi tiết và thấu đáo một cách định lượng. Công thức tổng quát phải có mặt L mới được, và nói là "tổng...
Càng ngày, CNTT càng trở nên lôi thôi , rách việc.
Cái AI và Ge... trên trình duyệt chỉ tổ làm vướng mắt, mất thì gian.
Tôi toàm phải mất cộng tắt nó đi.
Em có con amply 12 sò D 718 và e688 , biến áp 15A, 30v 0 30 v, một kênh thì hoạt động bình thường, kênh còn lại nổ bụp bụp, sột sột, đèn tín hiệu nhảy lên vạch max, khoảng 4 đến 5 giây, sau đó đèn tín hiệu trả về mức không, Em thấy như...
Comment