1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Vi xử lý - Chương 4 pps

35 281 1

Đ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

Định dạng
Số trang 35
Dung lượng 691,53 KB

Nội dung

Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM. Giáo trình Vi xử lý. 119 Biên soạn: Phạm Quang Trí CHƯƠNG 4 HOẠT ðỘNG CỦA BỘ ðỊNH THỜI (TIMER) I. MỞ ðẦU: Bộ đònh thời (TIMER) Là chuỗi các FF (mỗi FF là 1 mạch chia 2). Ngõ vào: nhận tín hiệu xung clock từ nguồn xung. Ngõ ra: truyền tín hiệu xung clock cho FF báo tràn (cờ tràn). • Tần số: tần số xung ngõ ra bằng tần số xung ngõ vào chia cho 2 N . • Giá trị: giá trị nhị phân trong các FF của bộ định thời là số đếm của các xung clock tại ngõ vào từ khi bộ định thời bắt đầu đếm. • Tràn: xảy ra hiện tượng tràn (cờ tràn = 1) khi số đếm chuyển từ giá trị lớn nhất xuống giá trị nhỏ nhất của bộ định thời. Ví dụ: Bộ định thời 16 bit (chứa 16 FF bên trong). o Tần số: 65536 16 2 IN f IN f OUT f == o Giá trị: số đếm nằm trong khoảng 0 (0000H) → 65535 (FFFFH). o Tràn: cờ tràn bằng 1 khi số đếm từ FFFFH chuyển xuống 0000H. Hình minh họa đơn giản hoạt động của bộ định thời 3 bit: Hoạt động của một bộ định thời 3 bit đơn giản được minh họa trong hình trên. Mỗi một tầng là D FF kích khởi cạnh âm hoạt động như một mạch chia 2 do ta nối ngõ ra Q với ngõ vào D. Flipflop cờ ( Flag FF ) là một mạch chốt D được set bằng 1 bởi tầng cuối của bộ định thời. Giản đồ thời gian cho Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp.HCM. Giáo trình Vi xử lý. 120 Biên soạn: Phạm Quang Trí thấy tầng thứ nhất ( Q 0 ) chia 2 tần số xung clock, tầng thứ hai ( Q 1 ) chia 4 tần số xung clock, … Số ñếm ñược ghi ở dạng thập phân và ñược kiểm tra dễ dàng bằng cách khảo sát trạng thái của 3 flipflop. Ví dụ, số ñếm là 4 xuất hiện khi Q 2 = 1, Q 1 = 0, Q 0 = 0. Các flipflop ở trên là các flipflop tác ñộng cạnh âm ( nghĩa là trạng thái của các flipflop sẽ thay ñổi theo cạnh âm của xung clock ). Khi số ñếm tràn từ 111 xuống 000, ngõ ra Q 2 có cạnh âm làm cho trạng thái của flipflop cờ ñổi từ 0 lên 1 (ngõ vào D của flipflop này luôn luôn ở logic 1) . • Ứng dụng ñịnh thời gian (TIMER): bộ ñịnh thời ñược lập trình sao cho sẽ tràn sau một khoảng thời gian ñã qui ñịnh và khi ñó cờ tràn của bộ ñịnh thời sẽ bằng 1. • Ứng dụng ñếm sự kiện (COUNTER): ñể xác ñịnh số lần xuất hiện của một kích thích từ bên ngoài tới một chân của chip 8051 ( kích thích là sự chuyển trạng thái từ 1 xuống 0 ). • Ứng dụng tạo tốc ñộ baud cho port nối tiếp: xem thêm trong chương “Chương 5: Hoạt ñộng port nối tiếp.”. Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM. Giáo trình Vi xử lý. 121 Biên soạn: Phạm Quang Trí II. THANH GHI CHẾ ðỘ ðỊNH THỜI (TMOD): • Thanh ghi TMOD ( Timer Mode Register ) chứa các bit dùng để thiết lập chế độ hoạt động cho bộ định thời 0 và bộ định thời 1. • Thanh ghi TMOD được nạp giá trị một lần tại thời điểm bắt đầu của chương trình để qui định chế độ hoạt động của các bộ định thời. • Cấu trúc thanh ghi TMOD: TMOD: Timer Mode Register 01234567 Bit Hình 4.2.1: Thanh ghi chọn chế độ đònh thời. GATE: Bit điều khiển cổng. GATE=0: Bộ đònh thời hoạt động khi bit TR0=1 (điều khiển bằng phần mềm). GATE=1: Bộ đònh thời hoạt động khi chân INT0\=1 (điều khiển bằng phần cứng). C/T: Bit chọn chức năng đếm hoặc đònh thời. C/T=1: Bộ đònh thời là bộ đếm (Counter). C/T=0: Bộ đònh thời là bộ đònh khoảng thời gian (Timer). M1: Bit chọn chế độ hoạt động cho bộ đònh thời. M0: Bit chọn chế độ hoạt động cho bộ đònh thời. 0 GATE: Bit điều khiển cổng. GATE=0: Bộ đònh thời hoạt động khi bit TR1=1 (điều khiển bằng phần mềm). GATE=1: Bộ đònh thời hoạt động khi chân INT1\=1 (điều khiển bằng phần cứng). C/T: Bit chọn chức năng đếm hoặc đònh thời. C/T=1: Bộ đònh thời là bộ đếm (Counter). C/T=0: Bộ đònh thời là bộ đònh khoảng thời gian (Timer). M1: Bit chọn chế độ hoạt động cho bộ đònh thời. M0: Bit chọn chế độ hoạt động cho bộ đònh thời. 1 • Các chế độ hoạt động của bộ định thời: Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp.HCM. Giáo trình Vi xử lý. 122 Biên soạn: Phạm Quang Trí • Ví dụ 1: Cho biết giá trị cần nạp cho thanh ghi TMOD ñể o Timer 0: là bộ ñịnh thời gian 16 bit, ñược ñiều khiển bằng phần mềm ( bit TR0 ). o Timer 1: là bộ ñếm xung 13 bit, ñược ñiều khiển bằng phần cứng ( chân 1 INT ). Giải Phân tích: (1): Chế ñộ 16 bit.  M1 = 0, M0 = 1. (2): Bộ ñịnh thời gian.  T C / = 0. (3): ðiều khiển bằng phần mềm.  GATE = 0. (4): Chế ñộ 13 bit.  M1 = 0, M0 = 0. (5): Bộ ñếm xung.  T C / = 1. (6): ðiều khiển bằng phần cứng.  GATE = 1. Từ ñó ta có: (TMOD) = 11000001B = C1H. • Ví dụ 2: Cho biết giá trị cần nạp cho thanh ghi TMOD ñể o Timer 0: không sử dụng. o Timer 1: là bộ ñịnh thời gian 8 bit tự nạp lại, ñược ñiều khiển bằng phần mềm ( bit TR1 ). Giải Phân tích: (1): Không sử dụng.  M1 = 0, M0 = 0. (2): Không sử dụng.  T C / = 0. (3): Không sử dụng.  GATE = 0. Do Timer 0 không sử dụng, nên ta có thiết lập nó ở bất cứ chế ñộ nào. Thông thường ñể dễ dàng ta nên cho: GATE=0, T C / = 0, M1 = 0 và M0 = 0. (4): Chế ñộ 8 bit tự ñộng nạp lại.  M1 = 1, M0 = 0. (5): Bộ ñịnh thời gian.  T C / = 0. (6): ðiều khiển bằng phần mềm.  GATE = 0. Từ ñó ta có: (TMOD) = 00100000B = 20H. Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp.HCM. Giáo trình Vi xử lý. 123 Biên soạn: Phạm Quang Trí • Ví dụ 3: Cho biết (TMOD) = A5H. Hãy cho biết chế ñộ hoạt ñộng của các Timer 0 và Timer 1. Giải Ta có: (TMOD) = A5H = 10100101B. Giải thích: M1 = 1, M0 = 0.  (4): Chế ñộ 8 bit tự ñộng nạp lại. T C / = 0.  (5): Bộ ñịnh thời gian. GATE = 1.  (6): ðiều khiển bằng phần cứng. M1 = 0, M0 = 1.  (1): Chế ñộ 16 bit. T C / = 1.  (2): Bộ ñếm xung. GATE = 0.  (3): ðiều khiển bằng phần mềm. Từ ñó ta có: o Timer 0: là bộ ñếm xung 16 bit, ñược ñiều khiển bằng phần mềm ( bit TR0 ). o Timer 1: là bộ ñịnh thời gian 8 bit tự nạp lại, ñược ñiều khiển bằng phần cứng ( chân 1 INT ). • Ví dụ 4: Cho biết (TMOD) = 21H. Hãy cho biết chế ñộ hoạt ñộng của các Timer 0 và Timer 1. Giải Ta có: (TMOD) = 21H = 00100001B. Giải thích: M1 = 1, M0 = 0.  (4): Chế ñộ 8 bit tự ñộng nạp lại. T C / = 0.  (5): Bộ ñịnh thời gian. GATE = 0.  (6): ðiều khiển bằng phần mềm. M1 = 0, M0 = 1.  (1): Chế ñộ 16 bit. T C / = 0.  (2): Bộ ñịnh thời gian. GATE = 0.  (3): ðiều khiển bằng phần mềm. Từ ñó ta có: o Timer 0: là bộ ñịnh thời gian 16 bit, ñược ñiều khiển bằng phần mềm ( bit TR0 ). o Timer 1: là bộ ñịnh thời gian 8 bit tự nạp lại, ñược ñiều khiển bằng phần mềm ( bit TR1 ). Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp.HCM. Giáo trình Vi xử lý. 124 Biên soạn: Phạm Quang Trí III. THANH GHI ðIỀU KHIỂN ðỊNH THỜI (TCON): • Thanh ghi TCON ( Timer Control Register ) chứa các bit dùng ñể ñiều khiển và báo trạng thái của bộ ñịnh thời 0 và bộ ñịnh thời 1. • Cấu trúc thanh ghi TCON: • Lưu ý: Các bit IT0, IT1, IE0, IE1 không dùng ñể ñiều khiển các bộ ñịnh thời. Các bit này ñược dùng ñể phát hiện và khởi ñộng các ngắt ngoài. Việc thảo luận các bit này sẽ ñược trình bày trong “Chương 6: Hoạt ñộng ngắt.” . Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp.HCM. Giáo trình Vi xử lý. 125 Biên soạn: Phạm Quang Trí IV. CÁC CHẾ ðỘ ðỊNH THỜI VÀ CỜ TRÀN: 1. Chế ñộ ñịnh thời 13 bit (Chế ñộ 0): Chế ñộ 0 ( Mode 0 ): • Chế ñộ ñịnh thời 13 bit. • Sử dụng 8 bit của thanh ghi THx và 5 bit thấp của thanh ghi TLx ñể tạo ra bộ ñịnh thời. • Số ñếm: 0000H → 1FFFH nghĩa là từ 0 → 8191. Thời gian ñịnh thời: từ 1.T Timer → 2 13 .T Timer nghĩa là từ 1.T Timer → 8192.T Timer . • Thanh ghi THx và TLx chứa giá trị của bộ ñịnh thời. • Khi có xung clock, bộ ñịnh thời bắt ñầu ñếm lên từ giá trị chứa trong THx/TLx . • Xảy ra tràn ( cờ tràn TFx=1 ) khi số ñếm chuyển từ 1FFFH sang 0000H và việc ñếm sẽ tiếp tục ñếm lên từ giá trị 0000H . Kiến trúc của Timer 0 ở chế ñộ 0 (Mode 0). Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp.HCM. Giáo trình Vi xử lý. 126 Biên soạn: Phạm Quang Trí 2. Chế ñộ ñịnh thời 16 bit (Chế ñộ 1): Chế ñộ 1 ( Mode 1 ): • Chế ñộ ñịnh thời 16 bit. • Sử dụng thanh ghi THx và TLx ñể tạo ra bộ ñịnh thời. • Số ñếm: 0000H → FFFFH nghĩa là từ 0 → 65535. Thời gian ñịnh thời: từ 1.T Timer → 2 16 .T Timer nghĩa là từ 1.T Timer → 65536.T Timer . • Thanh ghi THx và TLx chứa giá trị của bộ ñịnh thời. • Khi có xung clock, bộ ñịnh thời bắt ñầu ñếm lên từ giá trị chứa trong THx/TLx . • Xảy ra tràn ( cờ tràn TFx=1 ) khi số ñếm chuyển từ FFFFH sang 0000H và việc ñếm sẽ tiếp tục ñếm lên từ giá trị 0000H . Kiến trúc của Timer 0 ở chế ñộ 1 (Mode 1). Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp.HCM. Giáo trình Vi xử lý. 127 Biên soạn: Phạm Quang Trí 3. Chế ñộ ñịnh thời 8 bit tự nạp lại (Chế ñộ 2): Chế ñộ 2 ( Mode 2 ): • Chế ñộ ñịnh thời 8 bit tự nạp lại. • Sử dụng thanh ghi TLx ñể tạo ra bộ ñịnh thời. • Số ñếm: 00H → FFH nghĩa là từ 0 → 255. Thời gian ñịnh thời: từ 1.T Timer → 2 8 .T Timer nghĩa là từ 1.T Timer → 256.T Timer . • Thanh ghi TLx chứa giá trị của bộ ñịnh thời và thanh ghi THx chứa giá trị sẽ ñược dùng ñể nạp lại cho bộ ñịnh thời. • Khi có xung clock, bộ ñịnh thời bắt ñầu ñếm lên từ giá trị chứa trong TLx (THx không thay ñổi giá trị) . • Xảy ra tràn ( cờ tràn TFx=1 ) khi số ñếm chuyển từ FFH sang 00H, ñồng thời giá trị trong THx sẽ ñược nạp vào TLx và việc ñếm sẽ tiếp tục ñếm lên từ giá trị chứa trong thanh ghi TLx (giá trị này bằng với giá trị của THx) . Kiến trúc của Timer 0 ở chế ñộ 2 (Mode 2). Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp.HCM. Giáo trình Vi xử lý. 128 Biên soạn: Phạm Quang Trí 4. Chế ñộ ñịnh thời chia xẻ (Chế ñộ 3): TL1TH1 Timer clock TL0TF0 TH0TF1 Timer clock /12F OSC Overflow flag x = 0, 1: Boä ñònh thôøi 0, 1. Timer clock: Xung clock cho boä ñònh thôøi. Overflow flag: Côø traøn. Chế ñộ 3 ( Mode 3 ) là: • Chế ñộ ñịnh thời chia xẻ. • Bộ ñịnh thời 0 ñược chia ra: o Bộ ñịnh thời 8 bit thứ I:  Sử dụng thanh ghi TL0 ñể tạo ra bộ ñịnh thời.  Số ñếm: 00H → FFH nghĩa là từ 0 → 255. Thời gian ñịnh thời: từ 1.T Timer → 2 8 .T Timer nghĩa là từ 1.T Timer → 256.T Timer .  Thanh ghi TL0 chứa giá trị của bộ ñịnh thời.  Khi có xung clock, bộ ñịnh thời bắt ñầu ñếm lên từ giá trị chứa trong TL0 .  Xảy ra tràn (cờ tràn TF0=1) khi số ñếm chuyển từ FFH sang 00H và việc ñếm sẽ tiếp tục ñếm lên từ giá trị 00H . o Bộ ñịnh thời 8 bit thứ II:  Sử dụng thanh ghi TH0 ñể tạo ra bộ ñịnh thời.  Số ñếm: 00H → FFH nghĩa là từ 0 → 255. Thời gian ñịnh thời: từ 1.T Timer → 2 8 .T Timer nghĩa là từ 1.T Timer → 256.T Timer .  Thanh ghi TH0 chứa giá trị của bộ ñịnh thời.  Khi có xung clock, bộ ñịnh thời bắt ñầu ñếm lên từ giá trị chứa trong TH0 .  Xảy ra tràn (cờ tràn TF1=1) khi số ñếm chuyển từ FFH sang 00H và việc ñếm sẽ tiếp tục ñếm lên từ giá trị 00H . • Bộ ñịnh thời 1: o Là bộ ñịnh thời 16 bit. o Không hoạt ñộng ở chế ñộ 3 nhưng có thể hoạt ñộng các chế ñộ khác (chế ñộ 0, 1, 2). o Không có cờ báo tràn như các bộ ñịnh thời khác. [...]... TMOD , #01H MOV TH0, #HIGH (-3 000) ho c MOV TL0, #LOW (-3 000) ho c SETB TR0 JNB TF0, $ CLR TR0 CLR TF0 RET DELAY7000US: MOV TMOD , #01H MOV TH0, #HIGH (-7 000) ho c MOV TL0, #LOW (-7 000) ho c SETB TR0 JNB TF0, $ CLR TR0 CLR TF0 RET END Giáo trình Vi x lý 148 ch MOV TH0, #0F4H MOV TL0, #48 H MOV TH0, #0E4H MOV TL0, #0A8H Biên so n: Ph m Quang Trí Chương 4: Ho t đ ng c a b đ nh th i (Timer) Trư ng ðH Cơng nghi... : Bài 1: Vi t chương trình con mang tên DELAY500US có nhi m v t o tr 0,5ms dùng Timer (fOSC=6MHz) Bài 2: Vi t chương trình con mang tên DELAY10MS có nhi m v t o tr 10ms dùng Timer (fOSC=12MHz) Bài 3: Vi t chương trình con mang tên DELAY10S có nhi m v t o tr 10s dùng Timer (fOSC=12MHz) Bài 4: Vi t chương trình con mang tên DELAY1S có nhi m v t o tr 1s dùng Timer (fOSC=11,0592MHz) Bài 5: Vi t chương trình... Bài 6: Vi t đo n l nh t o chu i xung vng có f = 100 KHz và có chu kỳ làm vi c D = 40 % t i chân P1.2 (fOSC =12 MHz) Bài 7: Vi t đo n l nh t o chu i xung vng có f = 10 KHz t i chân P1.3 (fOSC = 24 MHz) Giáo trình Vi x lý 152 Biên so n: Ph m Quang Trí Chương 4: Ho t đ ng c a b đ nh th i (Timer) Trư ng ðH Cơng nghi p Tp.HCM Bài 8: Vi t đo n l nh t o chu i xung vng có f = 10 KHz và có chu kỳ làm vi c D =... Delay 12 12 V y: N = -3 000 ho c N = F 448 H Ta có: t = 3000 (µs ) Delay 1 12 12 T = = = = 10−6 (s ) = 1(µs ) Timer f 6 f Timer Osc 12.10 (hay N n m trong kho ng t -6 5535 đ n -1 ) nên ta ch n Timer ch Vì t ≤ 65536.T Timer Delay đ 1 (ch đ 16 bit) Tương t như trên, ta có (xét trư ng h p tL): = 12 (MHz ) t = 7000 (µs ) và f Osc Delay Giáo trình Vi x lý 147 Biên so n: Ph m Quang Trí Chương 4: Ho t đ ng c a b... a Timer (10000 s) 7 Ví d 7: (T o sóng vng) Vi t chương trình t o sóng vng có t n s 10 KHz ngõ ra P1.0 và có chu kỳ làm vi c D=50% Bi t r ng t n s th ch anh là 12 MHz và s d ng b đ nh th i 0 Gi i • Tính tốn: Giáo trình Vi x lý 144 Biên so n: Ph m Quang Trí Chương 4: Ho t đ ng c a b đ nh th i (Timer) Trư ng ðH Cơng nghi p Tp.HCM Theo đ bài, ta có chu kỳ làm vi c D=50% cho nên: 1 1 = 5.10− 5 (s ) = 50(µs... chân P1.3 (fOSC = 24 MHz) Bài 9: Vi t đo n l nh t o chu i xung vng có f = 10 Hz t i chân P1 .4 (fOSC =12 MHz) Bài 10: Vi t đo n l nh t o chu i xung vng có f = 10 Hz và có chu kỳ làm vi c D = 25% t i chân P1.5 (fOSC =11,0592 MHz) Bài 11: Vi t đo n l nh dùng Timer t o sóng vng f=500Hz t i P1 .4 (fOSC=12MHz) Bài 12: Vi t đo n l nh dùng Timer t o sóng vng f=20KHz t i P1.5 (fOSC=24MHz) Bài 13: Vi t đo n l nh... TMOD, #01H MOV TH0, #HIGH (-1 00) ho c MOV TH0, #0FFH MOV TL0, #LOW (-1 00) ho c MOV TL0, #9CH SETB TR0 JNB TF0, $ CLR TF0 CLR TR0 RET Giáo trình Vi x lý 140 Biên so n: Ph m Quang Trí Chương 4: Ho t đ ng c a b đ nh th i (Timer) Trư ng ðH Cơng nghi p Tp.HCM • ð chính xác (xét v m t th i gian) c a chương trình: Khi s d ng phương pháp t o th i gian tr như trên (phương pháp dùng Timer) thì vi c đ nh th i gian cũng... DELAY50US SJMP MAIN DELAY50US: MOV TMOD , #02H MOV TH0, # (-5 0) ho c MOV TH0, #0CEH SETB TR0 JNB TF0, $ CLR TR0 CLR TF0 RET END Giáo trình Vi x lý 145 Biên so n: Ph m Quang Trí Chương 4: Ho t đ ng c a b đ nh th i (Timer) Trư ng ðH Cơng nghi p Tp.HCM 8 Ví d 8: (T o sóng vng) Vi t chương trình t o sóng vng có t n s 1 KHz ngõ ra P1.0 và có chu kỳ làm vi c D=50% Bi t r ng t n s th ch anh là 12 MHz và s d ng... MHz c 12 MHz d 24 MHz Bài 6: Vi t chương trình con delay 100ms, bi t r ng fOSC dùng trong h th ng là: a 6 MHz b 11,0592 MHz c 12 MHz d 24 MHz Bài 7: Vi t chương trình con delay 1s, bi t r ng fOSC dùng trong h th ng là: a 6 MHz b 11,0592 MHz c 12 MHz d 24 MHz Bài 8: Vi t đo n l nh t o m t xung dương ( r ng fOSC =12 MHz ) t i chân P1.0 v i đ r ng xung 1ms, bi t • T o xung: Bài 1: Dùng chương trình con... tr ) đ vi t đo n l nh t o sóng vng f=1KHz t i P1.0 Bài 2: Dùng chương trình con DELAY10MS (Bài 2 ph n t o tr ) đ vi t đo n l nh t o sóng vng f=50Hz t i P1.1 Bài 3: Dùng chương trình con DELAY500US (Bài 1 ph n t o tr ) đ vi t đo n l nh t o sóng vng f=500Hz (D=25%) t i P1.2 Bài 4: Dùng chương trình con DELAY10MS (Bài 2 ph n t o tr ) đ vi t đo n l nh t o sóng vng f=20Hz (D=20%) t i P1.3 Bài 5: Vi t đo . Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM. Giáo trình Vi xử lý. 119 Biên soạn: Phạm Quang Trí CHƯƠNG 4 HOẠT ðỘNG CỦA BỘ ðỊNH THỜI. nối tiếp: xem thêm trong chương Chương 5: Hoạt ñộng port nối tiếp.”. Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM. Giáo trình Vi xử lý. 121 Biên soạn: Phạm. ngoài. Vi c thảo luận các bit này sẽ ñược trình bày trong Chương 6: Hoạt ñộng ngắt.” . Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp.HCM. Giáo trình Vi xử lý. 125

Ngày đăng: 05/08/2014, 14:21

TỪ KHÓA LIÊN QUAN

w