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.
Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
Để check IC sống hay chết thì đơn giản : bạn lắp cái mạch ( khuếch đại hoặc dao động ) chạy bằng con IC đó ,nhưng vị trí IC thì lắp cái đế .... thế là cứ cắm rút thì biết . Còn không thì kiếm cái này : https://shopee.vn/Xu-M%C3%A1y-ki%E1%...di-%C4%91%E1%B...
Tình hình là em có mua mạch 3s về để hàn vào khối pin 12v, hàn xong em đo tại các chân từ B-, B1, B2, B+ thì điện áp pin vẫn đủ 12,6v, nhưng tại 2 chân ra P- P+ thì đo chỉ được 6,3v là bị sao các bác, và chân P- P + này đồng thời là chân sạc xả thì mình cắm sạc xả cùng lúc được ko ạ
...
Việc đó tùy thuộc trình độ khoa học kỹ thuật công nghệ ứng dụng hiện tại thôi.
Trong datasheet,họ đưa ra nhiều thông số. Tùy theo khả năng , và những thông số họ cần, họ sẽ kiểm tra casc số đo có khớp với số liệu trong datasheet...
Em có mạch AT89s8253 đang cần sửa số serial no của CHIP mà giờ lâu quá rồi không dùng keil nên không biết phải làm sao, trong khi chỉ còn file hex. Mạch nạp thì progris khi viết không sửa được số serial của IC. Rất cần bác nào còn làm về 89...
Chào các chuyên gia.
có cách nào để kiểm tra IC op-amp như LM324, 358, 393 sống hay đã chết không các bác?. Tìm mãi trên mạng mà không có thoing tin nào.
rất mong các chuyên gia chia sẻ ạ
Comment