系统实用程序学习教案_第1页
系统实用程序学习教案_第2页
系统实用程序学习教案_第3页
系统实用程序学习教案_第4页
系统实用程序学习教案_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1系统系统(xtng)实用程序实用程序第一页,共62页。 子程序及参数传递子程序及参数传递 在程序设计中,有时需反复在程序设计中,有时需反复执行某段程序。通常把具有执行某段程序。通常把具有(jyu)一定功能的公用程序一定功能的公用程序段作为子程序。段作为子程序。 在主程序需要执行这种操作在主程序需要执行这种操作的地方执行一条调用指令,转的地方执行一条调用指令,转到子程序去执行;到子程序去执行; 完成规定操作以后,再返完成规定操作以后,再返回到原来的程序回到原来的程序(主程序主程序)继续继续执行。执行。第2页/共62页第二页,共62页。子程序调用中的参数传递问题子程序调用中的参数传递问题

2、常用工作寄存器、累加器、地址指针寄存器或堆栈常用工作寄存器、累加器、地址指针寄存器或堆栈(duzhn)来传递参数。来传递参数。1.用工作寄存器用工作寄存器 Rn 或累加器或累加器 A 来传递参数来传递参数2.【例【例10-1】用程序实现】用程序实现 c=a+b。3. 4. 设:设:a、b和和c分别存于内部分别存于内部RAM的的DA、DB和和DC 3个单元中。个单元中。5. 通过通过(tnggu)两次调用子程序查平方表,结果在主程序中相两次调用子程序查平方表,结果在主程序中相加得到。加得到。6. 第3页/共62页第三页,共62页。其入口其入口(r ku)条件是:条件是:(A)=待查表的数;出口条

3、件是待查表的数;出口条件是(A)=平方值。平方值。 主程序片段:主程序片段:STAR:MOV A,DA ;取第一操作数;取第一操作数 ACALL SQR ;调用查表程序;调用查表程序 MOV R1,A ;a暂存暂存R1中中 MOV A,DB ;取;取b ACALL SQR ;第;第2次调用查表程序次调用查表程序 ADD A,R1 ;a MOV DC,A ;结果存于;结果存于DC中中 SJMP ;等待;等待 子程序片段:子程序片段:SQR:INC A ;偏移量调整;偏移量调整(RET一字节一字节) MOVC A,A+PC ;查平方表;查平方表 RET TAB:DB 0,1,4,9,16 DB 2

4、5,36,49,64,81 END第4页/共62页第四页,共62页。2. 用指针寄存器来传递参数用指针寄存器来传递参数 如果参数在片内如果参数在片内RAM中,则可用中,则可用 R0 或或 R1 作指针;作指针; 如参数在片外如参数在片外RAM或程序或程序(chngx)存储器中,则可用存储器中,则可用 DPTR 作指针。作指针。【例【例10-2】 将将R0和和R1指出的内部指出的内部RAM中两个中两个3字节无符号整数字节无符号整数相加,结果送到由相加,结果送到由R0指出的内部指出的内部RAM中。中。 第5页/共62页第五页,共62页。 入口入口(r ku)时,时,R0和和R1分别指向加数和被加数

5、的低位字节;分别指向加数和被加数的低位字节; 出口时,出口时,R0指向结果的高位字节。低字节在低地址。指向结果的高位字节。低字节在低地址。 NADD: MOV R7,#3 ;3字节加法字节加法 CLR C NADD1:MOV A,R0 ;取加数低字节;取加数低字节 ADDC A,R1 ;取被加数低字节并加到;取被加数低字节并加到A MOV R0,A DEC R0 DEC R1 DJNZ R7,NADD1 INC R0 RET 第6页/共62页第六页,共62页。中断服务子程序中断服务子程序 主程序调用子程序与主程序被中断而主程序调用子程序与主程序被中断而去执行中断服务子程序的过程是不同的:去执行

6、中断服务子程序的过程是不同的:调用子程序是当主程序运行到调用子程序是当主程序运行到 “LCALL DIS” 指令时,先自动压入断点指令时,先自动压入断点2003H,再进入中断服务子程序;再进入中断服务子程序;程序中断是随机的。当主程序运行时,遇到程序中断是随机的。当主程序运行时,遇到(y do)中断申请,则中断申请,则CPU执行完当前指执行完当前指令后,首先自动压入断点令后,首先自动压入断点1002H,然后转,然后转去执行中断服务子程序。去执行中断服务子程序。第7页/共62页第七页,共62页。上述两个上述两个(lin )过程的共同点都是自动压入断点。过程的共同点都是自动压入断点。当执行子程序到

7、最后一条指令当执行子程序到最后一条指令RET时,自动弹出断点时,自动弹出断点2003H送送PC,返回主程序;,返回主程序;当中断服务程序执行到最后一条指令当中断服务程序执行到最后一条指令RETI 时,同样弹出断点时,同样弹出断点1002H送送PC,返回主程序。,返回主程序。除此之外,两种子程序都需要保护现场和恢复现场。除此之外,两种子程序都需要保护现场和恢复现场。第8页/共62页第八页,共62页。10.2 数据数据(shj)采集及简单控制程序采集及简单控制程序位数据位数据(shj)采集程序采集程序 双积分型双积分型 3 位位AD MC14433芯片功能:芯片功能: 输出数值范围:输出数值范围:

8、 01999(三位(三位半半BCD码)码) 分辨率分辨率 : 约为约为11位(二进制)位(二进制) 电压输入范围:电压输入范围: 199.0mv1.999V两档两档 相应的基准电压:为相应的基准电压:为200 mv2V 转换速度:转换速度:3次次10次秒次秒 自动自动(zdng)极性转换;极性转换; 过量程欠量程标志。过量程欠量程标志。第9页/共62页第九页,共62页。引脚功能引脚功能VREF: 参考电压输入参考电压输入VX: 模拟信号电压输入模拟信号电压输入R1、R1C1、C1: 外接积分阻容元件外接积分阻容元件(yunjin)CO1、CO2: 外接补偿电容外接补偿电容0.1FDU: 输出控

9、制,正脉冲使转换结果输出控制,正脉冲使转换结果A/D结果寄存结果寄存器器EOC: 转换结束,转换结束时发正脉冲(一般与转换结束,转换结束时发正脉冲(一般与DU相连)相连)CLK1、CLKO: 外接时钟信号输入输出外接时钟信号输入输出OR: 过量程标志,过量程标志,VX VREF时,时,OR0DS4DS1: 个、十、百、千位输出选通正脉冲个、十、百、千位输出选通正脉冲Q3Q0: BCD码码AD转换结果输出转换结果输出VAG: 模拟地模拟地VEE: 模拟负电源模拟负电源VDD: 正电源正电源VSS: 数字地数字地*对于对于5V数字系统,数字系统,VDD、VEE为为5V第10页/共62页第十页,共6

10、2页。输出输出(shch)时序:时序:EOC:转换结束脉:转换结束脉冲冲DS1:千位输出:千位输出(shch)标志标志Q3:千位值:千位值0-1,1-0Q2:极性,:极性,0负负、 1正正Q0:量程:量程 0 -正常正常 1 - Q3=1欠量程欠量程 Q3=0过量程过量程DS2:百位输出:百位输出(shch)标志标志DS1:十位输出:十位输出(shch)标志标志DS1:个位输出:个位输出(shch)标志标志 第11页/共62页第十一页,共62页。MC14433MC14433与与80318031接口(非总线接口(非总线(zn xin)(zn xin)型)型)Q0Q0Q3Q3: 接接P1.0P1.

11、0P1.3P1.3DS1DS1DS4DS4: 接接P1.4P1.4P1.7P1.7EOCEOC与与DUDU相连,反相后接相连,反相后接INT1INT1VREFVREF:由基准电压源:由基准电压源5G14035G1403(2.5V2.5V)分压产生)分压产生2V2V基基准电压。准电压。第12页/共62页第十二页,共62页。数据数据(shj)采集程序是以中断采集程序是以中断方式进行的,中断服务子程序方式进行的,中断服务子程序 ,名为名为INTL1。由图中硬件由图中硬件(yn jin) (yn jin) 可知可知: : MC14433 MC14433采用连续转换方式采用连续转换方式, ,每每次转换结

12、束,在次转换结束,在EOCEOC端输出一正脉端输出一正脉冲,经反相器接冲,经反相器接89C5189C51的的 INT0 INT0 端端, ,申请中断申请中断 89C51 89C51 响应中断响应中断, ,进入进入INTL1INTL1执行采集任务。执行采集任务。 将采集的千、百、十、个位数将采集的千、百、十、个位数据分别存放在据分别存放在RAMRAM中的中的21H21H24H24H单单元。元。第13页/共62页第十三页,共62页。第14页/共62页第十四页,共62页。数据采集数据采集(中断服务中断服务)程序清单如下:程序清单如下: INTL1:MOV A,P1 ;输入一次,;输入一次,(P1)A

13、 JNB ACC.4,INTL1 ;DS1=1?即千位选通即千位选通 JB ACC.0,ERR ;Q0=1(过量程过量程),出错,出错 JB ACC.3,L2 ;Q3=1,转千位为,转千位为0 MOV 21H,#01H ;Q3=0,千位为,千位为1,存,存21H单元单元 AJMP L3 L2: MOV 21H,#00H ;千位为;千位为0,存,存21H单元单元 L3: MOV A,P1 ;输入一次;输入一次 JNB ACC.5,L3 ;DS2=1? MOV R0,#22H XCHD A,R0 ;Q3Q022H单元单元 L4: MOV A,P1 ;输入一次;输入一次 JNB ACC.6,L4 ;

14、DS3=1? INC R0 ;指向;指向23H单元单元 XCHD A, R0 ;十位存;十位存23H单元低单元低4位位 L5: MOV A, P1 ;输入一次;输入一次 JNB ACC.7,L5 ;DS4=1? INC R0 ;指向;指向24H单元单元 XCHD A,R0 ;个位存;个位存24H单元低单元低4位位 AJMP L6 ERR:MOV 20H,#0FH ;0FH20H单元,最高位单元,最高位LED显示显示(xinsh)出错信息出错信息“F” L6:RETI第15页/共62页第十五页,共62页。航标灯控制程序航标灯控制程序【例【例10-3】用】用89C2051单片机试制单片机试制(sh

15、zh)一个一个“航标灯航标灯”。 fOSC12 MHZ要求要求(yoqi): 黑夜定时周期循环发光黑夜定时周期循环发光,定时间隔为定时间隔为2 s,即亮即亮2 s,灭灭2 s。 当白天到来时,航标灯应熄灭,停止定时器工作。当白天到来时,航标灯应熄灭,停止定时器工作。 采用定时采用定时(dn sh)加计数的方法加计数的方法定时定时(dn sh)2 s。 如图如图10.6所示的光敏三极管来区所示的光敏三极管来区分白天与黑夜。分白天与黑夜。 黑夜时黑夜时,无光照,无光照,T1和和T2均截止,均截止,使使INT00,发出中断请求。,发出中断请求。CPU进入外部中断处理程序进入外部中断处理程序,启动定时

16、启动定时(dn sh)器工作,利用定时器工作,利用定时(dn sh)器中断控制灯定时器中断控制灯定时(dn sh)闪闪闪发光。用软件查询闪发光。用软件查询INT0引脚,只引脚,只要要INT00,定时定时(dn sh)器便继续器便继续工作。工作。 白天时白天时,日光使日光使T1导通导通,T2输出低输出低电平电平,INT01,立即关闭定时立即关闭定时(dn sh)器,结束外部中断处理并返回器,结束外部中断处理并返回到主程序。到主程序。第16页/共62页第十六页,共62页。设设: T0定时和定时和R7 软件计数软件计数(j sh)可以延时可以延时2 s。 R7 软件计数软件计数(j sh)为为40次

17、;次;T0定时定时50ms,模式模式1,计数计数(j sh)初值为初值为:212501000123CB0H主程序:主程序: ORG 0000H AJMP MAIN ORG 0003H AJMP WBINT ;外部中断;外部中断0入口地址入口地址 ORG 000BH AJMP T0INT ;T0中断入口地址中断入口地址 ORG 0100H MAIN: MOV SP,#30H ;设置堆栈指针;设置堆栈指针 CLR P1.7 ;设灯的初态为;设灯的初态为“灭灭” CLR IT0 ;外部中断;外部中断0为电平为电平(din pn)触发方式触发方式 CLR PX0 ;外部中断;外部中断0为低优先级为低优

18、先级 SETB EX0 ;允许外部中断;允许外部中断0中断中断 SETB EA ;CPU允许中断允许中断 HERE: AJMP HERE ;等待外部中断请求;等待外部中断请求第17页/共62页第十七页,共62页。外部中断外部中断0中断服务程序中断服务程序(由由0003H转来转来): WBINT:MOV TMOD,#01H ;T0定时定时(dn sh),模式,模式1 MOV TL0,#0B0H ;T0计数初值计数初值 MOV TH0,#3CH SETB PT0 ;设;设T0为高优先级中断为高优先级中断 SETB TR0 ;启动;启动T0 SETB ET0 ;T0开中断开中断 MOV R7, #4

19、0 ;软件计数值;软件计数值 HERE1:JNB P3.2,HERE1 ;查询;查询INT0,为低为低(黑夜黑夜),等待等待T0中断中断 CLR ET0 ;为高;为高(白天白天),禁止,禁止T0中断中断 CLR TR0 ;关;关T0 CLR P1.7 ;熄灯;熄灯 RETI ;返回主程序;返回主程序定时定时(dn sh)器器0中断服务程序中断服务程序(由由000BH转来转来): T0INT:MOV TL0,#0B0H ;重赋;重赋T0初值初值 MOV TH0,#3CH DJNZ R7,EXIT ;软件计数为;软件计数为0吗吗? MOV R7, #40H ;计数已到,重赋初值;计数已到,重赋初值

20、 CPL P1.7 ;输出取反控制灯;输出取反控制灯“亮亮”或或“灭灭” EXIT:RETI ;中断返回;中断返回 END第18页/共62页第十八页,共62页。水位水位(shuwi)控制程序控制程序1. 水位控制原理水位控制原理2. 图图10-7中虚线表示允许水位变化的中虚线表示允许水位变化的上、下限。水塔安装固定的上、下限。水塔安装固定的3根金属根金属棒。其中,棒。其中,A棒处于下限水位,棒处于下限水位,A棒棒接接+5V电源,电源,C棒处于上限水位,棒处于上限水位,B棒在上、下限水位之间。棒在上、下限水位之间。B棒、棒、C棒棒各通过一个各通过一个(y )电阻与地相连。电阻与地相连。3. 单片

21、机控制电机转动单片机控制电机转动,电机带动水泵电机带动水泵供水供水时供水供水时,水位上升水位上升,当达到上限时当达到上限时,由于水导电,由于水导电,B、C棒连通棒连通+5V。b和和c两端均为两端均为”1”.这时,应停止电机这时,应停止电机工作,不再供水。工作,不再供水。4. 当水位降到下限时,当水位降到下限时,B、C棒都不能棒都不能与棒导通,与棒导通,b和和c两端均为两端均为”0”。启动电机供水启动电机供水.5. 当水位处于上下限之间,棒与当水位处于上下限之间,棒与A棒棒导通导通.棒不能与棒导通,棒不能与棒导通,b端为端为”1”,c端为端为“0”状态。应继续维状态。应继续维持原有的工作状态。持

22、原有的工作状态。第19页/共62页第十九页,共62页。2. 水位控制电路水位控制电路图图10-8 水塔水位控制电路水塔水位控制电路3. 信号输入与输出信号输入与输出 水位信号由水位信号由P1.0和和P1.1输入输入 由由P1.2端输出,去控制电机。端输出,去控制电机。 由由P1.3输出报警信号,驱动一输出报警信号,驱动一 只发光二极管进行只发光二极管进行(jnxng)光报光报警。警。C (P1.1)B (P1.0)操操 作作00电机运转电机运转01维持原状维持原状10故障报警故障报警11电机停转电机停转第20页/共62页第二十页,共62页。4. 控制程序主程序清单:控制程序主程序清单: ORG

23、 0030H LOOP: ORL R1,#03H ;为检查水位;为检查水位(shuwi)状态作准备状态作准备 MOV A,P1 JNB ACC.0,ONE ;P1.0=0则转则转 JB ACC.1, TWO ;P1.1=1则转则转 BACK: ACALL D10S ;延时;延时10 s AJMP LOOP ONE: JNB ACC.1,THREE ;P1.1=0则转则转 CLR 93H ;0P1.3,启动报警装置,启动报警装置 SETB 92H ;1P1.2,停止电机工作,停止电机工作 FOUR: SJMP FOUR THREE:CLR 92H ;启动电机;启动电机 AJMP BACK TWO

24、: SETB 92H ;停止电机工作;停止电机工作 AJMP BACK第21页/共62页第二十一页,共62页。延时子程序延时子程序D10 S(延时延时10 s): ORG 0100H D10S: MOV R3, #19H LOOP3:MOV R1, #85H LOOP1:MOV R2, #0FAH LOOP2:DJNZ R2,LOOP2 DJNZ R1,LOOP1 DJNZ R3,LOOP3 RET 第22页/共62页第二十二页,共62页。蜂鸣音报警蜂鸣音报警(bo jng)子程序子程序 压电式蜂鸣器约需压电式蜂鸣器约需10 mA的驱的驱动电流动电流 当当P1.0输出高电平输出高电平1时,压电

25、蜂时,压电蜂鸣器两端获得约鸣器两端获得约+5V电压而鸣叫;电压而鸣叫; 当当P1.0输出低电平输出低电平0时,压电时,压电蜂鸣器两引线间的直流电压降至蜂鸣器两引线间的直流电压降至接近于接近于0 V,蜂鸣器停止发声。,蜂鸣器停止发声。第23页/共62页第二十三页,共62页。连续连续(linx)鸣音鸣音30 ms的控制子程序清单:的控制子程序清单: SND:SETB P1.0 ;P1.0输出高电平,启动蜂鸣器输出高电平,启动蜂鸣器鸣叫鸣叫 MOV R7,#1EH ;延时;延时30 ms DL:MOV R6, #0F9H DL1:DJNZ R6,DL1 ;小循环延时;小循环延时1 ms DJNZ R

26、7,DL CLR P1.0 ;P1.0输出低电平,停止蜂鸣器输出低电平,停止蜂鸣器鸣叫鸣叫 RET第24页/共62页第二十四页,共62页。排序程序排序程序【例【例10-4】 将片内将片内RAM 50H59H中的数据按从小到大的顺序排序中的数据按从小到大的顺序排序 解:解: 这是一个这是一个(y )排序问题。排序问题。 按从小到大排列称升序排列,反之称降序排列。按从小到大排列称升序排列,反之称降序排列。 根据题意,排序程序在执行时,取前数与后数比较:根据题意,排序程序在执行时,取前数与后数比较: 如果前数小于后数,则继续顺序比较下去;如果前数小于后数,则继续顺序比较下去; 如果前数大于后数,则前

27、数和后数交换后再继续比较如果前数大于后数,则前数和后数交换后再继续比较下去。下去。 第一次循环将在最后单元中得到最大的数第一次循环将在最后单元中得到最大的数(冒泡法冒泡法)。 得到所有数据的升序排列需要经过多重循环。得到所有数据的升序排列需要经过多重循环。第25页/共62页第二十五页,共62页。程序清单如下:程序清单如下: CLR 00H ;清除交换标志位;清除交换标志位 QUE:MOV R3,#9H ;10个数据循环次数个数据循环次数 MOV R0,#50H ;数据存放区首址;数据存放区首址 MOV A,R0 ;取前数;取前数 L2:INC R0 MOV R2,A ;保存前数;保存前数 SU

28、BB A,R0 ;前数减后数;前数减后数 MOV A,R2 ;恢复前数;恢复前数 JC L1 ;顺序则继续比较;顺序则继续比较(bjio) SETB 00H ;逆序则建立标志位;逆序则建立标志位 XCH A,R0 ;前数与后数交换;前数与后数交换 DEC R0 XCH A,R0 INC R0 ;仍指向后数单元;仍指向后数单元 L1:MOV A, R0 DJNZ R3,L2 ;依次重复比较;依次重复比较(bjio) JB 00H,QUE ;交换后重新比较;交换后重新比较(bjio) RET第26页/共62页第二十六页,共62页。数字滤波程序数字滤波程序(chngx)u 前向通道中,必须消除被测信

29、号中的噪音和干扰。前向通道中,必须消除被测信号中的噪音和干扰。u 噪音有两大类:噪音有两大类: u 一类为周期性的。典型为一类为周期性的。典型为50 Hz的工频干扰。采用的工频干扰。采用硬件滤波电路硬件滤波电路(dinl)能有效地消除其影响。能有效地消除其影响。u 另一类为不规则随机性的,可以用数字滤波方法予以另一类为不规则随机性的,可以用数字滤波方法予以削弱或滤除。削弱或滤除。u 数字滤波,就是通过程序计算或判断来减少干扰在有数字滤波,就是通过程序计算或判断来减少干扰在有用信号中的比重,实际是一种程序滤波。用信号中的比重,实际是一种程序滤波。u 经常采用的中值法、去极值法可对采样信号进行数经

30、常采用的中值法、去极值法可对采样信号进行数字滤波,以消除常态干扰。字滤波,以消除常态干扰。第27页/共62页第二十七页,共62页。第28页/共62页第二十八页,共62页。程序清单:程序清单: FILT2: MOV A,R2 ;R2R3吗吗? CLR C SUBB A,R3 JC FILT21 MOV A,R2 ;R2R3时,交换时,交换(jiohun)R2和和R3 XCH A,R3 MOV R2,A FILT21:MOV A,R3 ;R3R4吗吗? CLR C SUBB A,R4 JC FILT22 ;R3R4时,排序结束时,排序结束 MOV A,R4 ;R3R4时,交换时,交换(jiohun

31、)R3和和R4 XCH A,R3 XCH A,R4 ;R3R2吗吗? CLR C SUBB A,R2 JNC FILT22 ;R3R2时,排序结束时,排序结束 MOV A,R2 ;R3R2时,以时,以R2为中值为中值 MOV R3,A ;中值在;中值在R3中中 FILT22:RET第29页/共62页第二十九页,共62页。指导思想:指导思想: 连续采样连续采样n次后累加求和,同时找出其中的最大值与最小值次后累加求和,同时找出其中的最大值与最小值,再从累加和中减去最大值和最小值,按,再从累加和中减去最大值和最小值,按n个采样值求平均,即可个采样值求平均,即可得到有效得到有效(yuxio)采样值。采

32、样值。 为使平均滤波算法简单,为使平均滤波算法简单,n-2 应为应为2、4、6、8或或16,故,故 n 常取常取4、6、8、10或或18。具体作法有两种:具体作法有两种: 对于快变参数,先连续采样对于快变参数,先连续采样n次,然后次,然后(rnhu)再处理,但要在再处理,但要在RAM中开辟中开辟出出n个数据的暂存区;个数据的暂存区; 对于慢变参数,可一边采样,一边处理,而不必在对于慢变参数,可一边采样,一边处理,而不必在RAM中开辟数据暂存区中开辟数据暂存区。 下面以下面以n4为例,即连续进行为例,即连续进行4次数据采样,去掉其中最大值和最小值,然次数据采样,去掉其中最大值和最小值,然后后(r

33、nhu)求剩下两个数据的平均值。求剩下两个数据的平均值。第30页/共62页第三十页,共62页。以以n4为例:为例: 连续进行连续进行4次数据采次数据采样,去掉其中最大值和样,去掉其中最大值和最小值,然后求剩下两最小值,然后求剩下两个数据的平均值。个数据的平均值。R2、R3存放存放(cnfng)最大值,最大值,R4、R5存放存放(cnfng)最小值,最小值,R6、R7存放存放(cnfng)累累加和及加和及 最后结果。最后结果。 连续采样不只限连续采样不只限4次次,可以进行任意次,这,可以进行任意次,这时,只须改变时,只须改变R0中的数中的数值。值。第31页/共62页第三十一页,共62页。程序清单

34、:程序清单: CLR A MOV R2,A ;0最大值寄存器最大值寄存器R2R3 MOV R3,A MOV R6,A ;0累加和寄存器累加和寄存器R6R7 MOV R7,A MOV R4,#3FH ;3FFFH最小值寄存器最小值寄存器R4R5 MOV R5,#0FFH MOV R0,#4H 第32页/共62页第三十二页,共62页。DAV1:LCALL RDXP ;读;读B,A(调采样子调采样子(yng zi)程序程序) MOV R1,A ;采样值低位暂存;采样值低位暂存R1,高位在,高位在B ADD A,R7 MOV R7,A ;低位加到;低位加到R7 MOV A,B ADDC A,R6 MO

35、V R6,A ;高位加到;高位加到R6,(R6R7)+(BA)R6R7 CLR C MOV A,R3 SUBB A,R1 MOV A,R2 SUBB A,B JNC DAV2 ;输入值;输入值(R2R3)? MOV A,R1 MOV R3,A MOV R2,B ;输入值;输入值R2R3第33页/共62页第三十三页,共62页。DAV2DAV2:CLR CCLR C MOV A MOV A,R1R1 SUBB A SUBB A,R5R5 MOV A MOV A,B B SUBB A SUBB A,R4R4 JNC DAV3 JNC DAV3 ;输入;输入(shr)(shr)值值(R4R5)?(R4

36、R5)? MOV A MOV A,R1R1 MOV R5 MOV R5,A A ;输入;输入(shr)(shr)值值R4R5R4R5 MOV R4 MOV R4,B B第34页/共62页第三十四页,共62页。DAV3:DJNZ R0,DAV1 ;n-1=0? CLR C MOV A ,R7 SUBB A ,R3 XCH A ,R6 SUBB A ,R2 XCH A ,R7 SUBB A ,R5 XCH A ,R6 SUBB A,R4 ;n个采样个采样(ci yn)值的累加和减去最大值和最小值,值的累加和减去最大值和最小值,n=4 CLR C RRC A XCH A ,R6 RRC A MOVC

37、 R7,A ;剩下数据求平均值;剩下数据求平均值(除除2) RET第35页/共62页第三十五页,共62页。标度标度(bio d)变换变换(工程量变换工程量变换) 生产现场的各种参数都有不同的数值和量纲,例如,温度生产现场的各种参数都有不同的数值和量纲,例如,温度单位用单位用,压力用,压力用Pa(帕帕),流量用,流量用ms。 这些参数经转换后,统一变为这些参数经转换后,统一变为0个数码,例如,个数码,例如,8位转换器输出的数码为位转换器输出的数码为0255。 这些数码虽然代表这些数码虽然代表(dibio)参数值的大小,但是并不表示参数值的大小,但是并不表示带有量纲的参数值,必须将其转换成有量纲的

38、数值,才能进行带有量纲的参数值,必须将其转换成有量纲的数值,才能进行显示和打印。这种转换称为标度变换或工程量转换。显示和打印。这种转换称为标度变换或工程量转换。第36页/共62页第三十六页,共62页。前提条件是参数值与转换结果前提条件是参数值与转换结果(ji gu)(采样值采样值)之间应呈线性关系之间应呈线性关系。l 当输入信号为当输入信号为0(即参数值起点即参数值起点(qdin)值值),输出值不为,输出值不为0时,标度变换公式为:时,标度变换公式为:l式中:式中: 参数量程起点参数量程起点(qdin)值,一次测量仪表的下限;值,一次测量仪表的下限;l 参数量程终点值,一次测量仪表的上限;参数

39、量程终点值,一次测量仪表的上限;l 参数测量值,实际测量值参数测量值,实际测量值(工程量工程量);l N量程起点量程起点(qdin)对应的对应的A/D转换后的值,仪表下限所对应的数字量;转换后的值,仪表下限所对应的数字量;l N量程终点对应的值,仪表上限所对应的数字量;量程终点对应的值,仪表上限所对应的数字量;l N测量值对应的测量值对应的A/D值值(采样值采样值),是经数字滤波后确定的采样值。,是经数字滤波后确定的采样值。 l 其中,、和对一个检测系统来说是常数。其中,、和对一个检测系统来说是常数。l 在参数量程起点在参数量程起点(输入信号为输入信号为0),值为,值为0(即即)。标度变换:。

40、标度变换:l 很多测量系统中,参数量程起点值很多测量系统中,参数量程起点值(即仪表下限值即仪表下限值)00,对应的,对应的0。可进一步简。可进一步简化为:化为:第37页/共62页第三十七页,共62页。例如例如:某测量点的温度量程为某测量点的温度量程为200400, 采用采用8位位A/D 转换器。转换器。那么,那么,0200 , 400 , 00, 255, 采样值为。采样值为。其标度其标度(bio d)变换公式变换公式为:为: 200 200 只要把这一算式编成程只要把这一算式编成程序,将转换后经数序,将转换后经数字滤波处理后的值代字滤波处理后的值代入,即可计算出温度的真入,即可计算出温度的真

41、实值。实值。第38页/共62页第三十八页,共62页。如果传感器输出特性是非线性的,可采用查表法进行标度如果传感器输出特性是非线性的,可采用查表法进行标度(bio d)变变换。换。例:用热敏电阻组成的惠斯顿电桥测温电路。例:用热敏电阻组成的惠斯顿电桥测温电路。 R1是热敏电阻是热敏电阻,当温度当温度T0时时,R1取值取值R1(T0) 电桥达到平衡。平衡条件为:电桥达到平衡。平衡条件为:R1(T0)24此时,电桥输出电压出此时,电桥输出电压出 V。 若温度改变若温度改变,则则R1的阻值改变的阻值改变,电桥平衡遭到破坏电桥平衡遭到破坏,产生产生(chnshng)输出电压出。输出电压出。通过测量电压出

42、值就能推得通过测量电压出值就能推得R1的阻值变化的阻值变化,测得环境温度的变化。测得环境温度的变化。第39页/共62页第三十九页,共62页。l 进行标度变换时,首先测量出温度检测进行标度变换时,首先测量出温度检测(jin c)回路的温度电压特性曲线回路的温度电压特性曲线,如图,如图10-16所示;所示;l 然后按照然后按照A/D转换器的位数转换器的位数(即分辨精确度即分辨精确度)及相应的电压值范围,从温度及相应的电压值范围,从温度电压特性曲线中查出各输出电压所对应的环境温度值,将其列成一张表,固电压特性曲线中查出各输出电压所对应的环境温度值,将其列成一张表,固化在化在Flash ROM中;中;

43、l 当采集到数字量后,查表就能准确地得出环境温度值,据此再去进行显当采集到数字量后,查表就能准确地得出环境温度值,据此再去进行显示和控制。示和控制。l 表表10-2 温度电压特性表温度电压特性表 (P296)第40页/共62页第四十页,共62页。10.4 代码转换代码转换(zhunhun)程程序序各种代码之间的转换各种代码之间的转换(zhunhun)常采用算法处理和查表方式。常采用算法处理和查表方式。【例【例10-5】单字节二翻十子程序。】单字节二翻十子程序。 将将00HFFH 内二进制数转换内二进制数转换(zhunhun)为为 BCD 数数(0256)。解:解: 入口:入口: (A)=二进制

44、数。二进制数。 出口出口:百、十和个位分别存入百、十和个位分别存入R0指出的两个指出的两个RAM单元单元程序清单:程序清单:BINBCD:MOV B,#100 DIV AB ;(A)=百位数百位数 MOV R0 ,A ;百位;百位BCD存入存入RAM INC R0 MOV A,#10 XCH A,B DIV AB ;(A)=十位数,十位数,(B)=个位数个位数 SWAP A ADD A,B ;(A)=压缩压缩BCD码码(十位个位十位个位) MOV R0 ,A ;存入;存入RAM RET第41页/共62页第四十一页,共62页。【例【例10-6】单字节十翻二子程序。】单字节十翻二子程序。 将将2位

45、位BCD数数(压缩为压缩为1字节字节)转换成二进制数。转换成二进制数。解:解: 将累加器将累加器A中的压缩中的压缩BCD码转换成二进制数,结果码转换成二进制数,结果(ji gu)仍仍在在A中。中。 方法是将方法是将A中的高位乘以中的高位乘以10,再加上,再加上A的低位字节。的低位字节。DTOB:MOV R2,A ;暂存;暂存 ANL A,#0F0H ;屏蔽低;屏蔽低4位位 SWAP A MOV B,#10 MUL AB ;高位乘以;高位乘以10 MOV R3,A ;暂存;暂存 MOV A,R2 ;取;取BCD数数 ANL A,#0FH ;取;取BCD数个位数个位 ADD A,R3 ;得转换结果

46、;得转换结果(ji gu) RET第42页/共62页第四十二页,共62页。【例【例10-7】一位十六进制数转换成】一位十六进制数转换成ASCII码。码。 解:解: 本程序本程序(chngx)中,由中,由R0指出十六进制数存放单指出十六进制数存放单元,元, 经转换后结果仍存于原处。经转换后结果仍存于原处。HEXASC1:MOV A,R0 ;取十六进制数;取十六进制数 ANL A,#0FH ;屏蔽高;屏蔽高4位位 ADD A, #03H ;修正偏移量;修正偏移量 MOVC A, A+PC ;查表,取;查表,取ASCII代码代码 XCH A,R0 ;存储;存储 INC R0 ;更新地址;更新地址 R

47、ETASCTAB: DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H第43页/共62页第四十三页,共62页。【例【例10-8】十六进制数的】十六进制数的ASCII代码转换成二进制数。代码转换成二进制数。解:解: 对于小于或等于对于小于或等于9的数的的数的ASCII代码,减去代码,减去30H得得4位二位二进制数;进制数; 对于大于对于大于 9的十六进制数的的十六进制数的ASCII代码,减去代码,减去37H得得4位二进制数。则正好是位二进制数。则正好是0AH0FH的结果。的结果。 程序以程序以R2作为入

48、口作为入口(r ku)和出口。程序清单如下:和出口。程序清单如下:ASCHEX:MOV A,R2 ;取操作数;取操作数 CLR C SUBB A,#30H ;09的转换的转换 MOV R2,A ;暂存结果;暂存结果 SUBB A,#0AH ;结果是否;结果是否9? JC SBIO ;9则转换正确,返回则转换正确,返回 XCH A,R2 SUBB A,#37H ;9,则减,则减37HSBIO: MOV R2,A ;存放结果;存放结果 RET第44页/共62页第四十四页,共62页。10.5 软件软件(run jin)抗干扰抗干扰l 干扰可以沿各种线路侵入,也可以以场的形式干扰可以沿各种线路侵入,也

49、可以以场的形式(高电压、大电流高电压、大电流、电火花等、电火花等)从空间侵入微机系统;电网中各种浪涌电压入侵,系从空间侵入微机系统;电网中各种浪涌电压入侵,系统的接地装置不良或不合理等,也是引入干扰的重要途径。统的接地装置不良或不合理等,也是引入干扰的重要途径。l 干扰对微机系统的影响有干扰对微机系统的影响有3个部位:个部位: 前向通道、前向通道、CPU内核及后向内核及后向通道。对前向通道的干扰会使输入的模拟信号失真,数字信号出错通道。对前向通道的干扰会使输入的模拟信号失真,数字信号出错。对这一部位的抗干扰,硬件方面。对这一部位的抗干扰,硬件方面(fngmin)可采用光电隔离、可采用光电隔离、

50、硬件滤波电路等措施,在软件方面硬件滤波电路等措施,在软件方面(fngmin)可采用前面讲的数可采用前面讲的数字滤波方法。字滤波方法。l 干扰可使微机系统内核三总线上的数字信号错乱,从而引发一系干扰可使微机系统内核三总线上的数字信号错乱,从而引发一系列无法预料的后果,形成一系列错误。列无法预料的后果,形成一系列错误。CPU得到错误的地址信号得到错误的地址信号后,引起程序计数器出错,使程序运行离开正常轨道,导致程序失后,引起程序计数器出错,使程序运行离开正常轨道,导致程序失控、飞跑或死循环,进而使后向通道的输出信号混乱,不能正常反控、飞跑或死循环,进而使后向通道的输出信号混乱,不能正常反映微机系统

51、的真实输出,从而导致一系列严重后果。映微机系统的真实输出,从而导致一系列严重后果。l 本节主要讨论软件抗干扰的问题,关于硬件的抗干扰措施这里不本节主要讨论软件抗干扰的问题,关于硬件的抗干扰措施这里不再论述。再论述。第45页/共62页第四十五页,共62页。软件软件(run jin)陷阱技术陷阱技术l 当当CPU受到干扰后,会将一些操作数当作指令码来执行,造成受到干扰后,会将一些操作数当作指令码来执行,造成(zo chn)程序执行混乱。这时,首先要尽快将程序纳入正轨程序执行混乱。这时,首先要尽快将程序纳入正轨(执行真正的指令序列执行真正的指令序列)。l 软件陷阱:用一条引导指令强行将捕获的程序引向

52、一个指定的软件陷阱:用一条引导指令强行将捕获的程序引向一个指定的地址,在那里有一段专门对程序出错进行处理的程序,以使程序地址,在那里有一段专门对程序出错进行处理的程序,以使程序按既定目标执行。按既定目标执行。l 真正的软件陷阱由真正的软件陷阱由3条指令构成:条指令构成:l NOPl NOPl LJMP ERRlERR:一段专门对程序出错进行处理的程序,以使程序:一段专门对程序出错进行处理的程序,以使程序l 按既定目标执行。按既定目标执行。第46页/共62页第四十六页,共62页。 在未使用的中在未使用的中断向量区设置陷断向量区设置陷阱阱(xinjng),就能及时捕捉到就能及时捕捉到错误中断。错误

53、中断。设:使用了设:使用了3个个中断:中断:INT0、T0和和T1, 可以按如左方可以按如左方式来设置中断向式来设置中断向量区。量区。第47页/共62页第四十七页,共62页。l 未编程未编程ROM,都维持都维持(0FFH),是一条单字节指令是一条单字节指令“MOV R7,A”,l 只要每隔一段设置一个陷阱,就能捕捉到弹飞的程序。只要每隔一段设置一个陷阱,就能捕捉到弹飞的程序。l 软件陷阱要指向出错处理过程软件陷阱要指向出错处理过程ERR才稳妥,才稳妥,l ERR可安排在可安排在0030H开始开始(kish)的地方。的地方。l 可以用可以用“00 00 20 00 30” 5字节作为陷阱来填充字

54、节作为陷阱来填充ROM中的未使用中的未使用l 空间。即指令:空间。即指令: NOP / NOP / LJMP 0030H,l 或隔一段设置一个陷阱或隔一段设置一个陷阱“02 00 30”,即指令:,即指令: LJMP 0030H,l 其它单元保持其它单元保持0FFH不变。不变。第48页/共62页第四十八页,共62页。 表格有两类:表格有两类: 一类是数据表格,供一类是数据表格,供“MOVC A,A+PC”指令指令或或“MOVC A,A+DPTR”指令使用;指令使用; 另一类是散转表格,供另一类是散转表格,供“JMP A+DPTR”指令使用,其内容为指令使用,其内容为一系列的一系列的3字节字节(

55、z ji)指令指令LJMP或两字节或两字节(z ji)指令指令AJMP。 只能在表格的最后安排只能在表格的最后安排5字节字节(z ji)陷阱陷阱 (NOP / NOP / LJMP ERR)。第49页/共62页第四十九页,共62页。 程序区的指令串中间常有一些断裂点,正常执行程序到不会程序区的指令串中间常有一些断裂点,正常执行程序到不会(b hu)继续往下执行了,这继续往下执行了,这类指令有类指令有LJMP、SJMP、AJMP、RET和和RETI。在这种地方安排陷阱后,就能有效地捕获。在这种地方安排陷阱后,就能有效地捕获到它,而又不会到它,而又不会(b hu)影响正常执行的程序流程。影响正常执

56、行的程序流程。例如:根据例如:根据A中内容的正、负、零情况进行三分支的程序中,软件陷阱的安置方式如下:中内容的正、负、零情况进行三分支的程序中,软件陷阱的安置方式如下: JNZ XYZ ;零处理;零处理 AJMP ABC ;断裂点;断裂点 NOP NOP LJMP ERR ;陷阱;陷阱 XYZ: JB ACC.7,VUW ;正处理;正处理 AJMP ABC ;断裂点;断裂点 NOP NOP LJMP ERR ;陷阱;陷阱 VUW: ;负处理;负处理 ABC: MOV A,R0 ;取结果;取结果 RET ;断裂点;断裂点 NOP NOP LJMP ERR ;陷阱;陷阱第50页/共62页第五十页,

57、共62页。软件软件(run jin)看门狗看门狗程序运行监视系统程序运行监视系统(xtng) (WATCHDOG)特性:特性: 本身能独立工作,基本上不依赖于本身能独立工作,基本上不依赖于CPU; CPU在一个固定的时间间隔内和该系统在一个固定的时间间隔内和该系统(xtng)打一打一次交道次交道 (喂一次狗喂一次狗),以表明系统,以表明系统(xtng)目前尚正常;目前尚正常; 当当CPU陷入死循环后,能及时发觉并使系统陷入死循环后,能及时发觉并使系统(xtng)复位。复位。第51页/共62页第五十一页,共62页。 在在8096系列单片机和增强型系列单片机和增强型89C51系列单片机芯片内已经内

58、嵌系列单片机芯片内已经内嵌了程序运行监视系统,使用起来很方便。了程序运行监视系统,使用起来很方便。 在普通型在普通型51系列单片机中,必须由用户自己建立。如果要实现系列单片机中,必须由用户自己建立。如果要实现WATCHDOG的真正目标,该系统还必须包括完全独立于的真正目标,该系统还必须包括完全独立于CPU之外之外的硬件电路,有时为了简化硬件电路,也可以采用纯软件的的硬件电路,有时为了简化硬件电路,也可以采用纯软件的WATCHDOG系统。软件系统。软件WATCHDOG是一个比较是一个比较(bjio)好的补救好的补救措施,只是其可靠性稍差一些。措施,只是其可靠性稍差一些。第52页/共62页第五十二

59、页,共62页。纯软件纯软件(run jin)的的WATCHDOG系统系统l 当系统陷入当系统陷入(xinr)死循环后,只有比它更高级的中断才能夺走对死循环后,只有比它更高级的中断才能夺走对CPU的控制。为此,用一个定时器来作的控制。为此,用一个定时器来作WATCHDOG,将它的溢出中断,将它的溢出中断设定为高优先级中断,其他中断均设为低优先级中断。设定为高优先级中断,其他中断均设为低优先级中断。l 例如:用例如:用T0,作定时约为,作定时约为16 ms,在初始化时建,在初始化时建WATCHDOG: l MOV TMOD, #01H ;设置;设置T0为为16位定时器位定时器l SETB ET0

60、;允许;允许(ynx)T0中断中断l SETB PT0 ;设置;设置T0为高级中断为高级中断l MOV TH0, #0E0H ;定时约;定时约16 ms(6 MHz晶振晶振)l SETB TR0 ;启动;启动T0l SETB EA ;开中断;开中断第53页/共62页第五十三页,共62页。l WATCHDOG启动以后,工作程序必须经常启动以后,工作程序必须经常(jngchng)“喂它喂它”,执行一条,执行一条l “MOV TH0,#0E0H”指令,且每两次间隔不大于指令,且每两次间隔不大于16 ms (如可以每如可以每l 10 ms“喂喂”一次一次)。l 当程序陷入死循环后,当程序陷入死循环后,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论