Chinh sua boi:
PHAÀN CHÖÔNG
TRÌNH VIEÁT TREÂN
VI XÖÛ LYÙ
Chinh sua boi:
;;;;;;;;;;;;;;;;CHÖÔNG TRÌNH VIEÁT CHO PLC NEÀN;;;;;;;;;;;;;;;;;;
;VIET NGAY 04/11/2000
;CHUONG TRINH CHO PHEP GIAO TIEP VOI BOARD GIAO DIEN VA MAY TINH
;O CHE DO SLAVE VA IO PLC O CHE DO MASTER
;DIEU KHIEN BANG SWITCH CHON MODE HOAT DONG
;*********************************************************
;- Chuong trinh nhan phat du lieu tu port noi tiep
; voi toc do 9600 1 start bit ,1 stop bit,bit thu 9
;- Chuong trinh viet theo kieu ngat.Cu 1S goi 10 byte
; du lieu den Slave , nhan ve 10 byte
;- Byte dau tien la byte dia chi, 8 byte du lieu, byte
; cuoi cung la 0DH
; Neu byte thu 10 khong phai la 0DH thi bao loi
;- Vung dem thu bat dau tu 50H
;- Vung dem phat bat dau tu 60H
;*********************************************************
; CHUONG TRINH CHO MASTER CO DIA CHI 00H
; CHUONG TRINH CHO SLAVER CO DIA CHI 01H
;++++++++++++++++++KHAI BAO CAC BIEN VA HANG++++++++++++++
;*********************************************************
;NGO VAO:lay gia tri tu byte dem thu chep vao IN_ST
;---------------------------------------------------------
IN_ST EQU 22H ;BYTE TRANG THAI NGO VAO
IN1 BIT 10H ;BIT=1:DONG,BIT=0:NGAT
IN2 BIT 11H
IN3 BIT 12H
IN4 BIT 13H
IN5 BIT 14H
IN6 BIT 15H
;*********************************************************
;NGO RA :xuat ra OUT_ST roi chep vao byte dem phat
;---------------------------------------------------------
OUT_ST EQU 23H ;BYTE TRANG THAI NGO RA
OUT1 BIT 18H ;BIT=1:DONG,BIT=0:NGAT
OUT2 BIT 19H
OUT3 BIT 1AH
OUT4 BIT 1BH
LOI BIT 1FH
;**********************************************************
dcMas EQU 00H
dcSle EQU 01H
DCMPLC EQU 02H
DCSPLC EQU 03H
demt EQU 50H
demp EQU 60H
bien1 EQU 5EH
bien2 EQU 5FH
bien3 EQU 5CH
bien4 EQU 5BH ;chua d/c Slave
bien5 EQU 5AH ;chua THOI GIAN CHO
count EQU 10000
chon1 EQU 2
chon2 EQU 1
th EQU 1
;----------------------------------------------
RUN BIT P3.4 ;LED RUN
NAP BIT P3.5 ;LED NAP
PRO_G BIT P3.3 ;CONG TAC NAP CHUONG TRINH
RUN_G BIT P3.2 ;CONG TAC CHAY CHUONG TRINH
TAM1 BIT 00H ;BIT TAM NGO VAO
Chinh sua boi:
TAM2 BIT 01H ;BIT TAM NGO VAO
TAM3 BIT 02H ;BIT TAM DE XUAT NGO RA
CO_1 BIT 03H ;
CO_2 BIT 04H ;
CO_T1 BIT 05H ;
CO_T2 BIT 06H ;
CO_L1 BIT 07H ;
KT BIT 08H ;CO KET THUC (LENH END)
CO_3 BIT 09H ;BIT PHAT HIEN START
CO_X BIT 0AH ;co bao che do quet va che do load
CO_TAM1 BIT 0BH
CO_TAM2 BIT 0CH
TAM4 BIT 0DH
CO_L2 BIT 0EH
CO_S1 BIT 0FH
CO_S2 BIT 20H
;--------------------------------------
FLOAT EQU 3FH ;byte tam
Z EQU 3EH ;BYTE TAM CHUA DIA CHI KHOI
VAR1 EQU 3DH ;BIEN LUU TRU DU LIEU CUA TIMER,COUNTER
VAR2 EQU 3CH ;BIEN XU LY CUA TIMER,COUNTER
VAR3 EQU 3BH ;
DX EQU 3AH ;BIEN DEM TIMER
TEMP EQU 39H
TEMP1 EQU 38H ;LUU DIA CHI KHOI(DPH)
TEMP2 EQU 37H ;LUU DIA CHI KHOI(DPL)
RISE EQU 36H ;chua dung
REPL EQU 35H ;byte tam
BITH EQU 34H ;byte cao cua data pointer dung cho dem bit
BITL EQU 33H ;byte thap cua data pointer dung cho dem bit
LUU_B EQU 32H ;byte luu bit tam
BCAO EQU 31H ;DIA CHI DAU VUNG CHO TIMER,COUNTER
BTHAP EQU 30H
;--------------------------------------------------------------------STEP1
EQU 40H ;luu tru byte tam cua chuong trinh dem bit
STEP2 EQU 41H ;-----------------------------------------
DBITC EQU 42H ;bien tang bit
DMT EQU 43H ;DEM
NEN EQU 44H ;
FIRSTH EQU 45H ;BIEN LUU DIA CHI RAM DAU TIEN CUA DATA PLC
FIRSTL EQU 46H
;--------------------------------------------------------------------
GIAY EQU 47H
PHUT EQU 48H
GIO EQU 49H
THU EQU 4AH
NGAY EQU 4BH
THANG EQU 4CH
NAM EQU 4DH
COMP1 EQU 4EH
COMP2 EQU 4FH
CHU_X EQU 78H
;---------------------------------------------------------
ORG 0000H
LJMP BEGIN
ORG 000BH
LJMP T0ISR
ORG 0023H
LJMP SPISR
ORG 30H
BEGIN:
Chinh sua boi:
;________________________________________________
;DOAN CHUONG TRINH RESET CAC GIA TRI BAN DAU
;********** START *****************************
CLR F0
CLR CO_1
CLR CO_2
CLR CO_L1
CLR CO_L2
CLR CO_T1
CLR CO_T2
CLR KT ;XOA BIT KET THUC
CLR CO_X
CLR P2.5
MOV FIRSTH,#00H
MOV FIRSTL,#00H
MOV DPTR,#0400H
MOV BCAO,DPH
MOV BTHAP,DPL
MOV DPTR,#0100H
MOV BITH,DPH
MOV BITL,DPL
;-------------------------------------
; MOV DPTR,#1E00H ;BYTE 1E00H O RAM NGOAI LUU ANH OUTPUT
MOV IN_ST,#00H
MOV OUT_ST,#00H
MOV R0,#DEMT
MOV DBITC,#0
MOV DX,#0
MOV Z,#50H ;Z CHUA MA TB
;--------------------------
MOV bien1,#0
MOV bien2,#chon1
MOV bien3,#chon2
MOV bien4,#0
MOV bien5,#chon1
;-------------------------
MOV A,87H ;TOC DO 19200
SETB ACC.7
MOV 87H,A
;--------------------------
MOV SCON,#11110000B
MOV TMOD,#21H
MOV TH1,#-3
SETB TR1
SETB IP.1
MOV IE,#92H
SETB TF0
;************ END ******************************
;***********************************************
; DOAN CHUONG TRINH CHINH
; DOAN CHUONG TRINH NAY LUON
; QUET CHOUNG TRINH SAU 1MS
;**************** START ************************
XET:
JNB F0,$
CLR F0
JNB PRO_G,STOP_CT
JNB RUN_G,CHAY_CT
SETB RUN ;DEN SANG O CHE DO LOAD
SETB NAP
Chinh sua boi:
LCALL GT_PRG
MOV IN_ST,#00H
MOV OUT_ST,#00H
MOV DPTR,#1E00H ;RESET LAI ANH OUTPUT
MOV A,#00H
MOVX @DPTR,A
SJMP XET
CHAY_CT:
CLR RUN ;DEN SANG O CHE DO RUN
SETB NAP
LCALL GT_IO
SJMP XET
STOP_CT:
CLR NAP ;DEN SANG CHE DO LOAD
SETB RUN
MOV IN_ST,#00H
MOV OUT_ST,#00H
MOV DPTR,#1E00H ;RESET LAI ANH OUTPUT
MOV A,#00H
MOVX @DPTR,A
SJMP XET
;******************************************************************
;CHUONG TRINH CON GIAO TIEP VOI BOARD GIAO DIEN
; VA MAY TINH,LUC NAY PLC DANG O CHE DO SLAVE
;*******************************************************************
GT_PRG:
JNB CO_1,XETT
CLR CO_1
LCALL ANSWER
SETB SM2
SETB TI
XETT:
JNB CO_2,ZCX
CLR CO_2
ZCX: RET
;**************************************************
;CHUONG TRINH CON GIAO TIEP VOI IO PLC
;**************************************************
GT_IO:
MOV DPTR,#1E00H ;LAY ANH OUTPUT TU RAM
MOVX A,@DPTR
MOV OUT_ST,A
LCALL MAU ;LAY MAU PHAT
LCALL CHO_NHAN ;CHO NHAN DU 3 BYTE
MOV R1,#DEMT
MOV IN_ST,@R1 ;LAY ANH INPUT TU BUFFER RECEIVE
LCALL QUETCT
MOV R1,#DEMP
MOV @R1,OUT_ST ;XUAT ANH OUTPUT VAO BUFFER TRANSMIT
MOV DPTR,#1E00H ;LUU ANH OUTPUT VAO RAM
MOV A,OUT_ST
MOVX @DPTR,A
RET
;****************************************
; Chuong trinh tao ngat 1mS
;**************START*********************
T0ISR: PUSH ACC
MOV CO_T1,C
SETB F0
CLR TR0
Chinh sua boi:
MOV TH0,#HIGH(-count)
MOV TL0,#LOW(-count)
SETB TR0
POP ACC
MOV C,CO_T1
RETI
;***************END***********************
;
;*****************************************
;DOAN CHUONG TRINH CON NGAT CONG NOI TIEP
;************ START **********************
SPISR:
PUSH ACC
MOV CO_T2,C
JNB PRO_G,SPIC
JNB RUN_G,NGAT_S
JNB RI,SPI1
LCALL CTNHANS
SJMP SPIC
SPI1:
LCALL CTRUYENS
SJMP SPIC
NGAT_S:
JNB RI,SPI2
LCALL CTNHANM
SJMP SPIC
SPI2:
LCALL CTRUYENM
SPIC:
POP ACC
MOV C,CO_T2
RETI
;**************END***************************************
;;*******************************************************
; CHUONG TRINH NHAN 10 BYTE,CHE DO SLAVE
;**************START*************************************
CTNHANS:
JNB RI,$
CLR RI
JNB RB8,CNT1S
MOV A,SBUF
CJNE A,#dcSle,CNTCS
CLR SM2
MOV R0,#demt
SJMP CNTCS
CNT1S: MOV A,SBUF
CJNE R0,#demt+8,CNT2S
SETB SM2
CJNE A,#0DH,CNT3S
LCALL ST_START
LCALL KT_END
SETB CO_1
SJMP CNTCS
CNT2S: MOV @R0,A
INC R0
SJMP CNTCS
CNT3S: SETB CO_L1
CNTCS:
RET
;************END**************************************
;------------------------------------------------------
Chinh sua boi:
;CT CON CHEP DU LIEU VUA NHAN DUOC VAO VUNG DEMP
;------------------------------------------------------
ANSWER:
PUSH 00H
PUSH 01H
MOV R1,#DEMP
MOV R0,#DEMT
WRITE:
MOV A,@R0
MOV @R1,A
INC R0
INC R1
CJNE R0,#DEMT+8,WRITE
POP 01H
POP 00H
RET
;*********************************************
; CHUONG TRINH TRUYEN 10 BYTE,CHE DO SLAVE
;**************START**************************
CTRUYENS:
JNB TI,$
CLR TI
mov A,bien1
cjne A,#10,ctrS
mov bien1,#0
sjmp ctrcS
ctrS:
INC bien1
MOV A,bien1
CJNE A,#1,CTR1S
SETB TB8
MOV SBUF,#dcMas
MOV R0,#demp
SJMP CTRCS
CTR1S:
CJNE A,#10,CTR2S
CLR TB8
MOV SBUF,#0DH
SETB CO_2
SJMP CTRCS
CTR2S:
CLR TB8
MOV A,@R0
MOV SBUF,A
INC R0
CTRCS:
RET
;************END*********************************
;************************************************
;CHUONG TRINH CON NHAN CHUOI START
;NEU NHAN DUOC CHUOI START THI KHONG GHI VAO RAM
;NOI MA BAT DAU LAI TU DIA CHI 80H
;************************************************
ST_START:
PUSH 00H
PUSH ACC
MOV R0,#DEMT
MOV A,@R0
CJNE A,#53H,QQQ
INC R0
MOV A,@R0
Chinh sua boi:
CJNE A,#74H,QQQ
INC R0
MOV A,@R0
CJNE A,#61H,QQQ
INC R0
MOV A,@R0
CJNE A,#72H,QQQ
INC R0
MOV A,@R0
CJNE A,#74H,QQQ
SETB CO_3
QQQ:
JB CO_3,MMM ;CO_3=1 KHI START
MOV R0,#DEMT
MOV DPH,FIRSTH ;LAY DIA CHI TRONG RAM
MOV DPL,FIRSTL ;---------------------
UUU: MOV A,@R0 ;LAY DATA TU VUNG DEM THU
MOVX @DPTR,A ;GHI VAO RAM 8K
NOP
INC R0
INC DPTR
CJNE R0,#DEMT+8,UUU
MOV FIRSTH,DPH ;LUU DIA CHI TRONG RAM
MOV FIRSTL,DPL ;---------------------
SJMP QQC
MMM: MOV FIRSTH,#00H ;DAT LAI VUNG NHO DAU
MOV FIRSTL,#00H
CLR CO_3
QQC: POP ACC
POP 00H
RET
Chinh sua boi:
;*************************************************
;CHUONG TRINH CON KIEM TRA CHUOI END(MA LA FCH)
;*************************************************
KT_END:
PUSH ACC
push 00H
MOV R0,#DEMT
MOV A,@R0
CJNE A,#45H,KKK
INC R0
MOV A,@R0
CJNE A,#4EH,KKK
INC R0
MOV A,@R0
CJNE A,#44H,KKK
SETB CO_X
SETB TI
MOV 60H,#00H ;RESET LAI DIA CHI DAU VUNG DEM PHAT
SETB RUN ;DEN SANG MAU VANG
SETB NAP
KKK: POP 00H
POP ACC
RET
;******************************************
; CHUONG TRINH NHAN 3 BYTE,CHE DO MASTER
;**************START***********************
CTNHANM:
JNB RI,$
CLR RI
JNB RB8,CNT1
MOV A,SBUF
CJNE A,#DCMPLC,CNTC
CLR SM2
MOV R0,#demt
SJMP CNTC
CNT1: MOV A,SBUF
CJNE R0,#demt+1,CNT2
SETB SM2
CJNE A,#0DH,CNT3
SETB CO_1
SJMP CNTC
CNT2: MOV @R0,A
INC R0
SJMP CNTC
CNT3: SETB CO_L1
CNTC:
RET
;************END************************
;*************************************************
; CHUONG TRINH TRUYEN 1 BYTE,CHE DO MASTER
;**************START****************************
CTRUYENM:
JNB TI,$
CLR TI
mov A,bien1
cjne A,#3,ctr3
mov bien1,#0
sjmp ctrc
ctr3:
INC bien1
MOV A,bien1
Chinh sua boi:
CJNE A,#1,CTR1
SETB TB8
MOV SBUF,#DCSPLC
MOV R0,#demp
SJMP CTRC
CTR1:
CJNE A,#3,CTR2
CLR TB8
MOV SBUF,#0DH
SETB CO_2
SJMP CTRC
CTR2:
CLR TB8
MOV A,@R0
MOV SBUF,A
INC R0
CTRC:
RET
;************END************************
;*****************************************
; CHUONG TRINH TAO MAU 1S
;****************START********************
MAU:
DJNZ bien2,MAUC
MOV bien2,#chon1
DJNZ bien3,MAUC
MOV bien3,#chon2
INC bien4
MOV A,bien4
CJNE A,#th+1,MAU1
MOV bien4,#1
MAU1:
SETB SM2
SETB TI
MAUC:
RET
;*****************END***************************
;***********************************************
; CHUONG TRINH CHO NHAN DU LIEU
;*****************START*************************
CHO_NHAN:
JNB CO_2,CANC
JNB CO_1,CAN1
CLR CO_1
CLR CO_2
MOV bien5,#chon1
SJMP CANC
CAN1:
DJNZ bien5,CANC
CLR CO_2
SETB CO_L1
CANC: RET
;*******************END****************************
;**********************************************
;CHUONG TRINH CON QUET CHUONG TRINH TRONG RAM
;NGOAI VOI DIA CHI BAT DAU LA 0000H
;**********************************************
QUETCT:
MOV DBITC,#0
MOV DX,#0
MOV Z,#50H ;Z CHUA MA TB
Chinh sua boi:
XRL OUT_ST,#00H
MOV TEMP1,#00H
MOV TEMP2,#00H
MOV DPTR,#0000H ;X CHUA DIA CHI HIEN TAI
QUET_LAI:
MOVX A,@DPTR
CJNE A,Z,BLOI
INC Z
INC DPTR
LCALL DE_CODE
JNB KT,QUET_LAI
CLR LOI
CLR KT
MOV DX,#0
SJMP RA
BLOI: SETB LOI
RA: RET
;*******************************************
;CHUONG TRINH CON NHAN DANG MA LENH
;ma lenh chuong trinh tu F0-->FC
;*******************************************
DE_CODE:
MOVX A,@DPTR
CJNE A,#0F0H,LAM2
LCALL COM_AND
SJMP DONE
LAM2:CJNE A,#0F1H,LAM3
LCALL COM_OR
SJMP DONE
LAM3:CJNE A,#0F2H,LAM4
LCALL COM_NAND
SJMP DONE
LAM4:CJNE A,#0F3H,LAM5
LCALL COM_NOR
SJMP DONE
LAM5:CJNE A,#0F4H,LAM6
LCALL COM_NOT
SJMP DONE
LAM6:CJNE A,#0F5H,LAM7
LCALL COM_SR
SJMP DONE
LAM7:CJNE A,#0F6H,LAM8
LCALL COM_ON
SJMP DONE
LAM8:CJNE A,#0F7H,LAM9
LCALL COM_OFF
SJMP DONE
LAM9:CJNE A,#0F8H,LAM10
LCALL COM_PULSE
SJMP DONE
LAM10:CJNE A,#0F9H,LAM11
LCALL COM_RET
SJMP DONE
LAM11:CJNE A,#0FAH,LAM12
LCALL COM_COUNT
SJMP DONE
LAM12:CJNE A,#0FBH,LAM13
LCALL COM_MOV
SJMP DONE
LAM13:CJNE A,#0FDH,LAM14
LCALL CLOCK_ON
Chinh sua boi:
SJMP DONE
LAM14:CJNE A,#0FEH,LAM15
LCALL CLOCK_OFF
SJMP DONE
LAM15:CJNE A,#0FFH,LAM16
LCALL CLOCK_SET
SJMP DONE
LAM16:CJNE A,#0D0H,LAM17
LCALL MOV_EXT
SJMP DONE
LAM17: CJNE A,#0FCH,DONE
SETB KT
DONE: RET
;*******************************************
;chuong trinh con lenh OR
;*******************************************
COM_OR:
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,NIP5
CLR TAM1
SJMP FR1
NIP5: LCALL GOI_MA
MOV TAM1,C
FR1: INC DPTR
MOVX A,@DPTR
CJNE A,#78H,NIP6
CLR TAM2
SJMP FR2
NIP6: LCALL GOI_MA
MOV TAM2,C
FR2: INC DPTR
MOVX A,@DPTR
CJNE A,#78H,NIP7
CLR C
SJMP FR3
NIP7: LCALL GOI_MA
FR3: ORL C,TAM1
ORL C,TAM2
MOV TAM3,C
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,NIP8
LCALL XUAT_TB
SJMP QUIT1
NIP8: LCALL OUTPUT
QUIT1:INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;*******************************************
;CHUONG TRINH CON LENH AND
;*******************************************
COM_AND:
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,NIP1
SETB TAM1
SJMP FOR1
NIP1:LCALL GOI_MA
MOV TAM1,C
Chinh sua boi:
FOR1: INC DPTR
MOVX A,@DPTR
CJNE A,#78H,NIP2
SETB TAM2
SJMP FOR2
NIP2: LCALL GOI_MA
MOV TAM2,C
FOR2: INC DPTR
MOVX A,@DPTR
CJNE A,#78H,NIP3
SETB C
SJMP FOR3
NIP3: LCALL GOI_MA
FOR3: ANL C,TAM1
ANL C,TAM2
MOV TAM3,C
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,NIP4
LCALL XUAT_TB
SJMP QUIT
NIP4: LCALL OUTPUT
QUIT: INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;********************************************
;CHUONG TRINH CON LENH NAND
;********************************************
COM_NAND:
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,SKP1
SETB TAM1
SJMP FUR1
SKP1: LCALL GOI_MA
MOV TAM1,C
FUR1: INC DPTR
MOVX A,@DPTR
CJNE A,#78H,SKP2
SETB TAM2
SJMP FUR2
SKP2: LCALL GOI_MA
MOV TAM2,C
FUR2: INC DPTR
MOVX A,@DPTR
CJNE A,#78H,SKP3
SETB C
SJMP FUR3
SKP3: LCALL GOI_MA
FUR3: ANL C,TAM1
ANL C,TAM2
CPL C
MOV TAM3,C
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,SKP4
LCALL XUAT_TB
SJMP QUITT
SKP4: LCALL OUTPUT
QUITT: INC DPTR
Chinh sua boi:
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;********************************************
;CHUONG TRINH CON LENH NOR
;*********************************************
COM_NOR:
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,SKP5
CLR TAM1
SJMP FRR1
SKP5: LCALL GOI_MA
MOV TAM1,C
FRR1: INC DPTR
MOVX A,@DPTR
CJNE A,#78H,SKP6
CLR TAM2
SJMP FRR2
SKP6: LCALL GOI_MA
MOV TAM2,C
FRR2: INC DPTR
MOVX A,@DPTR
CJNE A,#78H,SKP7
CLR C
SJMP FRR3
SKP7: LCALL GOI_MA
FRR3: ORL C,TAM1
ORL C,TAM2
CPL C
MOV TAM3,C
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,SKP8
LCALL XUAT_TB
SJMP QUITT1
SKP8: LCALL OUTPUT
QUITT1: INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;****************************************************
;CHUONG TRINH CON ON DELAY
;byte du lieu co the lay tu M1-->M16(70H--->7FH)
;hoac co the lay truc tiep tu #00-->#99
;VAR1:byte dem chua gia tri dat cua on_delay timer
;VAR2,VAR3:byte dem co danh cho on_delay
;****************************************************
COM_ON:
inc DX ;dem timer
lcall DEMTR
INC DPTR ;DOC NGO VAO
MOVX A,@DPTR
LCALL GOI_MA
MOV TAM1,C
INC DPTR ;DOC BYTE DU LIEU
MOVX A,@DPTR
CJNE A,#100,ABB
ABB: JNC SS
MOV VAR1,A
SJMP DEN
Chinh sua boi:
SS: PUSH 01H
MOV R1,A
MOV VAR1,@R1
POP 01H
DEN: JNB TAM1,NHAY1
MOV R2,VAR2
INC R2
CJNE R2,#100,NHAY2
MOV VAR2,#0
lcall trave
MOV A,VAR3
INC A
CJNE A,VAR1,NHAY3
MOV VAR3,#0
lcall trave
SETB TAM3
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,HA
LCALL XUAT_TB
SJMP TANG
HA: LCALL OUTPUT
SJMP TANG
NHAY1: MOV VAR2,#0
MOV VAR3,#0
lcall trave
CLR TAM3
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,HA1
LCALL XUAT_TB
SJMP TANG
HA1: LCALL OUTPUT
SJMP TANG
NHAY2:
MOV VAR2,R2
lcall trave
INC DPTR
SJMP TANG
NHAY3:
MOV VAR3,A
lcall trave
INC DPTR
TANG:
INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;***********************************************************
;CHUONG TRINH CON OFF_DELAY
;byte du lieu co the lay tu M1-->M16(70H--->7FH)
;hoac co the lay truc tiep tu #00-->#99
;VAR1:byte dem chua gia tri dat cua OFF_delay timer
;VAR2,VAR3:byte dem co danh cho OFF_delay
;**********************************************************
COM_OFF:
INC DX
lcall demtr
INC DPTR
MOVX A,@DPTR
LCALL GOI_MA
Chinh sua boi:
MOV TAM1,C
INC DPTR
MOVX A,@DPTR
CJNE A,#100,ABC
ABC: JNC SAS
MOV VAR1,A
SJMP TIEPP
SAS: PUSH 01H
MOV R1,A
MOV VAR1,@R1
POP 01H
TIEPP: JB TAM1,NHAY4
MOV R2,VAR2
INC R2
CJNE R2,#100,NHAY5
MOV VAR2,#0
LCALL TRAVE
MOV A,VAR3
INC A
CJNE A,VAR1,NHAY6
MOV VAR3,#0
CLR TAM3
lcall trave
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,HAN
LCALL XUAT_TB
SJMP TANG1
HAN: LCALL OUTPUT
SJMP TANG1
NHAY4:
MOV VAR2,#0
MOV VAR3,#0
LCALL TRAVE
SETB TAM3
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,HAN1
LCALL XUAT_TB
SJMP TANG1
HAN1: LCALL OUTPUT
SJMP TANG1
NHAY5:
MOV VAR2,R2
LCALL TRAVE
INC DPTR
SJMP TANG1
NHAY6:
MOV VAR3,A
LCALL TRAVE
INC DPTR
TANG1:
INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;******************************************************
;CHUONG TRINH CON PULSE_DELAY
;:bit phat hien canh len cua pulse_delay
;:bit trang thai cua pulse_delay
;******************************************************
Chinh sua boi:
COM_PULSE:
INC DPTR
MOVX A,@DPTR
LCALL GOI_MA
MOV TAM1,C
INC DPTR
MOVX A,@DPTR
LCALL GOI_MA
MOV TAM2,C
JB TAM2,RSET
INC DBITC
LCALL NHAN_BIT
JNB TAM1,LUU1
JB TAM4,KXET
MOV C,TAM1
MOV TAM4,C
LCALL TRA_BIT
INC DBITC
LCALL NHAN_BIT
CPL TAM4
LCALL TRA_BIT
MOV C,TAM4
MOV TAM3,C
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,OUTTO
LCALL XUAT_TB
SJMP TOUT
OUTTO:
LCALL OUTPUT
SJMP TOUT
RSET: INC DBITC
INC DBITC
CLR TAM3
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,EXT
LCALL XUAT_TB
SJMP TOUT
EXT: LCALL OUTPUT
SJMP TOUT
LUU1: MOV C,TAM1
MOV TAM4,C
LCALL TRA_BIT
INC DBITC
INC DPTR
SJMP TOUT
KXET: INC DBITC
INC DPTR
TOUT:
INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;****************************************************************
;CHUONG TRINH CON RETTENTIVE ON _DELAY
;VAR1:byte dem chua gia tri dat cua on_delay timer
;VAR1,VAR2:byte dem co danh cho on_delay
;bit phat hien canh len
;bit phat hien dem xong chua;0:CHUA XONG,1:XONG ROI
;*****************************************************************
Chinh sua boi:
COM_RET:
INC DX
LCALL DEMTR
INC DPTR
MOVX A,@DPTR
LCALL GOI_MA
MOV TAM1,C
INC DPTR
MOVX A,@DPTR
LCALL GOI_MA
MOV TAM2,C
INC DPTR
MOVX A,@DPTR
CJNE A,#100,FBI
FBI: JNC GMC
MOV VAR1,A
SJMP CHINH
GMC: PUSH 01H
MOV R1,A
MOV VAR1,@R1
POP 01H
CHINH:
JB TAM2,RESET2
INC DBITC
LCALL NHAN_BIT
JB TAM4,DEML ;BIT=1:DEM CHUA XONG;BIT=0:DEM XONG
INC DBITC
LCALL NHAN_BIT
JNB TAM1,LUU2
JB TAM4,BQUA
MOV C,TAM1
MOV TAM4,C
LCALL TRA_BIT
DEC DBITC
SETB TAM4
LCALL TRA_BIT
DEML: MOV R2,VAR2
INC R2
CJNE R2,#100,NHAY7
MOV VAR2,#0
LCALL TRAVE
MOV A,VAR3
INC A
CJNE A,VAR1,NHAY8
MOV VAR3,#0
LCALL TRAVE
CLR TAM4 ;DA DEM XONG
LCALL TRA_BIT
INC DBITC
SETB TAM3
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,OUTTO1
LCALL XUAT_TB
SJMP NDD
OUTTO1:LCALL OUTPUT
SJMP NDD
NHAY7:INC DBITC
MOV VAR2,R2
LCALL TRAVE
INC DPTR
Chinh sua boi:
SJMP NDD
NHAY8:INC DBITC
MOV VAR3,A
LCALL TRAVE
INC DPTR
SJMP NDD
RESET2:INC DBITC
INC DBITC
MOV VAR2,#0
MOV VAR3,#0
LCALL TRAVE
CLR TAM3
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,OUTTO2
LCALL XUAT_TB
SJMP NDD
OUTTO2:LCALL OUTPUT
SJMP NDD
LUU2: MOV C,TAM1
MOV TAM4,C
LCALL TRA_BIT
INC DPTR
SJMP NDD
BQUA: INC DPTR
NDD:
INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;*********************************************************
;CHUONG TRINH CON COUNTER
;byte du lieu co the lay tu M1-->M16(70H--->7FH)
;hoac co the lay truc tiep tu #00-->#99
;VAR1:byte dem chua gia tri dat cua COUNTER
;VAR2:byte dem co danh cho COUNTER
;TAM4:bit phat hien canh len cua counter
;****************************************************
COM_COUNT:
INC DX
LCALL DEMTR
INC DPTR
MOVX A,@DPTR
LCALL GOI_MA
MOV TAM1,C
INC DPTR
MOVX A,@DPTR
LCALL GOI_MA
MOV TAM2,C
INC DPTR
MOVX A,@DPTR
CJNE A,#100,ABD
ABD: JNC SS2
MOV VAR1,A
SJMP JUMP
SS2: PUSH 01H
MOV R1,A
MOV VAR1,@R1
POP 01H
JUMP: JB TAM2,RESET3
INC DBITC
Chinh sua boi:
LCALL NHAN_BIT
JNB TAM1,LUU3
JB TAM4,SBC
MOV C,TAM1
MOV TAM4,C
LCALL TRA_BIT
MOV A,VAR2
INC A
CJNE A,VAR1,LUU4
SETB TAM3
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,EXT1
LCALL XUAT_TB
SJMP NDE
EXT1: LCALL OUTPUT
SJMP NDE
LUU3: MOV C,TAM1
MOV TAM4,C
LCALL TRA_BIT
INC DPTR
SJMP NDE
LUU4: MOV VAR2,A
LCALL TRAVE
INC DPTR
SJMP NDE
RESET3: MOV VAR2,#0
LCALL TRAVE
CLR TAM3
INC DPTR
INC DBITC
MOVX A,@DPTR
CJNE A,#78H,SAD
LCALL XUAT_TB
SJMP NDE
SAD: LCALL OUTPUT
SJMP NDE
SBC: INC DPTR
NDE: INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;*********************************************************
;CHUONG TRINH CON SR_DELAY
;*********************************************************
COM_SR:
INC DPTR
MOVX A,@DPTR
LCALL GOI_MA
MOV TAM1,C
INC DPTR
MOVX A,@DPTR
LCALL GOI_MA
MOV TAM2,C
JB TAM1,SET1
JNB TAM2,FILL
CLR TAM3
SJMP FILL
SET1: JNB TAM2,SET2
CLR TAM3
SJMP FILL
Chinh sua boi:
SET2: SETB TAM3
FILL: INC DPTR
MOVX A,@DPTR
CJNE A,#78H,EXT3
LCALL XUAT_TB
SJMP QUZ
EXT3: LCALL OUTPUT
QUZ:
INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;**************************************************
;CHUONG TRINH CON LENH NOT
;**************************************************
COM_NOT:
INC DPTR
MOVX A,@DPTR
LCALL GOI_MA
CPL C
MOV TAM3,C
INC DPTR
MOVX A,@DPTR
CJNE A,#78H,TT
LCALL XUAT_TB
SJMP SDC
TT: LCALL OUTPUT
SDC: INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;*************************************************
;CHUONG TRINH CON LENH MOV
;VAR1:BYTE TAM DE LUU
;*************************************************
COM_MOV :
INC DPTR
MOVX A,@DPTR
CJNE A,#100,SVS
SVS: JNC LONHON
PUSH ACC
INC DPTR
MOVX A,@DPTR
MOV R1,A
POP ACC
MOV @R1,A
SJMP FKC
LONHON:
MOV R1,A
MOV A,@R1
MOV VAR1,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV A,VAR1
MOV @R1,A
FKC: INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;++++++++++++++++++++++++++++++++++++++++++++
Chinh sua boi:
;CHUONG TRINH CON CHEP KHOI DU LIEU THOI GIAN
;++++++++++++++++++++++++++++++++++++++++++++
COPY_TIME:
PUSH ACC
MOV R1,#GIAY
TIMB: MOVX A,@DPTR
MOV @R1,A
INC DPTR
INC R1
CJNE R1,#GIAY+7,TIMB
POP ACC
RET
;******************************************************
;chuong trinh con lenh CLOCK ON
;******************************************************
CLOCK_ON:
INC DPTR
ACALL COPY_TIME
PUSH DPH
PUSH DPL
MOV A,GIAY
CJNE A,#CHU_X,TIM1 ;TEST GIAY TU CHUONG TRINH
SJMP FAIL ;NEU LA X THI KHONG LAM GI CA
TIM1: MOV DPTR,#1FF9H ;DOC GIAY TU REAL TIME
MOVX A,@DPTR
CJNE A,GIAY,FAIL ;SO SANH GIAY
MOV A,PHUT
CJNE A,#CHU_X,TIM2 ;NEU PHUT LA X THI
SJMP DONG_RL ;DONG THOI DIEM GIAY
TIM2: MOV DPTR,#1FFAH
MOVX A,@DPTR
CJNE A,PHUT,FAIL
MOV A,GIO
CJNE A,#CHU_X,TIM3
SJMP DONG_RL
TIM3: MOV DPTR,#1FFBH
MOVX A,@DPTR
CJNE A,GIO,FAIL
MOV A,THU
CJNE A,#CHU_X,TIM4
SJMP DONG_RL
TIM4: MOV DPTR,#1FFCH
MOVX A,@DPTR
CJNE A,THU,FAIL
MOV A,NGAY
CJNE A,#CHU_X,TIM5
SJMP DONG_RL
TIM5: MOV DPTR,#1FFDH
MOVX A,@DPTR
CJNE A,NGAY,FAIL
MOV A,THANG
CJNE A,#CHU_X,TIM6
SJMP DONG_RL
TIM6: MOV DPTR,#1FFEH
MOVX A,@DPTR
CJNE A,THANG,FAIL
MOV A,NAM
CJNE A,#CHU_X,TIM7
SJMP DONG_RL
TIM7: MOV DPTR,#1FFFH
MOVX A,@DPTR
Chinh sua boi:
CJNE A,NAM,FAIL
DONG_RL:
SETB TAM3
POP DPL
POP DPH
MOVX A,@DPTR
CJNE A,#78H,QWS
LCALL XUAT_TB
SJMP CLOC
QWS: LCALL OUTPUT
SJMP CLOC
FAIL: POP DPL
POP DPH
CLOC: INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;*************************************************************
;CHUONG TRINH CON CLOCK OFF
;*************************************************************
CLOCK_OFF:
INC DPTR
LCALL COPY_TIME
PUSH DPH
PUSH DPL
MOV A,GIAY
CJNE A,#CHU_X,TIM8
SJMP FAIL1
TIM8: MOV DPTR,#1FF9H
MOVX A,@DPTR
CJNE A,GIAY,FAIL1
MOV A,PHUT
CJNE A,#CHU_X,TIM9
SJMP NGAT_RL
TIM9: MOV DPTR,#1FFAH
MOVX A,@DPTR
CJNE A,PHUT,FAIL1
MOV A,GIO
CJNE A,#CHU_X,TIM10
SJMP NGAT_RL
TIM10: MOV DPTR,#1FFBH
MOVX A,@DPTR
CJNE A,GIO,FAIL1
MOV A,THU
CJNE A,#CHU_X,TIM11
SJMP NGAT_RL
TIM11: MOV DPTR,#1FFCH
MOVX A,@DPTR
CJNE A,THU,FAIL1
MOV A,NGAY
CJNE A,#CHU_X,TIM12
SJMP NGAT_RL
TIM12: MOV DPTR,#1FFDH
MOVX A,@DPTR
CJNE A,NGAY,FAIL1
MOV A,THANG
CJNE A,#CHU_X,TIM13
SJMP NGAT_RL
TIM13: MOV DPTR,#1FFEH
MOVX A,@DPTR
CJNE A,THANG,FAIL1
Chinh sua boi:
MOV A,NAM
CJNE A,#CHU_X,TIM14
SJMP NGAT_RL
TIM14: MOV DPTR,#1FFFH
MOVX A,@DPTR
CJNE A,NAM,FAIL1
NGAT_RL:
CLR TAM3
POP DPL
POP DPH
MOVX A,@DPTR
CJNE A,#78H,QWSF
LCALL XUAT_TB
SJMP CLOCF
QWSF: LCALL OUTPUT
SJMP CLOCF
FAIL1:POP DPL
POP DPH
CLOCF:INC DPTR
MOV TEMP1,DPH
MOV TEMP2,DPL
RET
;******************************************************
;CHUONG TRINH CON LENH CLOCK SET
;******************************************************
CLOCK_SET:
INC DPTR
LCALL COPY_TIME ;CHEP DU LIEU
PUSH DPH
PUSH DPL
MOV IE,#00H ;CAM CAC NGAT
MOV DPTR,#1FF8H ;CHO PHEP CAI DAT
MOV A,#10000000B
MOVX @DPTR,A
MOV DPTR,#1FF9H
MOV A,GIAY ;CAI DAT GIAY
MOVX @DPTR,A
NOP
MOV DPTR,#1FFAH
MOV A,PHUT ;CAI DAT PHUT
MOVX @DPTR,A
NOP
MOV DPTR,#1FFBH
MOV A,GIO ;CAI DAT GIO
MOVX @DPTR,A
NOP
MOV DPTR,#1FFCH ; CAI DAT THU
MOV A,THU
MOVX @DPTR,A
NOP
MOV DPTR,#1FFDH
MOV A,NGAY ;CAI DAT NGAY
MOVX @DPTR,A
NOP
MOV DPTR,#1FFEH
MOV A,THANG ;CAI DAT THANG
MOVX @DPTR,A
NOP
MOV DPTR,#1FFFH
MOV A,NAM ;CAI DAT NAM
MOVX @DPTR,A