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....
}
}
//--------------------------
Việc lựa chọn một chiếc laptop gaming phù hợp với nhu cầu, ngân sách chưa bao giờ là dễ dàng. Và điều đó càng khó hơn trong năm 2026 khi mà mức giá liên tục tăng.
Nếu bạn chưa biết nên chọn một chiếc laptop gaming như thế nào...
Với mức ngân sách 20 - 30 triệu đồng trong năm 2026, các bạn sinh viên và dân văn phòng có thể tìm thấy nhiều lựa chọn cao cấp, mạnh mẽ, pin “trâu”, đặc biệt là các mẫu laptop AI hỗ trợ cho học tập và làm việc.
Dưới đây là một số mẫu laptop nổi bật trong phân khúc dưới 20 triệu giúp các bạn văn phòng, sinh viên và đặc biệt là tân sinh viên có thể dễ dàng lựa chọn được mẫu laptop phù hợp với nhu cầu và ngân sách của mình.
Việc chọn mua một bộ máy tính phục vụ cho các nhu cầu làm việc văn phòng và sử dụng cơ bản hàng ngày đang trở nên dễ dàng và tiết kiệm hơn bao giờ hết. Thay vì phải đau đầu trích ngân sách để mua cả vi xử lý lẫn card đồ họa rời...
Việc nâng cấp từ một dàn máy tính cũ lên cấu hình mới luôn khiến nhiều người đắn đo về mức chi phí bỏ ra. Nếu bạn đang tìm kiếm một sự lột xác hoàn toàn về hiệu năng mà vẫn cân đối được dòng tiền, combo giữa vi xử lý Ryzen...
Ổ bi có loại chịu lực dọc, loại chịu lực ngang.
Bạn kiếm một quyển Data cũng một hãng vòng bi nào đó. Họ sẽ cấp cho bạn đủ thông số kỹ thuật.
Khi lựa chọn được mã sản phẩm, bạn chỉ việc tìm mua mã đó, hoặc đặt hàng....
Sau hàng chục năm, không biết có ai còn nghĩ gì về tôi? Riêng tôi, nhớ nhiều về dientuviet nam. net. Ngày ấy tìm 1 người bạn đam mê về điện từ khó như trúng số độc đăc. Tôi đã trúng số độc đắc khi được mời về dientuvietnam.net...
Comment