单片机课件例题_第1页
单片机课件例题_第2页
单片机课件例题_第3页
单片机课件例题_第4页
单片机课件例题_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

本文格式为Word版,下载可任意编辑——单片机课件例题:已知ROM中0302H单元有一个数x,现要把它送到累加器A中,试编程。MOVDPTR,#0300H;马上数送DPTRMOVA,#02H;马上数送累加器A

MOVCA,@A+DPTR;从ROM的0302单元取数送A试编出把30h和40h单元内容进行交换。MOVA,30H;(30h)→AMOV30H,40H;(40h)→30hMOV40H,A;A→40h将20H开始的32个单元全部清0。MOVA,#00H;A00H

MOVR0,#20H;R020H,以R0作地址指针MOVR7,#20H;R7计数,R732LP1:MOV@R0,A;将指示的单元清0INCR0

DJNZR7,LP1;R7R7-1,若R7不为0则转LP1重复将外部RAM的8000H单元的内容传送至A中。MOVDPTR,#8000HMOA,@DPTR

有一输入设备,其端口地址为2040H,该端口数据为41H,将此值存入片内RAM的20H单元中。

MOVDPTR,#2040H

MOA,@DPTRMOV20H,A

执行结果为:片内20H单元的内容为41H。

已知外部RAM的88H单元有一个数x,试编程将x送外部RAM的1818H单元。

:外部RAM中的数据是不能直接传送的,因此必需使用两次MO指令完成此操作。ORG2000HMOVR0,#88H;为8位指针赋值MOVDPTR,#1818H;为16位指针赋值MOA,@R0;取x到累加器AMO@DPTR,A;x送RAM的1818h单元

例7:执行以下程序后,A中的内容为多少?该程序是一个查表程序。ORG2100H;各指令的地址为MOVA,#09H;2100HMOVCA,@A+PC;2102HRET;2103HORG210AH

TAB:DB0C0H;210AH

DB0F9H;210BHDB0A4H;210CHDB0B0H;210DH运行结果:A=0A4H

例8:已知,片外RAM20h单元、内部RAM20h单元分别有数x和y,试编程互将两数相交

换。movR1,#20h;指针赋初值moa,@R1;x→axcha,@R1;交换a?(20h),y→amo@R1,a;y→(20h)片外RAM

例9将A中存放的2位BCD码转换为ASCⅡ码,并送到50H(高位BCD),51H(低位BCD)

单元中。解:MOVB,AANLA,#0FHADDA,#30HMOV51H,AMOVA,BSWAPA

ANLA,#OFHADDA,#30HMOV50H,ARET

例10设累加器A中为16进制表示(00H~09H)的BCD码。试编程将其转换为ASC码,

并将其送到50H地址单元中。这是一个数值转换程序。解:首先建立ASC码表:

ORG2100H

TABASC:DB30H,31H,32H,33H,34H,35H,36H,37H,DB38H,39HORG210FHMOVR0,A

MOVDPTR,#TABASCMOVCA,@A+DPTRMOV50h,ARET

例11两个无符号16位数分别存于30H和32H开始的单元中。设(30H)=AFH,(31H)=0AH,

(32H)=90H,(33H)=2FH,高字节在高地址单元中,低字节在低地址单元中。试计算两数之和并存入32H开始的单元中。并说明PSW中相关位的内容。MOVR0,#32H;R0指向32HMOVA,30H

ADDA,@R0;计算低字节之和

MOV@R0,A;低字节和存入32H单元MOVA,3lH

INCR0;R0指向33H

ADDCA,@R0;计算高字节之和

MOV@R0,A;高字节和存入33H单元RET为先计算低字节和:

结果:Cy为l,A中内容为3FH,OV为1,Ac为0再计算高字节和

结果:Cy为0,A中内容为3AH,OV为0,Ac为1

最终结果:(32H)=3FH,(33H)=3AH,OV为0,Cy为0,Ac为1。

例12已知M1、M2单元中存有两个16位无符号数x1、x2(低位在前)。试写出x1+x2,并

将结果放入M1、M1+1单元(低8位在M1单元)。设两数之和不会超过16位(65535)。:

MOVR0,#M1;x1指针赋初值MOVR1,#M2;x2指针赋初值MOVA,@R0;取x1低8位送AADDA,@R1;x1与x2低8位相加MOV@R0,a;低8位和送m1单元INCR0INCR1;修改指针

MOVA,@R0;取x1的高8位送A

ADDCA,@R1;x1与x2的高8位和Cy相加MOV@R0,A;结果送M1+1单元

例13.已知:在M1、M2中分别存有被减数91H和减数36H(BCD码)。试编程求91H-36H并将结果存入M3单元。:

1)算法:91-36=91+(100-36)=91+(9A-36)2)编程:CLRC;清除CyMOVA,#9AH;BCD码的模100送ASUBBA,M2;计算减数的补码(结果在A中)ADDA,M1;被减数+减数的补码(结果在A中)DAA;十进制调整MOVM3,A;结果送M3单元CLRC;清除进位位(不要Cy)

已知:两个8位无符号乘数分别放在30H和31H单元中,试编程令它们相乘,并

把积的低8位放入32H单元和积的高8位放入33H单元的程序。

ORG0100H

MOVR0,#30H;第一个乘数地址放入R0MOVA,@R0;第一个乘数放入AINCR0;修改乘数地址MOVB,@R0;其次个乘数放入B

MULAB;A乘以B,放入(BA)中INCR0;修改目标单元地址MOV@R0,A;积的低8位送32H单元INCR0;修改目标单元地址MOV@R0,B;积的低8位送33H单元

SJMP$;停机END

例15已知:M1单元有一个9的ASCII码39H,试编程将其变为BCD码。解:1、使用ANLdirect,#data的指令:ANLM1,#0FH解:2、使用ANLA,#data指令。MOVA,M1ANLA,#0FHMOVM1,A

例16设累加器(A)=0AAH,(P1)=0FFH。试编程将累加器A中的低四位送P1口的低四位,而

P1口的高四位不变。解:MOVR0,A;累加器A中的数据暂存ANLA,#0FH;屏蔽A的高4位ANLP1,#0F0H;屏蔽P1口的低4位ORLP1,A;在P1口组装MOVA,R0;恢复累加器A的数据

例17已知:外部RAM的30H单元中有一个数AAH,现要将其高4位不变,低4位取反,

试编程。

解1,利用MOA,@Ri指令:MOVR0,#30H10101010

MOA,@R0⊕00001111

XRLA,#0FH10100101MO@R0,A

解2,利用MOA,@DPTRMOVDPTR,#0030HMOA,@DPTRXRLA,#0FHMO@DPTR,A

例18已知30H单元中有一个数x,写出对它求补的程序。MOVA,30HCPLAINCAMOV30H,A

例19:试将00H位和7FH位中的内容互换。:两个位互换必需找一个位作为缓冲位。MOVC,00HMOV01H,CMOVC,7FHMOV00H,CMOVC,01HMOV7FH,C

比较内部RAM中30H和40H中的两个无符号数的大小。并将大数存入50H,小数存入51H单元中。若两数相等则将片内RAM的127位置“l〞。

MOVA,30H

CJNEA,40H,Q1;不相等转

SETB127;两数相等时位127置1RET

Q1:JCQ2;(Cy)=l,(30H)<(40H)转MOV50H,A;(30H)>(40H)MOV51H,40HRET

Q2:MOV50H,40HMOV51H,ARET

例21已知:在20H单元中有一个数X,若X50H则转向LOOP3,试编程。:MOVA,20H;X→ACJNEA,#50H,COMP;(A)≠50H时转COMPSJMPLOOP2;(A)=50H时转LOOP2COMP:JNCLOOP3;(A)>50H时转LOOP3LOOP1:

温馨提示

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

评论

0/150

提交评论