版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机应用系统的软件设计 通常单片机应用系统的系统软件由主程序、定时中 断服务程序和若干个子程序构成。根据系统各操作的 性质,指定哪些操作由中断服务程序完成,哪些操作 由主程序完成。 通常主程序完成显示及键盘处理,实现人机对话功 能。其现场参数采样、控制输出等则由定时中断完 成。 下面以微电脑温度控制器为例,介绍单片机应用系 统的软件设计流程。,一、温度控制器技术要求: 1、控温范围:0c 125c 2、控温精度:1c 3、控温工艺曲线: 工艺分4步 第1步:全速升温 第2步:速率升温 第3步:保温 第4步:全速降温,二、软件设计的有关参数 1、键盘及显示安排: 命令键: 输入(0AH)、工作
2、(0BH)、 确认(0CH) 继续(0DH) 、显示(0EH)、 退出(0FH) 数字键: 09 个 显示管: 8 个 显示符: 开机符:P G o o d 输入符: I n 工作符:BE 输入显示: 步号(2)、时间(3)、温度(3) 设定值 工作显示: 步号(2)、时间(3)、温度(3) 显标0: 实测值 1: P L(2)、时间(3)、温度(3) 设定值,2、采样周期: 考虑到现场温度变化缓慢,确定采用T0定时,定时时间 100ms,温度采样周期为1秒,控温输出周期为8秒. 3、P1口的安排: P1.0: 7279CS P1.4: 加热 P1.1: 7279CLK P1.5: 冷却 P1
3、.2: 7279DATA P1.6: 升温灯 P1.3: 报警灯 P1.7: 保温灯 P3.2: 降温灯 P3.3 结束灯 4、I/O端口地址安排: 6264RAM: 0000H1FFFH ADC0804: 2000H,5、内存单元安排: 标志位:00H 键标志 09H 显示标志 01H 输入标志 0AH 结束标志 02H 工作标志 0BH 退出标志 03H 数入标志 0CH 04H 修改标志 0DH 升温标志 05H 报警标志 0EH 降温标志 06H 半秒标志 0FH 保温标志 07H 1秒标志 08H 8秒标志,显缓区: 40H-47H 显示指针: 22H 计时单元: 24H(100ms
4、) 25H(0.5s) 26H(1s) U单元: 35H 实时时钟: 31H (秒) 32H(分) 工艺参数: 50H-5FH 工艺步号: 23H 采样值: 60H65H 实测值: 38H3AH 误差值: 3BH3FH (ei-2 , ei-1 , ei ) 控制输出: 36H (加热) 37H (冷却) 堆栈区: 68H7FH 三、微电脑温度控制器软件框图,键 扫,入口:0000H,初始化. P good显缓区,显示,有键按下否,键数【显针】 修改显针 显针限值,输入符显区 建立数入标志 建立输入标志 建立显针,工作符显区 建立数入标志 建立工作标志 建立显针,键处理,1、开机引导程序,允许
5、数入否,散转到输 入或工作程序入口 传送工艺,数键,输入,工作,Y,N,N,Y,确认,初始化,设置栈底(SP) 置P口初值 I/O口初始化 关输出 置“0”工作单元及标志,退出转0000H,退出,入口:0200H,01H步号单元、建立显针、参数显缓区,显示,有键按下否,键数【显针】 修改显针 显针限值,保存本步工艺参数 建立显针,工艺步号加1 参数显缓区 建立显针,键处理,键 扫,2、工艺输入程序,建立结束标志保存工艺返回 0000H,数键,确认,继续,Y,N,退出,取工艺.送步号初值.设置初值.初始化T0.开中断,显示处理、灯处理、更新显示(0.5S),有键按下否,键处理,键 扫,3、工作主
6、程序,关中断返回0000H,Y,N,退出,显示处理,按标志不同,将不同参数送至显缓区,报警处理,入口:0800H,更换显示方式,显示,确认,建立退出标志,4、中断服务程序,入口:000BH,保护现场(A、B、DPH、DPL、PSW等)选另一工作寄存器区、重新置定时初值,步时钟计数、建立时间标志、温度采样 (传送、滤波),计算差值 按控制算法计算输出参数 控制输出,步号加1、取工艺 设置初值(步时钟、输出) 工艺结束建立结束标志关输出,恢复现场,中断返回,本工艺步结束否,Y,N,四、微电脑温度控制器软件清单 1、开机引导程序: A、MAIN-1: ORG 0000H ORG 000BH LJMP
7、 MAIN-1 LJMP IT-O MAIN-1:MOV SP, #67H MOV P1,#FDH ACALL INT-7279 MOV R7,#48H (清工作单元) MOV R0,#20H M-0: CLR A MOV R0, A INC R0 DJNZ R7,M-0 ACALL MOV-0 (开机符显缓区) AJMP MAIN-2,B、 MAIN_2: MAIN-2: ACALL DIR ACALL KEY CJNE A,#FFH,M-1 M-5: CJNE A,#0CH,M-6 SJMP MAIN-2 ACALL MKEY-3 确认 M-1: CJNE A,#0AH,M-2 SJMP
8、MAIN_2 M-2: JNC M-3 M-6: CJNE A,#0FH,M-7 ACALL SKEY 数键 AJMP 0000H 退出 SJMP MAIN-2 M-7: SJMP MAIN-2 M-3: CJNE A,#0AH,M-4 ACALL MKEY-1 输入 SJMP MAIN_2 M-4: CJNE A,#0BH,M-5 ACALL MKEY-2 工作 SJMP MAIN-2,a.SKEY:(数键处理) SKEY: JNB 03H,S-2 MOV R0,22H MOV R0,A INC 22H MOV A,22H CJNE A,#48H,S-1 S-1: JC S-2 MOV 22
9、H,#46H S-2: RET,b.MKEY-1(输入键处理) MKEY-1:SETB 01H SETB 03H MOV 22H, #46H MOV DPTR,#TAB-1 ACALL MOV-1 RET c.MKEY-2(工作键处理) MKEY-1:SETB 02H SETB 03H MOV 22H, #46H MOV DPTR,#TAB-2 ACALL MOV-1 RET,d.MKEY-3(确认键处理) MKEY-3: JNB 01H,MK-0 LJMP SR-0 MK-0: JNB 02H,MK-1 LJMP GZ-0 MK-1: RET,2、工艺输入程序: A、SR-0: SR-0:M
10、OV 23H,#01H MOV A, 23H MOV R0,#41H ACALL Z2-10-0 MOV A,52H MOV R0,#44H ACALL Z2-10-1 MOV A,53H MOV R0,#47H ACALL Z2-10-1 MOV 22H,#42H AJMP SR-1,B、 SR-1: SR-1:ACALL DIR ACALL KEY CJNE A,#FFH,S-1 S-5:CJNE A,#0FH,SR-1 SJMP SR-1 ACALL SKEY-4 退出 S-1:CJNE A,#0AH,S-2 SJMP SR-1 S-2:JNC S-3 ACALL SKEY-1 数键 S
11、JMP SR-1 S-3:CJNE A,#0CH,S-4 ACALL SKEY-2 确认 SJMP SR-1 S-4:CJNE A,#0DH,S-5 ACALL SKEY-3 继续 SJMP SR-1,a.SKEY-1:(数键处理) SKEY-1: JNB 03H,S-2 MOV R0,22H MOV R0,A INC 22H MOV A,22H CJNE A,#48H,S-1 S-1: JC S-2 MOV 22H,#42H S-2: RET,b.SKEY-2(确认键处理) SKEY-2: MOV A, 23H ADD A, 23H ADD A,#50H MOV R1, A MOV R0,#
12、42H ACALL Z10-2 MOV R1,A INC R1 MOV R0,#45H ACALL Z10-2 MOV R1,A MOV 22H,#42H RET,c.SKEY-3(继续键处理) SKEY-3: INC 23H ACALL Z2-10-1 MOV A, 23H MOV 22H,#42H MOV R0,#40H RET ACALL Z2-10-0 MOV A, 23H ADD A, 23H ADD A,#50H MOV R1, A MOV A,R1 MOV R0,#42H ACALL Z2-10-1 INC R1 MOV A,R1,d.SKEY-4(退出键处理) SKEY-4:
13、INC 23H MOV A, 23H ADD A, 23H ADD A,#50H MOV R1, A MOV R1,#FFH (建立结束标志) LCALL MOV-2 (保存工艺) AJMP MAIN-1,3、工作主程序: GZ-0:LCALL MOV-3 (取工艺) MOV 23H,#01H LCALL SBZ-0 (设置升降保标志) LCALL SCZ-0 (设置步工艺初值) MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#B0H SETB TR0 MOV IE,#82H SETB 06H CLR P1.4 GZ-1:JNB 06H,G2 CLR 06H LCALL
14、 DL-0 (灯显示),JB 09H,G1 LCALL XS-0 (实测值-显缓区) SJMP G2 G1:LCALL XS-1 (理论值-显缓区) G2:LCALL DTR ( 显示 ) LCALL KEY ( 键扫 ) CJNE A,#FFH,G3 SJMP G6 G3:CJNE A,#0EH,G4 (显示键) CPL 09H SJMP G6 G4:CJNE A,#0FH,G5 (退出键) SETB 0BH SJMP G6 G5:CJNE A,#0CH,G6 (确认键) JNB 0BH,G6 SETB 0AH G6:LCALL BJ-0 (报警处理) SJMP GZ-1,4、中断服务程序
15、IT-0:PUSH A L3:JNC IT-1 PUSH B SJMP IT-3 PUSH DPH L4:JNB 0DH,IT-4 PUSH DPL MOV A,3AH MOV PSW,#08H CJNE A,53H,L5 MOV TH0,#3CH L5:SJMP L1 MOV TL,#B0H LCALL SZJ-0 (设时标与时计) JNB 0FH,L2 MOV A,32H CJNE A,52H,L1 L1:JC IT-1 (转控制处理) SJMP IT-3 (转步结束处理) L2:JNB 0EH,L4 MOV A,3AH CJNE A,53H,L3,IT-1:JNB 07H,IT-3 (控
16、制处理) CLR 07H LCALL AD-0 采样 LCALL LB-0 滤波 LCALL CZ-0 计差值e(i) JNB 08H,IT-4 CLR 08H MOV A,52H JZ IT-2 LCALL JSC 计U LCALL SZC-0 设置输出参数 SJMP IT-4 IT-2:MOV 36H,#00H 设全速升降 L2:JNB 0DH,IT-4 MOV 37H,#00H 温输出参数 MOV36H,#7FH JNB 0EH,L2 SJMP IT-4 MOV 37H,#7FH SJMP IT-4,IT-3:INC 23H (步结束处理) LCALL MOV-4 步工艺传送 MOV A
17、,52H CJNE A,#FFH,L6 SETB 0AH L6:JB 0AH,IT-5 转工艺结束处理 LCALL SBZ-0 设置升降保标志 LCALL SCZ-0 设置步工艺初值 IT-4:JB 0AH,IT-5 退出转结束处理 LCALL KSC-0 控制输出 POP DPL POP DPH POP DPB POP DPA RETI,工艺结束处理 IT-5: POP DPL CLR P3.3 POP DPH MOV R5,#C8H POP DPB L7:MOV R6,#C8H POP DPA L8:MOV R7,#F0H POP A L9:DJNZ R7,L9 POP A DJNZ R6
18、,L8 MOV A,#00H DJNZ R5,L7 PUSH A LJMP 0000H MOV A,#10H PUSH A RETI ORG 1000H JSCL:MOV IE,#00H MOV P1,#FDH SETB P3.2,5、子程序 A、7279键盘显示程序: a. 7279初始化:(复位) INT-7279:CLR P1.0 MOV R6, #02H MOV R6, #0CH L1:DJNZ R6, L1 L0:DJNZ R6, L0 SETB P1.0 MOV A,#A4H RET ACALL STFS b. 显示程序: DTR: MOV R5,#08H MOV R0,#40H
19、MOV R1,#97H L1: CLR P1.0 MOV R6,#0CH L2: DJNZ R6,L2,MOV A,R1 SETB P1.0 ACALL STFS INC R0 MOV R6,#04H DEC R1 L3: DJNZ R6,L3 DJNZ R5,L1 MOV A,R0 RET ADD A,#0DH MOVC A,A+PC ACALL STFS MOV R6,#02H L4: DJNZ R6,L4 TAB DB 7EH,30H,6DH,79H,33H,5BH,5FH,70H,7FH DB 7BH,77H,1FH,4EH,3DH,4FH,47H,00H,67H,c. 键扫程序: K
20、EY: ACALL KEY1 L3:INC R2 CJNE A,#0FFH,L1 DJNZ R7,L2 CLR 00H L4: MOV A,R2 RET RET L1: JB 00H,L5 L5: MOV A, #FFH SETB 00H RET MOV B, A TAB DB XXH,XXH, MOV R2,#00H MOV R7,#0FH L2:MOV A,R2 ADD A,#0AH MOVC A,A+PC CJNE A,B,L3 SJMP L4,d. 读键值子程序:所读的键值保存在A中 KEY1: CLR P1.0 MOV R6,#0CH L1: DJNZ R6,L1 MOV A,#15
21、H ACALL STFS MOV R6,#06H L2: DJNZ R6,L2 ACALL STJS SETB P1.0 RET,e. 发送一字节子程序:(发送数存于A中) STFS:MOV R7,#08H 设: P1.0 CS L1:RLC A P1.1 CLK MOV P1.2,C P1.2 DATA SETB P1.1 P1.3 KEY MOV R6,#02H L2: DJNZ R6, L2 CLR P1.1 MOV R6, #02H L3: DJNZ R6,L3 DJNZ R7,L1 RET,f接收一字节子程序:(接收字符存于A中) STJS: MOV R7,#08H L1: SETB
22、 P1.1 SETB P1.2 MOV R6,#02H L2: DJNZ R6,L2 MOV C, P1.2 RLC A CLR P1.1 MOV R6,#01H L3: DJNZ R6,L3 DJNZ R7,L1 RET,B、通用子程序 a. A-R与R-A: A-R:MOV R4,A R-A: MOV A, R0 SAWP A SAWP A ANL A, #0FH INC R0 MOV R0, A ORL A, R0 INC R0 RET MOV A, R4 ANL A, #0FH MOV R0, A RET,b. 2-10与10-2子程序: Z2-10-0:MOV R7,#02H Z10
23、-2:MOV R7,#02H SJMP Z1 MOV A,R0 Z2-10-1:MOV R7,#03H Z2:MOV B,#0AH Z1:MOV B,#0AH MUL AB DIV A,B INC R0 XCH A,B ADD A,R0 MOV R0,A DJNZ D7,Z2 XCH A,B RET DEC R0 DJNZ R7,Z1 RET,c.16位取补子程序:(R2R3取补) NEG-0:CLR C CLR A SUBB A,R3 CLR A SUBB A,R2 MOV R2,A RET d. 8位乘法子程序: (R4*R3 R2R3) MUL-0:MOV A,R4 (8位无符号乘) M
24、OV B,R3 MUL AB MOV R3,A MOV R2,B RET,MUL-1:MOV A,R4 (带符号R4*R3 R2R3) MOV R5,A JNB ACC.7,L1 CPL A INC A L1:ACALL MUL-0 MOV A,R5 JNB ACC.7,L2 ACALL NEG-0 L2:RET,e.8位除法子程序: (R2R3R4 R3 ,余数R2) DIV-0:MOV R7,#08H (无符号除) L0:CLR C MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A CLR C SUBB A,R4 JC L1 MOV R2,A
25、INC R3 L1:DJNZ R7,L0 RET,DIV-1:MOV A,R2 (带符号R2R3R4R3 ,余数R2) MOV R5,A JNB ACC.7,L1 ACALL NEG-0 L1:ACALL DIV-0 MOV A,R5 JNB ACC.7,L2 MOV A,R3 CPL A INC A MOV R3,A L2:RET,C、传送子程序 a.传送显示符子程序: MOV-0: MOV DPTR,#TAB_0 MOV-1: MOV R7, #08H MOV R0,#40H MK_0: MOVX A,DPTR MOV R0,A INC DPTR INC R0 DJNZ R7,MK_0 R
26、ET ORG 07E0H TAB_0 DB P GOOd TAB_1 DB IN _ _ TAB_2 DB BE _ _ TAB_3 DB PL _ _,b.传送工艺子程序: MOV-2:MOV R7,#0EH (存工艺) MOV R0,#52H MOV DPTR,#0400H L1:MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R7,L1 RET,MOV-3:MOV R7,#0EH (取工艺) MOV R0,#52H MOV DPTR,#0400H L2:MOVX A,DPTR MOV R0,A INC R0 INC DPTR DJNZ R7,L2 MO
27、V 51H,#00H RET,MOV-4:MOV R7,#0EH (步工艺传送) MOV R0,#52H MOV R1,#50H L1:MOV A,R0 MOVX R1,A INC R0 INC R1 DJNZ R7,L1 RET,D、温度采样滤波子程序 a.采样子程序: AD-0: MOV DPTR,2000H MOV R6,#06H MOV R0,#60H L0:MOVX DPTR, A MOV R7,#1EH L1:DJNZ R7,L1 MOVX A,DPTR MOV R0,A INC R0 DJNZ R6,L0 RET,b.滤波子程序: FMAX:MOV R7,#05H LB-0:CA
28、LL FMAX MOV R0,#60H CALL FMIN L1: MOV A,R0H CALL AVE INC R0 RET CLR C SUBB A, R0 JC l2 MOV A, R0 DEC R0 XCH A, R0 INC R0 MOV R0, A l2:DJNZ R7, L1 RET,FMIN:MOV R7, #04H MOV R0, #60H L1:MOV A, R0 INC R0 CLR C SUBB A, R0 JNC l2 MOV A, R0 DEC R0 XCH A, R0 INC R0 MOV R0, A l2:DJNZ R7, L1 RET,AVE:MOV R7,
29、#04H MOV R0, #60 MOV R3, #00 MOV R4, #00 L1:MOV A, R0 ADD A, R4 MOV R4, A MOV A, R3 ADDC A, #00 MOV R3, A INC R0 DJNZ R7, L1 MOV A, R4 MOV R7, #03H RRC A L2:CLR C MOV R4, A MOV A, R3 DJNZ R7, L2 RRC A MOV 67H, R4 MOV R3, A RET,E、计算输出参数子程序 a.计算公式: 采用数字PID增量式控制算法计算输出参数U. U=A*e(i)-B*e(i-1)+C*e(i-2) 设:
30、A=18, B=3, C=1 b.计算程序: JSC:MOV R4,3FH ACALL ADD-0 MOV R3,#12H ACALL XZ-0 (限值) ACALL MUL-1 RET MOV 28H,R2 MOV 29H,R3 MOV R4,3DH MOV R3,#03H ACALL MUL-1 ACALL SUB-0 MOV R4,3BH MOV R3,#01H ACALL MUL-1,c.16位加减子程序: SUB-0:CLR C (28H,29H-R2,R3 28H,29H) MOV A,29H SUBB A,R3 MOV 29H,A MOV A,28H SUBB A,R2 MOV
31、28H,A RET ADD-0:MOV A, 29H (28H,29H+R2,R3 28H,29H) ADD A, R3 MOV 29H,A MOV A, 28H ADD A, R2 MOV 28H,A RET,d.限值子程序: XZ-0:MOV A,28H (限值为60H-A0H) JB ACC.7,L4 JNZ L2 MOV A,29H CJNE A,#60H,L1 L1:JC L3 L2:MOV A,#60H L3:MOV 35H,A RET L4:CJNE A,#FFH,L6 MOV A,29H CJNE A,#A0H,L5 L5:JNC L7 L6:MOV A,#A0H L7:MOV
32、 35H,A RET,F、控制输出子程序 a.设置输出参数: SZC-0:MOV A,35H JB ACC.7,L1 MOV 36H,A MOV 37H,#00H RET L1:CPL A INC A MOV 37H,A MOV 36H #00H RET,b.控制输出: KSC-0:MOV A,36H JZ L1 DEC 36H CLR P1.4 SETB P1.5 RET L1:SETB P1.4 MOV A,37H JZ L2 DEC 37H CLR P1.5 RET L2:SETB P1.5 RET,G、计算差值子程序 a.计算差值: CZ-0:ACALL MOV-5 (传送差值) MO
33、V A,53H CJNE A,51H,L1 MOV A,3AH (保温) CLR C SUBB A,53H ACALL XZ-1 (限值为10H-F0H) MOV 3FH,A RET L1:ACALL JTL-0 (计算T理) MOV A,3AH (升降温) CLR C SUBB A,R3 ACALL XZ-1 (限值为10H-F0H) MOV 3FH,A RET,b.传送差值: MOV-5:MOV R7,#04H MOV R0,#3CH L1:MOV A,R0 DEC R0 MOV R0,A INC R0 INC R0 DJNZ R7,L1 RET,c.计算升降温T理: T理 T初【(T终T
34、初)*C实】C总 JTL-0:MOV A,53H CLR C SUBB A,51H MOV R4,A MOV R3,32H INC R3 ACALL MUL-1 MOV R4,52H ACALL DIV-1 MOV A,51H ADD A,R3 MOV R3,A RET,d.限值: XZ-1:JB ACC.7,L3 CJNE A,#10H,L1 L1:JC L2 MOV A,#10H L2:RET L3:CJNE A,#F0H,L4 L4:JNC L5 MOV A,#F0H L5:RET,H、设置工艺参数初值子程序 a.设置升降保标志 SBZ-0:MOV A,21H ANL A,#1FH MOV 21H,A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子邮件营销行为规范条款
- 2026湖北民族大学附属民大医院招聘2人备考题库含答案详解(精练)
- 2026江西旅游商贸职业学院高层次人才招聘15人备考题库(36)附答案详解(考试直接用)
- 2026广东云浮市招募就业见习人员299人备考题库含答案详解(预热题)
- 2026年马鞍山市和县文化旅游体育局度校园招聘备考题库附答案详解(巩固)
- 2026四川长虹电子控股集团有限公司招聘综合管理主办岗位1人备考题库及完整答案详解1套
- 2026四川达州大竹县国有资产事务服务中心县属国有企业招聘工作人员28人备考题库含答案详解(夺分金卷)
- 2026浙江台州市温岭市市场监督管理局招聘编外人员3人备考题库含答案详解
- 2026上海对外经贸大学国际经贸学院行政管理人员招聘1人备考题库及答案详解(考点梳理)
- 2026河南事业单位联考驻马店市招聘142人备考题库及答案详解(夺冠系列)
- 广西三支一扶2026年真题
- 危重病人血液透析护理
- 音体美新教师培训
- 《半纤维素》团体标准(征求意见稿)-0629
- 2026年叉车人员培训考试题库及完整答案一套
- (正式版)DB61∕T 2103-2025 《砖瓦用页岩矿资源储量核实技术规范》
- 药用植物育种学课件
- 2025苏超联赛考试真题及答案
- 运动时合理的呼吸方法
- 中医诊所医生聘用合同(标准版)4篇
- 敦煌壁画教学课件
评论
0/150
提交评论