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..
Gửi 4MD: câu đố của bác tại chân RA4 có thêm 1 tính năng đặc biệt nữa mà có khi bác ko nghĩ ra cũng nên... he he...
Bác CHIBANG làm khó em rồi!
Có phải ý bác là: Chân RA4 có chức năng khác nữa là lối vào cho một timer ngoài nên cần một điện trở PULL-UP kéo lên khoảng 10k ?
Em sẽ trả lời câu đố trên sau 1 tuần nữa, hi hi.... Và thêm 1 câu đố hay nữa cho các bác đê...cac cao thủ về vi điều khiển nhào dô đê. Câu hỏi này ko chỉ áp dụng cho PIC mà còn ap dụng cho mọi loại vi dieu khien.
Trong C, nếu khi khai báo biến. Ví dụ:
unsigned char a,b,....;
Lỡ may nó báo là hết RAM cho việc khai báo biến. Vậy giải pháp nào để có thể khai báo thêm một số biến kiểu unsigned char mà bộ dịch ko báo lỗi và hệ thống vẫn chạy đúng? khà khà
Em sẽ trả lời câu đố trên sau 1 tuần nữa, hi hi....
Và thêm 1 câu đố hay nữa cho các bác đê...cac cao thủ về vi điều khiển nhào dô đê. Câu hỏi này ko chỉ áp dụng cho PIC mà còn ap dụng cho mọi loại vi dieu khien.
Trong C, nếu khi khai báo biến. Ví dụ:
unsigned char a,b,....;
Lỡ may nó báo là hết RAM cho việc khai báo biến. Vậy giải pháp nào để có thể khai báo thêm một số biến kiểu unsigned char mà bộ dịch ko báo lỗi và hệ thống vẫn chạy đúng? khà khà
bác có thể truy cập external data memory ,dòng 51 đều có vùng XRAM để truy cập
có thể dùng khai báo unsigned char xdata để khai báo các mảng lớn
Các giải pháp như: ghép thêm bộ nhớ ngoài, tối ưu phần mềm để giảm biến đều ko được chấp nhận. Giải pháp dùng EEPROM, FLASH cũng đương nhiên ko được châp nhận bởi liên quan tới tốc độ và số lần ghi xóa...
Thấy bác Falleaf cứ để ở mục chú ý nên tui trả lời vậy. Chi Bang xem có đúng ko nhé.
Lúc đó huy động các thanh ghi chức năng đặc biệt và coi đó như một biến ta lưu trữ, tất nhiên thanh ghi đó phải đảm bảo các yếu tố như:
+Có thể ghi/đọc.
+Ko dùng đến module chức năng liên quan đến thanh ghi đó.
Ví dụ: nếu ta ko sử dụng đến tính năng ghi/đọc EEPROM của PIC thì có thể coi các thanh ghi như: EEADR,EEADRH,EEDATA coi như là biên lưu trữ
Ví dụ: nếu ta ko sử dụng đến tính năng của timer1 của PIC hay 89(TMR1ON=0), thì có thể sử dụng các thanh ghi TMR1H,TMR1L coi như là biên lưu trữ
...
Cái này thú thực falleaf đầu hàng bác CB. Một là Falleaf chưa bao giờ dùng hết RAM theo cái kiểu thiếu vài thanh ghi. Hai là falleaf chưa bao giờ xài HT PIC... thế nên chịu chết, không biết đó có phải là thủ thuật của HT PIC chăng, chứ nếu hết RAM thì đúng là chịu.
Cách của bác BA thì falleaf không cho rằng đó là ý định đố của CB, nếu mà CB định đố vậy thì rõ ràng là cù nhầy rùi ... hehehe... vì nếu chỉ cần thêm vài thanh RAM, thì vẫn dùng các thanh RAM tương tác không đồng thời để sử dụng được. Thực tế thì sẽ chẳng ai làm kiểu vậy, chỉ cần cải tiến cái này cái kia một tí thì sẽ tiết kiệm được vài thanh RAM đó.
Các giải pháp như: ghép thêm bộ nhớ ngoài, tối ưu phần mềm để giảm biến đều ko được chấp nhận. Giải pháp dùng EEPROM, FLASH cũng đương nhiên ko được châp nhận bởi liên quan tới tốc độ và số lần ghi xóa...
Vì em đã chú thích ở trên rồi.
Ví dụ khi khai báo hết cả RAM mất rồi, người ta thường nghĩ đến chuyện:
-Tối ưu thuật toán để giảm RAM, thường thì tăng khả năng tính toán để giảm RAM.
-Ghép RAM ngoài.
-Chọn con uC khác nhiều RAM.
-Dùng giải pháp Flash/EEPROM để thay thế....
Lối mòn là như vậy... và như vậy rất mất nhiều máu... Bởi vậy có một cách khác thường mà ít ai để ý đến là chẳng đi đâu xa là dùng ngay các thanh ghi chức năng để làm RAM vì thực chất nó cũng là RAM mà.Thường thì một ứng dụng ta ko thể sử dụng tất cả các chức năng của vi điều khiển, bởi thế thừa rất nhiều chức năng ko dùng tới, vậy tại sao ta ko tận dụng nó vào việc lưu trữ biến???
Ví dụ PIC chẳng hạn: module timer1, timer2, I2C, chức năng ghi/đọc EEPROM, rs232, compare/pwm,adc.... rất rất nhiều. Một ứng dụng thường thì cũng chỉ khai thác một phần nào đó nên ---> thừa nhiều module chưa đụng tới. Trong khi ứng dụng của ta thiếu một vài ô RAM để lưu trữ, ví dụ vài biến: unsigned char, vậy ta dại gì mà ko cù nhầy... tận dụng tài nguyên đó.
Tuy nhiên để tận dụng tài nguyên này thì cần phải cẩn thận, đọc kỹ datasheet:
-Thanh ghi đó có thể ghi/đọc(vì một số thanh ghi chỉ cho ghi hoặc chỉ cho đọc...)
-Module của thanh ghi đó thường disable. Ví dụ timer1 thì phải tắt module timer1 đi mới có thể sử dụng các thanh ghi như TMR1H/L chẳng hạn
-Và cách trên nên chỉ áp dụng khi bí, nghĩa là chương trình chỉ thiếu một lượng RAM nho nhỏ để khai báo biến thôi.
He he.. và cách trên đã làm cho em 01 lần thành công, do dùng con 16F877A thiếu vài biến, ngại chuyển sang dùng 18F nên tương kế tựu kế.. khà khà...
Bác Binh Anh đã có đáp án đúng rồi, khà khà, lần sau bác Binh Anh khoan hãy trả lời nhanh vậy, để các cao nhân khác có hứng thú thì suy nghĩ, thê mới thú vị.
Mà sao luồng này chỉ em độc diễn mãi vậy? có ai có câu đố hay ko nào?
Một con uC ko có EEPROM (ko có chức năng tự ghi vào Flash, ko dùng chế độ sleep mode) và vì một số lý do nào đó nên thỉnh thoảng bị reset do WATCHDOG gây ra, do đó các nội dung tại các biến bị xóa về mặc định hết. Thế là công cốc. Trong khi yêu cầu bài toán cần lưu trữ một số biến để tiếp tục chạy cho lần sau. Vậy có thể ko dùng EEPROM mà vẫn giải quyết tốt bài toán này ko?
Giả thiết là nguồn rất ổn định và ko bao giờ bị mất điện. Và đương nhiên luôn phải enable WD, và ko được thêm linh kiện phụ.
Cấm kích động vì câu đố của tui... khà khà..
Last edited by CHIBANG; 27-11-2005, 00:09.
Lý do: Thêm một câu đố dễ làm các cao nhân kích động
Có một số thanh ghi không bị thay đổi trạng thái ghi reset bởi watchdog timer, phải chăng CB muốn dùng những thanh ghi này?
Thú thực rất khó khi trả lời cho câu hỏi bất kỳ một con uC nào, nhưng nếu con PIC, thì chúng ta hoàn toàn có thể chỉ ra một số thanh ghi không bị thay đổi giá trị do reset bởi WDT. (Xem tài liệu phần RESET)
Cái này là dựa vào câu hỏi "cù nhầy" của CB lần trước mà thử trả lời thôi.. hehehe.. bác CB chơi mấy quả này đúng là falleaf cũng đành bó tay.
Có lẽ bác F nói đúng rồi. Một số con uC khi bị reset của WD hoặc một số nguyên nhân reset khác thì một số thanh ghi ko đổi nội dung.Tính năng này tui đã thử nhưng ko áp dụng vì ko an tâm lắm. Bởi nguồn điện chập chờn xuống quá thấp thì nó ko còn đúng nữa.
Có lẽ đây cũng là câu trả lời mà CB đố lại 4MD là chân RA4 có tính năng này. Bị reset do WD nhưng ko thay đổi nội dung chân RA4(nêu gán TRISA4=0).
Khà khà, thôi, ta lại hành hạ các cao thủ một câu đố nữa.
Giả sử tất cả khởi tạo đều đúng, trình dịch báo dịch thành công. Các cao thủ xem đoạn code sau sai ở đâu?
//code khởi tạo...
//--------------------------Hàm main
main()
{
while(1)
{
if(P0_0==0) thu();
//code...
}
}
//--------------------------Hàm ngắt:
{
//code...
thu();
}
//--------------------------Hàm con
thu()
{
char i;
for(i=0;i++;i<100)
{
//Lam mot viec gi do....
}
}
//--------------------------
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