一. 带注释软件清单;==========使用单元设定==========//..................................使用单元设定 DIS0 EQU 30H DIS1 EQU 31H DIS2 EQU 32H DIS3 EQU 33H LED EQU 34H TM1 EQU 35H; TM2 EQU 36H; INTV BIT 37H;中断标志 THX EQU 38H;定时脉宽高电平 CISHU EQU 39H FIRST BIT 41H; 检测加减是否第一次按下 SET1 BIT 42H SETZ0 EQU 43H;设定当前设定值SETZ0~SETZ3 SETZ1 EQU 44H SETZ2 EQU 45H SETZ3 EQU 46H TM3 EQU 47H; 循环次数单元 JIA1 BIT 48H; 单步加标志 LIANJIA BIT 49H; 连加标志 JIAN1 BIT 50H; 单步减标志 LIANJIAN BIT 51H; 连减标志 SETDATA EQU 52H; 设定速度暂存单元 REALDATA EQU 53H; 实测速度暂存单元 YK1 EQU 54H; 上次输出数据暂存单元 KP EQU 56H;比例系数 KI EQU 57H;积分系数 EK EQU 58H;设定值和实测值的差值 EK1 EQU 59H;上次的EK值 OUTPUT EQU 60H; EK2 EQU 61H;EK-EK1的值 ONPRESS BIT 62H;判定ENTER键是否弹起标志 TMS EQU 63H;闪烁时长 SHAN BIT 64H; 闪烁标志;==========主程序========== ORG 0000H SJMP MAIN ORG 0013H;外部中断1入口地址 AJMP INX1 ORG 001BH;定时器T1中断入口地址 AJMP ITX1 ORG 0070HMAIN: MOV SP,#70H;设定堆栈指针入口地址 ACALL INIT;调用初始化程序 M1: JB SET1,FLASH;当前为设置状态则跳到闪烁显示模块 ACALL DISP; 否则为一般显示 SJMP NEXTTFLASH: ACALL DISP1NEXTT: ACALL DELAY;调用按键延时程序 ACALL M2;调用按键程序 DJNZ CISHU,M1;第隔100MS刷新一下实测值 MOV CISHU,#20ACALL CONTROL;调用控制调速模块 SJMP M1//==========初始化模块========== INIT:MOV DPTR,#0FD00H ;设置PA、PB为输出口,PC为输入口 MOV A,#03H MOVX @DPTR,A MOV TMOD,#21H ;定时器/计数器T1为方式2,定时器/计数器T0为方式1 MOV TL0,#00H ; 定时器/计数器T0赋初值#00H MOV TH0,#00H MOV THX,#0BBH ;输出单元赋初值#0BBH,即脉冲高电平宽度 MOV TH1,THX MOV TL1,THX SETB TR1 ;启动定时器/计数器T1 SETB TR0 ; 启动定时器/计数器T0 SETB ET1 ;允许定时器/计数器T1溢出中断 SETB EX1 ;允许外部中断1中断 SETB IT1 ;选择边沿触发 SETB EA ;CPU开中断 SETB 07H; SETB SHAN CLR 11H;检测是否成功 MOV LED,#7FH