1. Trang chủ
  2. » Giáo Dục - Đào Tạo

TÌM HIỂU VỀ CẤU TRÚC – TẬP LỆNHASM VÀ C CHO PIC12XXX

43 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Về Cấu Trúc – Tập Lệnh ASM Và C Cho PIC12XXX
Tác giả Huỳnh Trung Hiếu, Trịnh Văn Xuân, Phạm Trọng Nhân, Trần Tuấn Lâm
Người hướng dẫn GV
Trường học Vi xử lý
Thể loại đề tài
Định dạng
Số trang 43
Dung lượng 230,72 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Những địa chỉ này d9ou7c5 chia thành 3 khu vực bộ nhớ - Bank1: dùng để điều khiển các hoạt động của PIC - Bank0: dùng để thao tác trên dữ liệu 2.1.1 TRISIO Thanh ghi TRISIO đặt tại địa c

Trang 1

Đề tài:

TÌM HIỂU VỀ CẤU TRÚC – TẬP LỆNH

ASM VÀ C CHO PIC12XXX

Danh sách thành viên trong nhóm 7:

1.Huỳnh Trung Hiếu

2.Trịnh Văn Xuân

3.Phạm Trọng Nhân

4.Trần Tuấn Lâm

Trang 2

1. Cấu trúc

Datasheep

Trang 3

1.1 Chân 7

GPO giao tiếp I/O vào ra, ở đây nó có chức năng nhận hoặc xuất dữ liệu.Ngoài

ra nó còn dùng để lập trình ngắt nữa, ngắt trong hay ngoài tùy mục đích sử dụng.AN0: chân này nó nhận tín hiệu tương tự hoặc số

Cin: so sánh tín hiệu hoặc dòng đi vào

ICSPDAT: là thứ tự các chương trình I/O

1.2 Chân 6

GP1 giao tiếp I/O vào ra, ở đây nó có chức năng nhận hoặc xuất dữ liệu.Ngoài

ra nó còn dùng để lập trình ngắt nữa, ngắt trong hay ngoài tùy mục đích sử dụng.AN1: chân này nó nhận tín hiệu tương tự hoặc số

Cin: so sánh tín hiệu hoặc dòng đi vào Vref hiệu điện thế ngoài

ICSPCLK: thứ tự các xung

1.3 Chân 5

GP2 giao tiếp I/O vào ra, ở đây nó có chức năng nhận hoặc xuất dữ liệu.Ngoài

ra nó còn dùng để lập trình ngắt nữa, ngắt trong hay ngoài tùy mục đích sử dụng.AN2 : chân này nó nhận tín hiệu tương tự hoặc số

T0cki: xung vào

Int: ngắt

COUT: so sánh tín hiệu ra

1.4 Chân 4

GP3 giao tiếp I/O vào ra, ở đây nó có chức năng nhận hoặc xuất dữ liệu.Ngoài

ra nó còn dùng để lập trình ngắt nữa, ngắt trong hay ngoài tùy mục đích sử dụng.MCLR: reset

Trang 4

Vpp: lập trình hiệu điện thế

1.5 Chân 3

GP4 giao tiếp I/O vào ra, ở đây nó có chức năng nhận hoặc xuất dữ liệu.Ngoài

ra nó còn dùng để lập trình ngắt nữa, ngắt trong hay ngoài tùy mục đích sử dụng.AN3 : chân này nó nhận tín hiệu tương tự hoặc số

Osc2 : kết nối với thạch anh

1.6 Chân 2 : tương tự như chân 3

1.7 Chân 1 và chân 8

Là nguồn nuôi IC

Trang 5

Đối với PIC 12 (L) F1840 :

Có 3 loại bộ nhớ trong PIC 12(L) F1840 : bộ nhớ dữ liệu ,bộ nhớ chương trình và

Việc nâng cao lõi tầm trung có 1 chương trình

15-bit có khả năng truy cập vào 32Kx14 chương

trình trong không gian bộ nhớ

Kích thước bộ nhớ của PIC 12 (L) F1840 : bộ

nhớ chương trình 4096 từ , địa chỉ bộ nhớ chương

trình cuối cùng 0FFFh

Việc truy cập vào một vị trí trên ranh giới này

sẽ tạo ra vỏ bọc xung quanh vùng nhớ đang thực

hiện Vecto thiết lập lại ( Reset) là 0000h và vecto

ngắt tại 0004h

+ Đọc chương trình bộ nhớ như đọc dữ liệu:

Có 2 phương pháp tiếp cận hằng sốtrong bộ nhớ chương trình : **Phương pháp thứ nhất

là dùng lệnh RETLW :

constantsBRW ;Add Index in W to

;program counter to

Trang 6

;select dataRETLW DATA0 ;Index0 dataRETLW DATA1 ;Index1 dataRETLW DATA2

RETLW DATA3my_function

;… LOTS OF CODE…

MOVLW DATA_INDEXcall constants

;… THE CONSTANT IS IN WLệnh RETLW có thể được sử dụng để cung cấp các truy cập vào bảng hằng

với thanh ghi INDFx Lệnh MOVIW sẽ đặt giảm 8 bit của địa chỉ của

từ trong thanh W Việc ghi vào bộ nhớ chương trình không thể được thực hiện

thông qua các tahnh ghi INDF Các lệnh truy cập vào bộ nhớ chương trình thông qua các FSR yêu cầu 1 lệnh thêm để hoàn thành 1 chu kỳ

2 Tổ chức bộ nhớ dữ liệu :

Bộ nhớ dữ liệu được phân chia trong 32 thư biện bộ nhớ với 128 bytes trong

1 thư viện Mỗi thư viện bao gồm :

-12 lệnh cốt yếu

Trang 7

-20 lệnh hàm đặc biệt

- Bộ nhớ lên đến 80 bytes trong RAM mục đích chung

- 16 bytes Ram chung

Các thư viện hoạt động được lựa chọn bằng cách viết số thư viện lên thanh ghi Chọn thư viện ( BSR)

Nếu chưa thực hiện thì bộ nhớ sẽ đọc như '0' Tất cả các bộ nhớ dữ liệu có thể truy cập 1 cách trực tiếp ( thông qua hướng dẫn sử dụng đăng ký tập tin) hoặc gián tiếp

thông quà tập tin Chọn nhập (FSR)

++ Tình trạng thanh ghi : bao gồm :

-Tình trạng số học của ALU

-Tình trạng thiết lập lại Tình trạng thanh ghi có thể là điểm đến cho bất kỳ thanh ghi , giống như bất kỳ thanh ghi khác Nếu thanh ghi tình trạng là điểm đến cho 1 lệnh

có ảnh hưởng đến các bit Z,DC hoặc C, sau đó việc ghi tới 3 bit đó sẽ

bị vô hiệu hóa Các bit này được thiết lập hoặc xóa theo thiết bị logic Hơn nữa , các

bit TO và PD không cho phép ghi Vì vậy , kết quả của một lệnh với thanh ghi tình trạng như là điểm đến có thể khác nhau so với dự định

++ Thanh ghi hàm đặc biệt :

Các thanh ghi hàm đặc biệt là các thanh ghi được sử dụng bởi các ứngdụng kiểm soát sác hoạt động mong muốn của các chưa ngăng ngoại vi vào điện thoại

++ RAM mục đích chung :

Có đến 80 byte của GPR trong mỗi bộ nhớ của thư viện

Trang 8

- Truy cập tuyến tính đến GPR: RAM mục đích chung có thể được truy cập trong 1 phương pháp không thông báo thư viện thông qua FSRs Điều nay2co1 thể

đơn giản hóa truy cập vào cấu trúc bộ nhớ lớn ++ RAM chung :

Có 16 byte bộ nhớ RAM thông thường truy cập từ tất cả các thư viện3 PCL và PCLATH :

Máy tính ( PC) có độ rộng là 15 bit Byte thấp xuất phát từ thanh ghi PCL,

mà nó có thể đọc được và ghi được váo thanh ghi Bit cao (PC<14:8>) thì không thể trực tiếp

đọc hoặc ghi và xuất phát từ PCLATH

++ Sửa đổi PCL :

Các lệnh thực hiện bất kỳ bởi thanh ghi PCL là điểm đến đồng thời tạo ra chương trình đếm trên máy tính <14:8> bit (PCH) được thay thế bắng các nội dung của

thanh ghi PCLATH Điều này cho phép toàn bộ nội dung các chương trình truy cập phải được thay đổi bằng cách viết lệnh mong muốn trên 7 bit của thanh ghi PCLATH ,

tất cả 15 bit chương trình truy cập sẽ thay đổi các giá trị chứa trong các thanh PCLATH và các lệnh khác được viết cho thanh ghi PCL

++ Thuật toán GOTO :

Một thuật toán GOTO được thực hiện bằng cách thêm 1 bù đắp cho chương trình truy cập ( ADDWF PCL) Khi thực hiện 1 bảng đọc sử dụng

phương pháp GOTO,

cẩn thận nên kiểm tra nếu vị trí bảng qua ranh giói bộ nhớ PLC ( mỗi khối 256 byte)

Trang 9

Hàm phân nhánh thêm 1 khoảng trống trong máy tính Điều này cho phép ma định vị và mã số mà đi qua ranh giới trang Có hai hình thức phân

Nếu sử dụng BRA, toàn bộ máy tính sẽ được nạp với máy tính + 1 +, giá trị ký của toán hạng của lệnh BRA

4 Stack :

Tất cả các thiết bị này có 16 cấp x 15 bit độ rộng phần cứng Stack Không gian của Stack không phải một phần của 1 trong 2 chương trình hoặc không gian

dữ liệu Máy tính được đẩy váo Stack

khi lệnh CALL hoặc CALLW được thực hiện hoặc 1 gián đoạn tạo ra 1 nhánh Stack d9ou7c5 giải phóng trong trường hợp hàm RETURN , RETLW hoặcRETFIE được thực hiện

PCLATH không bị ảnh hưởng bởi các hoạt động PUSH hoặc POP Stack hoạt động như 1 bộ đệm tròn nếu bit STVREN được lập trình '0' , điều này có nghĩa là sau khi Stack đã được lấy 16 lần , lần

lấy thứ 17 sẽ ghi đè giá trị lên giá trị mà đã được lưu trữ từ lần lấy đầu tiên 5 Địa chỉ gián tiếp :

Thanh ghi INDFn không phải là thanh ghi vật lý , bấy kỳ lệnh nào có thể truy cập vào thanh ghi INDFn thì thực chất là truy cập vào thanh ghi địa chỉ theo quy định của Thanh ghi chọn tập tin ( FSR) Nếu

địa chỉ FSRn quy định cụ thể 1 trong 2 thanh ghi INDFn , quá trình đọc sẽ trả về '0' và ko diễn ra quá trình ghi ( mặc dù bit trạng thái có thể bị ảnh hưởng ) Giá trị của thanh ghi FSRn được tạo bởi cặp thanh ghi

Trang 10

FSRnH và FSRnL Thanh ghi FSR tạo thành 1 địa chỉ 16 bit cho phép

không gian địa chỉ là 65536 địa chỉ Những địa chỉ này d9ou7c5 chia thành 3 khu vực bộ nhớ

- Bank1: dùng để điều khiển các hoạt

động của PIC

- Bank0: dùng để thao tác trên dữ liệu

2.1.1 TRISIO

Thanh ghi TRISIO đặt tại địa chỉ 85H để

lập trình cho các chân trên thanh ghi này thông

thường người ta gởi mức 0 hay 1 đến các bit

tương ứng trên thanh ghi, có thể làm điều này

trong cả2 dạng hoặc là bằng số binary (bin)

hay hex 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 !

2.1.2 GPIO

Trang 11

Để làm cho 1 trong những chân Output lên mức cao ta gởi 1 đến bit tương ứngtrên thanh ghi GPIO, giống như cách làm trên thanh ghi TRISIO, có thể kiểm tralại trên từng chân

- Với : <number> là cái mà ta sẽ AND với nội dung trong thanh ghi W, kết

quả AND sẽ lưu trong thanh ghi W.

Lệnh ANDWF cho phép ta AND thanh ghi W với một thanh ghi khác, ví dụ như với GPOI, cú pháp là:

Trang 12

ADD là một hàm cộng 2 số với nhau, nếu kết quả lớn hơn 8bit thì cờ CARRY

sẽ được set lên 1 ngược lại nó =0 Cờ CARRY có địa chỉ byte 03h và nằm tại bit0.Một lần nữa con Pic cho ta 2 món chế biến từ hàm ADD, đó là ADDLW vàADDWF

Lệnh ADDLW cộng nội dung của thanh ghi W với một số xác định, cú pháp là:

Hàm SUBnày trừ 1bit với 1bit khác

Lệnh SUBLW và SUBWF có cú pháp tương tự như hàm ADD nhưng thay vì cộng thì nó trừ

Trang 13

- Với <register> là thanh ghi, hoặc địa chỉ mà ta chỉ định, còn d thì nói cho

con Pic biết nơi đặt kết quả Nếu d=0 thì kết quả lưu trong thanh ghi W, nếu d=1 kết quả sẽ được lưu trong thanh ghi chỉ định nằm trước nó (tức là <register>)

Bằng cách này ta có thể tiết kiệm ½ bộ nhớ của Pic Nếu ta muốn kết quả lưu trong W thì sử dụng ví dụ trên sau đó thêm một lệnh khác để MOV nội dung trong địa chỉ 0Ch trở vào trong thanh ghi W sau đó đặt vào thanh ghi 0Ch bất cứ cái gì

Có một lệnh increment khác, đó là INCFSZ, lệnh này sẽ tăng thanh ghi mà ta chỉ định lên 1, nhưng nếu thanh ghi này =0 sau khi thực thi lệnh ( xảy ra khi cộng 1vào FFh) thì con Pic sẽ bỏ qua lệnh kế tiếp, đoạn code bên dưới sẽ mô tả lệnh này:Loop

Incfsz 0C

Goto Loop

:

:

Trang 14

Rest of program.

Trong đoạn code trên, địa chỉ 0Ch sẽ tăng lên 1 sau đó chương trình nói cho conPic quay về nhãn Loop và gia tăng 0Ch lên lần nữa, nó làm tiếp tục như vậy cho tới khi 0Ch=127 (FFh) Lần này khi tăng lên 1, nội dung của 0Ch sẽ =0 Lệnh INCFSZ sẽ nói cho con Pic bíêt hãy bỏ qua lệnh kế tiếp, trong trường hợp ví dụ trên nó bỏ qua lệnh GOTO Loop để thực thi tiếp đoạn code còn lại

2.2.1.6 Lệnh COMF

Lệnh cuối cùng trong nhóm này là lệnh COMF, nó đảo ngược (Compliment) tất

cả các bit trong thanh ghi được chỉ định, cú pháp là:

COMF <register>,d.

- Với <register> là thanh ghi mà ta muốn đảo và d nói cho con Pic bíêt nơi

lưu kết quả Nếu d=0 kết quả lưu trong thanh ghi W, nếu d=1 thì kết quả lưu trong thanh ghi chỉ định nằm trước d ( tức là <register>)

Xem mô tả sau đây:

0C = 11001100

COMF 0C,1

0C = 00110011

Cái này rất tiện lợi khi mà ta muốn nhanh chóng bật các chân của Port từ

Output trở thành Input hoặc ngược lại

2.2.2 Toán hạng trên bit

Các toán hạng dùng cho Bit cho phép chúng ta thao tác trên các bit đơn lẽ trong byte, nó cho phép MOV, SET và CLEAR bit trong thanh ghi hoặc những địa chỉ được chỉ định, phần cuối của tutorial này ta sẽ trình bày một chương trình làm cho con Led sáng chạy theo nhiều cách khác nhau

Trang 15

Chúng ta đã sử dụng lệnh này trong phần trước để thay đổi từ Bank1 sang

Bank0 bằng cách xoá bit trong thanh ghi STATUS, chúng ta cũng có thể Clear 1 bit về 0 tại bất kỳ bit nào trong bất kỳ thanh ghi nào

Trang 16

2.2.2.3 Lệnh BTFSC

Chúng ta đã có thể Set bit và Clear bit trong thanh ghi, nhưng mà nếu bạn chỉ muốn thử xem bit nào đó trong thanh ghi là = 1 hay = 0 thì sao, rất đơn giản, hảy dùng lệnh BTFSC, nó được gọi là “Bit Test Register F and Skip If It Is Clear”, tạmdịch là “lệnh thử kiểm tra bit trong thanh ghi và bỏ qua lệnh kế nếu bit = 0”, quá rõràng rồi, không cần phải giải thích gì thêm nữa phải không ?!, ta sẽ dùng lệnh này

để kiểm tra một cái cờ (flag) nào đó ví dụ như cờ Carry, nó tránh cho ta khỏi phải đọc thanh ghi STATUS để tìm xem trạng thái của từng bit như thế nào

Ví dụ:

Nếu bạn muốn thử bit cờ Carry =1chưa sau khi bạn cộng 2 byte với nhau, bạn hãy thử làm cái này: BTFSC 03h,0

Nếu cờ Carry=1 thì chương trình thực thi tiếp lệnh đứng kế tiếp, nếu Carry=0

nó sẽ bỏ qua lệnh kế tiếp, xem đoạn code sau:

Trong đoạn code trên, con Pic sẽ đi ra khỏi Loop nếu bit0 trong thanh ghi

STATUS ( hay cờ Carry) bị xoá về 0, nói cách khác nếu cờ Carry=0 lệnh GOTO sẽđược thực hiện

Trang 17

Bây giờ hãy xem cái gì sẽ xảy ra nếu bạn có 10000000 và tiếp tục thực thi lệnh RLF.bit 1 của bạn sẽ đi sang cờ Carry, nếu bạn lại tiếp tục RLF thì bit 1 sẽ quay trở

về vị trí 0 trong byte Mọi thứ sẽ diễn ra đúng như vậy đối với lệnh RRF nhưng màbit sẽ di chuyển theo chiều bên phải

Trang 18

2.3.2 Lệnh MOVLW

Có nghĩa là ‘Move Literal Value Into W’ tạm dịch là di chuyển giá trị của Literal 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

2.3.3 Lệnh DECFSZ

Lệnh DECFSZ sẽ giảm thanh ghi ( trong trường hợp này là COUNT) xuống

một đơn vị được điền sau dấu phẩy (,), trong ví dụ này đơn vị là 1 Nếu nó giảm tớizero chương trình sẽ bỏ qua lệnh kế tiếp để nhảy đến thực thi lệnh thứ 2

Trang 19

Điều mà chúng ta phải làm đầu tiên là gán hằng số COUNT = 255, kế đến đặt 1 cái nhãn ngay bên cạnh lệnh defsz.

Lệnh decfsz COUNT,1 sẽ giảm giá trị của COUNT xuống 1 và lưu giá trị đã giảm trở vào trong COUNT, nó cũng sẽ kiểm tra xem COUNT = 0 chưa, nếu chưa

nó sẽ cho chương trình thực thi lệnh kế tiếp, trong ví dụ này nó sẽ thực thi lệnh GOTO để quay về lại điểm bắt đầu ( là LABEL), nếu COUNT = 0 thì nó sẽ cho chương trình bỏ qua lệnh kế tiếp và nhảy đến lệnh thứ 2, trong ví dụ này chương trình sẽ nhảy đến nơi có chữ ‘Carry on here’

Như bạn đã thấy, chúng ta đã làm cho chương trình lưu lại một thời gian trước khi nó tiếp tục làm việc gì đó tiếp theo, cái này gọi là vòng trễ (Delay loop), nếu chúng ta muốn thời gian trễ lớn hơn chúng ta phải làm một vòng trễ kiểu khác, nhưng mà cũng dể dàng để hiểu ra rằng có nhiều Loop hơn thì thời gian sẽ trễ lâu hơn, chúng ta cần ít nhất là 2 Loop như trên nếu muốn nhìn thấy đèn Led chớp

2.3.4 Lệnh BCF

Lệ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 ghi STATUS (vì địa chỉ của nó là 03H) và lệnh này xoá bit5 của STATUS

2.4 Thời gian thực thi lệnh (Intruction Timing)

Như bạn đã biết, xung nhịp bên trong của Pic được gọi là chu kỳ lệnh, nếu dùngthạch anh 4MHz thì 1 chu kỳ lệnh là 1/(4MHz/4) = 1uS, một số lệnh chỉ thực thi mất 1 chu kỳ trong khi một số lệnh khác mất 2 chu kỳ để thực thi hoàn toàn, bạn hãy xem trong tập lệnh của Pic để biết thêm chi tiết Cách để nhớ thì hoàn toàn đơngiản, giả sử tất cả các lệnh đều mất 1 chu kỳ, nhưng mà nếu lệnh đó làm cho

chương trình nhảy tới nơi nào đó thì sẽ mất 2 chu kỳ

Trang 20

Ví dụ:

- Lệnh MOVWF mất 1 chu kỳ bởi vì lệnh này chỉ mang data từ nơi này sang

nơi khác

- Lệnh GOTO mất 2 chu kỳ bởi vì nó làm cho Program Counter nhảy tới nơi

nào đó trong chương trình

- Lệnh RETURN cũng mất 2 chu kỳ bởi vì nó làm cho PC quay trở về đầu

chương trình

Tuy nhiên có 4 lệnh mà nó có thể mất 1 hoặc 2chu kỳ, đó là DECFSZ,

INCFSZ, BTFSC và BTFSS, những lệnh này có một điểm chung đó là nó sẽ bỏ

qua lệnh kế tiếp nếu nó thoả một điều kiện nào đó Chẳng hạn như lệnh DECFSZ

sẽ giảm giá trị trong thanh ghi F xuống 1, nếu kết quả khác 0 thì lệnh kế tiếp được thực thi, vì vậy nó mất 1 chu kỳ, nhưng nếu kết quả là 0 thì lệnh kế tiếp bị bỏ qua

để thực thi lệnh đứng sau kế, trong trường hợp này lệnh thực thi mất 2 chu kỳ lý do

là nó thay đổi giá trị của PC, nó cần 1 chu kỳ để thực hiện hàm và 1 chu kỳ nữa để thay đổi PC đến vị trí thoả điều kiện của hàm Để rõ hơn, ta xem ví dụ bên dưới

Trang 21

Chúng ta quay trở lại lệnh thứ 3(decfsz COUNT), lần này sau khi giảm

COUNT xuống 1 thì COUNT =0, lệnh kế tiếp sẽ bị bỏ qua và nó nhảy đến End chấm dứt chương trình, hành động bỏ qua lệnh kế tiếp được thực hiện trong 1 chu

kỳ khác, vì vậy khi ta đặt 02 vào COUNT thì chương trình này mất 7 chu kỳ, nếu thạch anh là 4MHZ thì:

Dson 32

1/(4MHz/4) = 1uS / chu kỳ 􀃎7 chu kỳ mất 7 x 1uS = 7uS

Như vậy khi viết chương trình liên quan đến thời gian thực thi, bạn phải tính toán cẩn thận khi dùng các lệnh DECFSZ, INCFSZ, BTFSC và BTFSS

Bên trong con Pic có một thứ gọi là ‘Fuses’ tạm dịch là cầu chì, nó không giốngnhư cầu chì fuses bảo vệ của ổ điện nhà mà nó giống như một cái Switch điện tử được đóng hay mở bởi lập trình viên Làm sao mà những cái Fuses này được đóng hay mở để cho WDT hoạt động, là viết 2 dòng lệnh tại phần đầu chương trình để nói cho Pic biết enable hay disable cái fuses nào đó

2.4 Delay Loops

Mỗi lệnh thực thi mất 1 chu kỳ xung clock, nếu ta sử dụng thạch anh 4MHz thì mỗi lệnh mất 4/4MHz hay 1us, trong đoạn code trên, ta sử dụng 5 lệnh như vậy mất 5us để thực thi hoàn toàn, quá nhanh để mắt người có thể nhìn thấy đèn led chớp tắt trong khỏang thời gian ngắn ngủi như vậy, cái mà ta cần là làm cho

khoảng thời gian giữa sáng và tắt của led kéo dài ra, nói cách khác là làm trễ

(Delay)

Cơ bản của 1 chương trình Delay là cho đếm ngược lại giá trị đã đặt trước đó, vàkhi nó đến zero (0) thì ta cho dừng bộ đếm, giá trị zero báo cho biết dừng chương trình delay và sẽ tiếp tục thực thi lại nếu ta muốn

Ngày đăng: 20/12/2021, 10:15

HÌNH ẢNH LIÊN QUAN

Hình 3.1 - TÌM HIỂU VỀ CẤU TRÚC – TẬP LỆNHASM VÀ C CHO PIC12XXX
Hình 3.1 (Trang 31)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w