第14章MCS51程序设计及实用子程序.ppt
《第14章MCS51程序设计及实用子程序.ppt》由会员分享,可在线阅读,更多相关《第14章MCS51程序设计及实用子程序.ppt(47页珍藏版)》请在第壹文秘上搜索。
1、第十四章第十四章 MCS-51MCS-51程序设计及实用子程序程序设计及实用子程序14.1 14.1 查表程序设计查表程序设计14.2 14.2 数据极值查找和数据排序数据极值查找和数据排序14.3 14.3 散转程序设计散转程序设计14.4 14.4 循环程序设计循环程序设计14.5 14.5 定点数运算程序设计定点数运算程序设计14.6 14.6 数据的拆拼数据的拆拼14.7 14.7 码制转换码制转换14.1 查表程序设计 查表程序查表程序是一种常用的非数值运算程序,应用广泛。是一种常用的非数值运算程序,应用广泛。方法:方法:该方法把事先计算的结果或实验数据按一定顺序编该方法把事先计算的
2、结果或实验数据按一定顺序编成表格,存于程序存储器内,然后根据输入参数值,从表成表格,存于程序存储器内,然后根据输入参数值,从表中取得结果。中取得结果。用途:用途:n复杂代码转换显示复杂代码转换显示n数据补偿:传感器补偿数据补偿:传感器补偿n复杂函数计算:复杂函数计算:Y=SIN(X)Y=SIN(X)特点:特点:具有具有程序简单、执行速度快、精度高程序简单、执行速度快、精度高等优点,而这等优点,而这正是单片机在测控场合或智能化仪表中所需要的。正是单片机在测控场合或智能化仪表中所需要的。一、以DPTR为基地址的查表程序 MOVCMOVCA A,A+DPTRA+DPTR操作步骤:操作步骤:n初始化初
3、始化DPTR:将表格的首地址放入将表格的首地址放入DPTR中,中,作为基地址。作为基地址。n初始化初始化A:A中应该放所要查询的数据在表格中中应该放所要查询的数据在表格中的顺序号。的顺序号。n执行结果执行结果:在执行该指令后,在执行该指令后,A中存放的是在表中存放的是在表格中查到的数据。格中查到的数据。n在查询表格时,若所要查询的数据是在查询表格时,若所要查询的数据是双字节双字节的,的,则在初始化则在初始化A中的数应为顺序号的中的数应为顺序号的2倍,且应执行倍,且应执行两次本指令。两次本指令。n对于单字节表格而言,表项的个数应不大于对于单字节表格而言,表项的个数应不大于256个,个,若大于若大
4、于256时,则应适当修改时,则应适当修改DPTR的值。的值。n表格的存放位置。表格可以设在表格的存放位置。表格可以设在64K程存的任何程存的任何位置。位置。二、以PC为基地址的查表指令 MOVC AMOVC A,A+PCA+PC操作步骤:操作步骤:n用传送指令把所查数据在表格中顺序号送入累加器用传送指令把所查数据在表格中顺序号送入累加器A;n使用使用ADD A,#data指令对累加器指令对累加器A进行修正,进行修正,data值由值由下式确定:下式确定:data=数据表格首地址数据表格首地址PC当前值当前值 实际上实际上data值等于查表指令和数据表格之间的字节数;值等于查表指令和数据表格之间的
5、字节数;n执行指令完成查表,结果存放在执行指令完成查表,结果存放在A中。中。n对于双字节表格,其处理方法与以对于双字节表格,其处理方法与以DPTR为基地为基地址的情况相同。址的情况相同。n对于单字节表格而言,其项数应不大于对于单字节表格而言,其项数应不大于256。n对于双字节表格而言,其项数应不大于对于双字节表格而言,其项数应不大于128。三、两种方式的比较nPC仅能对所谓本地表格操作,即表格项数不得大仅能对所谓本地表格操作,即表格项数不得大于于256,且偏移量可能随程序的变化而变化,计算,且偏移量可能随程序的变化而变化,计算较为麻烦,其优点是少用寄存器。较为麻烦,其优点是少用寄存器。nDPT
6、R使用起来非常灵活,表项数不受限制,且表使用起来非常灵活,表项数不受限制,且表格可以放在格可以放在64K的任意地方。的任意地方。规则表规则表 X X的值为:的值为:0 0,1 1,2 2,3 3,n n Y Y的值为:的值为:y0,y1,y2,y3y0,y1,y2,y3,ynyn y0,y1,y0,y1,。ynyn的字节长度一样,这种表格比的字节长度一样,这种表格比较简单,可由较简单,可由y y值按顺序构成表格。值按顺序构成表格。查表方法:查表方法:MOVCMOVC A A,A+PCA+PCMOVCMOVC A A,A+DPTRA+DPTR四、表格形式 例:例:设有一个巡回检测报警装置,需对设
7、有一个巡回检测报警装置,需对1616路输入值进行比路输入值进行比较,当每一路输入值等于或超过该路的报警值时,实现报警。较,当每一路输入值等于或超过该路的报警值时,实现报警。设设XiXi为路数,查表时为路数,查表时XiXi按按0,1,2,0,1,2,15(i=15),15(i=15)取数,表中取数,表中报警值是报警值是2 2字节数,依字节数,依XiXi顺序列成表格放在顺序列成表格放在TABTAB中。进入查表程中。进入查表程序前,路数序前,路数XiXi放在放在R2R2中,其输入值存于中,其输入值存于(R1R0)(R1R0)当中,查表结果当中,查表结果放在放在(R4R3)(R4R3)中。若需报警,将
8、中。若需报警,将P1.0P1.0口置口置1 1,否则清,否则清0 0。报警值的单元地址报警值的单元地址=表格首地址表格首地址+(XiXi*2 2)TB1:TB1:MOVMOV A A,R2R2ADDADD A A,R2R2;A A路数路数XiXi*2 2MOVMOV R4 R4,A A;保存;保存ADDADD A A,#06H#06H;MOVCMOVC A A,A+PCA+PC;1 1XCHXCH A A,R4R4;1 1ADDADD A A,#03H#03H;2 2MOVCMOVC A A,A+PC A+PC;1 1 MOVMOV R3 R3,A A;1 1RETRET;1 1TAB1:TA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 14 MCS51 程序设计 实用 子程序