Professional Documents
Culture Documents
Chuong Trinh VĐK
Chuong Trinh VĐK
0 :
ORG 0H
LOOP:
CPL P1.0 ; đảo bit cổng 1.0
CALL DELAY1S ; gọi chương trình con
SJMP LOOP
DELAY1S:
mov TMOD,#00010000B ; chế độ 1 cho timer 1
mov R0,#100
AGAIN:
MOV TH1,#HIGH(-10000)
MOV TL1,#LOW(-10000)
SETB TR1 ; cho Timer 1 chạy
JNB TF1,$ ; đợi Timer 1 tràn
CLR TR1 ; dừng Timer 1
CLR TF1 ; xóa cờ báo tràn
DJNZ R0,AGAIN ; giảm r0 đi 1 và nhảy nếu R0 = 0
RET
DJNZ R6,Delay1
POP 06h
POP 07h
RET
END
Led đuổi nhau
Main:
MOV P1,#01h
CALL Delay
MOV P1,#02h
CALL Delay
MOV P1,#04h
CALL Delay
MOV P1,#08h
CALL Delay
MOV P1,#10h
CALL Delay
MOV P1,#20h
CALL Delay
MOV P1,#40h
CALL Delay
MOV P1,#80h
CALL Delay
MOV P1,#81h
CALL Delay
MOV P1,#82h
CALL Delay
MOV P1,#84h
CALL Delay
MOV P1,#88h
CALL Delay
MOV P1,#90h
CALL Delay
MOV P1,#0A0h
CALL Delay
MOV P1,#0C0h
CALL Delay
MOV P1,#0C1h
CALL Delay
MOV P1,#0C2h
CALL Delay
MOV P1,#0C4h
CALL Delay
MOV P1,#0C8h
CALL Delay
MOV P1,#0D0h
CALL Delay
MOV P1,#0E0h
CALL Delay
MOV P1,#0E1h
CALL Delay
MOV P1,#0E2h
CALL Delay
MOV P1,#0E4h
CALL Delay
MOV P1,#0E8h
CALL Delay
MOV P1,#0F0h
CALL Delay
MOV P1,#0F1h
CALL Delay
MOV P1,#0F2h
CALL Delay
MOV P1,#0F4h
CALL Delay
MOV P1,#0F8h
CALL Delay
MOV P1,#0F9h
CALL Delay
MOV P1,#0FAh
CALL Delay
MOV P1,#0FDh
CALL Delay
MOV P1,#0FFh
Delay:
PUSH 07h
PUSH 06h
MOV R6,#255
Delay1:
MOV R7,#255
DJNZ R7,$
DJNZ R6,Delay1
POP 06h
POP 07h
RET
END
Timer cơ bản tạo trễ
MAIN:
MOV P1,#255
CALL DELAY
MOV P1,#0
CALL DELAY
SJMP MAIN
DELAY:
MOV TMOD,#01H
MOV R1,#100
LAP: MOV TH0,#0D8H
MOV TL0,#0F0H
SETB TR0
DEM: JNB TF0,DEM
CLR TR0
CLR TF0
DJNZ R1,LAP
RET
END
Led nháy từ ngoài vào trong
Main:
MOV P1,#81h
CALL Delay
MOV P1,#42h
CALL Delay
MOV P1,#24h
CALL Delay
MOV P1,#18h
CALL Delay
MOV P1,#18h
CALL Delay
MOV P1,#24h
CALL Delay
MOV P1,#42h
CALL Delay
MOV P1,#81h
CALL Delay
MOV P1,#80h
SJMP main
Delay:
PUSH 07h
PUSH 06h
MOV R6,#255
Delay1:
MOV R7,#255
DJNZ R7,$
DJNZ R6,Delay1
POP 06h
POP 07h
RET
END
Đây là đoạn code PWM để điều khiển tốc độ 2 động cơ Trái & Phải (xung đã được băm đưa vào 2 chân
điều khiển của L298 đk động cơ):
Ví dụ :
$mod51fx ;include <mod51fx> : Định nghĩa các biến thanh ghi
(CCAP0H,CCAP1H,...)
;================ DEFINE BIT =================
;-------- MOTOR
MOTOR1 DATA CCAP0H ; P1.3
MOTOR2 DATA CCAP1H ; P1.4
MOTOR3 DATA CCAP2H ; P1.5
MOTOR4 DATA CCAP3H ; P1.6
MOTOR5 DATA CCAP4H ; P1.7
;-------- START
BIT_START BIT P2.0 ; Nút nhấn start
;-------- GIÁ TRỊ ĐIỀU XUNG
PWM_COUNT BIT 50H ; 0 - 255
;=================== MAIN ====================
ORG 0000H
MAIN
; Cho phép điều xung 5 kênh P1.3 - P1.7
MOV CMOD,#0 ;Chế độ 6 chu kì xung nhịp = 1/2 chu kì máy
SETB CR ;Cho phép PCA (programing counter array) hoạt
động
MOV CCAPM0,#01000010B ; P1.3 PCA hoạt động ở chế độ PWM 8
bits
MOV CCAPM1,#01000010B ; P1.4
MOV CCAPM2,#01000010B ; P1.5
MOV CCAPM3,#01000010B ; P1.6
MOV CCAPM4,#01000010B ; P1.7
; * Chương trình điều khiển vận tốc động cơ
; từ 0 - max và từ max - 0 trên kênh P1.3
; * Vận tốc động cơ từ 0 - max ứng với
; PWM_COUNT từ 0 - 255 và ngược lại
MOV PWM_COUNT,#0 ; Động cơ dừng
JB BIT_START,$ ; Cho phép động cơ chạy
RUN_UP: ; 0 – max
INC PWM_COUNT
MOV MOTOR1,PWM_COUNT
LCALL DELAY200MS
MOV A, PWM_COUNT
CJNE A,#255,RUN_UP
RUN_DOWN: ; max - 0
DEC PWM_COUNT
MOV MOTOR1,PWM_COUNT
LCALL DELAY200MS
MOV A, PWM_COUNT
CJNE A,#0,RUN_DOWN
JMP RUN_UP
SJMP $
;-------- DELAY 200MS
DELAY200MS:
MOV R2,#2
LOOP200_1:
MOV R0,#200
LOOP200_2:
MOV R1,#250
DJNZ R1,$
DJNZ R0, LOOP200_2
DJNZ R2, LOOP200_1
RET
;--------
END
MOV IE,#8Ah
SETB TR0
SETB TR1
SJMP $
ISR_T0:
CPL P1.1
MOV TL0,#00h
MOV TH0,#0DCh
RETI
ISR_T1:
CPL P1.2
MOV TL1,#0Ah
MOV TH1,#01Ch
RETI
END
ORG 00h
LJMP MAIN
ORG 003h
Setb P1.3
Reti
ORG 013h
CLR P1.3
Reti
ORG 30h
Main:
CLR p1.3
Mov IE,#10000101b
here:sjmp here
END
delay1:
MOV TMOD,#10h
MOV TH1,#HIGH(-5000)
MOV TL1,#LOW(-5000)
SETB TR1
Timer0_isr:
MOV TH0,#(-100)
MOV TL0,#(-100)
RETI
Timer1_isr:
MOV TH1,#HIGH(-5000)
MOV TL1,#LOW(-5000)
RETI
main:
JB P2.1,$
CPL P2.0
SJMP main
JNB P2.2,dung
dung:SETB P2.0
END
MOV P1,#000H
MOV P2,#0FFH
Setb p3.2
Mov IE,#81h
here:JB p2.0,here
JNB p2.2,thao
Sjmp bom
thao:Setb p1.2
JB p2.2, kiemtra
Sjmp thao
Mov R0,#3
kiemtra:DEC R0
CJNE R0,#0,bom
Ljmp stop
bom:CLR p1.2
Setb P1.0
JB P2.1,tron
Sjmp bom
tron:CLR p1.0
Setb p1.1
Acall DELAY
CLR P1.1
Ljmp thao
DELAY:
MOV TMOD,#01h
MOV R1,#200
lap:Mov TH0,#3Ch
Mov TL0,#0B0h
Setb TR0
wait:JNB TF0,wait
CLR TR0
CLR TF0
DJNZ R1,lap
Ret
stop:Mov p1,#000h
END
Password: www.plc.net.ru
Chú ý là trong bản Step7 này đã có cả PLCsim và 1 số tools khác.