PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 28-04-2009, 06:12 PM   #1
thaithien
Đệ tử 7 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 213
:
Hỏi về INDF và FSR

Mình có đoạn chương trình như sau:
Code:
title "Prog1 Simpple addressing"
LIST P=16F84,F=INHX8M,R=DEC
INCLUDE "p16f84.inc"
;registers
test equ 12
__config _CP_OFF & _WDT_OFF & _RC_OSC
PAGE
;main
	org 0
	clrf test
	movf test,w
	addlw 'A'
	movwf test

	movlw test
	movwf FSR
	
	movf INDF,w
	incf INDF
	movwf INDF
Finished
	goto $
	end
Khi chạy debug thì không hiểu lắm về các kết quả.Cụ thể là có vài câu hỏi thế này :
1. Chỉ thị EQU là gán tên ký hiệu cho một chuỗi hoặc hằng số,vậy nó mang giá trị được gán hay là địa chỉ ?(Mình nghĩ là giá trị được gán,ví dụ test EQU 12 thì test=12).Có phải bất cứ khi nào gọi test thì đều gọi giá trị 12 ?
2. Thanh ghi INDF có chức năng như thế nào vậy ?Công dụng của nó là để làm con trỏ ?
3. Hai dòng lệnh sau đây là như thế nào ?(cũng lấy trong đoạn chương trình trên).TRước dòng lệnh thì test đang giữ giá trị là 0x41 (tức là d65).Ta cho trực hiện 2 lệnh này :
Code:
	
movlw test
movwf FSR
Nhưng kết cục là thanh w mang giá trị 12,mình nghĩ chính là giá trị đã khai báo ở dòng test EQU 12.NHư vậy là sao ?

4. Trong cửa sổ watch có các symbol nhưng mình không hiểu rõ lắm:
Z có phải là cờ zero không ?Lúc đầu thì mình cũng nghĩ vậy nhưng khi cho chạy chương trình từng bước thì nó lại nhảy 1,2,3,4...Nhưng nhìn vào thanh ghi status thì cờ zero vẫn bằng không sau các dòng lệnh.Vậy 2 cái z này khác nhau như thế nào vậy ?

5 Các symbol W,WR,WREG là sao ?Có khác nhau không.Cái nào mới chính là thanh làm việc?(mình nghĩ là WREG).Không biết có phải không nên hỏi cho chắc ăn).

Hy vọng nhận được câu trả lời sớm.Cảm ơn nhiều !!!!!
thaithien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-04-2009, 08:22 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
1. EQU làm cho danh biểu bên trái mang giá trị của biểu thức bên phải. Do đó, lúc nào bạn dùng test, bạn sẽ dùng giá trị 12.

2. INDF dùng để truy xuất nội dung ô nhớ do FSR trỏ đến. Như tên gọi của nó, thanh ghi INDF dùng để truy xuất gián tiếp một thanh ghi (INDirect File).

3. Tôi cho là bạn hiểu nhầm, lúc nào test cũng mang giá trị 12 trong đoạn chương trình đó. Hai lệnh addlw 'A' và movwf test sẽ làm cho ô nhớ có địa chỉ test (tức là ô nhớ 12) mang giá trị 'A' (tức là 0x41). Nếu bạn dùng cửa sổ Watch thì bạn chỉ có thể xem nội dung của test (do đó bạn thấy nó bằng 0x41). Còn lệnh movlw test sẽ dùng giá trị của test (= 12) để ghi vào thanh ghi W, do đó tất nhiên W phải bằng 12 sau lệnh này.

4. Bạn cho cái hình chụp cửa sổ Watch của bạn, vì tôi không thấy Z trong cửa sổ Watch của tôi.

5. Thanh ghi làm việc là W, trong cửa sổ Watch thì nó được ký hiệu là WREG (cách ký hiệu này cũng xuất hiện trong phần mô tả các lệnh hợp ngữ). Bạn cũng cho cái hình chụp của ký hiệu WR, vì tôi không tìm thấy nó ở đâu.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-04-2009, 12:19 AM   #3
thaithien
Đệ tử 7 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 213
:
Cái hình của em đây:
Hình Kèm Theo
File Type: jpg untitled.JPG (142.0 KB, 16 lần tải)
thaithien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-04-2009, 12:42 AM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi thaithien View Post
Cái hình của em đây:
À, các symbol mà bạn đang thắc mắc được định nghĩa trong tập tin "p16f84.inc", đã được include vào mã nguồn của bạn ở đầu chương trình.

Như vậy, Z là cờ zero trong thanh ghi STATUS (xem bằng Watch theo cách của bạn thì lại được hiểu là thanh ghi ở địa chỉ 0x02, tức là thanh ghi PCL, nên bạn mới thấy nó thay đổi khi bạn step qua các lệnh của chương trình). Và WR là bit Write của thanh ghi EECON1.

Ngoại trừ các symbol INDF, FSR, test, và WREG trong cửa sổ Watch của bạn, những symbol còn lại được xem theo kiểu của bạn đều mang ý nghĩa khác.

Những thông tin về giá trị của PC, của thanh ghi W, các cờ trạng thái trong thanh ghi STATUS, và bank hiện thời có thể xem ở dòng trạng thái của MPLAB IDE, và nhất thiết không xem theo cách mà bạn đã dùng.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-04-2009, 01:38 AM   #5
thaithien
Đệ tử 7 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 213
:
Trích:
Nguyên văn bởi namqn View Post
À, các symbol mà bạn đang thắc mắc được định nghĩa trong tập tin "p16f84.inc", đã được include vào mã nguồn của bạn ở đầu chương trình.

Như vậy, Z là cờ zero trong thanh ghi STATUS (xem bằng Watch theo cách của bạn thì lại được hiểu là thanh ghi ở địa chỉ 0x02, tức là thanh ghi PCL, nên bạn mới thấy nó thay đổi khi bạn step qua các lệnh của chương trình). Và WR là bit Write của thanh ghi EECON1.

Ngoại trừ các symbol INDF, FSR, test, và WREG trong cửa sổ Watch của bạn, những symbol còn lại được xem theo kiểu của bạn đều mang ý nghĩa khác.

Những thông tin về giá trị của PC, của thanh ghi W, các cờ trạng thái trong thanh ghi STATUS, và bank hiện thời có thể xem ở dòng trạng thái của MPLAB IDE, và nhất thiết không xem theo cách mà bạn đã dùng.

Thân,
Vậy là cách xem của em sai rồi hả ?"nhất thiết không" hay là "không nhất thiết" vậy hả anh ?
thaithien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-04-2009, 01:47 AM   #6
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi thaithien View Post
Vậy là cách xem của em sai rồi hả ?"nhất thiết không" hay là "không nhất thiết" vậy hả anh ?
Tôi không đánh sai thứ tự đâu, "nhất thiết không xem theo cách mà bạn đã dùng".

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-05-2009, 03:58 AM   #7
thaithien
Đệ tử 7 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 213
:
Vậy xem các cờ Z,DC,C và PCLATH,PCL như thế nào hả anh ?Thanh status chỉ thấy mỗi pc.Em chọn add SFR,add Symbol của các thanh ghi trên nhưng không xem được.(nó chạy không đúng)
thaithien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-05-2009, 04:57 PM   #8
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi thaithien View Post
Vậy xem các cờ Z,DC,C và PCLATH,PCL như thế nào hả anh ?Thanh status chỉ thấy mỗi pc.Em chọn add SFR,add Symbol của các thanh ghi trên nhưng không xem được.(nó chạy không đúng)
Trong hình đính kèm, từ trái sang phải là các field sau:
- Tên công cụ mô phỏng (trong hình là MPLAB IDE)
- Một field trống
- Tên vi điều khiển đang được mô phỏng
- Giá trị của thanh ghi PC
- Giá trị của thanh ghi W
- Giá trị của các cờ trạng thái (Z, C, và DC): chữ thường ứng với trạng thái '0', chữ hoa ứng với trạng thái '1'
- Một field trống
- Tần số xung clock
- Vị trí bank hiện thời
- Vị trí của con trỏ trong cửa sổ soạn thảo
- Và một số field còn lại

Thân,
Hình Kèm Theo
File Type: gif MPLAB_IDE_Status.gif (41.4 KB, 4 lần tải)
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-05-2009, 11:17 PM   #9
thaithien
Đệ tử 7 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 213
:
Cảm ơn anh Nam nhiều.Mấy cái cờ Z,DC,C là em chưa biết.À,còn cái vụ PCLATH,PCL là mình tính ra từ PC hay là có cách nào khác không ?Em dùng add symbol mà không xem được.
thaithien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-05-2009, 06:17 AM   #10
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi thaithien View Post
Cảm ơn anh Nam nhiều.Mấy cái cờ Z,DC,C là em chưa biết.À,còn cái vụ PCLATH,PCL là mình tính ra từ PC hay là có cách nào khác không ?Em dùng add symbol mà không xem được.
Bạn có thể dùng "Add SFR" (chứ không phải "Add Symbol") ở cửa sổ Watch, cũng có thể dùng lệnh "Special Function Registers" trong mênu để mở cửa sổ Special Function Registers để xem giá trị của các thanh ghi PCLATH và PCL (cùng các thanh ghi khác) trong đó.

Tất nhiên bạn có thể tự tính ra PCLATH và PCL từ giá trị hexadecimal của PC ở dòng trạng thái của MPLAB IDE.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-05-2009, 09:14 PM   #11
thaithien
Đệ tử 7 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 213
:
Cho em hỏi câu nữa nghen,vậy tác dụng của "add symbol" là để làm gì vì em thấy có lúc coi không được.Ắt hẳn phải có công dụng nào đó mà mình chưa biết sử dụng hoặc sử dụng chưa đúng.
thaithien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 12:19 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam