Tài liệu học ASM cho PIC
Số trang: 37
Loại file: pdf
Dung lượng: 513.61 KB
Lượt xem: 14
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Thanh ghi được đặt trong PIC, nó có thể được ghi, đọc. Hãy tưởng tượng các thanh ghigiống như các mẩu giấy mà chúng ta có thể đọc hay viết thông tin lên nó. Hình bên dướimô tả file thanh ghi (register file) được ánh xạ vào PIC16F84.PIC được chia làm 2 phần, Bank0 vàBank1.
Nội dung trích xuất từ tài liệu:
Tài liệu học ASM cho PICDson 1 Thanh ghi (Register):Thanh ghi được đặt trong PIC, nó có thể được ghi, đọc. Hãy tưởng tượng các thanh ghigiống như các mẩu giấy mà chúng ta có thể đọc hay viết thông tin lên nó. Hình bên dướimô tả file thanh ghi (register file) được ánh xạ vào PIC16F84.PIC được chia làm 2 phần, Bank0 vàBank1.Bank1 dùng để điều khiển các hoạt độngcủa PIC, ví dụ như nói cho nó biết nhữngbit nào trên PortA là đi vào (Input) vànhững bit nào xuất ra (Output).Bank0 dùng để thao tác trên dữ liệu, ví dụta muốn làm cho bit nào đó trên PortA lênmức cao, đầu tiên ta ta phải chuyển đếnBank1 để set 1 bit của 1 chân cụ thể nàođó trên PortA trở thành Output, sau đó tachuyển đến Bank0 và gởi mức 1 tới chânđó.Những thanh ghi thông thường nhất trênBank1 mà chúng ta sẽ sử dụng là cácthanh ghi STATUS, TRISA and TRISB.Đầu tiên chúng ta hãy quay vào Bank1,thanh ghi TRISA cho phép ta chọn chânnào đó trên PortA làm ngõ Output hayInput, thanh ghi TRISB cho phép ta chọnchân nào đó trên PortB làm ngõ Outputhay Input, thanh ghi STATUS cho phépchọn sử dụng Bank0 hay Bank1. STATUS:Để thay đổi từ Bank0 sang Bank1 ta sửdụng thanh ghi trạng thái STATUS, set bit5của thanh ghi trạng thái lên1 để chọnBank1 hoặc xoá bit5 về 0 để chọn Bank0,thanh ghi STATUS có địa chỉ 03H. TRISA và TRISB:2 thanh ghi TRISA and TRISB đặt tại địachỉ 85H và 86H, để lập trình cho các chântrên 2 thanh ghi này thông thường người tagởi mức 0 hay 1 đến các bit tương ứngtrên thanh ghi, có thể làm điều này trong cả2 dạng hoặc là bằng số binary (bin) hayhex. Dùng kiểu binary thì rõ ràng hơn làkiểu hex nhưng mà trông lượm thượm hơn !.Trên PortA ta có 5 chân tương ứng 5 bit, nếu muốn đặt 1 trong 5 chân này thành Outputta phải gởi 1 đến bit tương ứng với nó, những bít này có tên bit đúng chính xác với têncủa nó, nói cách khác bit0 là RA0, bit1 là RA1, bit2 là RA2…. Hãy xem ví dụ:Nếu ta muốn set RA0, RA3 và RA4 thành Output và RA1, RA2 thành Inputs, ta phảigởi 00110 (=06h), nên nhớ bit thấp nằm bên phải, xem hình:Port A Pin RA4 RA3 RA2 RA1 RA0Bit Number 4 3 2 1 0Binary 0 0 1 1 0Dson 2Tương tự chúng ta cũng làm như vậy cho TRISB. PORTA và PORTB:Để làm cho 1 trong những chân Output lên mức cao ta gởi 1 đến bit tương ứng trênthanh ghi PORTA hoặc PORTB, giống như cách làm trên thanh ghi TRISA và TRISB, cóthể kiểm tra lại trên từng chân của Port. Thanh ghi W:Thanh ghi W là là thanh ghi mụch đích chung mà có thể đặt lên nó bất kỳ giá trị nào tamuốn, khi gán cho thanh ghi W một giá trị nào đó, ta có thể cộng nó với 1 giá trị kháchoặc có thể copy nó (Mov). Nếu bạn gán 1 giá trị nào đó lên thanh ghi W thì nội dungtrước đó của nó sẽ bị ghi đè lên.Xem ví dụ sử dụng PortA:Đầu tiên chúng ta cần chọn Bank0 hoặc Bank1 bằng cách set trên thanh ghi STATUS,địa chỉ của STATUS là 03H và hãy set bit5 của nó lên 1 theo cách sau: BSF 03h,5BSF có nghĩa là Bit Set F, từ F nghĩa là chúng ta sẽ sử dụng một vị trí nào đó trongmemory hoặc trong thanh ghi, 2 con số “03H” sau câu lệnh BSF nghĩa là địa chỉ củathanh ghi STATUS, con số “5” tức là bit5 của nó, như vậy ý nghĩa của câu lệnh trên làset bit5 của STATUS lên 1.Bây giờ chúng ta thao tác trong Bank1. MOVLW b00110Ta đã đặt giá trị binary 00110 vào trong thanh ghi mụch đích chung W, chữ b có nghĩalà binary, dĩ nhiên ta cũng có thể viết lại trong dạng số hex, nó như sau: MOVLW 06hMOVLW có nghĩa là là ‘Move Literal Value Into W’ tạm dịch là di chuyển giá trị củaLiteral vào thanh ghi W, để rõ ràng hơn ta có thể nói là “ đặt giá trị trực tiếp sau đây(06H) vào trong thanh ghi W “Bây giờ ta tiếp tục đặt giá trị đó vào trong thanh ghi TRISA để thiết lập trạng thái choPort: MOVWF 85hLệnh này có nghĩa là “MOV nội dung của W vào (thanh ghi có) địa chỉ 85h”, trongtrường hợp này con trỏ địa chỉ sẽ trỏ tới TRISA, thanh ghi TRISA bây giờ chứa giá trị00110, xem lại mô tả các câu lệnh bằng hình sau:Port A Pin RA4 RA3 RA2 RA1 RA0Binary 0 0 1 1 0Input/Output O O I I OBây giờ chúng ta sẽ thiết lập các chân trên PORTA, hãy quay về Bank0 để thao tác trêncác dữ liệu. BCF 03h,5Dson 3Lệnh BCF thì đối nghịch với BSF, nó có nghĩa là “ Bit Clear F” tạm dịch là xoá bit nàođó trong vùng memory hay trong thanh ghi nào đó, trong trường hợp này là thanh ghiSTATUS (vì địa chỉ của nó là 03H) và lệnh này xoá bit5 của STATUS.Bên dưới là đoạn code: BSF 03h,5 ; vào Bank 1 ...
Nội dung trích xuất từ tài liệu:
Tài liệu học ASM cho PICDson 1 Thanh ghi (Register):Thanh ghi được đặt trong PIC, nó có thể được ghi, đọc. Hãy tưởng tượng các thanh ghigiống như các mẩu giấy mà chúng ta có thể đọc hay viết thông tin lên nó. Hình bên dướimô tả file thanh ghi (register file) được ánh xạ vào PIC16F84.PIC được chia làm 2 phần, Bank0 vàBank1.Bank1 dùng để điều khiển các hoạt độngcủa PIC, ví dụ như nói cho nó biết nhữngbit nào trên PortA là đi vào (Input) vànhững bit nào xuất ra (Output).Bank0 dùng để thao tác trên dữ liệu, ví dụta muốn làm cho bit nào đó trên PortA lênmức cao, đầu tiên ta ta phải chuyển đếnBank1 để set 1 bit của 1 chân cụ thể nàođó trên PortA trở thành Output, sau đó tachuyển đến Bank0 và gởi mức 1 tới chânđó.Những thanh ghi thông thường nhất trênBank1 mà chúng ta sẽ sử dụng là cácthanh ghi STATUS, TRISA and TRISB.Đầu tiên chúng ta hãy quay vào Bank1,thanh ghi TRISA cho phép ta chọn chânnào đó trên PortA làm ngõ Output hayInput, thanh ghi TRISB cho phép ta chọnchân nào đó trên PortB làm ngõ Outputhay Input, thanh ghi STATUS cho phépchọn sử dụng Bank0 hay Bank1. STATUS:Để thay đổi từ Bank0 sang Bank1 ta sửdụng thanh ghi trạng thái STATUS, set bit5của thanh ghi trạng thái lên1 để chọnBank1 hoặc xoá bit5 về 0 để chọn Bank0,thanh ghi STATUS có địa chỉ 03H. TRISA và TRISB:2 thanh ghi TRISA and TRISB đặt tại địachỉ 85H và 86H, để lập trình cho các chântrên 2 thanh ghi này thông thường người tagởi mức 0 hay 1 đến các bit tương ứngtrên thanh ghi, có thể làm điều này trong cả2 dạng hoặc là bằng số binary (bin) hayhex. Dùng kiểu binary thì rõ ràng hơn làkiểu hex nhưng mà trông lượm thượm hơn !.Trên PortA ta có 5 chân tương ứng 5 bit, nếu muốn đặt 1 trong 5 chân này thành Outputta phải gởi 1 đến bit tương ứng với nó, những bít này có tên bit đúng chính xác với têncủa nó, nói cách khác bit0 là RA0, bit1 là RA1, bit2 là RA2…. Hãy xem ví dụ:Nếu ta muốn set RA0, RA3 và RA4 thành Output và RA1, RA2 thành Inputs, ta phảigởi 00110 (=06h), nên nhớ bit thấp nằm bên phải, xem hình:Port A Pin RA4 RA3 RA2 RA1 RA0Bit Number 4 3 2 1 0Binary 0 0 1 1 0Dson 2Tương tự chúng ta cũng làm như vậy cho TRISB. PORTA và PORTB:Để làm cho 1 trong những chân Output lên mức cao ta gởi 1 đến bit tương ứng trênthanh ghi PORTA hoặc PORTB, giống như cách làm trên thanh ghi TRISA và TRISB, cóthể kiểm tra lại trên từng chân của Port. Thanh ghi W:Thanh ghi W là là thanh ghi mụch đích chung mà có thể đặt lên nó bất kỳ giá trị nào tamuốn, khi gán cho thanh ghi W một giá trị nào đó, ta có thể cộng nó với 1 giá trị kháchoặc có thể copy nó (Mov). Nếu bạn gán 1 giá trị nào đó lên thanh ghi W thì nội dungtrước đó của nó sẽ bị ghi đè lên.Xem ví dụ sử dụng PortA:Đầu tiên chúng ta cần chọn Bank0 hoặc Bank1 bằng cách set trên thanh ghi STATUS,địa chỉ của STATUS là 03H và hãy set bit5 của nó lên 1 theo cách sau: BSF 03h,5BSF có nghĩa là Bit Set F, từ F nghĩa là chúng ta sẽ sử dụng một vị trí nào đó trongmemory hoặc trong thanh ghi, 2 con số “03H” sau câu lệnh BSF nghĩa là địa chỉ củathanh ghi STATUS, con số “5” tức là bit5 của nó, như vậy ý nghĩa của câu lệnh trên làset bit5 của STATUS lên 1.Bây giờ chúng ta thao tác trong Bank1. MOVLW b00110Ta đã đặt giá trị binary 00110 vào trong thanh ghi mụch đích chung W, chữ b có nghĩalà binary, dĩ nhiên ta cũng có thể viết lại trong dạng số hex, nó như sau: MOVLW 06hMOVLW có nghĩa là là ‘Move Literal Value Into W’ tạm dịch là di chuyển giá trị củaLiteral vào thanh ghi W, để rõ ràng hơn ta có thể nói là “ đặt giá trị trực tiếp sau đây(06H) vào trong thanh ghi W “Bây giờ ta tiếp tục đặt giá trị đó vào trong thanh ghi TRISA để thiết lập trạng thái choPort: MOVWF 85hLệnh này có nghĩa là “MOV nội dung của W vào (thanh ghi có) địa chỉ 85h”, trongtrường hợp này con trỏ địa chỉ sẽ trỏ tới TRISA, thanh ghi TRISA bây giờ chứa giá trị00110, xem lại mô tả các câu lệnh bằng hình sau:Port A Pin RA4 RA3 RA2 RA1 RA0Binary 0 0 1 1 0Input/Output O O I I OBây giờ chúng ta sẽ thiết lập các chân trên PORTA, hãy quay về Bank0 để thao tác trêncác dữ liệu. BCF 03h,5Dson 3Lệnh BCF thì đối nghịch với BSF, nó có nghĩa là “ Bit Clear F” tạm dịch là xoá bit nàođó trong vùng memory hay trong thanh ghi nào đó, trong trường hợp này là thanh ghiSTATUS (vì địa chỉ của nó là 03H) và lệnh này xoá bit5 của STATUS.Bên dưới là đoạn code: BSF 03h,5 ; vào Bank 1 ...
Tìm kiếm theo từ khóa liên quan:
vi điều khiển mạch điều khiển kỹ thuật điện tử thanh ghi Tài liệu học ASMGợ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 263 0 0 -
Giáo trình Kỹ thuật điện tử (Nghề: Điện công nghiệp - Cao đẳng) - Trường Cao đẳng Cơ giới (2023)
239 trang 235 0 0 -
102 trang 194 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 177 0 0 -
94 trang 168 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 -
Hệ thống sưởi - thông gió - điều hòa không khí - Thực hành kỹ thuật điện - điện tử: Phần 1
109 trang 152 0 0 -
83 trang 149 0 0
-
Đề cương chi tiết học phần Vi điều khiển
15 trang 131 0 0 -
34 trang 130 0 0