Originally posted by 10520181
View Post
Announcement
Collapse
No announcement yet.
Góc học tập vi xử lý- vi điều khiển
Collapse
X
-
Lê Bá Nhựt UIT-CE05
Phone: 0968-868-300
Email: nhutlbuit@gmail.com
Enthuse + Creative + Try => Success
-
:doubt: làm vi điều khiển khi gán giá trị thì phải để ý xem thử đối tượng lưu trữ (thanh ghi, vùng nhớ) có đủ không... không phải compiler nào cũng báo error chỗ này đâu... mà những lỗi này thường rất khó phát hiện :doubt:... vì nó quá sơ đẳng :baffle:Một khẩu súng giữ hai trời Nam Bắc,
Một dấu chân in màu đất hai miền.
------------------------------------------------------
Comment
-
• Timer sử dụng chế độ 1: Chế độ hoạt động như bộ định thời 16 bits, khi Timer tràn phải tự load lại TL và TH.
• Timer sử dụng chế độ 2: Chế độ hoạt động như bộ định thời 8 bits, khi Timer tràn, thanh ghi TL được nạp lại từ thanh ghi TH (giá trị của TH không thay đổi).
bạn nào biết cho mình hỏi: khi Timer tràn phải tự load lại TL và TH.và thanh ghi TL được nạp lại từ thanh ghi TH (giá trị của TH không thay đổi) là như thế nào vậy?Lê Bá Nhựt UIT-CE05
Phone: 0968-868-300
Email: nhutlbuit@gmail.com
Enthuse + Creative + Try => Success
Comment
-
Originally posted by 10520397 View Post• Timer sử dụng chế độ 1: Chế độ hoạt động như bộ định thời 16 bits, khi Timer tràn phải tự load lại TL và TH.
• Timer sử dụng chế độ 2: Chế độ hoạt động như bộ định thời 8 bits, khi Timer tràn, thanh ghi TL được nạp lại từ thanh ghi TH (giá trị của TH không thay đổi).
bạn nào biết cho mình hỏi: khi Timer tràn phải tự load lại TL và TH.và thanh ghi TL được nạp lại từ thanh ghi TH (giá trị của TH không thay đổi) là như thế nào vậy?
Có sai gì nhờ các anh và các bạn chỉ giáo.
P/s: "Thanh ghi THx lưu trữ giá trị nạp lại" sách viết vậy!Last edited by 10520496; 23-10-2012, 23:37.TRẦN QUANG VINH
ĐT: 01688200 sáu sáu sáu
mail: vinhtq191@gmail(dot)com
Comment
-
Cái này là dùng ở chế độ 2, theo mình biết thì ở chế độ này, ví dụ như ta gán cho TH=2AH, thì TL sẽ đếm từ giá trị 2AH đến 0FFH, và lúc này nó bị tràn, thì cờ tràn sẽ bật lên, sau đó sẽ quay lại để TR chạy tiếp, và nó lại bắt đầu từ giá trị 2AHNo Problems
Comment
-
:beatbrick: các bạn nói gì nghe cao siêu vậy :beatbrick:
Timer có hai mode : auto-reload và manual reload . Manual thì các bạn biết rồi nó đếm về 0 thì phải nạp lại giá trị đếm cho nó. Còn auto thì nó sẽ tự nạp lại giá trị đếm... nhưng timer nó đếm giá trị => giá trị của timer sẽ thảy đổi => phải có 1 vùng nào đó dùng để lưu trữ giá trị để nạp lại. Đối với 8051, timer của nó có 16bit. Khi dùng ở mode auto reload thì nó hi sinh 8 bit cao để lưu giá trị nạp lại, chỉ đơn giản thế thôi
Ngoài ra 8051 có Timer 2 16 bit có thể auto-reload 16 bit. Khi đó nó có 1 thanh ghi riêng để lưu giá trị reload.
Còn bản chất timer là cái gì... thì các bạn học Hệ thống số sẽ rõ :sad:Một khẩu súng giữ hai trời Nam Bắc,
Một dấu chân in màu đất hai miền.
------------------------------------------------------
Comment
-
Originally posted by 08520229 View Post:beatbrick: các bạn nói gì nghe cao siêu vậy :beatbrick:
Timer có hai mode : auto-reload và manual reload . Manual thì các bạn biết rồi nó đếm về 0 thì phải nạp lại giá trị đếm cho nó. Còn auto thì nó sẽ tự nạp lại giá trị đếm... nhưng timer nó đếm giá trị => giá trị của timer sẽ thảy đổi => phải có 1 vùng nào đó dùng để lưu trữ giá trị để nạp lại. Đối với 8051, timer của nó có 16bit. Khi dùng ở mode auto reload thì nó hi sinh 8 bit cao để lưu giá trị nạp lại, chỉ đơn giản thế thôi
Ngoài ra 8051 có Timer 2 16 bit có thể auto-reload 16 bit. Khi đó nó có 1 thanh ghi riêng để lưu giá trị reload.
Còn bản chất timer là cái gì... thì các bạn học Hệ thống số sẽ rõ :sad:
Comment
-
Originally posted by 10520382 View PostA cho e hỏi giá trị nạp vào thanh ghi TLx và THx (đối với 16bit) có y nghĩa gì vậy.Last edited by 08520229; 24-10-2012, 00:40.Một khẩu súng giữ hai trời Nam Bắc,
Một dấu chân in màu đất hai miền.
------------------------------------------------------
Comment
-
TH1:
DELAY1S: MOV R7,#20
DL1S: ACALL DELAY50MS
DJNZ R7,DL1S
RET
TH2:
MOV R7,#20
DELAY1S:
CALL DELAY50MS
DJNZ R7,DELAY1S
RET
bạn nào biết cho mình hỏi 2 TH này khác nhau như thế nào vậy?
theo mình thấy thì nó không khác nhau,nhưng khi chạy thì lại....................#######Last edited by 10520397; 24-10-2012, 01:25.Lê Bá Nhựt UIT-CE05
Phone: 0968-868-300
Email: nhutlbuit@gmail.com
Enthuse + Creative + Try => Success
Comment
-
Originally posted by 08520229 View PostVậy phải coi bạn nạp vào trong trường hợp nào :shy:. TLx và THx là 1 thanh ghi chứ không phải 2 :sogood:
Comment
-
Originally posted by 10520397 View PostTH1:
DELAY1S: MOV R7,#20
DL1S: ACALL DELAY50MS
DJNZ R7,DL1S
RET
TH2:
MOV R7,#20
DELAY1S:
CALL DELAY50MS
DJNZ R7,DELAY1S
RET
bạn nào biết cho mình hỏi 2 TH này khác nhau như thế nào vậy?
theo mình thấy thì nó không khác nhau,nhưng khi chạy thì lại....................#######
Nếu bạn gọi: ACALL TH1 và ACALL TH2 ==> nó giống nhau đó.
Còn nếu bạn gọi: ACALL DELAY1S và ACALL DELAY1S ==> nó khác nhau rồi. (vì ở TH2 chưa nạp 20 cho R7 mà).TRẦN QUANG VINH
ĐT: 01688200 sáu sáu sáu
mail: vinhtq191@gmail(dot)com
Comment
-
Originally posted by 10520496 View PostKhông biết bạn gọi hàm delay như thế nào?
Nếu bạn gọi: ACALL TH1 và ACALL TH2 ==> nó giống nhau đó.
Còn nếu bạn gọi: ACALL DELAY1S và ACALL DELAY1S ==> nó khác nhau rồi. (vì ở TH2 chưa nạp 20 cho R7 mà).
AGAIN:
CPL P1.4
ACALL DELAY1S
JMP AGAIN
MOV R7,#20[/COLOR]
MOV TMOD,#1H
;----------------------------------------------------------------------------------------------------------
;----------------------------------------- DELAY50MS-----------------------------------------------
DELAY50MS: MOV TH0,#3CH
MOV TL0,#0AFH
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;------------------------------------------------------------------------------------------------------------
;------------------------------------------DELAY 1S---------------------------------------------------
DELAY01S:
ACALL DELAY50MS
DJNZ R7,DELAY1S
RET
bạn chạy thử cái này rồi so sanh nè.
ORG 0000H
AGAIN:
CPL P1.4
ACALL DELAY1S
JMP AGAIN
MOV TMOD,#1H
;----------------------------------------------------------------------------------------------------------
;----------------------------------------- DELAY50MS-----------------------------------------------
DELAY50MS: MOV TH0,#3CH
MOV TL0,#0AFH
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;------------------------------------------------------------------------------------------------------------
;------------------------------------------DELAY 1S---------------------------------------------------
[COLOR="#FF0000"]DELAY1S:
MOV R7,#20
DL1S: ACALL DELAY50MS
DJNZ R7,DL1S; như thế này nó sẽ gọi DELAY50MS 20lần,không ảnh hưởng đến mov R7,#20 thì kết quả sao lại khác ở trên??
RETLast edited by 10520397; 24-10-2012, 09:42.Lê Bá Nhựt UIT-CE05
Phone: 0968-868-300
Email: nhutlbuit@gmail.com
Enthuse + Creative + Try => Success
Comment
-
Ở trường hợp đầu R7 chưa được nạp 20 vào và nhảy phát đến hàm DELAY1S luôn (đến lúc này thì R7 vẫn bằng 0) nên nó sẽ chạy nhanh hơn trường hợp sau đúng không?
Bạn sửa lại như thế này thử:
AGAIN:
CPL P1.4
MOV R7,#20
ACALL DELAY1S
JMP AGAIN
;MOV R7,#20
MOV TMOD,#1HTRẦN QUANG VINH
ĐT: 01688200 sáu sáu sáu
mail: vinhtq191@gmail(dot)com
Comment
Comment