You are on page 1of 10

Sau đây là chương trình đơn giản , chớp tắt 1 đèn LED ở port 1.

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

END ; kết thúc chương trình chính


Led sáng từ ngoài vào trong và từ trong ra ngoài
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,#80h
CALL Delay
MOV P1,#40h
CALL Delay
MOV P1,#20h
CALL Delay
MOV P1,#10h
CALL Delay
MOV P1,#08h
CALL Delay
MOV P1,#04h
CALL Delay
MOV P1,#02h
CALL Delay
MOV P1,#01h
CALL Delay
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
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ơ):

ORG 0000H ; Diem nhap sau khi RESET


LJMP MAIN ; Nhay den chuong trinh chinh
ORG 000BH ; Diem nhap vecto ngat Timer 0
LJMP PWM ; Bam xung, Trinh phuc vu ngat Time
...
MOV TMOD,#12H ; Chon Timer0 che do 2 phuc vu PWM
MOV TH0,#196 ; Tao thoi gian tre 255-196+1=60 chu ky may x 1us/chu ky = 60us

SETB ET0 ; Cho phep ngat Timer 0


SETB TR0 ; Khoi dong Timer0
...
;*****CHUONG TRINH DIEU XUNG PWM******
PWM:
MOV NHO_C,C
MOV NHO_A,A
CJNE R0,#31,PWM_TRAI ; Neu R0 khac 31 thi chay PWM_TRAI
MOV R0,#1 ; Neu R0 = 31 thi dat R0 = 1
PWM_TRAI:
CLR C ; Gia tri co C la 0/1, quy dinh dong co chay hay khong
MOV A,VAN_TOC_BANH_TRAI ; Gan A = R1
SUBB A,R0 ; Tru A cho R0, muc dich la kiem tra xem A > hay < R0 de gan gia tri co C 0 hay 1
MOV BANH_TRAI,C ; Tao 1 hay 0 cho DCTrai
PWM_PHAI:
CLR C
MOV A,VAN_TOC_BANH_PHAI
SUBB A,R0
MOV BANH_PHAI,C
THOATPWM:
INC R0 ; Tang bien dem R0: R0=R0+1
MOV C,NHO_C
MOV A,NHO_A
RETI ; Ket thuc chuong trinh ngat
;===============================================
(VAN_TOC_BANH_TRAI,PHAI: được load liên tục từ Main())
From *LBF*

PWM tiếp theo:

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

Dua 2 xung co tan so khac nhau ra cac cong:


ORG 0000H
LJMP MAIN
ORG 000BH
LJMP ISR_T0
ORG 001BH
LJMP ISR_T1
ORG 0030H
MAIN:
MOV TMOD,#02h
MOV TL0,#00h
MOV TH0,#0DCh
MOV TL1,#0Ah
MOV TH1,#01Ch

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

Nháy 1 Led dùng ngắt ngoài 1 kích phát sườn:


ORG 0030H
LJMP MAIN
ORG 013h
SETB P1.3
Mov R3,0FFh
back: DJNZ R3,back
CLR P1.3
Reti
ORG 30h
Main:Setb TCON.2
Mov IE,#84h
here:sjmp here
END

Nháy 1 Led dùng ngắt ngoài mức 1:


ORG 0030H
LJMP MAIN
ORG 013h
SETB P1.3
Mov R3,0FFh
back: DJNZ R3,back
CLR P1.3
Reti
ORG 30h
Main:
Mov IE,#84h
here:sjmp here
END

Dùng 2 ngắt để khởi động và tắt động cơ dùng Relay:

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

Dieu khien dong co:


ORG 0000h
LJMP main
ORG 000Bh
LJMP Timer0_isr
ORG 001Bh
LJMP Timer1_isr
delay:
MOV IE,8Ah
MOV TMOD,#02h
MOV TH0,#(-100)
MOV TL0,#(-100)
SETB TR0

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

ĐK quá trình trộn sơn:


ORG 0000H
LJMP MAIN
ORG 0003h
ngung:Mov p1,#00h
Sjmp ngung
RETI
ORG 0030h
MAIN:

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

S7-300/400: STEP 7 Professional Edition 2006 Service Release 2

Link download tại đây:


http://rapidshare.com/files/44712284/S7PSR2.part01.rar
http://rapidshare.com/files/44942967/S7PSR2.part02.rar
http://rapidshare.com/files/45259459/S7PSR2.part03.rar
http://rapidshare.com/files/45251138/S7PSR2.part04.rar
http://rapidshare.com/files/45267121/S7PSR2.part05.rar
http://rapidshare.com/files/45274623/S7PSR2.part06.rar
http://rapidshare.com/files/45280664/S7PSR2.part07.rar
http://rapidshare.com/files/45286406/S7PSR2.part08.rar
http://rapidshare.com/files/45292561/S7PSR2.part09.rar
http://rapidshare.com/files/45296377/S7PSR2.part10.rar
Or: http://rapidshare.com/users/5LU6KM

Password: www.plc.net.ru
Chú ý là trong bản Step7 này đã có cả PLCsim và 1 số tools khác.

You might also like