PDA

View Full Version : Nộp bài tập "Hoc PIC trong 1 ngày"


teo
28-05-2005, 01:56 PM
Bác falleaf ơi, mấy bửa nay theo dõi bài viết của bác, em cũng bắt đầu nghiên cứu xem sao, nhưng có phần vẫn chưa hiểu về công thức tính delay của bác, em nộp bài tập này nhờ bác xem giúp coi ntn :p

Bài 1:
******************************
delay:
movlw d'250'
movwf count1
del_trong1:
movlw d'100'
movwf counta
del_trong2:
decfsz counta
goto del_trong2
decfsz count1
goto del_trong1
return
;tinh toan delay
; call = 2
; return = 2
; del_trong2 = (100-2)+(98+98*2)+1 = 393
; del_trong1 = 248+(248+248*2)+1 = 993
; --------------------------------------
; total = 2+2+393*993 = 290951
**********************************
Bài 2:
**********************************
loop:
movlw b'100000000'
movwf LEDPORT
call delay
movlw b'010000000'
movwf LEDPORT
call delay
movlw b'001000000'
movwf LEDPORT
call delay
movlw b'000100000'
movwf LEDPORT
call delay
movlw b'000010000'
movwf LEDPORT
call delay
movlw b'000001000'
movwf LEDPORT
call delay
movlw b'000000100'
movwf LEDPORT
call delay
movlw b'000000010'
movwf LEDPORT
call delay
movlw b'000000001'
movwf LEDPORT

goto loop
**********************************
:) :) :)

falleaf
29-05-2005, 07:38 PM
Cám ơn tèo.. hihi..

Anh sẽ xem lại cho chú sau. Nhưng lần sau, chú gửi bài lên, chú nhớ gửi kèm file .zip cả phần source của chương trình chú viết, để anh đỡ mất công copy qua lại nhé. Vì sau này có nhiều phần lằng nhằng trong bài tập dính đến các phần phía trên thì post rất dài.

Chú gửi dạng gửi file đính kèm lên đây.

falleaf
31-05-2005, 02:30 AM
Công thức em tính bị sai rồi TEO, vì vòng lặp ở trong anh viết công thức tính ở bên kia sai, cho nên em xem lại cách tính của anh.

COUNT_L anh ký hiệu cho giá trị ban đầu nhập vào
DECFSZ và GOTO là số chu kỳ máy cần thực hiện của hai lệnh này.

Như vậy, khi bắt đầu lệnh DECFSZ đầu tiên, anh giả sử COUNT_L ban đầu = 2 đi, thì rõ ràng sẽ tốn 5 chu kỳ máy trước khi nhảy đến lệnh RETURN, chứ không phải 2 chu kỳ máy giống như công thức ban đầu anh viết. Có thể do viết bài dài và không tập trung, nên lúc viết mặc dù cố gắng cẩn thận, những cũng không tránh khỏi sai sót như thế này.

Vòng lặp delay_trong2 của em, giống y như bài cơ bản. Do vậy, nó sẽ là 99*3 + 2 = 300 chu kỳ chứ không phải 393 chu kỳ như cách em tính

Vì em lưu ý rằng, nếu kết quả phép trừ của DECFSZ là khác không, thì lệnh này chỉ tốn 1 chu kỳ máy, như bất kỳ lệnh nào khác. Nhưng khi kết quả bằng 0, thì thay vì nó thực hiện lện GOTO thì nó thực hiện lệnh NOP, như vậy, nó giống như trở thành lệnh 2 chu kỳ, chứ không phải nó là một lệnh 2 chu kỳ.

Em xem lại cách tính nhé.

noisePIC
31-05-2005, 11:13 AM
Nộp bài tập
....
Em đề nghị anh falleaf nâng giá lên một chút nhé 10K một bài tập hoàn chỉnh.Tiền bây giờ rớt giá lắm
Đề nghị anh falleft sửa nút TAB giống..trong text editor nhé!

Falleaf sửa: Nếu bạn muốn copy và paste một đoạn code, bạn cứ đánh dấu bằng lệnh

[code ]

.. code cua ban o day

[/code ]

Nhớ viết liền lại, không có khoảng trắng chỗ dấu ] thì bạn sẽ thấy nó hiển thị đúng.

teo
01-06-2005, 10:43 AM
A bây giờ thì em đã hiểu rùi, cám ơn bác falleaf :)

falleaf
02-06-2005, 01:11 AM
Ghi nhận ý kiến của bạn Noise PIC về việc thay biểu tượng code, sẽ cố gắng sửa trong thời gian sớm nhất có thể.

Noise PIC, bạn vẫn chưa tính toán số chu kỳ hao tổn của vòng lặp.

Tèo, sau khi tính lại, em gửi lại kết quả cuối cùng lên nhé.

Chúc vui.

PS> Các bạn gửi bài, như tôi đã nói về việc soạn thảo tutorial, các bạn nên gửi kèm theo một file đầy đủ, đã test của các bài tập. Cái tôi cần là các bạn đã test, có hình chụp và gửi. Bởi vì khi các bạn thuyết phục tôi bằng mạch test, cũng giống như sau này tôi sẽ thuyết phục người đọc bằng chính những bức hình của các bạn vậy. Hôm nay các bạn làm bài thiếu hình ảnh cụ thể minh họa, nhưng ngày mai các bạn khóa sau sẽ có hình ảnh của các bạn là những minh họa cụ thể nhất.

Mẫu chương trình tôi đã đăng, nhưng không hiểu sao các bạn lười copy lại hay sao ấy, mà vẫn chỉ viết một cách cẩu thả.

Tôi không cần sự chứng minh khả năng các bạn có thể làm được bài tập nhanh hay mau, mà cần khả năng làm việc của các bạn có thể kế thừa được không. Tôi là người kế thừa của các bạn đầu tiên, vì tôi sẽ dùng nó để soạn tutorial.. các bạn trở thành những ông giáo bất đắc dĩ.