1单片机至尊版助考神器例4-5子程序的功能为:根据累加器A中的数x(0~9之间)查x的平方表y,根据x的值查出相应的平方y
x和y均为单字节数
PUSHDPH;保存DPHPUSHDPL;保存DPLMOVDPTR,#TAB1MOVCA,@A+DPTRPOPDPL;恢复DPLPOPDPH;恢复DPHRETTAB1:DB00H,01H,04H,09H,10HDB19H,24H,31H,40H,51H例4-6在一个以MCS-51为核心的温度控制器中,温度传感器输出的电压与温度为非线性关系,传感器输出的电压已由A/D转换为10位二进制数
根据测得的不同温度下的电压值数据构成一个表,表中放温度值y,x为电压值数据
设测得的电压值x放入R2R3中,根据电压值x,查找对应的温度值y,仍放入R2R3中
本例的x和y均为双字节无符号数
程序如下LTB2:MOVDPTR,#TAB2MOVA,R3CLRCRLCAMOVR3,AXCHA,R2RLCAXCHR2,AADDA,DP;(R2R3)+(DPTR)→(DPTR)MOVDPL,AMOVA,DPHADDCA,R2MOVDPH,ACLRAMOVCA,@A+DPTR;MOVCR2,ACLRAINCDPTRMOVCA,@A+DPTR;MOVR4,A;RETTAB2:DW……;例4-7设有一个巡回检测报警装置,需对16路输入进行检测,每路有一最大允许值,为双字节数
运行时,需根据测量的路数,找出每路的最大允许值
看输入值是否大于最大允许值,如大于就报警
根据上述要求,编一个查表程序
取路数为x(0x15),y为最大允许值,放在表格中
设进入查表程序前,路数x已放于R2中,查表后最大值y放于R3R4中
本例中的x为单字节数,y为双字节数
查表程序如下:TB3:MOVA,R2ADDA,R2;(R2)*2→(A)MOVR3,A;保存指针ADDA,#6;加偏移量