PDA

View Full Version : Topic về ASM


tvgt
23-04-2013, 11:00 AM
Như chúng ta biết có rất nhiều ngôn ngữ lập trình. Khoa điện ta cũng học Vi điều khiển-Vi xử lý. Hầu như dùng 8051, topic này các bạn bàn bạc chia sẻ các kiến thức về ASM. Để mở đầu mình đưa ra đoạn ASM đơn giản chạy led lần lượt, các bạn chuyển qua file Hex rồi nạp vào 8051. Có thể dùng protues để mô phỏng :

vuthuycoltd
23-04-2013, 11:00 AM
Led sáng dồn lại:

st06
23-04-2013, 11:00 AM
Nháy 8 led

tanlienthuan
23-04-2013, 11:00 AM
Bạn dùng KeiC ý. Phần mềm thì bạn tự lên mạng dow nhé. Nếu khó khắn thì mình gửi link sau. Còn đây là hướng dẫn sử dụng KeiC, cách chuyển C--> HEX. Để chuyển ASM-> HEX bạn thay chỗ :" Lưu file.C thành File.A" là đc. Chúc bạn thành công

http://www.mediafire.com/?au1uojyttt2

utes
23-04-2013, 11:00 AM
Uk để mình xem thế nào. KeiC mình có rồi nhưng ko biết cách sử dụng

antrung_nguyen
23-04-2013, 11:00 AM
Bạn có thể nói rõ hơn được ko. Mình chưa làm bao giờ, nhưng mình cần chi tiết để xem có mày mò đc ko. Cũng có thể học hỏi thêm.

tiemkinhduongquang
23-04-2013, 11:00 AM
Tức là thế này:
V_trungbinh = (t_on/T)* V_nguoncap

Ở đây t_on là thời gian mà động cơ được cấp điện, còn T là chu kỳ của xung
Như vậy thì thời gian t_on càng cao (trong khi chu kỳ không đổi) thì điện áp trung bình cấp cho động cơ càng lớn
Ta giả sử như tốc độ động cơ DC là tỉ lệ thuận với điện áp được cấp và điện áp nguồn là điện áp định mức của động cơ ( cho dễ hiểu) thì:
Khi ta tạo t_on =0 thì động cơ đứng yên
Khi ta tạo t_on= T thì động cơ chạy 100% tốc độ định mức
Khi ta tạo t_on = 50% T thì động cơ chạy 50% tốc độ định mức)
………………………….
Tức là tốc độ sẽ phụ thuộc vào giá trị của t_on
Vậy ta sẽ dùng một chân vdk để tạo ra xung điều khiển
ví dụ cần tạo khoảng t_on là 700us trong khi T là 1000us, bạn có hai cách để đặt timer:
+Cách 1: dùng timer của 8051 ở chế độ 16bit và nạp vào đó số -700 (giả sử thạch anh 12MHz), đặt chân tạo xung lên mức 1 rùi cho timer chạy. Khi timer tràn, báo ngắt thì trong chương trình ngắt mình dừng timer, đặt vào timer số -300 (để có được chu kỳ là 1000us), cho chân tạo xung xuống mức 0, rùi cho nó chạy. Nó ngắt, lại đặt lại -700….
+Cách 2: dùng timer của 8051 ở chế độ 8bit tự nạp lại, đặt vào timer giá trị -100. đặt chân tạo xung bằng 1 rùi cho nó chạy. Mỗi lần ngắt thì mình vào tăng biến đếm lên, nếu biến đếm lên tới 7 thì mình lại hạ chân tạo xung xuống mức 0, đặt biến đếm lại bằng 0. Đợi ngắt, lại tăng biến đếm, kiểm tra coi nó có bằng 3 không. Đúng rùi thì nâng chân tạo xung lên 1, reset biến đếm về 0 rùi cứ vậy mà tiếp tục……….

Thấy hướng dẫn như vậy,dùng C thì cũng ổn nhưng mình muốn dùng ASM để lập trình cho 8051 cơ