哪个帮我看个个汇编,,问题出在什么地方,,如何修改
[复制链接]
YES_COM: ;当前要显示的东西放在DSP11~DSP15,由定时中断每隔两毫秒刷新一次, ;五个寄存器要十毫秒才能刷新一遍
MOV A, R6 ;指循环显示的第N位。 ADD A, #DSP11 ;DSP11为显示数据存放区的首地址+R6则为 ;当前应显示的寄存器地址 MOV R0, A MOV A, @R0 ;当前显示段码 ANL P3,#11110011B ;屏蔽输出 MOV P1,#0 MOV P0, A ;此次该显示的数据->;P0 NOP MOV A, R6 ;该显示数码管那一位 CLR C SUBB A, #5 ;如果需要显示第一行跳转 JNC DS_2LINN ;A<5跳转 MOV A,R6 ;该显示数码管那一位 ;JB RP_FLG.5,DSPPNL1 ;单行键盘此时该显示第二行则转 CJNE A,#9,DSP15_DL ;若是DSP25则不处理闪烁 JMP DS_COM ;处理DSP25 DSP15_DL: ;JNB RP_FLG.1,DSPPNL1_1 ;非第一行闪烁则转 JMP DS_COM ;JMP DSPPNL DSPPNL1: CJNE A,#4,DSPPNL1_1 JMP DSPPNL0 DSPPNL1_1: JMP DSPPNL DS_2LINN: ;显示第二行 MOV A, R6 ;JNB RP_FLG.5,DSPPNL1 ;单行键盘此时该显示第一行则转 ;RP_FLG.5 = 0:显示第一行 1:显示第二行 CJNE A,#4,DSP25_DL JMP DS_COM ;若是DSP25则不处理闪烁 DSP25_DL: JB RP_FLG.2,DSPPNL ;RP_FLG.2 0: 1:第二行闪烁辅助标志位。 DS_COM: CJNE A,#0,DS_X1 JMP DSP1 DS_X1: CJNE A,#1,DS_X2 JMP DSP2 DS_X2: CJNE A,#2,DS_X3 JMP DSP3 DS_X3: CJNE A,#3,DS_X4 JMP DSP4 DS_X4: CJNE A,#4,DS_X5 JMP DSP5 DS_X5: CJNE A,#5,DS_X6 JMP DSP6 DS_X6: CJNE A,#6,DS_X7 JMP DSP7 DS_X7: CJNE A,#7,DS_X8 JMP DSP8 DS_X8: CJNE A,#8,DS_X9 JMP DSP9 DS_X9: CJNE A,#9,DS_X10 JMP DSP10 DS_X10: JMP DSPPNL
DSP1: SETB P1.0 ;点亮D4 JMP DSPPNL DSP2: SETB P1.1 ;点亮D3 JMP DSPPNL DSP3: SETB P1.2 ;点亮D2 JMP DSPPNL DSP4: SETB P1.3 ;点亮D1 JMP DSPPNL DSP5: SETB P1.4 ;点亮D5 JMP DSPPNL DSP6: SETB P1.5 ;点亮D9 JMP DSPPNL DSP7: SETB P1.6 ;点亮D8 JMP DSPPNL DSP8: SETB P1.7 ;点亮D7 JMP DSPPNL DSP9: SETB P3.2 ;点亮D6 JMP DSPPNL DSP10: SETB P3.3 ;点亮D10 JMP DSPPNL0
DSPPNL: DEC R7 ;DSP_TIM DSPPNL0: INC R6 ;显示位累加 MOV A, R6 CLR C SUBB A, #10 ;全部显示完毕将显示位子计数器R6清零 JC CNT ;A<=10 跳到CNT MOV R6, #0 ;-------- CNT: MOV A, R7 ;DSP_TIM(;R7闪烁显示时间累加) CLR C SUBB A, #T_OFFPNL ;#T_OFFPNL =120 JC CNT_4 ;R7<80则中断返回 MOV R7, #0 ;DSP_TIM JB DSP_FLG.0, CNT_3 ;DSP_FLG.1为闪烁标志位,但真正闪还是不闪还是要看DSP_FLG.0 ;操空着闪烁DSP_FLG.0 SETB DSP_FLG.0 ;置闪烁标志位 JMP CNT_4 CNT_3: CLR DSP_FLG.0 CNT_4: ; ;========================================= ;---------------- TIM_E: ; POP PSW ; POP ACC ; RETI
总共有
上1234
下5678
8个数码..现在按键SET的时候 5678数码不闪烁..如何整??
电路图和模型图都给上
|