如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
子程序调用中的参数传递问题常用(chánɡyònɡ)工作寄存器、累加器、地址指针寄存器或堆栈来传递参数。其入口(rùkǒu)条件是:(A)=待查表的数;出口条件是(A)=平方值。主程序片段:STAR:MOVA,DA;取第一操作数ACALLSQR;调用查表程序MOVR1,A;a2暂存R1中MOVA,DB;取bACALLSQR;第2次调用查表程序ADDA,R1;a2+b2→AMOVDC,A;结果存于DC中SJMP$;等待子程序片段:SQR:INCA;偏移量调整(RET一字节)MOVCA,@A+PC;查平方表RETTAB:DB0,1,4,9,16DB25,36,49,64,81END2.用指针寄存器来传递参数如果参数在片内RAM中,则可用R0或R1作指针;如参数在片外RAM或程序存储器中,则可用DPTR作指针。【例10-2】将R0和R1指出的内部RAM中两个3字节无符号(fúhào)整数相加,结果送到由R0指出的内部RAM中。入口时,R0和R1分别(fēnbié)指向加数和被加数的低位字节;出口时,R0指向结果的高位字节。低字节在低地址。NADD:MOVR7,#3;3字节加法CLRCNADD1:MOVA,@R0;取加数低字节ADDCA,@R1;取被加数低字节并加到AMOV@R0,ADECR0DECR1DJNZR7,NADD1INCR0RET㈡.引脚功能VREF:参考电压输入VX:模拟信号电压输入R1、R1/C1、C1:外接积分阻容元件CO1、CO2:外接补偿电容0.1μFDU:输出(shūchū)控制,正脉冲使转换结果→A/D结果寄存器EOC:转换结束,转换结束时发正脉冲(一般与DU相连)CLK1、CLKO:外接时钟信号输入/输出(shūchū)OR:过量程标志,︱VX︳>VREF时,OR=0DS4-DS1:个、十、百、千位输出(shūchū)选通正脉冲Q3-Q0:BCD码A/D转换结果输出(shūchū)VAG:模拟地VEE:模拟负电源VDD:正电源VSS:数字地*对于5V数字系统,VDD、VEE为±5V㈢.输出时序:EOC:转换结束(jiéshù)脉冲DS1:千位输出标志Q3:千位值0-1,1-0Q2:极性,0-负、1-正Q0:量程0-正常1-Q3=1欠量程Q3=0过量程DS2:百位输出标志DS1:十位输出标志DS1:个位输出标志㈣.MC14433与8031接口(非总线型)Q0-Q3:接P1.0-P1.3DS1-DS4:接P1.4-P1.7EOC与DU相连,反相后接INT1VREF:由基准(jīzhǔn)电压源5G1403(2.5V)分压产生2V基准(jīzhǔn)电压。2.水位控制电路图10-8水塔水位控制电路3.信号输入与输出水位信号由P1.0和P1.1输入由P1.2端输出,去控制电机。由P1.3输出报警信号,驱动一只发光二极管进行(jìnxíng)光报警。蜂鸣音报警(bàojǐng)子程序10.3数据处理程序(chéngxù)数字滤波程序(chéngxù)1.中值滤波中值滤波是对某一参数(cānshù)连续采样n次(n一般取奇数),然后把n次的采样值从小到大或从大到小排列,再取中间值作为本次采样值。该算法的采样次数常为3次或5次。对于变化很慢的参数(cānshù),有时也可增加次数,例如15次。可采用常规的排序算法,如冒泡算法。中值滤波对于去掉由于偶然因素引起的波动或采样器不稳定而造成的脉动干扰比较有效。变量变化比较缓慢,效果比较好。对于变化较为剧烈的参数(cānshù),此法不宜。现以3次采样为例。3次采样值分别存放在R2、R3和R4中,程序运行之后,将3个数据从小到大顺序排列,仍然存放在R2、R3和R4中,中值在R3中。2.去极值(jízhí)平均滤波程序清单:CLRAMOVR2,A;0→最大值寄存器R2R3MOVR3,AMOVR6,A;0→累加和寄存器R6R7MOVR7,AMOVR4,#3FH;3FFFH→最小值寄存器R4R5MOVR5,#0FFHMOVR0,#4HDAV1:LCALLRDXP;读A/D→B,A(调采样子(yàngzi)程序)MOVR1,A;采样值低位暂存R1,高位在BADDA,R7MOVR7,A;低位加到R7MOVA,BADDCA,R6MOVR6,A;高位加到R6,(R6R7)+(BA)→R6R7CLRCMOVA,R3SUBBA,R1MOVA,R2SUBBA,BJNCDAV2;输入值>(R2R3)?MOVA,R1MOVR3,AMOVR2,B;输入值→R2R3DAV2:CLRCMOVA,R1S