您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 单片机原理及应用实验指导书_2011-10-12-14-34-04
单片机原理及应用实验指导书电子信息与计算机工程系电子技术应用教研室实验一顺序和分支结构程序分析实验内容:【1】将30H单元内的两位BCD码拆开并转换成ASCII码,存入RAM两个单元中。程序流程如图1所示。图1拆字程序流程图参考程序:ORG0000HMOVA,30H;取值ANLA,#0FH;取低4位ADDA,#30H;转换成ASCII码MOV32H,A;保存结果MOVA,30H;取值SWAPA;高4位与低4位互换ANLA,#0FH;取低4位(原来的高4位)ADDA,#30H;转换成ASCII码MOV31H,A;保存结果结束取数据低4位转换成ASCII码存ASCII码取数据高4位转换成ASCII码存ASCII码开始SJMP$END【2】比较两个无符号数的大小。设外部RAM的存储单元ST1和ST2中存放两个不带符号的二进制数,找出其中的大数存入外部RAM中的ST3单元中。图2比较两个无符号数的大小流程图参考程序:ORG0000HST1EQU2000HST2EQU2100HST3EQU2200HSTART:MOVDPTR,#ST1;第一个数的指针MOVXA,@DPTR;取第一个数MOVR2,A;保存MOVDPTR,#ST2;第二个数的指针MOVXA,@DPTR;取第二个数CLRCSUBBA,R2;JNCBIG1;若第二个数大,XCHA,R2;BIG0:MOVDPTR,#ST3MOVX@DPTR,A;SJMP$BIG1:MOVXA,@DPTR;SJMPBIG0ENDA=0?YYNNYNA为负数?取数,A←((R1))开始结束A←∣X∣A←64HA←X+2存数,((R1))←A(30H)设置地址指针R1、计数器R0初值R1←R1+1;R0←R0-1R0=0?A=0?YYNNYNYYNNYNA为负数?取数,A←((R1))开始结束A←∣X∣A←64HA←X+2存数,((R1))←A(30H)设置地址指针R1、计数器R0初值R1←R1+1;R0←R0-1R0=0?实验二循环、查表、子程序分析实验内容:【1】有一数据块从片内RAM的30H单元开始存入,设数据块长度为10个单元。根据下式:X+2X0Y=100X=0∣X∣X0求出Y值,并将Y值放回原处。图一参考流程图参考程序:ORG0100HMOVR0,#10;循环初值MOVR1,#30H;R1作为地址指针START:MOVA,@R1;取数JBACC.7,NEG;若为负数,转NEGJZZER0;若为零,转ZER0ADDA,#02H;若为正数,求X+2AJMPSAVE;转到SAVE,保存数据ZER0:MOVA,#64H;数据为零,Y=100AJMPSAVE;转到SAVE,保存数据NEG:DECACPLA;求∣X∣SAVE:MOV@R1,A;保存数据INCR1;地址指针指向下一个地址DJNZR0,START;数据未处理完,继续处理SJMP$;暂停END【2】将1题改为子程序结构。ORG0100HMOVR0,#10MOVR1,#30HSTART:MOVA,@R1;取数ACALLDISPOSE;调用判断、处理子程序SAVE:MOV@R1,A;保存数据INCR1;修改地址指针,指向下一个地址DJNZR0,START;数据未处理完,继续处理SJMP$;暂停ORG0200HDISPOSE:JBACC.7,NEG;若为负数,转NEGJZZER0;若为零,转ZER0ADDA,#02H;若为正数,求X+2AJMPBACK;转到SAVE,保存数据ZER0:MOVA,#64H;数据为零,Y=100AJMPBACK;转到SAVE,保存数据NEG:DECACPLA;求∣X∣BACK:RETEND【3】一个十六进制数存放在内部RAM的HEX单元的低4位中,将其转换成ASCII码并送回HEX单元。参考程序:ORG0000HHEXEQU50HMOV50H,#35HHEXASC:MOVA,HEXANLA,#0FHADDA,#3;修改指针MOVCA,@A+PCMOVHEX,ARETASCTAB:DB30H,31H,32H,33H,34HDB35H,36H,37H,38H,39HDB41H,42H,43H,44H,45HDB46HEND实验三延时方式实现跑马灯实验内容:【1】掌握PROTEUS软件的使用方法【2】利用PROTEUS软件画出单片机控制跑马灯的电路原理图,然后编程实现发光二极管依次点亮,间隔1s.参考电路:参考程序:ORG0000HSJMPMAINORG0030HMAIN:MOVA,#0FEHLOOP:MOVP1,AACALLDELAYRLASJMPLOOPDELAY:MOVR5,#10BBB:MOVR6,#250AAA:MOVR7,#200DJNZR7,$DJNZR6,AAADJNZR5,BBBRETEND实验四算术逻辑处理程序分析实验内容:【1】多字节二进制数加法设1067H存在R1R0中,30A0H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。【2】双字节无符号整数相乘假定被乘数在R4R3中,乘数放在R2中,乘积放在R7R6和R5中。参考程序:【1】ORG0000HMOVR0,#12MOVR1,#01MOVR2,#25MOVR3,#10MOVA,R0ADDA,R2;R0+R2→A和CYMOVR4,AMOVA,R1ADDCA,R3;R1+R3+CY→A和CYMOVR5,AEND【2】ORG0000HMOVR2,#05MOVR3,#06MOVR4,#07MOVA,R2MOVB,R3MULAB;(R3)×(R2)MOVR5,A;积的低位送R5MOVR6,B;积的高位送R6MOVA,R2MOVB,R4MULAB;(R4)×(R2)ADDA,R6;(R3)×(R2)的高位加(R4)×(R2)的低位MOVR6,AMOVA,BADDCA,#00H;(R4)×(R2)的高位加CyMOVR7,A;结果送R7END实验五数制转化程序分析实验内容:【1】单字节压缩BCD码转换成二进制码子程序设两个BCD码d1d0表示的两位十进制数压缩存于R2,其中R2高4位存十位,低4位存个位,要把其转换成纯二进制码的算法为:(d1d0)BCD=d1*10+d0,转换后的结果存于R2【2】双字节压缩BCD码转换成二进制码子程序设双字节压缩BCD码存于R5R4中,R5中存千位百位,R4中存个位十位,转换后的结果存回R5R4中。参考程序:【1】ORG0000HMOVR2,#35HMOVA,R2ANLA,#0F0H;取高位BCD码d1SWAPAMOVB,#0AHMULAB;d1*10MOVR3,AMOVA,R2ANLA,#0FH;取低位BCD码d0ADDA,R3;d1*10+d0MOVR2,AEND【2】ORG0000HLJMPMAINORG0100HMAIN:MOVSP,#30HMOVR5,#45HMOVR4,#67HACALLBCD4BSJMP$BCD4B:MOVA,R5MOVR2,AACALLBCD2BMOVB,#64HMULABMOVR6,AXCHA,BMOVR5,AMOVA,R4MOVR2,AACALLBCD2BADDA,R6MOVR4,AMOVA,R5ADDCA,#00HMOVR5,ARETBCD2B:MOVA,R2ANLA,#0F0HSWAPAMOVB,#0AHMULABMOVR3,AMOVA,R2ANLA,#0FHADDA,R3MOVR2,ARETEND实验六定时器/计数器程序分析实验内容【1】定时器方式0实现等宽正波脉冲【2】定时器方式1实现等宽正波脉冲【3】定时器方式2实现等宽正波脉冲参考程序:【1】ORG0000HLJMPMAINORG000BHLJMPDVT0ORG0100HMAIN:MOVTMOD,#00HMOVTH0,#63HMOVTL0,#18HSETBET0SETBEASETBTR0SJMP$DVT0:CPLP1.0MOVTH0,#63HMOVTL0,#18HRETIEND【2】ORG0000HLJMPMAINORG000BHLJMPDVT0ORG0100HMAIN:MOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBET0SETBEASETBTR0SJMP$DVT0:CPLP1.0MOVTH0,#3CHMOVTL0,#0B0HRETIEND【3】P.116例5.09实验七定时器方式实现跑马灯实验内容:【1】利用PROTEUS软件画出单片机控制跑马灯的电路原理图,然后编程实现发光二极管依次点亮,间隔1s.(用定时器中断方式实现)参考电路图:见实验三参考程序:ORG0000HLJMPMAINORG001BHLJMPINTIMAIN:MOVTMOD,#10HMOVTH1,#3CHMOVTL1,#0B0HMOVR0,#20SETBEASETBET1SETBTR1MOVA,0FEHMOVP1,ASJMP$INTI:DJNZR0,NEXTMOVR0,#20RLAMOVP1,ANEXT:MOVTH1,#3CHMOVTL1,#0B0HRETIEND实验八串行接口及通信程序分析实验内容【1】使用CD4094的的并行输出端接8只发光二极管,将二极管从左至右依次点亮,并反复循环(发光二极管共阴极连接)【2】利用串行口工作方式0扩展出8位并行I/O口,驱动共阳LED数码管显示0—9。【3】P.126例5.14【4】双机通信(A机输入B机显示,B机输入A机显示)参考电路:【1】【2】【3】P.126【4】ABCLKhgfedcbaCLR+5VVCCTxDRxD51单片机74LS164共阳LED数码管参考程序:【1】ORG0000HMOVSCON,#00HCLRESMOVA,#01HDELR:SETBP1.0MOVSBUF,AJNBTI,$CLRTICLRP1.0ACALLDELAYRRAAJMPDELRDELAY:MOVR3,#255DL:MOVR4,#255DJNZR4,$DJNZR3,DLRETEND【2】ORG0000HDSPLY:MOVR0,#10MOVDPTR,#TABLEDSS:MOVCA,@A+DPTRMOVSBUF,AJNBTI,$LCALLDELAYCLRTICLRAINCDPTRDJNZR0,DSSSJMPDSPLYDELAY:MOVR2,#5DLL:MOVR3,#255DL:MOVR4,#255DJNZR4,$DJNZR3,DLDJNZR2,DLLRETORG0100HTABLE:DB0C0H,0F9H,0A4HDB0B0H,99H,92HDB82H,0F8H,80H,90HEND【3】ORG0000HMOVTMOD,#20HMOVTH1,#0CCHMOVTL1,#0CCHSETBTR1MOVSCON,#50HABC:MOVP1,#0FFHLCALLDAYMOVA,#0FEHMOVSBUF,AL1:JNBTI,L1CLRTIL2:JNBRI,L2CLRRIMOVA,SBUFMOVP1,ALCALLDAYSJMPABCDAY:MOVR0,#0DAL:MOVR1,#0DAL1:DJNZR1,DAL1DJNZR0,DALRETEND【4】ORG0000HLJMPMAINORG0023HLJMPINSORG0030HMAIN:MOVSP,#60HMOVSCON,#50HMOVPCON,#00HMOVTMOD,#20HMOVTL1,#0E6HMOVTH1,#0E6HSETBEASETBESSETBTR1MOVP1,#0FFHLP0:MOVA,P1MOVSBUF,ALP:JNBTI,LPCLRTILJMPLP0INS:CLREAJNBTI,LP1CLRTILJMPEXITLP1:CLRRIMOVA,SBUFMOVP2,AEXIT:SETBEARETIEND实验九I/O接口扩展程序分析实验内容:【1】教材P.148例6.1【2】基于AT24C01的I2C总线扩展参考电路:【1】教材P.148例6.1【2】参考程序:【1】ORG0000HLJMPMAINMAIN:MOVA,#0FFHM
本文标题:单片机原理及应用实验指导书_2011-10-12-14-34-04
链接地址:https://www.777doc.com/doc-2606292 .html