单片机模块二 单片机指令系统及汇编语言程序设计.ppt

单片机模块二 单片机指令系统及汇编语言程序设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
任务2 BCD码转换为七段码的程序设计 模块二 任务实施二、BCD码转换为七段码的程序设计与仿真 任务分析 本任务要进行多个压缩BCD码转换,而每个压缩BCD码转换的 过程是相同的,所以采用循环程序结构。 BCD码转换为七段码采用查表方法实现,所以本设计任务的关 键指令为查表指令MOVC A,@A+DPTR或MOVC A,@A+PC 指令。 由于本设计任务中BCD码为压缩BCD码,所以要将两个BCD码 先分开,然后再分别用查表指令进行转换。 (1)为各变量赋初值 由于采用循环程序结构,应给循环变量赋初值,用寄存器R2作 循环变量,循环变量初值为压缩BCD码的个数(存于40H单元 中),用MOV R2,40H指令给循环变量赋初值。 任务2 BCD码转换为七段码的程序设计 模块二 用R1作取压缩BCD码的地址指针(@R1),用R0作存七段码的地址指针(@R0),R1的初值为50H,RO的初值为60H,用MOV Rl,#50H和MOV RO,#00360H指令给R1和R0赋初值。 用MOV A,@R1指令从BCD码存储块中取出一个压缩BCD码存放于A中,将取出的压缩BCD码先暂存于一个寄存器中(用R3来暂存,用MOV R3,A指令实现) ,否则在拆分时将丢失一个BCD码数据。 (2)取高位BCD码 取出高位BCD码时,用立即数F0H同A进行逻辑“与”运算,因立即数的高4位为1,低4位为0,所以相“与”的结果就将A中的低4位屏蔽掉,取出了高4位(即高位BCD码),用ANL A,#0F0H指令来实现;同样用ANL A,#0FH指令可实现取出低位BCD码。 任务2 BCD码转换为七段码的程序设计 模块二 设一个压缩BCD码为X4X3X2X1Y4Y3Y2Y1,其中X4X3X2X1为高位BCD码,Y4Y3Y2Y1为低位BCD码,将一个压缩BCD码拆分的逻辑运算如下: 由于取出的高位BCD码存于A中的高4位,为便于用查表指令进行转换,应先用SWAP A指令将其交换到低4位。 (3)应用查表指令 然后用16位数据传送指令MOV DPTR,#TAB (TAB 为七段码数据表的首地址)将七段码数据表的首地址送给DPTR寄存器,再用查表指令MOVC A,@A+DPTR取得BCD码对应的七段码; 任务1 二进制数转换为BCD码程序设计 模块二 表2-25 指令执行后目的操作数的值 例2:已知A=15H,B=04H,问:执行DIV AB指令后,A和B的 值,标志位CY、OV和P的值。 将A和B转换成二进制的形式相除:结果:A=05H,B=01H, CY=0,OV=0,P=0 任务1 二进制数转换为BCD码程序设计 模块二 例3:已知A=13H,(20H)=3FH,R5=2A H,R0=30H,(30H)=10H,R1=40H,(40H)=D5 H,分别执行下列指令,分析如表2-26所示各条指令执行结果。 例4:已知A=3FH,B=80H,R3=4AH,(20H)=C6H,分析如表2-27所示分别执行下列指令后,目的操作数的值。 任务1 二进制数转换为BCD码程序设计 模块二 表2-26 各条指令执行结果 表2-27 执行下列指令后目的操作数的值 任务1 二进制数转换为BCD码程序设计 模块二 四、任务准备 1.电工操作台两人一台。 2.装配有MedWin V3.0软件或伟福6000软件电脑及下载设备两人一套。 五、任务实施 1.任务分析: 如图2-30所示为8位二进制数转换为BCD码程序流程图。 任务1 二进制数转换为BCD码程序设计 模块二 图2-30 二进制数转换为BCD码程序流程图 任务1 二进制数转换为BCD码程序设计 模块二 要从8位二进制数中分离出百位、十位和个位数,采用的方法是: 将要转换的8位二进制数除以100,商就是其百位数;将其余数再除以10,此时的商就是其十位数,此时的余数就是其个位数;8位二进制数÷100=商一(百位) …余数一,余数一÷10=商二(十位) …余数二(个位)。 本程序的关键指令是除法指令,在51系列单片机中只有一条除法指令DIV AB指令,其中累加器A中为被除数,寄存器B中为除数,除法运算结果的商存于A中,余数存于B中。 (2)程序设计 本设计任务要求将十位和个位存放于同一个存储单元32H中,所以应将十位和个位合并后,再用MOV指令将其存放于32H单元。 因一个BCD码为4位二进制数,所以一个8位存储单元可存放两个BCD码。 因第二次除法运算结果中的商(十位BCD码)存于A中,余数(个位BCD码)存于B中,十位和个位均为1个BCD码,占4位二进制位,所以A和B中的高4位此时均为0000。 任务1 二进制数转换为BCD码程序设计

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档