Danh mục

Tài liệu ASM - PIC (P2)

Số trang: 17      Loại file: pdf      Dung lượng: 216.26 KB      Lượt xem: 14      Lượt tải: 0    
Thư viện của tui

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bảng dữ liệu ( Data Table): Có một điểm rất đặc biệt trong tập lệnh mà nó cho phép bạn truy xuất dữ liệu theo kiểu tra bảng (data table). Một bảng dữ liệu thông thường là một danh sách liệt kê các giá trị của dữ liệu, mỗi giá trị được đọc phụ thuộc vào việc phải thoả mãn vài tiêu thức nào đó. Ví dụ, bạn có một con Pic và bạn muốn đếm số lần ngõ vào Input được nâng lên mức cao trong thời gian 1giây là bao nhiêu sau đó hiễn thị lên Led 7...
Nội dung trích xuất từ tài liệu:
Tài liệu ASM - PIC (P2)Dson 21 Bảng dữ liệu ( Data Table):Có một điểm rất đặc biệt trong tập lệnh mà nó cho phép bạn truy xuất dữ liệu theo kiểutra bảng (data table). Một bảng dữ liệu thông thường là một danh sách liệt kê các giá trịcủa dữ liệu, mỗi giá trị được đọc phụ thuộc vào việc phải thoả mãn vài tiêu thức nào đó.Ví dụ, bạn có một con Pic và bạn muốn đếm số lần ngõ vào Input được nâng lên mứccao trong thời gian 1giây là bao nhiêu sau đó hiễn thị lên Led 7 đoạn. Mỗi lần thời gianbắt đầu tính, con Pic sẽ đếm số lần ngõ Input vào được nâng lên mức cao trong thờigian 1 giây, sau 1 giây nó hiễn thị con số nó đếm được tương ứng với số lần ngõ vàoInput được nâng lên mức cao. Cái này rất tiện dụng bởi vì chúng ta không biết đượchiện tại con số đếm đã là bao nhiêu cho đến khi con Pic dừng lại, bằng cách sử dụngbảng tra dữ liệu chúng ta có thể cho phép con Pic quýêt định con số nào nó cần hiễn thị.Bây giờ trước khi giải thích bảng tra dữ liệu làm việc ra sao ta sẽ bàn xem con Pic bámtheo chổ nào trong chương trình trong lúc chương trình đang chạy. Nếu bạn đã từng lậptrình trong BASIC thì đở mệt nhọc hơn, còn nếu không bạn cũng đừng lo lắng, bạn sẽvẫn tìm thấy các khái niệm ở đây.Hãy tưỡng tượng chúng ta có một chương trình BASIC như chương trình bên dưới:10 LET K=011 K=K+112 IF K>10 THEN GOTO 20 ELSE GOTO 1120 PRINT K21 ENDChương trình bắt đầu tại dòng số 10, mỗi lần K =0 nó tiến tới dòng 11, sau khi cộngthêm 1 cho K nó di chuyển đến dòng 12. Ở đây chúng ta hỏi K có lớn hơn 10 không ?,nếu đúng nó tiếp tục đi tới dòng 20, nếu sai nó quay trở lại dòng 11, dòng 20 sẽ xuất giátrị của K và dòng 21 sẽ kết thúc chương trình.BASIC sử dụng con số thứ tự dòng để giúp cho lập trình viên bám theo chương trìnhmột khi những cái nhãn nhận dạng không cho phép sử dụng trong BASIC.Con Pic có sử dụng những cái nhãn để nhảy qua lại các vị trí hay không?, chúng tadùng những cái nhãn nhận dạng vì vậy chúng ta biết những thứ gì, ở đâu và nói chocon Pic biết con đường nó phải đi. Cái mà thực sự con Pic đã dùng đó là bộ đếm dònglệnh bên trong còn gọi là bộ đếm chương trình Program Counter. Program Counter viếtDson 22tắt là PC dò tìm các vị trí trong bộ nhớ để tìm kiếm vị trí hiện tại của câu lệnh màchương trình đang thực thi. Khi chúng ta nói cho con Pic bíêt phải đi đến cái nhãn nàođó, nó bíêt vị trí của cái nhãn này trong bộ nhớ và nó gia tăng PC lên cho tới khi nó đọcđược vị trí đó. Điều này giống y như cái cách mà chúng ta đọc chương trình trongBASICBên dưới là đoạn code và các vị trí bộ nhớ hay nói cách khác chính là nội dung trongPC, kế bên là các dòng lệnh. PC Instruction 0000 movlw 03 0001 movwf 0C 0002 Loop decfsc 0C 0003 goto Loop 04 endTrong ví dụ trên, ta set PC tới 0000. tại vị trí này ta có lệnh movlw 03. Khi con Pic thựcthi lệnh này nó tăng PC lên và vì vậy nó đọc tiếp lệnh kế, ở đây con Pic lại thấy lệnhmovwf 0C, nó lại tăng PC lên một lần nữa, lần này nó thấy lệnh decfsc 03, nếu nội dungtrong địa chỉ 0C không = 0 con Pic sẽ tăng PC lên 1 và đọc lệnh kế tiếp, lệnh Goto loopnói con Pic hãy quay lại vị trí 0002. Nếu nội dung trong 0C là 0 thì con Pic nói PC phảităng lên 2 hay nói cách khác là bỏ qua lệnh kế tiếp nó, như vậy nó sẽ đến vị trí 0004, tạiđây là điểm kết thúc của chương trình. Các vị trí được thiết lập bởi assembler, và chúngta không cần lo lắng con Pic đang làm cái gì cho tới khi chúng ta cần kiểm soát nó nhưtrong trường hợp của bảng tra dữ liệu. Cách tốt nhất để giải thích bảng dữ liệu làm việcra sao là hãy chấm dứt ngay cái ví dụ này và xem cái bên dưới đây !.PC equ 02Movlw 03Call table:table addwf PCretlw 01retlw 02retlw 03retlw 04retlw 05retlw 06retlw 07returnLệnh đầu tiên gán cái nhãn PC có địa chỉ của Program Counter (02h), sau đó chúng tađặt giá trị của thanh ghi 03h vào trong thanh ghi W. Bây giờ ta làm một lệnh gọi bảng tradữ liệu. Dòng đầu tiên trong subroutine bảng dữ liệu sẽ công nội dung của thanh ghi W(03h) với PC, điều này làm cho PC tăng lên 3, tương đương với việc PC sẽ đi xuống 3dòng. Khi PC xuống dòng thứ 3 con Pic trông thấy lệnh reltw, lệnh này chuyển giá trịđứng sau nó vào thanh ghi W rồi quay trở về lại subroutine. Lệnh RETLW có nghĩa làquay về và trả giá trị phía sau nó về thanh ghi W. Lưu ý là có 2 động tác được thực hiệntrong lệnh RETLW.Khi ta đang đứng trong một subroutine ta cần có một lệnh quay về để thoát ra khỏisubroutine đó là lệnh RET.Dson ...

Tài liệu được xem nhiều: