Tải bản đầy đủ (.doc) (27 trang)

chương 6 giải thuật và chương trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (66.39 KB, 27 trang )

CHệễNG VI.

GIAI THUAT VAỉ CHệễNG TRèNH
I.GIAI THUAT
1.Giai Thuaọt Chửụng Trỡnh Chớnh
START
N

FUN?
Y
PHUC HOI THONG SO

ACALL CHUONG TRINH PHIM

DO VA HIEN THI NHIET

MODE?

N

Y
DIEU KHIEN PID

HIEN THI NHIET DO DO

END

DIEU KHIEN ON_OFF


2.Giaỷi Thuaọt Baứn Phớm


START

N
FUN?
Y
ACALL KHI
N
ENTER
Y
ACALL KHP
N
ENTER
Y
ACALL KHD
N
ENTER
Y
THOAT


3.Giaûi Thuaät TaÊng Gæam
START

N
TANG
Y
TANG THONG SO

LUU THONG SO
HIEN THI


N
GIAM
Y
GIAM THONG SO

LUU THONG SO
HIEN THI
N
ENTER
Y
THOAT


3.Giaỷi Thuaọt ẹieu Khieồn On_Off
START

TINH En

N
En>ON
Y
DONG NGUON

En<0
Y
NGAT NGUON

GIU NGUYEN


THOAT

N


4.Giaỷi Thuaọt ẹieu Khieồn PID
START
TINH En
HKP=KP*En
TAM=KI*Ts
TAM=TAM/10
INTG=INTG+(En+E n+1)

INTG=INTG/100
KHI=INTG*TAM

KHD=KD*(En-En-1)/Ts

Un=KHI+KHD+KP

En-1:=En

THOAT


II.CHÖÔNG TRÌNH
;********************
;hang vaø bien trong
;********************
FUN

BIT
UP
BIT
DOWN
BIT
ENTER
BIT
MODE
BIT
CONTROL BIT
CHAR
EQU
INT
EQU
PPHAP
DS
ON
DS
OFF
DS
TS
DS
X20
DS
TIM0
DS
TIM1
DS
DEM
DS

KP
DS
KI
DS
KD
DS
KHI
DS
KHP
DS
KHD
DS
SAISO
DS
TONG
DS
INTG
DS
DMEROM DS
DMEROM1 DS
Un
DS
En
DS

P1.0
P1.1
P1.2
P1.3
P1.4

P3.2
2
1
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
CHAR
INT
INT
INT
INT
INT
INT
INT
INT
INT
INT
INT
INT
INT


TDAT
TAM

DS

DS

INT
INT

;***********************
; chuong trinh chinh
;***********************
MAIN:
JB
FUN, $
LCALL
KHOIDONG
LCALL
PHUCHOI
LCALL
DONHIET
LCALL
HTNHIET
JB
MODE,MODE2
LCALL
DKPID
SJMP
NETX
MODE2:
LCALL
ON_OFF
NETX:
LCALL

HTNHIET
;**************************
;chuong trinh con khoi dong
;**************************
KHOIDONG: MOV
DPTR,#6000H
MOV
A,#A0H
MOVX @DPTR,A
MOV
IE,#1010101B
MOV
IP,#20H
;chophep T2 uu tien hon
CLR
TR0
CLR
TR1
CLR
TR2
MOV
TH0,HIGH(-196)
MOV
TL0,LOW(-196)
MOV
TH1,HIGH(-50000)
MOV
TL1,LOW(-50000)
MOV
TH2,HIGH(-50000)

MOV
TL2,LOW(-50000)
MOV
KE,#0
MOV
PPHAP,#0


MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SETB
SETB
SETB

BDK,#0
TDAT1,#1
TDAT,#00
TS,#20
KP,#3
KP1,#0
KI,#4
KI1,#0

KD1,#1
KD,#00
TR2
TR1
TR0

RET
;**********************
;chuong trinh do nhiet
;**********************
DONHIET: MOV
DPTR,#0000H
MOV
R1,#100
DJNZ
R1,$
MOVX
A,@DPTR
MOV
TDO,A
MOV
TDO1,#00
RET
;********************************
;chuong trinh hien thi nhiet do do
;********************************
HTNHIET:
MOV
DEM,#150
MOV

R7,TDO1
MOV
R6,TDO
LCALL
BINTOBCD
PUSH
ACC
MOV
A,R6
ANL
A,#0FH
ORL
A,#00H
MOV
DPTR,#4000H


LAPTDO:

MOVX
MOV
SWAP
ANL
ORL
MOV
MOVX
MOV
ANL
ORL
MOV

MOVX
MOV
SWAP
ANL
ORL
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
LCALL
DJNZ
RET

@DPTR,A
A,R6
A
A,#0FH
A,#10H
DPTR,#4000H
@DPTR,A
A,R7
A,#0FH
A,#20H
DPTR,#4000H
@DPTR,A
A,R7

A
A,#0FH
A,#30H
DPTR,#4000H
@DPTR,A
DPTR,#4000H
A,#41H
@DPTR,A
DPTR,#4000H
A,#5AH
@DPTR,A
QUETPHIM
DEM,LAPTDO

;***************************************
;chuong trinh dieu khien ON_OFF
;***************************************
ON_OFF: CLR
TR0
CLR
TR1
MOV
R7,TDAT
MOV
R6,TDAT1
MOV
R5,ON
MOV
R4,#0
LCALL

ISUB


MOV
R5,TDO
MOV
R4,TDO1
LCALL
SOSANH
JNC
LONHON
SJMP
THOAT
LONHON: MOV
R7,TDAT
MOV
R6,TDAT1
MOV
R5,OFF
MOV
R4,#0
LCALL
IADD
MOV
R5,TDO
MOV
R4,TDO1
LCALL
SOSANH1
JNC

THOAT
CLR
CONTROL
THOAT:
RET
;****************************************************
;Chương trình hiệu chỉnh PID theo phương pháp Ziegler Nichol
;Vào :Tdo,Tdat,Kp,I,D,Ts.
;Ra :Un 8bit
;tính sai số với En+1 bit cao En bit thấp
;****************************************************
DKPID:
MOV
R6,#TDAT1
;R6 chua bit cao nhiet do dat
MOV
R7,#TDAT
;R7 chua bit thap nhiet do dat
MOV
R4,#TDO1
;R4 chua bit cao nhiet do do
MOV
R5,#TDO
;R5 chua bit thap nhiet do do
LCALL ISUB
MOV
En1,R6
; bit cao sai so
MOV
En,R7

; bit thap sai so
;*********************************************
;Tính khâu P :KHP=Kp*[En1_En]
;*********************************************
KHAUP:
MOV
A,En1
JB
ACC.7,AM
MOV
R5,KP
;R5 chua bit thap Kp
MOV
R4,KP1
;R4 chua bit cao Kp
MOV
R7,En


AM:

OUTP:

MOV
LCALL
SJMP
MOV
MOV
MOV
MOV

LCALL
MOV
MOV
LCALL
MOV
MOV
MOV
MOV
MOV
MOV
LCALL
MOV
MOV

R6,En1
IMUL
OUTP
R6,#0
R7,#0
R4,En1
R5,En
ISUB
R4,KP1
R5,KP
IMUL
A,R6
R4,A
A,R7
R5,A
R6,#0

R7,#0
ISUB
KHP,R7
KHP1,R6

;************************************************
;Tính khaâu D :KHD=(D/Ts)*([En1_En]-[En11_En1])
;************************************************
KHAUD:
MOV
A,KD
; chuyen bit thap KD vao A
MOV
R1,KD1
; chuyen bit cao KD vao R1
MOV
B,Ts
;tinh bieu thuc D/Ts
LCALL DIV16_8
MOV
TAM,A
; TAM la bien trung gian de tinh toan
MOV
TAM1,R1 ;TAM= D/Ts
MOV
R7,En
MOV
R6,En1
MOV
R4,En11

MOV
R5,En1
LCALL ISUB
; tinh sai so
MOV
SAISO,R7 ; lua gia tri sai so
MOV
SAISO1,R6
MOV
A,R6


AMD:

OUTD:

JB
MOV
MOV
LCALL
SJMP
MOV
MOV
MOV
MOV
LCALL
MOV
MOV
LCALL
MOV

MOV
MOV
MOV
MOV
MOV
LCALL
MOV
MOV

ACC.7,AMD
R4,TAM1
R5,TAM
IMUL
OUTD
R4,SAISO1
R5,SAISO
R6,#0
R7,#0
ISUB
R4,TAM1
R5,TAM
IMUL
A,R7
R5,A
A,R6
R4,A
R6,#0
R7,#0
ISUB
KHD,R7

KHD1,R6

;*****************************************************
;Tính khâu I : KHI=I*Ts*(En+2En1+2En2+…+2E1)
;Thuật toán được viết lại như sau:
;TAM=I*Ts
;TONG=En+En1 E0=0
;INTG=INTG+TONG CHIA 10
;KHI=TAM*INTG CHIA 100
;******************************************************
KHAUI:
MOV
R7,KI
;tinh KI*Ts
MOV
R6,KI1
MOV
R4,#0
MOV
R5,Ts
LCALL IMUL
MOV
TAM,R7
;tinh tong
MOV
TAM1,R6


AMI:


MOV
MOV
MOV
MOV
LCALL
MOV
MOV
MOV
MOV
LCALL
MOV
MOV
MOV
JB
MOV
MOV
MOV
MOV
LCALL
MOV
MOV
MOV
MOV
MOV
LCALL
MOV
MOV
MOV
MOV
LCALL

MOV
LCALL
MOV
MOV
SJMP
MOV
MOV
MOV

R7,En
R6,En1
R5,En11
R4,En111
IADD
TONG,R7
TONG1,R6
R5,INTG
R4,INTG1
IADD
INTG,R7
;INTG=INTG+TONG
INTG1,R6
A,R6
ACC.7,AMI
A,R6
;INTG>0
R1,A
A,R7
B,#10
DIV16_8

R7,A
A,R1
R6,A
R5,TAM
R4,TAM1
IMUL
A,R6
R1,A
A,R7
B,#10
DIV16_8
B,#10
DIV16_8
KHI,A
KHI1,R1
OUTI
A,R7
;INTG<0
R5,A
A,R6


OUTI:

MOV
MOV
MOV
LCALL
MOV
MOV

MOV
MOV
LCALL
MOV
MOV
MOV
MOV
MOV
LCALL
MOV
MOV
MOV
MOV
LCALL
MOV
LCALL
MOV
MOV
MOV
MOV
MOV
LCALL
MOV
MOV
NOP

R4,A
R7,#0
R6,#0
ISUB

A,R6
R1,A
A,R7
B,#10
DIV16_8
R7,A
A,R1
R6,A
R5,TAM
R4,TAM1
IMUL
A,R6
R1,A
A,R7
B,#10
DIV16_8
B,#10
DIV16_8
R5,A
A,R1
R4,A
R7,#0
R6,#0
ISUB
KHI,R7
KHI1,R6

;*************************************
;TÍNH PID=KHP+KHD+KHI
;*************************************

PID:
MOV
R7,KHP
MOV
R6,KHP1
MOV
R5,KHD


LON8BIT:
AMPID:
OUTPID:

MOV
LCALL
MOV
MOV
LCALL
MOV
MOV
MOV
JB
CJNE
MOV
SJMP
MOV
SJMP
MOV
MOV
MOV

SETB
SETB
RET

R4,KHD1
R5,KHI
R4,KHI1
IADD
PID,R7
PID1,R6
A,R6
ACC.7,AMPID
A,#0,LON8BIT
Un,PID
;0OUTPID
Un,#255
OUTPID
Un,#0
En1,En
En11,En1
TR0
TR1

;**********************************
;Chửụng trỡnh coọng hai soỏ nguyeõn
;
R6R7=R6R7+R4R5
;**********************************
IADD:

MOV
A,R7
MOV
A,R5
MOV
R7,A
MOV
A,R6
ADDC A,R4
MOV
R6,A
RET
;*********************************
;Chửụng trỡnh trửứ hai soỏ nguyeõn
;
R6R7=R6R7-R4R5
;*********************************
ISUB:
CLR
C


MOV
SUBB
MOV
MOV
SUBB
MOV

A,R7

A,R5
R7,A
A,R6
A,R4
R6,A

RET

;***********************************
;Chửụng trỡnh nhaõn hai soỏ nguyeõn 16bit
;
R6R7=R6R7 x R4R5
;***********************************
IMUL:
MOV
A,R7
MOV
R3,A
MOV
B,R5
MUL
AB
MOV
R7,A
MOV
A,R5
XCH
A,B
XCH
A,R6

MUL
AB
ADD
A,R6
MOV
R6,A
MOV
A,R4
MOV
B,R3
MUL
AB
ADD
A,R6
MOV
R6,A
RET
***************************************
;chửụng trỡnh con xửỷ lyự phớm
***************************************
CTPHIM:
CLR
DK
CLR
TR0
CLR
TR1
JB
FUN,$



TANGTD:

GIAMTD:

DECTD1:
DECTD:
HTTD:

TANGKP:

GIAMKP:

DECKP1:
DECKP:
HTKP:

SETB
JB
INC
MOV
JNZ
INC
SETB
JB
MOV
JNZ
MOV
JNZ
SJMP

DEC
DEC
LCALL
SETB
JB
LCALL
LCALL
SETB
JB
INC
MOV
JNZ
INC
SETB
JB
MOV
JNZ
MOV
JNZ
SJMP
DEC
DEC
LCALL
SETB
JB

UP
UP,GIAMTD
TDAT
A,TDAT

GIAMTD
TDAT1
DOWN
DOWN,HTTD
A,TDAT
DECTD
A,TDAT1
DECTD1
HTTD
TDAT1
TDAT
HIENTHITD
ENTER
ENTER,TANGTD
HIENTHITD
HIENTHITD
UP
UP,GIAMKP
KP
A,KP
GIAMKP
KP1
DOWN
DOWN,HTKP
A,KP
DECKP
A,KP1
DECKP1
HTKP
KP1

KP
HIENTHIKP
ENTER
ENTER,TANGKP


TANGKI:

GIAMKI:

DECKI1:
DECKI:
HTKI:

TANGKD:

GIAMKD:

DECKD1:
DECKD:
HTKD:

LCALL
LCALL
SETB
JB
INC
MOV
JNZ
INC

SETB
JB
MOV
JNZ
MOV
JNZ
SJMP
DEC
DEC
LCALL
SETB
JB
LCALL
LCALL
SETB
JB
INC
MOV
JNZ
INC
SETB
JB
MOV
JNZ
MOV
JNZ
SJMP
DEC
DEC
LCALL


HIENTHIKP
HIENTHIKP
UP
UP,GIAMKI
KI
A,KI
GIAMKI
KI1
DOWN
DOWN,HTKI
A,KI
DECKI
A,KI1
DECKI1
HTKI
KI1
KI
HIENTHIKI
ENTER
ENTER,TANGKI
HIENTHIKI
HIENTHIKI
UP
UP,GIAMKD
KD
A,KD
GIAMKD
KD1
DOWN

DOWN,HTKD
A,KI
DECKD
A,KD1
DECKD1
HTKD
KD1
KD
HIENTHIKD


SETB
JB
LCALL
LCALL

ENTER
ENTER,TANGKD
HIENTHIKD
HIENTHIKD

*******************************************
;CHUONG TRINH CON HIEN THI TDAT
*******************************************
HIENTHITD:
MOV
DEM,#150
MOV
R7,TDAT1
MOV

R6,TDAT
LCALL
BINTOBCD
PUSH
ACC
MOV
A,R6
ANL
A,#0FH
ORL
A,#00H
MOV
DPTR,#4000H
MOVX
@DPTR,A
MOV
A,R6
SWAP
A
ANL
A,#0FH
ORL
A,#10H
MOV
DPTR,#4000H
MOVX
@DPTR,A
MOV
A,R7
ANL

A,#0FH
ORL
A,#20H
MOV
DPTR,#4000H
MOVX
@DPTR,A
MOV
A,R7
SWAP
A
ANL
A,#0FH
ORL
A,#30H
MOV
DPTR,#4000H
MOVX
@DPTR,A
MOV
DPTR,#4000H
MOV
A,#41H
MOVX
@DPTR,A


MOV
DPTR,#4000H
MOV

A,#5AH
MOVX
@DPTR,A
LAPTD:
LCALL
QUETPHIM
DJNZ
DEM,LAPTD
RET
******************************************
;CHUONG TRINH CON HIEN THI KI
******************************************
HIENTHIKI:
MOV
DEM,#150
MOV
R7,KI1
MOV
R6,KI
LCALL
BINTOBCD
PUSH
ACC
MOV
A,R6
ANL
A,#0FH
ORL
A,#00H
MOV

DPTR,#4000H
MOVX
@DPTR,A
MOV
A,R6
SWAP
A
ANL
A,#0FH
ORL
A,#10H
MOV
DPTR,#4000H
MOVX
@DPTR,A
MOV
A,R7
ANL
A,#0FH
ORL
A,#20H
MOV
DPTR,#4000H
MOVX
@DPTR,A
MOV
A,R7
SWAP
A
ANL

A,#0FH
ORL
A,#30H
MOV
DPTR,#4000H
MOVX
@DPTR,A
MOV
DPTR,#4000H
MOV
A,#42H


MOVX
@DPTR,A
MOV
DPTR,#4000H
MOV
A,#5AH
MOVX
@DPTR,A
LAPKI:
LCALL
QUETPHIM
DJNZ
DEM,LAPKI
RET
*************************************
;CHUONG TRINH CON HIEN THI KP
*************************************

HIENTHIKP:
MOV
DEM,#150
MOV
R7,KP1
MOV
R6,KP
LCALL
BINTOBCD
PUSH
ACC
MOV
A,R6
ANL
A,#0FH
ORL
A,#00H
MOV
DPTR,#4000H
MOVX
@DPTR,A
MOV
A,R6
SWAP
A
ANL
A,#0FH
ORL
A,#10H
MOV

DPTR,#4000H
MOVX
@DPTR,A
MOV
A,R7
ANL
A,#0FH
ORL
A,#20H
MOV
DPTR,#4000H
MOVX
@DPTR,A
MOV
A,R7
SWAP
A
ANL
A,#0FH
ORL
A,#30H
MOV
DPTR,#4000H
MOVX
@DPTR,A
MOV
DPTR,#4000H


MOV

A,#43H
MOVX
@DPTR,A
MOV
DPTR,#4000H
MOV
A,#5AH
MOVX
@DPTR,A
LAPKP:
LCALL
QUETPHIM
DJNZ
DEM,LAPKP
RET
**************************************
;CHUONG TRINH CON HIEN THI KD
**************************************
HIENTHIKD:
MOV
DEM,#150
MOV
R7,KD1
MOV
R6,KD
LCALL
BINTOBCD
PUSH
ACC
MOV

A,R6
ANL
A,#0FH
ORL
A,#00H
MOV
DPTR,#4000H
MOVX
@DPTR,A
MOV
A,R6
SWAP
A
ANL
A,#0FH
ORL
A,#10H
MOV
DPTR,#4000H
MOVX
@DPTR,A
MOV
A,R7
ANL
A,#0FH
ORL
A,#20H
MOV
DPTR,#4000H
MOVX

@DPTR,A
MOV
A,R7
SWAP
A
ANL
A,#0FH
ORL
A,#30H
MOV
DPTR,#4000H
MOVX
@DPTR,A


MOV
DPTR,#4000H
MOV
A,#44H
MOVX
@DPTR,A
MOV
DPTR,#4000H
MOV
A,#5AH
MOVX
@DPTR,A
LAPKD:
LCALL
QUETPHIM

DJNZ
DEM,LAPKD
RET
;*******************************
;Chuong trinh con bien doi BCD
;*******************************
BINTOBCD:
PUSH
ACC
PUSH
B
MOV
B,#10
LCALL
DIV_16_8
PUSH
B
MOV
B,#10
LCALL
DIV_16_8
PUSH
B
MOV
B,#10
MOV
A,R6
DIV
AB
PUSH

B
SWAP
A
POP
B
ORL
A,B
MOV
R7,A
POP
ACC
SWAP
A
POP
B
ORL
A,B
MOV
R6,A
POP
B
POP
ACC
RET
;**********************************
;chuong trinh con chia 16 bit cho 8 bit


;**********************************
DIV_16_8:

PUSH
02H
PUSH
ACC
MOV
R2,#16
CLR
A
DIVIDE:
XCH
A,R6
CLR
C
RLC
A
XCH
A,R6
XCH
A,R7
RLC
A
XCH
A,R7
RLC
A
CJNE
A,B,NOBANG
SJMP
LONHON
NOBANG:

JC
BELOW
LONHON:
SUBB
A,B
XCH
A,R6
ORL
A,#1
XCH
A,R6
BELOW:
DJNZ
R2,DIVIDE
XCH
A,B
POP
ACC
POP
02H
RET
;***************************************
;chuong trinh so sanh hai so nguyen 16 bit
;R6R7>=R4R5
C=1
;R6R7 < R4R5
C=0
:****************************************
SOSANH: CLR
C

MOV
A,R7
SUBB
A,R5
MOV
A,R4
XLR
A,#080H
MOV
R0,A
MOV
A,R6
XRL
A,#080H


TIEP:
THOAT:

SUBB
JC
SETB
SJMP
CLR
RET

A,R0
TIEP
C
THOAT

C

;***************************************
;chuong trinh so sanh hai so nguyen 16 bit
;R6R7<=R4R5
C=1
;R6R7 > R4R5
C=0
:****************************************
SOSANH1: CLR
C
MOV
A,R7
SUBB A,R5
MOV
A,R4
XLR
A,#080H
MOV
R0,A
MOV
A,R6
XRL
A,#080H
SUBB A,R0
JNC
TIEP
SETB
C
SJMP

THOAT
TIEP:
CLR
C
THOAT:
RET
;*******************************
; Chuong trinh phuc hoi thong so
;*******************************
PHUCHOI: MOV
R7,#0
LCALL
READ;phuchoi
MOV
TDAT1,DMEROM ;nhiet do dat
MOV
TDAT,DMEROM1
INC
R7
LCALL
READ
;phuc hoi
MOV
KP1,DMEROM
;he so Kp
MOV
KP,DMEROM1
INC
R7



×