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..
Lỗi do bác trungkt nói trên do em đánh máy sai thôi, bỏ qua cho e nhé, vi em ko định nói cái đó. Vì đố như vậy dễ quá
He he... bác anthrax phát hiện được rồi. Khà khà.. nhưng bác nào giải thích rõ hơn ??? nếu ko khai báo như bác anthrax nói thì sao?
Nếu ko khai báo "reentrant" thì ví dụ hàm thu()(mức 1) đang trong main đang chạy và i=50 chẳng hạn. Lúc đó đột ngột có ngắt và khi thực hiện ngắt có lệnh gọi lại hàm thu(). Khi chạy hết hàm thu()(mức 2) trong ngắt thì khi đó i=100 mất rồi. Và hết chương trình phục vụ ngắt thì nó quay về main để nó thực hiện công việc đang dang dở, nghĩa là nó quay lại thực hiện tiếp hàm thu()(mức 1). Nhưng bây giờ giá trị của nó ko là 50 mà là 100 mất rồi nên gây ra lỗi ở đây. Đó là do nguyên nhân biến i được lưu trữ ở 1 ô nhớ cố định trong RAM
Khai báo "reentrant" thì có thể gọi lại hàm đó, có thể hàm trong hàm...
Không khai báo "reentrant" : do các biến được lưu ở các ô nhớ cố định, và khi hàm ấy được gọi khi chưa thoát ra thì giá trị mới sẽ đè lên giá trị cũ, và ko có sự cất biến đó vào "Ngăn xếp". Nên có thể dẫn tới các biên cục bộ bị sai.
Lỗi do bác trungkt nói trên do em đánh máy sai thôi, bỏ qua cho e nhé, vi em ko định nói cái đó. Vì đố như vậy dễ quá
He he... bác anthrax phát hiện được rồi. Khà khà.. nhưng bác nào giải thích rõ hơn ??? nếu ko khai báo như bác anthrax nói thì sao?
Bác BA đưa cho cái bài của CB viết khen hay, vào thấy hay thật.
F nhà ta không làm với C nhưng vì nói chuyện với bác BA vui nên đưa thêm một giải pháp củ chuối cho vui.
Đặt tên hàm khác nhau.
Khi yêu cầu biến chung, hoặc cùng biến. Thì khai báo biến dạng volatile. Khi đó, tất cả các bản copy của các biến sẽ thay đổi theo. Như vậy, vẫn đảm bảo hai hàm y nhau, nhưng khi viết thì viết dư ra một hàm (tốn bộ nhớ), nhưng không phải suy nghĩ lằng nhằng. Logic sẽ rõ ràng hơn.
Chờ thêm các bài của CB hehehee... CB bắt đầu lấy biểu tượng của Nigel rồi à, coi chừng lão kiện, và cũng coi chừng ... bị anh em chúng nó bụp
Hồi tui mới học PIC, Nigel ỗng giúp tui qua email và tin nhắn trên đó nhiều lắm, cho nên gần như tui coi ỗng là thầy, mặc dù ỗng chẳng biết đã giúp bao nhiêu thằng sinh viên từ tò te tí te lên đến master rồi expert bên electro tech.
Tiểu đệ có một câu đố vui vui thế này, ChiBang đã đố chủ yếu về cách lập trình, tiểu đệ đố về phần cứng bên ngoài.
Vấn đề thế này, trong thiết kế phần cứng của PIC do thiết kế các thành phần khác bây giờ chỉ còn:
- 1 channel ADC (10bit)
- 1 bộ CCP
- 1 chân OSCIN, gẫy mất chân OSCOUT
- 5 chân IO tự do
- 8 chân để điều khiển 1 LED 7 thanh (loại 1 số) không dùng dot.
bây giờ cần lắp thêm các thành phần sau đây: 1 LED 7 thanh nữa (loại 1 số),
1 keymatrix 4x4, 12 đèn LED đơn, ngoài ra hệ thống phải chạy đa tốc độ tức là có thể điều khiển tốc độ của PIC bằng phần mềm bên trong. Ngoài ra tiểu đệ lỡ lắp mạch như ông TM-eDESIGN, tương 13V vào chân PIC khè khè, làm hỏng mất bộ WATCHDOG bây giờ cần thiết kế một bộ hẹn giờ ngoài (do người dùng định được) để đánh thức PIC dậy khỏi chế độ SLEEP để làm một công việc gì đó.
Yêu cầu: Nếu dùng bộ CCP thì có đủ các chân của nó, nên dùng PWM thì có 1 chân OUT, capture thì có 1 chân, comparator thì có hai chân, LED 7 thanh là loại 1 số không dùng loại 2 số và 8 chân đã nối cứng với 1 LED 7 thanh bây giờ chỉ có thể nối thêm ra một LED khác mà không thể dùng chân này làm việc khác. Keymatrix thì như bình thường vẫn dùng, LED ở đây là LED phát quang bình thường 2 chân. Hệ thống có hai tốc độ thấp và cao, thấp để tích kiệm năng lượng, cao để tính toán việc chọn tốc độ do phần mềm bên trong quyết định. Không dùng thêm IC ngoài, tụ, trở, diode, trans dùng thoải mái.
Chắc câu này dễ, chờ tin các bác !
Mình không sử dụng PIC nên không rành về phần cứng con này tui nhiên mình xin đáp một phần về Keypad thì chỉ cần dùng 1 chân ADC thì có thể điều khiển được 16 phím dễ dàng. Mình dùng AVR chỉ mới 1 ngõ vào ADC mà kết nối được 32 phím và còn có khả năng mở rộng cho phép khoãng 64 phím.
Vcc
|
| | R1
| R2 R3 ..... Rn
ADC<----|------/\/\/\-----/\/\/\------.........
| | |
| | |
\ key1 \ key2 ... \ key n
| | |
gnd gnd gnd
Mình không sử dụng PIC nên không rành về phần cứng con này tui nhiên mình xin đáp một phần về Keypad thì chỉ cần dùng 1 chân ADC thì có thể điều khiển được 16 phím dễ dàng. Mình dùng AVR chỉ mới 1 ngõ vào ADC mà kết nối được 32 phím và còn có khả năng mở rộng cho phép khoãng 64 phím.
Vcc
|
| | R1
| R2 R3 ..... Rn
ADC<----|------/\/\/\-----/\/\/\------.........
| | |
| | |
\ key1 \ key2 ... \ key n
| | |
gnd gnd gnd
Mình không sử dụng PIC nên không rành về phần cứng con này tui nhiên mình xin đáp một phần về Keypad thì chỉ cần dùng 1 chân ADC thì có thể điều khiển được 16 phím dễ dàng. Mình dùng AVR chỉ mới 1 ngõ vào ADC mà kết nối được 32 phím và còn có khả năng mở rộng cho phép khoãng 64 phím.
Vcc
|
| | R1
| R2 R3 ..... Rn
ADC<----|------/\/\/\-----/\/\/\------.........
| | |
| | |
\ key1 \ key2 ... \ key n
| | |
gnd gnd gnd
Cách này dùng được, vì tôi đã dùng rồi, giải pháp được chấp nhận. Nhưng còn nhiều tính năng khác, bác dùng cái này cẩn thận mất cái kia.
Câu đố của bác trúc trắc, em tập trung công lực mở hết nhãn quang mã vẫn ko tài nào hiểu được bí kíp.
Bác nói ngắn gọn hơn, ko cần gợi ý cũng được, gợi ý mất cả hay...
Nhưng em hơi đoán ra ý tưởng của bác, em nói ra một số "tinh hoa" bác có ý định có thể dùng như sau:
1-Về bắt phím: có thể dùng 1 kênh ADC--->16 phím như chơi, hoặc có thể dùng chung 8 chân của LED 7T(--> ko tốn thêm bất cứ một chân nào khác).
2-Về hẹn thời có thê dùng chức năng counter hoặc compare, và phi một giao đông ngoài vào là OK(tốn 1 chân thui nhé).
3-12 LED đơn thì chỉ cần tốn 4 chân là OK hết.
Tài nguyên chân như trên mình có thể thiết kế ít chân hơn là cái chắc.
Về bộ tạo dao đông thì chỉ cần 1-2 con trans là OK.
Thiết kế 2 tốc độ có 2 cách:
Cách 1: sử dụng sleep mode kết hợp sự đánh thức của bộ dao động ngoài-->phát ngắt vào chân counter/compare(tốc độ thấp) và tốc độ cao là tốc độ khi config bit của PIC.
Cách 2: dùng chức năng điều chỉnh lựa chọn bộ chia tần số dao động của PIC(chỉ một số con có thui: ví dụ 16F88/628, 18F4331...)
Ko biết tinh hoa của bạn PTH nằm ở đây cả chưa?
Sao hình nó chạy tùm lum thế không biết lúc viết nhìn đẹp lắm mà
còn Led thì có thể dùng thêm 7447 không như vậy chỉ cần tốn 4 chân thôi còn Watchdong thì có thể dùng mạch trể kết nối bên ngoài khi PIC còn hoạt động thì nó tạo một xung ở chân nào đó để ngăn không cho ngõ ra của mạch này xuống thấp còn khi PIC bị treo thì chân này nó hoặc thấp hoặc cao nên không tác động thì sau một thời gian trễ nó sẽ có ngõ ra ở mức thấp nên tác động vô chân reset của PIC
C
PIN? ---------------| |---------------------tới mạch Reset (mạch trễ) phức
|____/\/\/\______| tạp qá nên ko vẽ.
R
giả sử chân Pic ở mức cao thì tụ sẽ dẩn cho đến khi tụ đầy thì ngưng sau đó chân PIC xuống thấp tụ sẽ xã điện qua điện trở R (~1M) quá trình cứ tiếp tục như vậy nó sẽ giữ cho mạch Reset không hoạt động. Mạch này tui cũng dùng để Reset 8051.
Bái phục, bái phục, tiểu đệ phải nghĩ mất hơn hai tiếng đồng hồ, thế mà đại ca giải được ngay, tuy nhiên đa tốc độ thì chưa OK lắm. Mà 12 LED bằng 4 chân, mong đại ca cho cái schematic.
Dạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
Hay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
Dạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
Comment