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

下载本文档

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

文档简介

1、本文格式为word版,下载可任意编辑单片机实验报告1 单片机试验报告 试验一 数据传送 (ra m) 一、试验目得 熟识星研集成环境软件或熟识 kei 5集成环境软件得使用方法。 熟识 ms51 汇编指令,能自己编写简洁得程序,把握数据传输得方法。 二、试验内容 1、熟识星研集成环境软件或熟识l 51 集成环境软件得安装与使用方法。 、编写程序,实现内外部数据段得传送、校验。 三、程序框图 开头 堆栈指针初始化计数器、地址初始化内部ram数据传送外部ram一次地址指针+1 计数器-1=0?计数器、地址指针复位取内部ram和对应的外部ram比较是否相等地址指针+1 计数器-1=0?传送正确传送错

2、误结束nnyyyn数据传送程序框图 四、试验步骤 mar 据数部外测检,序程试调式方点断、步单用使;据数入输中f h03 mr 部内在得 100h 10fh 中得内容。熟识查瞧特别功能寄存器、内部数据 rm、外部数据空间得各种方法. 五、程序清单 ;将内部a address1 开头得 1个字节送到外部a从 adress开头得单元里,再作比较。 adress1 a 30h address2 xdat 000h or 000h ljp sta og 0100h str: mov sp,#6h v 0,ddrss1 mov dptr,addrss2 mv r7,#0h sta1: mov a,r0

3、;传送 o dt,a ic r0 ic dptr djnz r7,star1 mo r,#adres m dpt,#adde ov r7,h sta2: mov b,0 ;比较 mox a,dpr je a,star nc 0 inc p dnz r7,star2 sjmp ;传送正确 tar3: sjp $ ;传送错误 en 试验二 双字节 d bcd 码( ( 十进制数) ) 加法 一、试验目得 熟识1 汇编指令,学会使用星研集成环境软件,能自己编写简洁得程序,熟识cd 码,了解如何调用系统供应得子程序. 二、试验内容 从键盘上输入位被加数、加数,实现双字节 bcd 码(四位数)得加法,结

4、果显示在数码管上;熟识使用断点、单步进入、单步、运行到光标处、修改 pc 指针、全速运行等各种调试手段;熟识查瞧特别功能寄存器、内部数据am、外部数据空间得各种方法。 三、试验框图 开头初始化堆栈设定先清led,再接收键输入标志通过键盘获得4位被加数(压缩bcd码)置位接收到第一个键后才清除led标志通过键盘获得4位加数(压缩bcd码)被加数与加数的低位字节不带进位加法被加数与加数的高位字节带进位加法十进制调整十进制调整压缩bcd码(结果)转换为非压缩bcd码高位0消隐显示结果双字节bcd加法程序框图 四、试验步骤 、 :明说线连d3 区 :l - b区:m d3 区 :cs - a3 区:c

5、s5 区 :0 - a区: 、在 f4 区得键盘上输入 4 位被加数、加数 3、结果显示在 f4 区得数码管上 五、程序清单 exn cd(dipay, gtbcdky) buffe aa 30h ;8 字节显示缓冲区 f bt 0h ;psw、 org 000 m stat rg 000h start: mo sp,6 clr f1 ;先清除显示,再接收键输入 tart1: o r0,buffe mov ,#4 ;按键次数 lcall getde ;得到双字节十进制数(被加数) se f1 ;接收到第一个键,才清除显示 mov r0,#buffer4 ov a,# ;按键次数 lcal gt

6、dk ;得到双字节十进制数(加数) mov ,bfer+1 a a,bffr+5 da a mv uffer+5,a mov ,buffer ac a,bufer+4 a mv ffe+4,a c a l a dsplay: push acc ;显示结果 o r0,#buffe mo a,b5 ;低位 acall bto2 ;压缩 bd 码转换成非压缩 bcd 码 m a,fer4 ;高位 acall b1ob pop c ;进位 acal b1to mov r,#1h ;最高二位消隐 inc r0 mov r0,#10h mv r0,#bfe+5 mo r7,#5 acal blakdila

7、y ;将高位 0 消隐 mov r0,#ufer lall displa8 mp tart1 ;将一个字节压缩 bd 码转换成二个字节非压缩 bcd 码 bb2: push cc an a,0f o 0,a inc r op c anl a,0f0h swap a mv r0,a ic 0 re bla kdisplay: mov a,r0 ;将高位消隐 jnz exit o a,#0h o r0,a ec 0 dj r7,bacdpy exit: rt n 试验三 双字节 d bcd 码(十进制数)减法 一、试验目得 熟识1 汇编指令,学会使用星研集成环境软件,把握汇编语言得设计与调试方法.

8、能瞧懂程序流程框图,能自己设计程序,熟识 bcd 码、补码,了解如何调用系统供应得子程序。 二、试验内容 从键盘上输入位被减数、减数,实现双字节 bcd 码(四位数)得减法,结果显示在数码管上;进一步熟识使用断点、单步进入、单步、运行到光标处、修改 p指针、全速运行等各种调试手段;熟识查瞧特别功能寄存器、内部数据 rm、外部数据空间得各种方法。 三、程序框图 设定先清led,再接收键输入标志堆栈初始化开头通过键盘获得双字节十进制被减数(压缩bcd码)置位接收到第一个键后才清除led标志通过键盘获得双字节十进制减数(压缩bcd码)减数进行十进制取补双字节十进制加法操作c=1?c=0,有进位(结果

9、为负),再执行一次求补运算,调整为正数高位0消隐,若结果为负,前面加上-显示结果yn双字节十进制减法程序框图 四、试验步骤 、 :明说线连d3 区 :ck 区:m 3 区 :cs a3 区:cs5 d3 区 :0 a3 区:a0 2、在 f4 区得键盘上输入 4 位被减数、减数 、结果显示在 f区得数码管上 五、程序清单 extn cod(sply8, etbdkey) bufer data 30h ;8 字节显示缓冲区 f1 bi 0d1h ;psw、1 org 0000 ljp star org 0100h start: mov sp,6h cr f ;先清除显示,再接收键输入 s1: v

10、 r0,#buffer mov a,#4 ;按键次数 lcall tcky ;得到双字节十进制数(被减数) etb 1 ;接收到第一个键,才清除显示 m r0,#buff+4 mov a,#4 ;按键次数 lcall getbcdey ;得到双字节十进制数(减数) mov a,9a clr c ubb a,buffe+5 mov bue+5, mv a,#h lr c sub ,buffr+4 ov bffer4,a ;减数取补 mov ,bufer+1 ad a,buffer+5 da ov bfr+5,a m a,buffe adc a,bufer4 d mv buffer,a mo ,c

11、 ;借位标志 jc dislay ov a, sub a,uffer ov ufer+5,a mo a,99h ubb a,buffe xh ,buffr+ add ,0h da a xh a,bufer+5 ddc a,#00h a v buffe4,a ispay: ov r0,bufr ;显示结果 ov a,ffe5 ;低位 acall b1tob2 ;压缩cd 码转换成非压缩 bcd 码 mo a,bfer+4 ;高位 call btob2 mov ,#0h ;最高四位消隐 ic r0 mov r0,10h in r0 mov r0,#0h inc r,#10h mv 0,buffr+

12、 r7,3 acl lakdsply ;将高位 0 消隐 mov r,#bfer la dipay sjmp sat1 blackdi play: a,r0 ;将高位 0 消隐 jnz eit ov a,10 mov r, e r0 djnz r7, l c disply exi: jb f0,exit1 inc r0 ov r0,11 ;负数标志 xit1: ret b1tob2: push acc nl a,#0fh ov r, nc r0 op acc n a,0f0 sap a mov ,a inc r0 ret blackdispl y: mo a,r0 jz it mov a,#0

13、 mov r0,a dec r0 nz r7,acisy exit: ret ed 四 试验四 数制进十转数制进六十节字四 四字节十六进制数转十进制数 一、试验目得 进一步熟识1 汇编指令,了解十六进制数转十进制数得方法. 二、试验内容 从键盘上输入 8 位十六进制数,实现四字节十六进制数转位十进制数,并在数码管上显示。留意输入数据必需在0000000h0f0000h 范围,否则,结果超出位十进制数,无法正确显示。 三、程序框图 初始化堆栈开头设定先清led,再接收键输入标志通过键盘获得4字节十六进制数置位接收到第一个键后,才清除led标志十六进制转十进制子程序显示开头0r4,r5,r6,r7

14、(用于存放压缩bcd码)32b(循环次数)clr c四字节十六进制数带进位左移一位(r4r5r6r7)2+进位位c(r4r5r6r7),同时进行十进制调整主程序 十六进制转十进制子程序ny返回b-1=0? 四、试验步骤 、1 :明说线连d区 :ck - b2 区:2m d3 区 :cs - a区:cs5 d区 :a0 - a区:a0 2、在 f区得键盘上输入 8 位十六进制数 3、结果显示在 f4 区得数码管上 五、程序清单 extr coe(play, gekey) ffr at 30h ;8 字节显示缓冲区 bi 0d1h ;ps、1 org 00h ljmp sar og 100h st

15、ar: m p,#60 r f ;先清除显示,再接收键输入 star1: m 0,#buffe mov a,#8 ;按键次数 lcall gtkey ;得到字节十六进制数 set 1 ;接收到第一个键后,才清除显示 mo r0,bfer v r1,buffr+ ov r,buffer2 ov r3,uffer3 acal b4td4 ;转换成十进制数 disly: mov r0,bur ;显示结果 v a, ;低位 acll b ;压缩cd 码转换成非压缩cd 码 ov a,r6 ca btb2 mov a, r5 call tob a,r4 ;高位 b1t2 ov r0,#uffr7 mov

16、 r7,7 al ackisplay ;将高位消隐 m r0,#buffer lcal dily8 sjmp start1 ;四字节十六进制数转十进制数:01r2为十六进制,rr6r为压缩 bc码 b4od4: l a mv r4,a mov r, mov 6,a mo 7,a o b,#32 op: cl c ov a,r3 rl r3, mo a,2 l a mov r,a mov a,r rc mov r1, mov ,r0 rlc a ov r0,a mv a,r7 adc ,r a mov r7,a mov a,r6 d a, a m r, mov a,r5 ddc a,r da a

17、 mov r5, m ,r4 ad a,r4 a a o r4,a dnz ,lo ret b1to2: push cc al a,#0f ov r0,a inc r0 pop acc anl a,#00h swap a mv 0, ic r rt lakdispay: ov a, ;将高位 0 消隐 jn exit v a,#10h m r0,a dec 0 djnz r7, lac display exit: rt end 五 试验五 节字双 双字节 d bcd 码( ( 十 进制数) ) 乘法 一、试验目得 进一步熟识1 汇编指令,把握汇编语言得设计与调试方法.依据程序流程图,自己设计程

18、序,了解如何调用系统供应得子程序。 二、试验内容 从键盘上输入 4 位被乘数、乘数,实现四位十进制数得乘法,结果显示在数码管上。 三、程序框图 开头初始化堆栈设定先清led再接收键输入标志通过键盘获得4位十进制被乘数转换成二进制数并压栈暂存置位接收到第一个键后,才清除led标志通过键盘获得4位十进制乘数转换成二进制数(r2r3)被乘数出栈(r0r1)双字节十六进制乘法子程序十六进制结果转十进制压缩bcd码转非压缩bcd码将高位0消隐显示双字节bcd乘法程序框图 (r0)(r1) (r2)(r3)(r3r1h)(r3r1l)(r3r0h)(r3r0l)(r2r1h)(r2r1l)(r2r0h)(

19、r2r0l)r0 r1 r2 r3+双字节十六进制乘法示意图 四、试验步骤 、 :明说线连3 区 :clk - 区:2m 3 区 :s - a区:cs5 区 :a0 a3 区:a 2、在4 区得键盘上输入 4 位被乘数、乘数 3、结果显示在 f4 区得数码管上 五、程序清单 etrn code(dsplay8, gtbcde) ufr data h ;字节显示缓冲区 f1 bt 01h ;psw、1 r 000h ljmp start org 010h sta: mov sp,#60 clr f1 ;先清除显示,再接收键输入 str1: mov r0,#buer o a,#4 ;按键次数 la

20、ll etey ;得到双字节十进制数(被乘数) o r0,#uffer aa d4t2 ;转换成二进制数 ps 2h puh 03h seb f ;接收到第一个键,才清除显示 ov r0,#buffe mv a, ;按键次数 call gbcdk ;得到双字节十进制数(乘数) mov r0,#buffe cl d4tb ;转换成二进制数 pop 01h pop 00h acll wrdml ;(0r1)(rr3)=rrr2r3 aa 4tod4 ;转换成十进制数 disla: mov r,#buffer ;显示结果 o a,7 ;低位 acl 1ob ;压缩 bd 码转换成非压缩 bd 码 m

21、ov ,6 acall b1tob mov a, 5 acall b1tob2 mo a,r ;高位 acal 1tob2 ov r0,#bufe7 ov r7,# acall blacdispy ;将高位 0 消隐 mo r0,#buffer ll display sjp sta1 ;双字节十六进制数乘以双字节十六进制数子程序 wordmul: mv a,3 ; ( )1r()0r mov b,r ; (r2)(r3) mul a ;- - - a,r3 ; (3rh)(31l) mv 7, ; (r30h)(r3r0l) mov b,r0 ; (2r1h)(r1l) mul ab ;(2r

22、0h)(r2r0l) add a,r7 ; - - mv 7,a ; r0 r r2 r3 cl a addc a,b xh ,r1 mov b, ab dd a,r xch a,2 sh ac mo a,b add a,r1 mov ,a lr a rlc a xh ,r0 op b mul b ad a,1 ov r1,a mo ,r c a, mo r, re ;双字节十进制数转二进制数 ,r-指向双字节十进制数,结果在 r23 中 4to: mov a,r0 anl a,0fh x ,r0 anl ,0f0h w a mo b,0 mul a add a, c r0 mov b,#10

23、 mul ab v r2,b mo r3,a mov a,r nl a,#fh a,r0 l a,#0f swp a add a,r3 ch ,r2 addc a,#0 mov b,10 mul ab xch a, mov b,1 mul add a,r mv r,a ov a,r addc ,b mv r2,a et bto2: pu cc al ,#0f mov r0, ic 0 op acc anl ,0fh sap a ov r0,a inc r0 ret blackdisplay: mo a,r ;将高位 0 消隐 jnz ext mov a,10 mov r,a dc r djnz

24、 ,blakdpay b4od: clr a mov r4,a ov r,a mov r,a mov r7,a mov b,2 et: re ed 试验六 双字节c c 码除于单字节 d bcd 码 一、试验目得 进一步熟识 51 汇编指令,把握汇编语言得设计与调试方法.自己设计程序,了解如何调用系统供应得子程序。 二、试验内容 从键盘上输入 4 位被除数、二位除数,实现双字节 bc码除于单字节d 码,结果显示在数码管上。 三、程序框图 开头初始化堆栈设定先清led,再接收键输入标志通过键盘获得4位被除数,转换为十六进制数并暂存通过键盘获得单字节除数,转换为16进制数显示子程序置位接收到第一个

25、键后,才清除led标志单字节除法:被除数的高字节除以除数,结果为最终商的高8位双字节除以单字节(商为16位)双字节除以单字节(商只有8位)子程序最终获得结果(16位的商,8位余数)双字节除以单字节(商为16位)子程序循环次数8r716位被除数(r2,r3)带进位左移一位(最低位补0, c f0)r2-除数(b)f0=1?c=1?差r2,r3自加1r7-1=0?双字节除以单字节(商为8位)子程序开头 开头返回返回主程序yyynnn双字节bcd除法程序框图 四、试验步骤 1、连线说明: d3 区 :cl b2 区:2 d3 区 :s - a区:5 3 区 :a0 a3 区:0 2、在 f4 区得键

26、盘上输入 4 位被乘数、乘数 3、使用各种手段调试程序 4、结果显示在 f4 区得数码管上 单 五、程序清单 exr code(diplay, getbcdky) buffr dta 0 ;8 字节显示缓冲区 f1 bit 0d ;psw、1 r 0000h ljp star og 00 srt: mo sp,60h clr f1 ;先清除显示,再接收键输入 tat1: mov r0,bffer ov a,#4 ;按键次数 lcall tbdey ;得到双字节十进制数(被除数) setb f1 ;接收到第一个键,才清除显示 m r0,buffer acl 4tb ;转换成二进制数 o r0,#

27、uffer mo a,#2 lcall gtbcdkey ;得到 1 字节十进制数(除数) m r0,#bfr acll dtob ;转换成二进制数 jn sr acall dsplayrrr ;除数为,出错 sjp tar ar: acall b2_di_b1 ;被除数 / 除数 acal dispa ;显示商与被除数 sjp strt1 ; 双字节除于单字节,r2r为 1位二进制数,b 为除数,商在 r2r中, 余数在 a 中 b2_div_b1: pus b mv a,r2 ab mv r2,b op pu cc cll iv_b_ op a ch ,r2 et ;双字节除于单字节,r2

28、r3 为被除数,为除数,结果:商 r3 中,余数在 r中 div_b2b1: mv 7,# ;双字节除于单字节 dv2: cl ;r2r3 为被除数,b 为除数, mo a,r ;结果:商3 中,余数在 r2 中 lc a m r3,a o a,2 rlc a mv r2,a mv f0, clr bb a,b b f,iv3 jc d4 div: ov r2,a r3 div4: dnz r,d2 ret ;4 字节二进制数转十进制数,r2r3 为 1位二进制数,r4rr为压缩d 码 btod5: cl mov r,a ; mov 5,a o 6,a o r7,16 loop: lr c m

29、ov a,r rlc a mov r3,a m a,r2 r a mv , m a,r6 addc a,r6 da ov r6,a mov a,r5 ad a,5 da ov r,a mov ,r4 ddc ,r4 d a mv r4,a dn ,op et 2tob2: mov a,0 ;1 字节十进制数转二进制数 an a,#fh ;指向 1 字节十进制数,结果在中 xch a,r anl a,0f0 ap mv b,#1 mul ab dd a,r ;转换成二进制数 m b,a rt spla: ush ac ;商在低四位,余数在高三位 all b2tod ;二进制数转十进制数 mv r

30、0,buffer mov ,r acal b1tob2 ;压缩c码转换成非压缩 bcd 码 v a,r5 call bto2 c r mov r,3 acal blaksply ;将高位消隐 mov bffr4,#10h ;消隐 mov r0,buff7 po cc mo b,00 iv a mo r0, dc r0 mv ,b mo ,#1 div ab o r0,a dec r0 mo ,b mo r0,#ufer+7 mov r7,2 acll bckdispay ;将高位 0 消隐 v r0,#bfe lall isplay et displa e ror: mov r0,#buffr mov 7,8 m a,#0h dislayerr1: mv r,a inc r0 djz r,layrrr1 mov 0,buffr call dispy8 rt d4ob2: mo a,r0 anl a,h h a,r an a,f0h swap a mov b,#10 l a add a,r0 nc mv ,#1 mu ab mov r2,b mov r3,a mv a,r0 nl a,#0fh xch ,r nl a,#0fh sap add a,r ch

温馨提示

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

评论

0/150

提交评论