Học PIC trong 1 ngày - Phần 6
Số trang: 12
Loại file: pdf
Dung lượng: 156.94 KB
Lượt xem: 14
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Thanh ghi WTrong bài này, chúng ta nói đôi nét về thanh ghi W để các bạn nắm rõ hơn phương thức hoạt động của PIC.
Nội dung trích xuất từ tài liệu:
Học PIC trong 1 ngày - Phần 6Hướng dẫn về thanh ghi W Thanh ghi WTrong bài này, chúng ta nói đôi nét về thanh ghi W để các bạn nắm rõ hơn phươngthức hoạt động của PIC.Khái niệm thanh ghi W:Thanh ghi W là thanh ghi làm việc (Working register), và hầu hết mọi lệnh của PICđều liên quan đến thanh ghi W này, lấy thí dụ như ADDLW (cộng một số vào giá trịđã có trong thanh ghi W), SUBWF (trừ giá trị của thanh ghi W cho một thanh ghikhác), XORLW (lấy XOR của một số và thanh ghi W)... Và các bạn để ý rằng, tổngsố lệnh có thể tương tác với thanh ghi W là 23/35 lệnh, gần như chiếm to àn bộ tậplệnh của PIC. Vậy chúng ta ghi nhận điều thứ nhất, khi PIC làm việc, gần như luônluôn tương tác với thanh ghi W.Điều thứ hai, các bạn nhìn trong bản đồ bộ nhớ dữ liệu của PIC, các bạn sẽ thấy làthanh ghi W là thanh ghi không có mặt ở bất kỳ băng nào của bộ nhớ dữ liệu, trongkhi đó thanh ghi STATUS có mặt ở cả 4 băng. Các bạn lại thấy một điều rằng, thanhghi W và thanh ghi STATUS có thể được truy nhật từ tất cả các băng, và từ bất kỳ đâutrong chương trình, và vì vậy chúng trở thành những thanh ghi toàn cục nhất. Điểmkhác biệt giữa chúng ra sao? Đâu là sự khác biệt giữa thanh ghi W và các thanh ghikhác?Điểm thứ ba, trong tập lệnh của PIC, không có lệnh nào cho phép tương tác trực tiếpgiữa một thanh ghi trong bộ nhớ dữ liệu dùng chung với một giá trị thêm vào, mà đềuphải thông qua thanh ghi W. Như vậy, thanh ghi W là cầu nối của hầu hết các phéptoán được thực hiện trên các thanh ghi nằm trong bộ nhớ dữ liệu.Như vậy, thanh ghi W vô cùng quan trọng trong hoạt động của PIC.Nhắc lại kiến trúc Harvard và Von Newmann:Hình sau sẽ gợi lại cho các bạn nhớ về kiến trúc Harvard và Von Newmann, trong đócác bạn luôn nhớ rằng có sự phân biệt giữa bộ nhớ dữ liệu và bộ nhớ chương trình.Các bạn thấy rằng bus bộ nhớ chương trình của PIC midrange chỉ có 14 bit.Với đặc điểm này, chúng ta sẽ phân tích vì sao cần phải có thanh ghi W, và sau đóchúng ta sẽ phân tích tất cả các hoạt động của thanh ghi W trong một chương trìnhviết bằng PIC, nếu có thể. Những gì còn lại, chúng ta sẽ xem trong bài tập lệnh củaPIC midrange.Vì sao cần phải có thanh ghi W?Bạn sẽ làm thế nào để tính phép toán sau: lấy giá trị a của thanh ghi A cộng với giá trịb của thanh ghi B và đặt vào thanh ghi A? Một giới hạn của tập lệnh PIC là không chophép cộng hai thanh ghi và đặt vào một thanh ghi khác. Do đó, các bạn sẽ phải thựchiện thao tác sau:Chuyển giá trị b từ thanh ghi B vào thanh ghi W, sau đó lấy giá trị của thanh ghi W(lúc này là b) cộng với giá trị a ở thanh ghi A, sau đó gán lại vào thanh ghi A. Đoạncode được thực hiện như sau:Code: ; chuyển giá trị của thanh ghi B vào thanh ghiMOVF B, WW ; cộng giá trị của thanh ghi A với giá trị b củaADDWF A, Fthanh ghi W và gán lại vào AKhi các thanh ghi A và B không nằm trong cùng một băng, khi thao tác với từngthanh ghi, các bạn chỉ việc đổi về băng chứa các thanh ghi đó là xong. Một đoạn lệnhhoàn chỉnh có thể thực hiện cho bất kỳ 2 thanh ghi nào được viết như sau:Code: BANKSEL B MOVF B, W BANKSEL A ADDWF A, FĐo ạn chương trình này cũng minh hoạ luôn cho việc thanh ghi W là một thanh ghitoàn cục, khi chúng ta thao tác với thanh ghi B ở một băng bấ kỳ, nhưng khi chuyểngiá trị b từ thanh ghi B vào thanh ghi W rồi, thì chúng ta không cần quan tâm rằng giátrị đó nằm ở đâu, chỉ cần chuyển về băng chứa thanh ghi A thì lệnh cộng sẽ được thựchiện một cách dễ dàng.Một thí dụ khác về lệnh cộng, nhưng không p hải là cộng giá trị nằm trong 2 thanh ghi,mà là cộng giá trị a của thanh ghi A với một số k cho trước nào đó, giả sử k = 5 và lưuvào thanh ghi A.Chúng ta thấy rằng, hoàn toàn trong tập lệnh không có lệnh cộng trực tiếp một thanhghi với một số, mà chỉ có lệnh cộng một số với thanh ghi W. Như vậy chúng ta phảithực hiện thao tác sau: chuyển giá trị a từ thanh ghi A vào thanh ghi W, cộng thanhghi W với hằng số k = 5, sau đó chuyển giá trị mới của thanh ghi W trở lại thanh ghiA. Điều này được thực hiện như sau:Code: MOVF A, W ADDLW d5 MOVWF ATrong thí dụ này, chúng ta sẽ không thấy W là một biến tạm nữa, mà trở thành mộtthanh ghi dùng để lưu kết quả cộng với một con số. Đến bây giờ, thì chúng ta sẽ giảthích rõ hơn vì sao chúng ta phải làm như vậy.Chúng ta thấy rõ ràng rằng, một dòng lệnh của PIC midrange, được mô tả bằng 14 bit.Điều này có nghĩa là, khi thực hiện một lệnh cộng, không thể nào dòng lệnh đó vừalưu địa chỉ của thanh ghi A, vừa lưu giá trị 8 bit của hằng số k được, vì một thanh ghitrong ...
Nội dung trích xuất từ tài liệu:
Học PIC trong 1 ngày - Phần 6Hướng dẫn về thanh ghi W Thanh ghi WTrong bài này, chúng ta nói đôi nét về thanh ghi W để các bạn nắm rõ hơn phươngthức hoạt động của PIC.Khái niệm thanh ghi W:Thanh ghi W là thanh ghi làm việc (Working register), và hầu hết mọi lệnh của PICđều liên quan đến thanh ghi W này, lấy thí dụ như ADDLW (cộng một số vào giá trịđã có trong thanh ghi W), SUBWF (trừ giá trị của thanh ghi W cho một thanh ghikhác), XORLW (lấy XOR của một số và thanh ghi W)... Và các bạn để ý rằng, tổngsố lệnh có thể tương tác với thanh ghi W là 23/35 lệnh, gần như chiếm to àn bộ tậplệnh của PIC. Vậy chúng ta ghi nhận điều thứ nhất, khi PIC làm việc, gần như luônluôn tương tác với thanh ghi W.Điều thứ hai, các bạn nhìn trong bản đồ bộ nhớ dữ liệu của PIC, các bạn sẽ thấy làthanh ghi W là thanh ghi không có mặt ở bất kỳ băng nào của bộ nhớ dữ liệu, trongkhi đó thanh ghi STATUS có mặt ở cả 4 băng. Các bạn lại thấy một điều rằng, thanhghi W và thanh ghi STATUS có thể được truy nhật từ tất cả các băng, và từ bất kỳ đâutrong chương trình, và vì vậy chúng trở thành những thanh ghi toàn cục nhất. Điểmkhác biệt giữa chúng ra sao? Đâu là sự khác biệt giữa thanh ghi W và các thanh ghikhác?Điểm thứ ba, trong tập lệnh của PIC, không có lệnh nào cho phép tương tác trực tiếpgiữa một thanh ghi trong bộ nhớ dữ liệu dùng chung với một giá trị thêm vào, mà đềuphải thông qua thanh ghi W. Như vậy, thanh ghi W là cầu nối của hầu hết các phéptoán được thực hiện trên các thanh ghi nằm trong bộ nhớ dữ liệu.Như vậy, thanh ghi W vô cùng quan trọng trong hoạt động của PIC.Nhắc lại kiến trúc Harvard và Von Newmann:Hình sau sẽ gợi lại cho các bạn nhớ về kiến trúc Harvard và Von Newmann, trong đócác bạn luôn nhớ rằng có sự phân biệt giữa bộ nhớ dữ liệu và bộ nhớ chương trình.Các bạn thấy rằng bus bộ nhớ chương trình của PIC midrange chỉ có 14 bit.Với đặc điểm này, chúng ta sẽ phân tích vì sao cần phải có thanh ghi W, và sau đóchúng ta sẽ phân tích tất cả các hoạt động của thanh ghi W trong một chương trìnhviết bằng PIC, nếu có thể. Những gì còn lại, chúng ta sẽ xem trong bài tập lệnh củaPIC midrange.Vì sao cần phải có thanh ghi W?Bạn sẽ làm thế nào để tính phép toán sau: lấy giá trị a của thanh ghi A cộng với giá trịb của thanh ghi B và đặt vào thanh ghi A? Một giới hạn của tập lệnh PIC là không chophép cộng hai thanh ghi và đặt vào một thanh ghi khác. Do đó, các bạn sẽ phải thựchiện thao tác sau:Chuyển giá trị b từ thanh ghi B vào thanh ghi W, sau đó lấy giá trị của thanh ghi W(lúc này là b) cộng với giá trị a ở thanh ghi A, sau đó gán lại vào thanh ghi A. Đoạncode được thực hiện như sau:Code: ; chuyển giá trị của thanh ghi B vào thanh ghiMOVF B, WW ; cộng giá trị của thanh ghi A với giá trị b củaADDWF A, Fthanh ghi W và gán lại vào AKhi các thanh ghi A và B không nằm trong cùng một băng, khi thao tác với từngthanh ghi, các bạn chỉ việc đổi về băng chứa các thanh ghi đó là xong. Một đoạn lệnhhoàn chỉnh có thể thực hiện cho bất kỳ 2 thanh ghi nào được viết như sau:Code: BANKSEL B MOVF B, W BANKSEL A ADDWF A, FĐo ạn chương trình này cũng minh hoạ luôn cho việc thanh ghi W là một thanh ghitoàn cục, khi chúng ta thao tác với thanh ghi B ở một băng bấ kỳ, nhưng khi chuyểngiá trị b từ thanh ghi B vào thanh ghi W rồi, thì chúng ta không cần quan tâm rằng giátrị đó nằm ở đâu, chỉ cần chuyển về băng chứa thanh ghi A thì lệnh cộng sẽ được thựchiện một cách dễ dàng.Một thí dụ khác về lệnh cộng, nhưng không p hải là cộng giá trị nằm trong 2 thanh ghi,mà là cộng giá trị a của thanh ghi A với một số k cho trước nào đó, giả sử k = 5 và lưuvào thanh ghi A.Chúng ta thấy rằng, hoàn toàn trong tập lệnh không có lệnh cộng trực tiếp một thanhghi với một số, mà chỉ có lệnh cộng một số với thanh ghi W. Như vậy chúng ta phảithực hiện thao tác sau: chuyển giá trị a từ thanh ghi A vào thanh ghi W, cộng thanhghi W với hằng số k = 5, sau đó chuyển giá trị mới của thanh ghi W trở lại thanh ghiA. Điều này được thực hiện như sau:Code: MOVF A, W ADDLW d5 MOVWF ATrong thí dụ này, chúng ta sẽ không thấy W là một biến tạm nữa, mà trở thành mộtthanh ghi dùng để lưu kết quả cộng với một con số. Đến bây giờ, thì chúng ta sẽ giảthích rõ hơn vì sao chúng ta phải làm như vậy.Chúng ta thấy rõ ràng rằng, một dòng lệnh của PIC midrange, được mô tả bằng 14 bit.Điều này có nghĩa là, khi thực hiện một lệnh cộng, không thể nào dòng lệnh đó vừalưu địa chỉ của thanh ghi A, vừa lưu giá trị 8 bit của hằng số k được, vì một thanh ghitrong ...
Tìm kiếm theo từ khóa liên quan:
thanh ghi W Điện tử cơ bản vi điều khiển hàm lập trình mạch điều khiểnGợi ý tài liệu liên quan:
-
Giáo trình Vi điều khiển (Nghề: Cơ điện tử - Trình độ: Cao đẳng) - Trường Cao đẳng nghề Ninh Thuận
127 trang 280 0 0 -
Báo cáo môn học vi xử lý: Khai thác phần mềm Proteus trong mô phỏng điều khiển
33 trang 183 0 0 -
Giáo trình Vi điều khiển (Nghề: Điện công nghiệp - Cao đẳng) - Trường Cao đẳng Cơ giới (2022)
144 trang 155 0 0 -
Đề cương chi tiết học phần Vi điều khiển
15 trang 141 0 0 -
Ứng dụng vi điều khiển PIC 16F877A trong thí nghiệm vật lí phổ thông
12 trang 120 0 0 -
Bài tập lớn môn Vi xử lý, vi điều khiển: Thiết kế bộ điều khiển tốc độ của động cơ điện một chiều
27 trang 117 0 0 -
Giáo trình Kỹ thuật vi điều khiển
121 trang 113 0 0 -
Sơ đồ điều khiển và tín hiệu máy cắt SF6– GL.107
4 trang 106 2 0 -
Tài liệu thực hành Vi điều khiển 8051
55 trang 106 0 0 -
Đồ án vi xử lý đề tài : nghiên cứu thiết kế mạch đo khoảng cách sử dụng vi điều khiển Pic 16F887
45 trang 97 1 0