单片机实验报告_第1页
单片机实验报告_第2页
单片机实验报告_第3页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机实验报告实验一数据传送(RAM- XRAM)、实验目的熟悉星研集成环境软件或熟悉 Keil C51集成环境软件的使用方法。熟悉MCS51汇编指令,能自己编写简单的程序,掌握数据传输的方法。、实验内容1、熟悉星研集成环境软件或熟悉Keil C51集成环境软件的安装和使用方法。2、编写程序,实现内外部数据段的传送、校验。三、程序框图数据传送程序框图四、实验步骤在内部RAM30H3FH中输入数据;使用单步、断点方式调试程序,检测外部数据RAM的1000H100FH中的内容。熟悉查看特殊功能存放器、内部数据RAM外部数据空间的各种方法。五、程序清单;将内部RAMAddressl开始的16个字节送

2、到外部 RAM从 Address2开始的单元里,再作比较。Address1DATA30HAddress2XDATA1000HORG0000HLJMPSTARORG0100HSTAR:MOVSP,#60HMOVR0,#Address1MOVDPTR,#Address2MOVR7,#10HSTAR1:MOVA,R0; 传送MOVXDPTR,AINCR0INCDPTRDJNZR7,STAR1MOVR0,#Address1MOVDPTR,#Address2MOVR7,#10HSTAR2:MOVB,R0; 比拟MOVXA,DPTRCJNEA,B,STAR3INCR0INCDPTRDJNZR7,STAR2

3、SJMP$; 传送正确STAR3:SJMP$; 传送错误END3 cj I 实验二 双字节BCD码十进制数加法一、实验目的熟悉51汇编指令,学会使用星研集成环境软件,能自己编写简单的程序, 熟悉BCD码,了解如何调用系统提供的子程序。、实验内容从键盘上输入4位被加数、加数,实现双字节BCD码四位数的加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能存放器、内部数据RAM外部数据空间的各种方法。三、实验框图开始双字节BCD廿法程序框图四、实验步骤1、连线说明:D3区:CLKB2区:2MD3区:CSA3区:CS5D3区:A0

4、A3区:A02、在F4区的键盘上输入 4位被加数、加数3、结果显示在F4区的数码管上五、程序清单BufferDATA30H;8 字节显示缓冲区F1BIT0D1HJORG0000HLJMPSTARTORG0100HSTART:MOVSP,#60HCLRF1; 先去除显示,再接收键输入START1:MOVR0,#bufferMOVA,#4; 按键次数LCALLGetBCDKey; 得到双字节十进制数 被加数 SETBF1; 接收到第一个键,才去除显示MOVR0,#buffer+4MOVA,#4; 按键次数LCALLGetBCDKey; 得到双字节十进制数 加数 MOVA,buffer+1ADDA,

5、buffer+5DAAMOVbuffer+5,AMOVA,bufferADDCA,buffer+4DAAMOVbuffer+4,ACLRARLCADisplay:PUSHACC; 显示结果MOVR0,#bufferMOVA,buffer+5; 低位ACALLB1toB2;压缩BCD码转换成非压缩MOVA,buffer+4; 高位ACALLB1toB2POPACC; 进位ACALLB1toB2MOVR0,#10H; 最高二位消隐INCR0MOVR0,#10HMOVR0,#buffer+5MOVR7,#5ACALLBlackDisplay; 将高位 0 消隐MOVR0,#bufferLCALLDi

6、splay8SJMPSTART1BCD码转换成二个字节非压缩BCD码PUSHACCANLA,#0FHMOVR0,AINCR0POPACCANLA,#0F0HSWAPAMOVR0,AINCR0; 将一个字节压缩B1toB2:BCD码RETBlackDisplay:MOVA,R0;将高位0消隐JNZExitMOVA,#10HMOVR0,ADECRODJNZR7,BlackDisplayExit:RETEND实验三 双字节BCD马十进制数减法一、实验目的熟悉51汇编指令,学会使用星研集成环境软件,掌握汇编语言的设计和调试方法。能看懂程序流程框图,能自己设计程序,熟悉BCD码、补码,了解如何调用系统提

7、供的子程序。、实验内容从键盘上输入4位被减数、减数,实现双字节BCD码四位数的减法,结果显示在数码 管上;进一步熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能存放器、内部数据RAM外部数据空间的各种方法。三、程序框图开始双字节十进制减法程序框图四、实验步骤1、连线说明:D3区CLKB2区:2MD3区CSA3区:CS5D3区A0A3区:A02、在F4区的键盘上输入4位被减数、减数3、结果显示在F4区的数码管上五、程序清单EXTRNC0DE(Display8, GetBCDKey)BufferDATA30H;8字节显示缓冲区F1BIT0D1H ;

8、ORG0000HLJMPSTARTORG0100HSTART:MOVSP,#60HCLRF1; 先去除显示,再接收键输入START1:MOVR0,#bufferMOVA,#4; 按键次数LCALLGetBCDKey; 得到双字节十进制数 被减数 SETBF1; 接收到第一个键,才去除显示MOVR0,#buffer+4MOVA,#4; 按键次数LCALLGetBCDKey; 得到双字节十进制数 减数 MOVA,#9AHCLRCSUBBA,buffer+5MOVbuffer+5,AMOVA,#99HCLRCSUBBA,buffer+4MOVbuffer+4,A; 减数取补MOVA,buffer+1

9、ADDA,buffer+5DAAMOVbuffer+5,AMOVA,bufferADDCA,buffer+4DAAMOVbuffer+4,AMOVF0,C; 借位标志JCDisplayMOVA,#9AHSUBBA,buffer+5MOVbuffer+5,AMOVA,#99HSUBBA,buffer+4XCHA,buffer+5ADDA,#00HDAAXCHA,buffer+5ADDCA,#00HDAAMOVbuffer+4,ADisplay:MOVR0,#buffer; 显示结果MOVA,buffer+5; 低位ACALLB1toB2;压缩BCD码转换成非压缩 BCD码MOVA,buffer+

10、4; 高位ACALLB1toB2MOVR0,#10H; 最高四位消隐INCR0MOVR0,#10HINCR0MOVR0,#10HINCR0MOVR0,#10HMOVR0,#buffer+3MOVR7,#3ACALLBlackDisplay; 将高位 0 消隐MOVR0,#bufferLCALLDisplay8SJMPSTART1BlackDisplay:MOVA,R0; 将高位 0 消隐JNZExitMOVA,#10HMOVR0,ADECR0DJNZR7,BlackDisplayExit:JBF0,Exit1INCR0MOVR0,#11H; 负数标志Exit1:RETB1toB2:ANLA,#

11、0FHMOVR0,AINCR0POPACCANLA,#0F0HPUSHAR0,AROA,R0ExitA,#10HR0,AR0R7,BlackDisplaySWAPMOVINCRETBlackDisplay:MOVJNZMOVMOVDECDJNZExit:RETEND实验四四字节十六进制数转十进制数、实验目的进一步熟悉51汇编指令,了解十六进制数转十进制数的方法。、实验内容从键盘上输入8位十六进制数,实现四字节十六进制数转 8位十进制数,并在数码管上无法正确显示。三、程序框图开始初始化堆栈I设定先清LED再接收键输入标志r通过键盘获得4字节十 六进制数!置位接收到第一个键后,才去除LED标志_L

12、十六进制转十进制子程序*显示主程序开始XR4,R5,R6,R7用于 存放压缩BC码 32-B循环次数CLR C1四字节十六进制数带进 位左移一位TR4R5R6R7X2+ 位位CR4R5R6R7同时 进行十进制调整IB-仁0?Y返回十六进制转十进制子程序四、实验步骤1、连线说明:D3区CLKB2区:2MD3区CSA3区:CS5D3区A0A3区:A02、在F4区的键盘上输入 8位十六进制数3、结果显示在F4区的数码管上五、程序清单EXTRNCODE(Display8, GetKey)BufferDATA30H;8字节显示缓冲区F1BIT0D1HORG0000HLJMPSTARTORG0100HST

13、ART:MOVSP,#60HCLRF1; 先去除显示,再接收键输入START1:MOVR0,#bufferMOVA,#8; 按键次数LCALLGetKey; 得到 4 字节十六进制数SETBF1; 接收到第一个键后,才去除显示MOVR0,bufferMOVR1,buffer+1MOVR2,buffer+2MOVR3,buffer+3ACALLB4toD4; 转换成十进制数Display:MOVR0,#buffer; 显示结果MOVA,R7; 低位ACALLB1toB2;压缩BCD码转换成非压缩BCD码MOVA,R6ACALLB1toB2MOVA, R5ACALLB1toB2MOVA,R4; 高

14、位ACALLB1toB2MOVR0,#buffer+7MOVR7,#7ACALLBlackDisplay; 将高位 0 消隐MOVR0,#bufferLCALLDisplay8SJMPSTART1;四字节十六进制数转十进制数:R0R1R2R为十六进制,R4R5R6R为压缩BCD码B4toD4:LOOP:CLRAMOVR4,AMOVR5,AMOVR6,AMOVR7,AMOVB,#32CLRCMOVA,R3RLCAMOVR3,AMOVA,R2RLCAMOVR2,AMOVA,R1RLCAMOVR1,AMOVA,R0RLCAMOVR0,AMOVA,R7ADDCA,R7DAAMOVR7,AMOVA,R6

15、ADDCA,R6DAAMOVR6,AMOVA,R5ADDCA,R5DAAMOVR5,AMOVA,R4ADDCA,R4DAAMOVR4,ADJNZB,LOOPRETB1toB2:PUSHACCANLA,#0FHMOVR0,AINCR0POPACCANLA,#0F0HSWAPAMOVR0,AINCR0RETBlackDisplay:MOVA,R0; 将高位 0 消隐JNZExitMOVA,#10HMOVR0,ADECRODJNZR7,BlackDisplayExit:RETENDaaABB.aBftOOC实验五 双字节BCD马十进制数乘法一、实验目的进一步熟悉51汇编指令,掌握汇编语言的设计和调试

16、方法。根据程序流程图,自己设 计程序,了解如何调用系统提供的子程序。二、实验内容从键盘上输入4位被乘数、乘数,实现四位十进制数的乘法,结果显示在数码管上。三、程序框图双字节BC乘法程序框图(RO)(R1)X (R2)(R3)(R3R1H)(R3R1L)(R3R0H)(R3R0L) (R2R1H)(R2R1L)+ (R2R0H)(R2R0L)R0 R1 R2 R3双字节十六进制乘法示意图四、实验步骤1、连线说明:D3区CLKB2区:2MD3区CSA3区:CS5D3区A0A3区:A02、在F4区的键盘上输入 4位被乘数、乘数3、结果显示在F4区的数码管上五、程序清单C0DE(Display8, G

17、etBCDKey)BufferDATA30HF1BIT0D1HORG0000HLJMPSTARTORG0100HEXTRN;8字节显示缓冲区START:MOVSP,#60HCLRF1; 先去除显示,再接收键输入START1:MOVR0,#bufferMOVA,#4; 按键次数LCALLGetBCDKey; 得到双字节十进制数 被乘数 MOVR0,#bufferACALLD4toB2; 转换成二进制数PUSH02HPUSH03HSETBF1; 接收到第一个键,才去除显示MOVR0,#bufferMOVA,#4; 按键次数LCALLGetBCDKey; 得到双字节十进制数 乘数 MOVR0,#bu

18、fferACALLD4toB2; 转换成二进制数POP01HPOP00HACALLWordMul;(R0R1)*(R2R3)=R0R1R2R3ACALLB4toD4; 转换成十进制数Display:MOVR0,#buffer; 显示结果MOVA,R7; 低位ACALLB1toB2;压缩BCD码转换成非压缩BCD码MOVA,R6ACALLB1toB2MOVA, R5ACALLB1toB2MOVA,R4; 高位ACALLB1toB2MOVR0,#buffer+7MOVR7,#7ACALLBlackDisplay; 将高位 0 消隐MOVR0,#bufferLCALLDisplay8SJMPSTAR

19、T1; 双字节十六进制数乘以双字节十六进制数子程序WordMul: MOVA,R3; (R0)(R1)MOVB,R1;X(R2)(R3)MULABJXCHA,R3;(R3R1H)(R3R1L)MOVR7,B;(R3R0H)(R3R0L)MOVB,R0;(R2R1H)(R2R1L)MULAB;(R2R0H)(R2R0L)ADDA,R7JMOVR7,A; R0 R1 R2 R3CLRAADDCA,BXCHA,R1MOVB,R2MULABADDA,R7XCHA,R2PUSHACCMOVADDCMOVCLRRLCXCHPOPMULADDMOVMOVADDCMOVRET; 双字节十进制数转二进制数D4t

20、oB2: MOVANLXCHANLSWAPMOVMULADDINCR2R3 中A,BA,R1R1,AAAA,R0BABA,R1R1,AA,R0A,BR0,A,R0- 指向双字节十进制数,结果在A,R0A,#0FHA,R0A,#0F0HAB,#10ABA,R0R0MOVB,#10MULABB1toB2:MOVR2,BMOVR3,AMOVA,R0ANLA,#0FHXCHA,R0ANLA,#0F0HSWAPAADDA,R3XCHA,R2ADDCA,#0MOVB,#10MULABXCHA,R2MOVB,#10MULABADDA,R0MOVR3,AMOVA,R2ADDCA,BMOVR2,ARETPUSH

21、ACCANLA,#0FHMOVR0,AINCR0POPACCANLA,#0F0HSWAPAMOVR0,AINCR0RETBlackDisplay:MOVA,R0; 将高位 0 消隐JNZExitMOVA,#10HMOVR0,ADECR0DJNZR7,BlackDisplayB4toD4:CLRAMOVR4,AMOVR5,AMOVR6,AMOVR7,AMOVB,#32Exit:RETEND实验六双字节BCD马除于单字节BCD马、实验目的进一步熟悉 51 汇编指令,掌握汇编语言的设计和调试方法。自己设计程序,了解如何调用系统提供的子程序。二、实验内容从键盘上输入4位被除数、二位除数,实现双字节BC

22、D码除于单字节BCD码,结果显示在数码管上。三、程序框图开始开始开始主程序双字节BC除法程序框图四、实验步骤1、连线说明:D3区CLKB2区:2MD3区CSA3区:CS5D3区A0A3区:A02、在F4区的键盘上输入 4位被乘数、乘数3、使用各种手段调试程序4、结果显示在F4区的数码管上五、程序清单EXTRNCODE(Display8, GetBCDKey)BufferDATA30H;8 字节显示缓冲区F1BIT0D1HJORG0000HLJMPSTARTORG0100HSTART:MOVSP,#60HCLRF1; 先去除显示,再接收键输入START1:MOVR0,#bufferMOVA,#4

23、; 按键次数LCALLGetBCDKey; 得到双字节十进制数 被除数 SETBF1; 接收到第一个键,才去除显示MOVR0,#bufferACALLD4toB2; 转换成二进制数MOVR0,#bufferMOVA,#2LCALLGetBCDKey;得到 1字节十进制数 除数 MOVR0,#bufferACALLD2toB2; 转换成二进制数JNZSTART2ACALLDisplayError; 除数为 0 ,出错SJMPSTARTSTART2:ACALLB2_DIV_B1; 被除数 / 除数ACALLDisplay; 显示商和被除数SJMPSTART1B2_DIV_B1:PUSHBMOVA,

24、R2DIVABMOVR2,BPOPBPUSHACCCALLDIV_B2_B1POPACCXCHA,R2RET;双字节除于单字节,R2R3为被除数,B为除数,结果:商 R3中,余数在R2中DIV_B2_B1:MOVR7,#8; 双字节除于单字节DIV2:CLRC;R2R3为被除数,B为除数,MOVA,R3;结果:商R3中,余数在R2中RLCAMOVR3,AMOVA,R2RLCAMOVR2,AMOVF0,CCLRCSUBBA,BJBF0,DIV3JCDIV4DIV3:MOVR2,AINC R3DIV4: DJNZ R7,DIV2R2R3为16位二进制数,R4R5R6为压缩BCD码RETB2toD5

25、:CLRAMOVR4,AMOVR5,AMOVR6,AMOVR7,#16LOOP:CLRCMOVA,R3RLCAMOVR3,AMOVA,R2RLCAMOVR2,AMOVA,R6ADDCA,R6DAAMOVR6,AMOVA,R5ADDCA,R5DAAMOVR5,AMOVA,R4ADDCA,R4;4 字节二进制数转十进制数,DAAMOVR4,ADJNZR7,LOOPRETD2toB2:MOVA,R0;1 字节十进制数转二进制数ANLA,#0FH;R0- 指向 1字节十进制数,结果在 B 中XCHA,R0ANLA,#0F0HSWAPAMOVB,#10MULABADDA,R0; 转换成二进制数MOVB,

26、ARETDisplay:PUSHACC; 商在低四位 , 余数在高三位ACALLB2toD5; 二进制数转十进制数MOVR0,#bufferMOVA,R6ACALLB1toB2;压缩BCD码转换成非压缩 BCD码MOVA,R5ACALLB1toB2DECR0MOVR7,#3ACALLBlackDisplay; 将高位 0 消隐MOVbuffer+4,#10H; 消隐MOVR0,#buffer+7POPACCMOVB,#100DIVABMOVR0,ADECR0MOVA,BMOVB,#10DIVABMOVR0,ADECR0MOVR0,BMOVR0,#buffer+7MOVR7,#2ACALLBlackDisplay; 将高位 0 消隐MOVR0,#bufferLCALLDisplay8RETDisplayError:MOVR0,#bufferMOVR7,#8MOVA,#0FHDisplayError1:MOVR0,AINCR0DJNZR7,DisplayError1MOVR0,#bufferLCALLDisplay8RETD4toB2:MOVANL XCH ANL SWAP MOV MUL ADD INC MOV MUL MOV MOV MOV ANL XCH ANL SWAP ADD XCH ADDC MOV MUL XCH MOV MULA,#0F

温馨提示

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

评论

0/150

提交评论