第4章 系统软件设计
JMP NO_1S_20
;======================================== NO_1S_LOW:
MOV A,COUNTER_BUF_L CJNE A,#10,NO_1S_10
NO_1S_10:JNC NO_1S_END
MOV A,FREQ_LOSS CJNE A,#0,NO_1S_11 SETB P153_B;FREQ_LOSS=0 SETB P153_A JMP NO_1S_20
;偏低,则判断是否需要降低频率衰减档位 MOV A,FREQ_LOSS;
JZ NO_1S_END;已经是最低档,无需调整 DEC FREQ_LOSS;减一档
NO_1S_11:CJNE A,#1,NO_1S_12
SETB P153_B;FREQ_LOSS=1 CLR P153_A JMP NO_1S_20
NO_1S_12:
CLR P153_B;FREQ_LOSS=2 SETB P153_A JMP NO_1S_20
23
第4章 系统软件设计
NO_1S_20:;调整档位后,重新计数
NO_1S_END:JMP MAIN
;===================================
;=================================== YES_1S:
;把计数器的数转换成10进制,并根据当前档位设定好要显示的6个数字, ;存放在DISPLAY_DATA1-DISPLAY_DATA6中。 ;
MOV A,COUNTER_BUF_H MOV R7,A
MOV A,COUNTER_BUF_L MOV R6,A
CALL CHANGE16_10
CLR A
MOV TIMES_50MS,A MOV COUNTER_BUF_L,A MOV COUNTER_BUF_H,A
;====================================
;在频率衰减控制下,计数器数据不会超出2000多少,因此只取转换后的
低4位转换成数据显示
MOV A,R3 ANL A,#0FH
24
第4章 系统软件设计
MOV TEMP1,A
MOV A,R3 ANL A,#0F0H SWAP A MOV TEMP2,A
MOV A,R4 ANL A,#0FH MOV TEMP3,A
MOV A,R4 ANL A,#0F0H SWAP A MOV TEMP4,A
;==================================== ;根据频率衰减档位调整数位
MOV A,FREQ_LOSS CJNE A,#0,LOSS_1 CLR A MOV DATA4,A MOV DATA5,A JMP LOSS_END
LOSS_1:
25
第4章 系统软件设计
CJNE A,#1,LOSS_2 MOV A,DATA3 MOV DATA4,A MOV A,DATA2 MOV DATA3,A MOV A,DATA1 MOV DATA2,A MOV A,DATA0
MOV DATA1,A
CLR A MOV DATA0,A MOV DATA5,A
JMP LOSS_END
LOSS_2:
CJNE A,#2,LOSS_3
MOV A,DATA3 MOV DATA5,A MOV A,DATA2 MOV DATA4,A MOV A,DATA1 MOV DATA3,A MOV A,DATA0 MOV DATA2,A
26
第4章 系统软件设计
CLR A MOV DATA0,A MOV DATA1,A JMP LOSS_END
LOSS_3:
CLR A MOV DATA0,A MOV DATA1,A MOV DATA2,A
MOV A,DATA2 MOV DATA5,A MOV A,DATA1 MOV DATA4,A MOV A,DATA0 MOV DATA3,A
LOSS_END:
;高位若为0,则置为11,取出显示代码为LED全灭
MOV R0,#DATA5;取最高位数据地址 MOV R2,#5
LOOP_CLR:
MOV A,@R0 JNZ DISCD
27