1. Trang chủ
  2. » Công Nghệ Thông Tin

Ví dụ Thực hành trên Pinnacle pdf

6 176 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 250,36 KB

Nội dung

4 Thc hin trờn Pinnacle ễn tp li ton b kin thc ó hc ============================================= Vi du 1: Ch-ơng trình đọc bảng dữ liệu và ghi vào vùng nhớ RAM Chạy ch-ơng trình và quan sát vùng Internal RAM ORG 00H MOV DPTR, #MYDATA ; nap dia chi dau tien cua bang MOV R0, #40H ; nap dia chi dau tien cua nho ram BACK: CLR A ; xoa A=0 MOVC A,@A DPTR ; doc bang JZ KT ; Nhay den KT neu gap 0 ket thuc chuoi MOV @R0, A ; Nap bang vao ram INC R0 ; Tang dia chi ram INC DPTR ; Tang dia chi bang SJMP BACK ;Tro ve nhan Back de doc lai KT: SJMP KT ; cho tai cho ORG 300H ; bat dau dia chi bang MYDATA: DB "HA NOI", 0 ; du lieu bang ket thuc la 0 END ===================================================== Vớ d 2 : Ch-ơng trình định thời tạo thời gian trể chế độ 1. Chy tng lnh ca chng trỡnh v quan sỏt b nh thi. ORG 00H ; bắt đầu ch-ơng trình từ địa chỉ 00H MOV TMOD, #01H ; Timer0 ở chế độ 1 (đếm 16 bit tới FFFFH) MOV TL0, #0F2H ; nạp TL0 = #0F2H MOV TH0, #0FAH ; nạp TH0 = # 0FAH MOV P0, #55h ; đ-a ra cổng P0 giá trị 55H SETB TR0 ; bắt đầu đếm định thời gian trễ HERE: JNB TF0, HERE ; chờ cờ tràn TF0 = 1 CLR TR0 ; ngừng đếm CLR TF0 ; xoá cờ tràn SJMP $ ; kết thúc ch-ơng trình bằng lệnh nhẩy tại chỗ END ; kết thúc ch-ơng trình dịch =========================================================== Vớ D 3. Ch-ơng trình định thời tạo thời gian trễ ở chế độ 2. ORG 00H ; bắt đầu ch-ơng trình từ địa chỉ 00H MOV TMOD, #20H ; Timer1 ở chế độ 2 (đếm 8 bit từ TH1) MOV TH1, #0FDH ; nạp TH0 cho ttốc độ baud 9.6KHz MOV TL1, TH1 ; nạp TL1 = TH1 = #0FDH SETB TR1 ; bắt đầu đếm định thời gian trễ HERE: JNB TF1, HERE ; chờ cờ tràn TF0 = 1 CLR TR1 ; ngừng đếm CLR TF1 ; xoá cờ tràn SJMP $ ; nhẩy ti ch END ; kết thúc ch-ơng trình dịch Vớ D 4. Ch-ơng trình định thời tạo thời gian trễ 1phút = 60 sec Chy chng trỡnh bn s thy chng trỡnh ngng chy sau khong 65 giõy. Sa chng trỡnh cú thi gian tr 10, 20, 30, 40, 50 giõy ORG 00H ; Start at 00H Formatted: Font: 12 pt, Font color: Custom Color(RGB(8,8,8)) Formatted: Top: 1.5 cm, Bottom: 1.5 cm, Gutter: 1.5 cm Formatted: Font color: Custom Color(RGB(8,8,8)) Formatted: Font: 12 pt, Font color: Custom Color(RGB(8,8,8)) Formatted: Font color: Custom Color(RGB(8,8,8)) Formatted: Font: 12 pt, Font color: Custom Color(RGB(8,8,8)) Formatted: Font color: Custom Color(RGB(8,8,8)) Formatted: Font: 12 pt, Font color: Custom Color(RGB(8,8,8)) 5 MOV R0, #20 ; Setup R0=20 MOV R1, #60 ; Setup R1=60 MOV TMOD,#01H ; Timer0 mode 1 DL: MOV DPTR, #15536 ; Counter 50000 MOV TL0, DPL MOV TH0, DPH SETB TR0 JNB TF0, $ ;Wait TF0 = 1 after 50000?sec CLR TF0 CLR TR0 DJNZ R0, DL ; 1ses MOV R0, #20 DJNZ R1, DL END ==================================================== dụ 5. Sử dụng 2 bộ định thời tạo xung chữ nhật tần số 2000Hz thời gian ở mức cao bằng 4 lần thời gian ở mức thấp. (dưới đây là code chương trình, các bạn tự tìm hiểu và ghi lời giải thích cho các dòng lệnh ) chạy chương trình, quan sát các bộ định thời làm việc ORG 00H MOV TMOD, #00100001B LOOP: SETB P0.3 ACALL DELAY0 CLR P0.3 ACALL DELAY1 LJMP LOOP DELAY0: MOV TL0, #70H MOV TH0, #FEH SETB TR0 L0: JNB TF0, L0 CLR TR0 CLR TF0 RET DELAY1: MOV TH1, #156 SETB TR1 L1: JNB TF1, L1 CLR TR1 CLR TF1 RET END Bài Tập ứng dụng định thời (không sử dụng ngắt) Trên cơ sở các dụ trên viết chương trình: A. Tạo xung vuông f=2 KHz trên P1.7, dùng bộ định thời 1 ở Mode 2 (auto reload) B. Tạo xung vuông f=50 Hz ở P1.7, dùng bộ định thời 1 ở Mode 1 (16 bit) C. Tạo xung chữ nhật tần số 2000Hz thời gian ở mức cao bằng 2/3 lần thời gian ở mức thấp (sử dụng bộ định thời) D. Tạo xung chữ nhật tần số 2000Hz thời gian ở mức cao bằng 2/3 lần thời gian ở mức thấp(không sử dụng bộ định thời) 6 ================ Bi Tp ng dng nh thi s dng ngt S dng ngt ca cỏc b nh thi vit chng trỡnh A. To xung vuụng f=2 KHz trờn P1.2, dựng b nh thi 1 Mode 2 (auto reload) B. To xung vuụng f=50 Hz P1.2, dựng b nh thi 1 Mode 1 (16 bit) C. To xung ch nht tn s 3000Hz thi gian mc cao bng 2/3 ln thi gian mc thp THC HNH TRấN CHNG TRèNH Mễ PHNG 1. Soạn thảo, hợp dịch, cho chạy thử các dụ trên ch-ơng trình PINNACLE. dụ 1: Ch-ơng trình đ-a dữ liệu ra cổng (chy ) ORG 00H ; bắt đầu ch-ơng trình bằng địa chỉ nhớ 00h MOV A, # 55h ; gán thanh ghi A bằng giá trị tức thì 55H MOV P0, A ; đ-a ra cổng P0 MOV A, #0AAH ; gán thanh ghi A bằng giá trị tức thì 0AAH MOV P1, A ; đ-a ra cổng P0 MOV A, #0FFH ; gán thanh ghi A bằng giá trị tức thì OFFH MOV P2, A ; đ-a ra cổng P0 END ; kết thúc ch-ơng trình dụ 2: Ch-ơng trình dùng lệnh JMP addr. có vòng lặp vô hạn ORG 00H ; ch-ơng trình trong vùng các vectơ ngắt MOV A, # 55H ; nạp giá trị 55h vào A NHAN: MOV P0, A ; gửi a ra cổng P0 MOV P1,A ; gửi a ra cổng P1 MOV P2,A ; gửi a ra cổng P2 SJMP NHAN ; trở về NHAN END ; kết thúc dịch dụ 3: Ch-ơng trình dùng lệnh JMP addr. có kết thúc chờ ORG 00H LJMP MAIN ; nhẩy tới nhãn MAIN trong vùng địa chỉ 30H ORG 30H; bỏ qua vùng nhớ dành cho các vectơ ngắt MAIN: MOV A, # 55H ; ch-ơng trình nằm ngoài vùng vectơ ngắt MOV P0, A MOV P1,A MOV P2,A SJMP $ (hay HERE: SJMP HERE); chờ tại chỗ End ; kết thúc dịch dụ 4: Ch-ơng trình dùng lệnh JMP @A+DPTR MOV DPTR, # JMP_TBL MOV A,#6 ;thay doi gia tri nap vao A va xem ket qua JMP @A+DPTR JMP_TBL: AJMP LABEL0 AJMP LABEL1 AJMP LABEL2 AJMP LABEL3 7 LABEL0: MOV P0,#1h LABEL1: MOV P1,#15h LABEL2: MOV P2,#25h LABEL3: MOV P3,#35h END dụ 5: Ch-ơng trình có gọi ch-ơng trình con tạo trễ dùng DJN ORG 00H MOV R1, # 25 CALL DELAY ; gọi ch-ơng trình con MOV P0, #0ABH ; đ-a ra cổng P0 giá trị ABH SJMP $ ; chờ tại chỗ DELAY: MOV R0, # 10 ; nạp R0 giá trị 10D NHAN0:DJNZ R0, NHAN0 ; giảm R0 và nhẩy tại chỗ DJNZ R1, DELAY ; giảm R1, nhẩy về DLAY nếu khác 0 RET ; kết thúc ch-ơng trình con DELAY END ; kết thúc ch-ơng trình hợp dịch dụ 6: Ch-ơng trình dùng CJNE ORG 00H MOV A, # 05H ; nạp giá trị 05h vào A NHAN: INC A ; tăng A lên 1 CJNE A, # 10H, NHAN ; so sánh a với 10H, nếu ; A<10H, nhẩy về NHAN MOV P0,A ; khi A= 10H, gửi a ra cổng P0 SJMP $ ; kết thúc bằng chờ tại chỗ END ; kết thúc dịch dụ 7: dùng CJNE và JNC ORG 00H LJMP MAIN ; nhẩy tới ch-ơng trình chính ORG 30H MAIN: MOV P1, #OFFH ; khởi tạo cổng P1 làm cổng vào MOV A, P1 ; đọc cổng vào P1 vào A CJNE A, #75, OVER ; so sánh với #75, nếu không, nhẩy tới OVER SJMP EXIT ; nhẩy tới EXIT OVER: JNC NEXT ; nếu CY = 0 khi A > 75 thì nhẩy tới NEXT MOV R1, A ; nếu CY=1 khi A< 75 thì l-u A vào R1 SJMP EXIT ; nhẩy tới EXIT NEXT: MOV R2, A ; l-u A vào R2 nếu > 75 E XIT : MOV P2, A ; đ-a hiển thị ra cổng pP2 nếu A = 75 SJMP $ ; kết thúc chờ END ; kết thúc ch-ơng trình dịch Chú ý : có thêm lệnh rẽ nhánh tiếp JNC NEXT có ba ph-ơng án lựa chọn dụ 8: Ch-ơng trình rẽ nhánh khi có cờ tràn TF0 ORG 00H LJMP MAIN ORG 30H MAIN: CLR TF0 ; xoá cờ tràn MOV TMOD, #01H ; ghi chế độ Timer1 M = 1 MOV TH0,#50H ; nạp TH0 = # 50H MOV TL0, # 50H ; nạp TH0 = # 50H 8 SETB TR0 ; xác lập TR0 để Timer0 bắt đầu đếm HERE: JNB TF0, HERE ; chờ bit TF0= 1 CLR TF0 ; xoá TF0 CLR TR0 ; xoá TR0 để Timer0 ngừng đếm SJMP $ END dụ 9: ch-ơng trình ghi vo một vùng nhớ từ địa chỉ 60H tới 80H giá trị ff. MOV 61h, 123 MOV R0, #60H ; nạp địa chỉ 60H cho R0 LOOP:MOV @R0, #0ffH ; ghi vào ô nhớ có địa chỉ 60H INC R0 ; tăng R0 hay địa chỉ CJNE R0, #80H, LOOP ; so sánh R0 = 80H ch-a, nếu ch- bằng, nhẩy về LOOP dụ 10: ch-ơng trình xoá một vùng nhớ từ địa chỉ 60H tới 80H. MOV 61h, 123 MOV R0, #60H ; nạp địa chỉ 60H cho R0 LOOP:MOV @R0, #00H ; xoá ô nhớ có địa chỉ 60H INC R0 ; tăng R0 hay địa chỉ CJNE R0, #80H, LOOP ; so sánh R0 = 80H ch-a, nếu ch- bằng, nhẩy về LOOP Dụ 11. Các lệnh MOV với các loại địa chỉ đích và nguồn ORG 00H MOV A, #35H ; số 35H gửi vào thanh ghi A MOV R1, #35H ; số 35H gửi vào thanh ghi R1 MOV 12H, #35H ; số 35H gửi vào ô nhớ địa chỉ 12H MOV @R1, #35H ; số 35H gửi vào ô nhớ địa chỉ trong R1 MOV A, R1 ; nội dung thanh ghi R1 gửi vào A MOV A, 25H ; nội dung ô nhớ địa chỉ 25H gửi vào A MOV A, @R1 ; nội dung ô nhó địa chỉ ở R1 gửi vào A MOV R2, A ; nội dung thanh ghi A gửi vào R2 MOV R2, 25H ; nội dung ô nhớ địa chỉ 25H gửi vào R2 MOV 10H, A ;thanh ghi A gửi vào ô nhớ địa chỉ 10H MOV 10H, R1 ;thanh ghi R1 gửi vào ô nhớ địa chỉ 10H MOV 10H, 12H ; ô nhớ địa chỉ 12H gửi vào ô nhớ địa chỉ 10H END =========================================================== dụ 12. Nạp 20H ô nhớ ngoàI kể từ địa chỉ 2000H với giá trị 0FFH ORG 00H MOV DPTR, # 2000H ; nạp địa chỉ nhớ ngoài MOV R1, #20H ; nạp số ô nhớ MOV A, #0ffH ; ghi vào thanh ghi A AGAIN: MOVX @DPTR , A ; nạp vào ô nhớ ngoài ở địa chỉ DPTR INC DPTR ; tăng địa chỉ nhớ ngoài DJNZ R1, AGAIN ; lặp lại 20H lần END ===================================================================== ======== dụ 13. Các lệnh hoán chuyển XCH, XCHD ORG 00H MOV R1,#20h MOV A, #0A5H ; gửi #0A5H vào A MOV R0, # 5AH ; gửi #05AH vào R0 MOV P0, A ; đ-a ra cổng P0 9 XCH A, R0 ; hoán chuyển 8 bit của A với R0 MOV P1, A ; đa ra cổng P1 MOV P0, A ; đa ra cổng P0 MOV P1, A ; đa ra cổng P1 XCHD A,@R1 ; hoán chuyển 4 bit thấp của R0 với A MOV P0, A ; đa A ra cổng P0 MOV A, R0 ; chuyển R0 vào A XCHD A, @R1 MOV P1, A ; đa R0 ra cổng P1 END dụ 14. Lệnh PUSH / POP trong chơng trình con ORG 00H LOOP: MOV A, #55H ; gửi #55H vào A MOV P0, A ; đa ra cổng p0 CALL DELAY ; gọi trễ MOV A, #0AAH ; đa #0AAH vào A CALL DELAY ; gọi trễ JMP LOOP ; trở về LOOP DELAY: PUSH 0E0H ; lu trữ A vào ngăn xếp có địa chỉ là SP = 08H PUSH PSW ; lu trữ A vào ngăn xếp có địa chỉ là SP = 09H MOV R1, #10 ; gửi #100H vào R1 HERE: DJNZ R1, HERE ; gim R1, nếu ch-a bngng 0, lại lặp lại MOV A, #20H POP PSW ; trả về giá trị PSW từ ngăn xếp có địa chỉ 09H POP 0E0H ; trả về giá trị PSW từ ngăn xếp có địa chỉ 08H RET ; trở về chng trình chính END ; kết thúc chng trình dịch . TR1 CLR TF1 RET END Bài Tập ứng dụng định thời (không sử dụng ngắt) Trên cơ sở các ví dụ trên viết chương trình: A. Tạo xung vuông f=2 KHz trên P1.7, dùng bộ định thời 1 ở Mode 2 (auto. THC HNH TRấN CHNG TRèNH Mễ PHNG 1. Soạn thảo, hợp dịch, cho chạy thử các ví dụ trên ch-ơng trình PINNACLE. Ví dụ 1: Ch-ơng trình đ-a dữ liệu ra cổng (chy ) ORG 00H ; bắt đầu ch-ơng trình. MOV R0, #20 DJNZ R1, DL END ==================================================== Ví dụ 5. Sử dụng 2 bộ định thời tạo xung chữ nhật tần số 2000Hz thời gian ở mức cao bằng 4 lần thời gian

Ngày đăng: 29/06/2014, 11:20

TỪ KHÓA LIÊN QUAN

w