当前位置:首页 > 基于单片机的流量控制系统
XXXXXXXXXXX
?ei?ei2- ei?1;
?ei?(ei?ei?1)?(ei?1?ei?2) ei?1; = ?ei- ?P为比例系数;I为积分系数;D为微分系数; 输出控制变量表达式为:
Ui?Ui?1+ ? Ui
程序的入口参数:偏差ek、ek-1、ek-2、测量值y、给定值r。这5个参数均为3字节的浮点数,分别将它们存放在RAM单元中。低字节存放浮点数的阶数和符号,其中符号存放在最高位,阶数以补码的形式存放在另7位中。尾数以原码的形式存放在另2个字节中。
第四章 中断服务子程序
4.1 设定值输入程序
本程序将4位BCD码按千、百、十、个依次存放在89C51片内RAM的30H~33H单元中,每个地址单元的高4位为0,低4位为BCD码。
9
XXXXXXXXXXX
程序代码如下:
RDS:MOV R0,#30H;初始化,存放单元首址
MOV R2,#7FH;P1口高4位置控制字及低4位置输入方式 MOV R3,#04H;读入4个BCD码 MOV A,R2
LOOP:MOV P1,A;P1口送控制字及低4位置输入方式 MOV A,P1;读如BCD码 ANL A,#0FH;屏蔽高4位 MOV @R0,A;送入存储单元 INC R0;指向下个存储单元
MOV A,R2;准备下一片拨盘的控制端置0 RR A; MOV R2,A;
DJNZ R3,LOOP;未读完返回 RET;读完结束
4.2 A/D中断子程序
A/D中断子程序流程图如下所示:
10
XXXXXXXXXXX
程序代码如下:
INT0:PUSH ACC ;保护现场 PUSH DPH PUSH DPL PUSH PSW
SETB PSW.3 ;选工作寄存器区1 MOV DPTR,#0DF01H;读取8155A口数据 MOVX A,@DPTR MOV R2, A
ANL A, #0F0H ;屏蔽低4位 JNZ ND5 ; MOV A,R2
JNB 02H, D51 ;判断是否采样零信号 MOV C, ACC.0 ; MOV 30H, C MOV C, ACC.7
MOV 37H,C
11
XXXXXXXXXXX
AJMP D14
D51: MOV C,ACC.0 ;万位和标志位→荷重信号缓冲器 MOV 48H,C MOV C,ACC.7 MOV 4FH,C AJMP D14
ND5: MOV A,R2 ;判断是否读出千位 JNB ACC.7,ND4
JNB 02H,D41 ;判断是否采样零信号 ANL A, #0FH ;千位→零信号缓冲器 SWAP A MOV 25H,A AJMP D14 D41: ANL A,#0FH SWAP A MOV 28H, A AJMP D14
ND4: JNB ACC.6, ND3 ;判断是否读出百位 JNB 02H,D31 ;判断是否采样零信号 MOV R1, #25H ;百位→零信号缓冲器 ANL A,#0FH XCHP A,@R1
12
共分享92篇相关文档