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.
Cứ set_tris_x, output_x mà viết vừa đơn giản mà không lo sai. Viết trực tiếp tên thanh ghi cần phải định địa chỉ. Địa chỉ này mỗi dòng một khác, nếu định sai sẽ hoạt động sai. Tốt nhất là cứ cấu trúc có sẵn của CCS mà viết. Còn về chức năng, lợi hại thì là như nhau.
Cứ set_tris_x, output_x mà viết vừa đơn giản mà không lo sai. Viết trực tiếp tên thanh ghi cần phải định địa chỉ. Địa chỉ này mỗi dòng một khác, nếu định sai sẽ hoạt động sai. Tốt nhất là cứ cấu trúc có sẵn của CCS mà viết. Còn về chức năng, lợi hại thì là như nhau.
Nếu để đánh giá về chức năng, lợi hại thì cũng có thể nó cũng khác nhau đấy bạn ạ.
Giả sử nếu viết định nghĩa trước
#byte TRISA =0x85
#byte TRISB =0x86
#byte TRISC =0x87
#byte TRISE =0x89
#byte PORTA =0x05
#byte PORTB =0x06
#byte PORTC =0x07
Thì khi viết TRISB=0x00; PORTB=0xff;
hay RA1=1; RA1=0;
RB3=1;RB3=0;
RB4=1; RB4=0;
RB5=1; RB5=0;
RB6=1; RB6=0;
RB7=1; RB7=0;
Mỗi lệnh này dịch sang ASEM sẽ tiết kiệm 1 lệnh đấy và tuơng ứng là một ô nhớ he he
Thử mà xem nha!!!!!
Nếu để đánh giá về chức năng, lợi hại thì cũng có thể nó cũng khác nhau đấy bạn ạ.
Giả sử nếu viết định nghĩa trước
#byte TRISA =0x85
#byte TRISB =0x86
#byte TRISC =0x87
#byte TRISE =0x89
#byte PORTA =0x05
#byte PORTB =0x06
#byte PORTC =0x07
Thì khi viết TRISB=0x00; PORTB=0xff;
hay RA1=1; RA1=0;
RB3=1;RB3=0;
RB4=1; RB4=0;
RB5=1; RB5=0;
RB6=1; RB6=0;
RB7=1; RB7=0; Mỗi lệnh này dịch sang ASEM sẽ tiết kiệm 1 lệnh đấy và tuơng ứng là một ô nhớ he he
Thử mà xem nha!!!!!
Chưa hiểu bạn định nói về chỗ nào.
Đâu bạn ơi chỉ trên hình giúp mình lệnh nào ít hơn lệnh nào 1 lệnh ASM ấy nhỉ ?
Chưa hiểu bạn định nói về chỗ nào.
Còn việc tiết kiệm 1 ô nhớ nó không phải điều cần thiết. Điều cần thiết cho người lập trình là thuật toán xử lý tốt, phối hợp ngoại vi chứ không phải viết sao cho nó tốn ít ROM. Hình bên dưới tôi đã test cho bạn. Trong project tôi đã cố tình định địa chỉ PORTB sai và kết quả chắc chắn sẽ sai nhưng sẽ thấy 2 lệnh dùng "output_x" và "PORTX" đều mất 1 lệnh ASM. Còn lệnh "set_tris_x" tốn hơn lệnh "TRISX=" 1 lệnh ASM lý do giá trị 0xFF được lưu khi dùng lệnh "set_tris_x" vẫn được dùng cho lệnh "PORTX=" nên nó không cần lệnh ASM "MOVLF FF". Do vậy dùng 2 cách đều tương đương nhau tuy nhiên rủi ro khi dùng cách định địa chỉ là cao hơn.
Bạn test rồi à. Tiết kiệm một ô nhớ cũng rất quan trọng, tiết kiệm được một dòng ASEM "MOVLF FF". là không mất một lệnh sử lý.
Nói như bạn thì bạn định nghĩa sai mà nó chẳng sai hài quá. Bạn không thấy là dịch file.HEX nó cũng ngọn hơn à.
Còn chuyện ngoại vi thì phải hiểu cấu trúc Chip rùi hãng nói....
Bạn test rồi à. Tiết kiệm một ô nhớ cũng rất quan trọng, tiết kiệm được một dòng ASEM "MOVLF FF". là không mất một lệnh sử lý.
Nói như bạn thì bạn định nghĩa sai mà nó chẳng sai hài quá. Bạn không thấy là dịch file.HEX nó cũng ngọn hơn à.
Còn chuyện ngoại vi thì phải hiểu cấu trúc Chip rùi hãng nói....
Ở trên kia bạn có thấy nó có tiết kiệm được lệnh nào đâu ?
Định nghĩa sai ở đây tôi nói đến việc định địa chỉ sai. Ví dụ PORTB là 0xF82 nhưng tôi đã cố tình đặt nó là 0xF81 tức là của PORTA. Khi Complie sẽ không báo lỗi nhưng khi chạy thì giá trị thay vì gán cho PORTB như trong lập trình thì nó sẽ được đưa ra ở PORTA ở trong thực tế.
Nếu người ta quan tâm đến 1 lệnh xử lý thì có lẽ người ta đã nhắm đến ASM chứ không phải C. Việc hiểu cấu trúc không phải là quá cần thiết với người lập trình. Cái quan trọng là người ta làm được ra cái gì, hiệu năng làm việc của người lập trình là bao nhiêu.
Ví dụ modul UART . Tôi chỉ cần biết là nó truyền dữ liệu nối tiếp qua RX,TX. Tôi đi tìm các hàm setup, các hàm điều khiển, ốp vào, vậy là xong. Chả rỗi hơi đi tìm hiểu thanh ghi, địa chỉ, cấu trúc làm cái gì cho mệt mà chả giải quyết được vấn đề gì.
Nếu cứ đè nặng tư tưởng hiểu cấu trúc như làm với 8051 thì chắc chắn đó sẽ là những trở ngại khi tiếp cận với những loại chip nhiều thanh ghi, modul ngoại vi như các dòng PIC cao hơn, ARM....
Ở trên kia bạn có thấy nó có tiết kiệm được lệnh nào đâu ?
Định nghĩa sai ở đây tôi nói đến việc định địa chỉ sai. Ví dụ PORTB là 0xF82 nhưng tôi đã cố tình đặt nó là 0xF81 tức là của PORTA. Khi Complie sẽ không báo lỗi nhưng khi chạy thì giá trị thay vì gán cho PORTB như trong lập trình thì nó sẽ được đưa ra ở PORTA ở trong thực tế.
Nếu người ta quan tâm đến 1 lệnh xử lý thì có lẽ người ta đã nhắm đến ASM chứ không phải C. Việc hiểu cấu trúc không phải là quá cần thiết với người lập trình. Cái quan trọng là người ta làm được ra cái gì, hiệu năng làm việc của người lập trình là bao nhiêu. Nếu cứ đè nặng tư tưởng hiểu cấu trúc như làm với 8051 thì chắc chắn đó sẽ là những trở ngại khi tiếp cận với những loại chip nhiều thanh ghi, modul ngoại vi như các dòng PIC cao hơn, ARM....
Khi tôi càng lập trình nhiều thì tôi cũng càng muốn một chương trình được tối ưu hơn nữa.
Tối ưu cả về cấu trúc chương trình, lệnh, Ram, Rom............................................... ..
Hiểu cấu trúc mà làm gì trong khi lập trình vẫn chẳng ra gì !
điều quan trọng nhất trong lập trình hiện đại là Ý TƯỞNG và biết cách khai thác sử dụng phần mềm .
Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Khi tôi càng lập trình nhiều thì tôi cũng càng muốn một chương trình được tối ưu hơn nữa.
Tối ưu cả về cấu trúc chương trình, lệnh, Ram, Rom............................................... ..
Có lẽ phương châm làm việc 2 ta nó khác nhau
Tôi thì muốn triển khai các thuật toán lớn, lớn nữa. RAM, ROM không quá quan trọng, quan trọng sản phải thật đa năng và thật "khôn".
Có lẽ phương châm làm việc 2 ta nó khác nhau
Tôi thì muốn triển khai các thuật toán lớn, lớn nữa. RAM, ROM không quá quan trọng, quan trọng sản phải thật đa năng và thật "khôn".
Ừ có con PIC nó khôn và cũng có con nó bình thường, nhưng người khôn thì biến con bình thường thành con gần khôn mà người ng ng thig biến con khôn thành con ng ng....
Có lẽ phương châm làm việc 2 ta nó khác nhau
Tôi thì muốn triển khai các thuật toán lớn, lớn nữa. RAM, ROM không quá quan trọng, quan trọng sản phải thật đa năng và thật "khôn".
MCU đã qua rồi cái thời giá rom đi đôi với giá tiền ! không sợ thiếu ROM , Chẳng sợ thiếu RAM ... chỉ sợ sản phẩm bị ế !
Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Nói chung là 2 trường phái này luôn là xung đột với nhau và Complier cũng theo 2 trường phái đó ví dụ MikroC, CCS và Hitech C. Bàn luận nhiều chỉ thành cãi vã. Ai khôn nhiều, ai khôn ít thì chính những sản phẩm, những project của họ là câu trả lời chân thực nhất.
PS ngoài luồng : Bây giờ MCU rẻ, RAM, ROM nhiều, có những con tới 256KB ROM và nhiều hơn nữa chỉ sợ không có sức mà viết thôi. Tối ưu hóa chương trình vẫn là vấn đề cần quan tâm nhưng chỉ là thứ 2,3... với tôi là vậy
Chúc vui .
Dạ chú rủ cô ấy đi ăn uống, cà phê, xem phim...nhớ nắm tay, rồi thì ôm hôn,...trong vòng 1 tuần mà ko nắm tay được, 1 tháng mà ko ôm đc thì dẹp ngay và luôn ạ. Nhắn tin, gọi điện ít thôi ạ, trả lời quá lâu hoặc ko trả lời cũng dẹp ngay ạ. Nên thể hiện chú là người có điều kiện nữa ạ...
Cảm ơn bác đã nhiệt thành chia sẻ kinh nghiệm bản thân mình cho mọi người.
Tuy nhiên, theo tiếp xúc hạn hẹp của em với mosfet thì vấn đề bác đo vôn ở cực D và thấy đỉnh nó 70V/55V Vds max, như thí nghiệm và trong hình của bác...
Cho tới thời điểm này, quả thật Đình Thường đây quá thất vọng, không hào hứng với Suno-AI lắm bởi ra lệnh Creat mấy chục lần với các thay đổi thì mới chọn được 2 bản hát đúng giai điệu tầm 80% để cắt ghép tạo thành bài hát...
Chán quá các bác, em nhạt nhẽo quá nên tán em nào cũng tạch, tuyệt vọng vô cùng, nay lại được mấy anh đồng nghiệp cty đối tác mách cho em gái kia sinh năm 2K đầu, em chả biết nhóm đối tượng này phải tán ra sao bây giờ ?
Tính ra em...
Có thể, ví dụ phần phản hồi gồm vi mạch cách ly quang, zener thứ cấp, transistor và điện trở phản hồi dòng ... Bất kỳ linh kiện nào nhóm đó hỏng dẫn tới mất đường phản hồi. TNY chính hãng phát hiện được chuyện đó nhưng linh kiện...
· Thí nghiệm 1 (Mạch boost, Vcc=12V, kích bằng dao động PƯM, duty 10%): * Không có snubber + không tải: Xuất hiện hiện tượng dao động tắt dần tại cực D Mosfet (ringing). Hình 1 cho thấy trong chu kỳ đầu, điện áp spike lên tới hàng trăm V, điện...
Comment