sau 2 tuần mò mẫm em cũng làm được rồi, lỗi là do đoạn code trong ngắt để đảo trạng thái led bị sai
Cho em hỏi cai này - FAQ
Collapse
This is a sticky topic.
X
X
-
Sun Technologies JSC - http://www.suno.vn/
forum - http://forum.suno.vn/
Shop online - http://electronic.vn/
-
Trong bài hướng dẫn này thì tác giả có nói là thanh ghi delay_reg sẽ giảm 20+1 lần.Ứng với giá trị ban đầu của delay_reg bằng N thì sẽ giảm N+1 lần.Nhưng mình thử phân tích thì thấy thế này:Code:MOVLW d’20’ ; đưa giá trị 20 vào thanh ghi W MOVWF delay‐reg ; delay‐reg <‐ 20 loop DECFSZ delay‐reg,0 ; giảm giá trị trong thanh ghi delay‐reg ; và so sánh với 0, kết quả chứa trong W GOTO loop ; nếu giá tri thanh ghi “delay_reg” khác 0 ; thì nhảy tới label “loop”
-Giả sử ban đầu nạp vào thanh ghi delay_reg giá trị là 2.Loop lần 1 sẽ giảm thanh ghi delay_reg xuống còn 1 so sánh rồi thực hiện lệnh goto.Loop lần 2 sẽ giảm thanh ghi delay_reg xuống còn 0 so sánh thì nhảy cách.Như vậy chẳng phải chỉ có 2 lần giảm thanh ghi.Trong khi trong bài hướng dẫn tác giả lại nói là N+1 tức ở đây là 3 lần
-Và như mình thấy ở trên lần giảm thanh ghi cuối cùng tức từ 1->0 thì lệnh goto loop ko được thực hiện vậy sao khi tính thời gian thực hiện lại là 3x(N+1).Có phải lúc đó lệnh Goto loop được thay bởi lệnh nop (1 chu kỳ) + decfsz lần cuối ( 2 chu kỳ) nên được gộp chung vào ko
Comment
-
Các bậc tièn bối đâu hết rồi.Sao ko ai trả lời vấn đề của mình vậy.Mình hỏi thêm cái này
-khi mnihf thử mô phỏng con 16f877a bằng proteus mình "build all" cái code đưa vào thì nó báo lỗi not found dem.lst .file lst đó là gì vậy/Làm sao sửa lỗi này.
Comment
-
Bạn phân tích đúng, ko rõ đoạn code ví dụ bạn lấy từ đâuNguyên văn bởi halfblood88 View PostTrong bài hướng dẫn này thì tác giả có nói là thanh ghi delay_reg sẽ giảm 20+1 lần.Ứng với giá trị ban đầu của delay_reg bằng N thì sẽ giảm N+1 lần.Nhưng mình thử phân tích thì thấy thế này:Code:MOVLW d’20’ ; đưa giá trị 20 vào thanh ghi W MOVWF delay‐reg ; delay‐reg <‐ 20 loop DECFSZ delay‐reg,0 ; giảm giá trị trong thanh ghi delay‐reg ; và so sánh với 0, kết quả chứa trong W GOTO loop ; nếu giá tri thanh ghi “delay_reg” khác 0 ; thì nhảy tới label “loop”
-Giả sử ban đầu nạp vào thanh ghi delay_reg giá trị là 2.Loop lần 1 sẽ giảm thanh ghi delay_reg xuống còn 1 so sánh rồi thực hiện lệnh goto.Loop lần 2 sẽ giảm thanh ghi delay_reg xuống còn 0 so sánh thì nhảy cách.Như vậy chẳng phải chỉ có 2 lần giảm thanh ghi.Trong khi trong bài hướng dẫn tác giả lại nói là N+1 tức ở đây là 3 lần
Lệnh decfsz ở lần cuối cùng sẽ mất 2 chu kỳ máy, 1 chu kỳ để thực hiện thao tác trừ 1, 1 chu kỳ trễ do thay đổi thanh ghi PC (bỏ qua lệnh goto). Do đó công thức tính chính xác là 3N + 2-Và như mình thấy ở trên lần giảm thanh ghi cuối cùng tức từ 1->0 thì lệnh goto loop ko được thực hiện vậy sao khi tính thời gian thực hiện lại là 3x(N+1).Có phải lúc đó lệnh Goto loop được thay bởi lệnh nop (1 chu kỳ) + decfsz lần cuối ( 2 chu kỳ) nên được gộp chung vào ko
Comment
-
cái này lấy từ file hướng dẫn học pic từ dễ tới khó trong 4rum này của tác giả Nguyễn Trung Chính soạn ra.
Comment
-
Lỗi này do đường dẫn đến file biên dịch của bạn có dấu cách (tên folder có dấu cách) chỉ cần sửa tên folder lại là biên dịch đượcNguyên văn bởi halfblood88 View PostCác bậc tièn bối đâu hết rồi.Sao ko ai trả lời vấn đề của mình vậy.Mình hỏi thêm cái này
-khi mnihf thử mô phỏng con 16f877a bằng proteus mình "build all" cái code đưa vào thì nó báo lỗi not found dem.lst .file lst đó là gì vậy/Làm sao sửa lỗi này.
Chúc thành côngLast edited by tranphong2; 26-12-2009, 11:41 PM.
Comment
-
Các anh cho em hỏi? Em mới bắt đầu tìm hiểu PIC, lúc trước em đã dùng qua AVR nên có 1 số thắc mắc sau:
1. Em đọc datasheet của PIC16F887 thấy 1 số chân I/O của PIC có weak pull-up, vậy mình có thể chỉnh hướng chân đó là input rồi đặt nó ở mức cao như điện trở trong kéo lên của AVR không?
2. Khi dùng chức năng ADC, mình mắc điện áp tham chiếu như thế nào vì em thấy có tới 2 chân là VREF+ và VREF-?
Comment
-
help me....................
cho em hỏi cái nha:
1: em tạo ra một file defs_f877A trong ccs nhưng khi save nó không cho phép tạo ra file *.h mà chỉ tạo được file *.c thui, vậy khi em thực hiện #include <defs_f877A.c> thì có được không (em build thì thấy không bị lỗi nhưng cũng chưa hiểu nên không an tâm). bác nào chỉ em cái?
2: em sử dụng timer0 để thực hiện định thời, muốn nó không đếm nữa thì phải làm thế nào?
3: em sử dụng ccs c 4.069 để viết chương trình, khi build (hình như dùng keyfilegen_file di cùng bản cài ) thi thấy thông báo tạo ra được file *.hex, nhưng em vào folder lưu bài làm thì không thấy, dùng proteus để mô phỏng, em thử nhập file c souser vào thì được nhưng chạy chương trình thấy bị lỗi, vậy lỗi của em là do đâu? các bác giúp em giải quyết với.
thanks!
Comment
-
Cho mình hỏi, mình thực hành trên kit của phòng thí nghiệm, kit dùng loại MCU card 80 chân, trên có con 18f8520, vậy cái loại pic như vậy có thể mua ở đâu đc, tại em sợ là chẳng may mình làm cái gì đó nó có thể bị hư, mà ko biết giá cả là bao nhiêu, em google nhưng chưa thấy ai rao hết
Comment
-
mình cũng có thắc mắc giống bạnNguyên văn bởi thanhkyanh View Postem dang loay hoay về timer ,đọc trong data sheet mà không hiểu gì cả
Comment
-
Cảm ơn bạn đã chia sẻ thông tin mình đang cần tìm
______________________________________
Vòng tay đá phong thủy , Vòng tay phong thủy , Đá phong thủy , Trang sức phong thuỷ
Vòng tay phong thủy
Comment

bien_van_khat
Comment