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 .
À, sản phẩm họ thiết kế ra, họ yêu cầu mình chứng minh là sau chỉnh sửa thì 1 là gỡ jump cắm lại không hư mạch, 2 là gỡ jump thì 220Vdc vẫn dùng được led áp thấp 20V mà không hư led như mình báo, nên họ hiểu rõ mà....
Bài học kiểu trực tuyến dù là loại đơn giản bậc nhất cũng vẫn cần chú tâm. Chỉ bật tai nghe lên thì không có loại nào thấm nổi đâu. Cách hay hơn, dễ hơn là kiếm phim tiếng Anh nào đó xem, ban đầu bật phụ đề tiếng Việt, nghe và...
Ha ha !
Thay đổi cách nghĩ thì sẽ nghĩ ra.
.
.
.
Một thứ cần kiểm soát dòng + nhiệt + công suất tiêu tán. Nhưng lại dùng tư duy ổn áp. Làm sao mà giải quyết được.
Nó là mạch ổn dòng.
Vì thế các anh nước lạ không thèm quan tâm là phải....
Vì cứ phải chỉnh sửa cho mỗi dải điện áp, quên chỉnh thì hư chíp phải bảo hành nên em thấy bất tiện, mới cần cái mạch 1 dải áp cao dùng cho tất cả loại đèn đó bác!...
Mình thỉnh thoảng cũng làm việc với người nước ngoài nói tiếng Anh thì toàn ghép nhặt từ, cộng với quơ tay quơ chân để diễn tả, hix. Nỗi khổ là không biết cách để mô tả sự việc. Tôi muốn tìm các bài giảng tiếng anh nào phù hợp...
Comment