首页 绍兴文理学院单片机试验考试文档资料

绍兴文理学院单片机试验考试文档资料

举报
开通vip

绍兴文理学院单片机试验考试文档资料绍兴文理学院单片机实验考试程序:基本部分・实验三:k:编语言程序设计_⑴清零:把外部R2I2000H〜20FFH的内容清零。ORG0000HAJMPMAINORGMAIN:MOVMOVMOVLOOP:MOVINC0030HA,#OOHRO,#OOHDPTR,#2000H@DPTR,ADPTR//累加器A清零DJNZRO,LOOPSJMP$//将2000H内容送给DPTR//将2000H中的内容清零//DPTR增1//减1不为0则转移,继续循环,否则结束END(2)拆字:把外部RAM2000H的内容拆开,高位送外部R...

绍兴文理学院单片机试验考试文档资料
绍兴文理学院单片机实验考试程序:基本部分・实验三:k:编语言程序设计_⑴清零:把外部R2I2000H〜20FFH的内容清零。ORG0000HAJMPMAINORGMAIN:MOVMOVMOVLOOP:MOVINC0030HA,#OOHRO,#OOHDPTR,#2000H@DPTR,ADPTR//累加器A清零DJNZRO,LOOPSJMP$//将2000H内容送给DPTR//将2000H中的内容清零//DPTR增1//减1不为0则转移,继续循环,否则结束END(2)拆字:把外部RAM2000H的内容拆开,高位送外部RAM2001H低位,低位送外部RAM2002H低位,外部RAM2001H、外部RAM2002H高位清零。ORG0000HAJMPMAINORG0030HMAIN:MOVDPTR,#2000H//DPTR中为2000HMOVXA,@DPTRMOVB,ASWAPAANLA,#OFHINCDPTRMOVX©DPTR,AINCDPTRMOVA,BANLA,#OFHMOVX©DPTR,ASJMP$//2000H内容送A〃将A中内容寄存在B中〃高低位交换〃高位清零//DPTR中为2001H//将A中的内容(2000H的高位)给2001H的低位//DPTR中为2002H//将B中的内容(2000H内容)还给A〃屏蔽2000H的高位//将A中的内容(2000H的低位)给2002H的高位END(3)拼字:把外部RAM2000H、外部RAM2001H的低位分别送入外部RAM2002H高低位。ORG0000HAJMPMAINORG0030HMAIN:MOVDPTR,#2000H//将2000H中的内容送DPTRMOVXA理DPTRANLA,#0FHSWAPA〃将2000H中的内容送A//交换髙低位送BMOVB,AINCDPTR//DPTR增1MOVXA,@DPTRANLA,#OFH//屏蔽高位,将2001H内容送AORLA,B//A和B或后送2002HINCDPTRMOVX©DPTR,ASJMP$END(4)在内部RAM中查找是否有 单元 初级会计实务单元训练题天津单元检测卷六年级下册数学单元教学设计框架单元教学设计的基本步骤主题单元教学设计 为特殊值。(单重循环)如:查找找内部RAM的30H-50H单元中是否有0MH这一数据。若有,则将51H单元置为“01H”;若未找到,则将51H单元置为“00H”。ORG0000HAJMPSTART0030HR0,#30HR2,#20HA,@R0A,#OAAH,NEXT51H,#01HEXITROR2,LOOP51H、#00HORGSTART:MOVMOVLOOP:MOVCJNEMOVLJMPNEXT:INCDJNZMOVOVER:SJMP$END实验四:汇编语言程序设计外部RAM数据块搬移程序:(1)试将片内RAM中30H~3FH的数据传送到片外RAM地址为1000H开始的单元中。数据搬移:(内部和外部数据存储器之间,单重循环)ORG0000HAJMPMAINORG0030HMAIN:MOVR0,#30HMOVR1,#1OHMOVDPTR,#1OOOHLOOP:MOVA,@ROMOVX©DPTR,AINCDPTRINCROOVER:DJNER1,LOOPSJMP$END(2)将外部RAM中R2、R3为源地址的N个字节数据传送到R4、R5为目的地址的外部RAM区中,字节个数存放在R6、R7中。数据区传送功能:在R2、R3中输入源地址(例如OOOOH),R4、R5中输入目的地址(例如2000H),R6、R7中输入字节数(例如2000H),运行程序,检查0000〜1FFFH中内容是否和2000H〜3FFFH中内容完全一致。ORG0000HAJMPMAINORG0030HMAIN:MOVDPL,R3;R3内容给DPTR低位MOVDPH,R2;R2内容给DPTR高位MOVXA,@DPTR;R2,R3源地址内容给累加器A,即取数MOVDPL,R5;R5内容给DPTR低位MOVDPH,R4;R4内容给DPTR高位MOVX©DPTR,A;数据搬移CJNER3,#OFFH,LOOP1;R3是否需要进位,即传送数据是否超过OFFHINCR2;若超过则进位L00P1:INCR3;源地址加1CJNER5,#0FFH,L00P2;R5是否需要进位,即接受数据是否超过OFFHINCR4;若超过则进位L00P2:INCR5;目的地址加1CJNER7,#OOH,LOOP3;若低位字节数不为0,则跳转L00P3,字节数减1CJNER6,#OOH,LOOP4;若高位字节数不为0,则跳转L00P4,产生借位,高低位字节数均减1SJMP$NOP;空操作L00P3:DECR7SJMPMAINL00P4:DECR7DECR6SJMPMAINEND双字节車单字节无符号乘法程序:是编写程序,其功能为:(ROR1)*(R2)-R3R4R5oORG0000HAJMPMAINORG0030HMAIN:MOVA,R1MOVB,R2MULAB;R1*R2XCHA,R5;乘积低位fR5,R5—A准备乘数MOVR4,B;乘积高位暂存R4MOVA,R0MOVB,R2MULAB;R0*R2ADDA,R4;乘积低位加上一次的乘积高位暂存R4CLRA;清累加器ADDCA,B;高位加从低位来的进位给乘积高位MOVR3,ASJMP$END提高部分:1、数据排序。(256个数以内)编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。数据排序功能:把RAM空间50H〜5AH中放入不等的数据,运行本实验程序后检查50H〜5AH中数据長否按从小到大排列。ORG0000HAJMPSTARTORG0030HSTART:MOVRO,#50H;将50h的值赋给ROMOVR2,#10;将10赋给R2SORT:MOVA,RO;将聽值给AMOVR1,A;将A的值给R1MOVA,R2;将只2的值给AMOVR5,A;将A的值给R5CLRF0;将卩0清零MOVA,@R1;将氏的地址给ALOOP:MOVR3,A;将A的值给R3INCR1;R1自加CLRC;清零进位标志MOVA,@R1;将氏的地址给ASUBBA,R3;将人与R3的值相减JNCL00P1;如果借位跳转到L00P1反之按顺序往下SETBF0;把F0置1MOVA,R3;把只3的值给AXCHA,@R1;将人与R1的字节交换DECR1;R1自减XCHA,@R1;将人与R1的字节交换INCR1;R1自加L00P1:MOVA,@R1;将氏的地址赋给ADJNZR5.L00P;判断R5是否为0是则跳转反之按顺序继续程序JBFO,SORT;判断F0是否为1,是则跳转反之按顺序继续程序RET;返回SJMP$;数据保留END;结束2、动态显示。(用实验6仿真图)实验二:编写程序,在数码管上显示固定“654321”字形#iiiclude#include#defineucharunsignedchar#defineumtunsignedmtuchaicodetabl[]={0xF9,0xA4,0xB0,0x99,0x92,0x82};〃数码管显示数字1-6uchaicodetab2[]={Oxfe.Oxfd,Oxfb,Oxf7,Oxef,Oxdf};〃控制数码管位选uchaii;voiddelay(uintms)〃延时IMs{uchari;while(ms-)fbr(i=0;i<123;i++);}voidmain(){wliile(l){fbi(i=0;i<6;i++){Pl=tab2[i];〃选择数码管位选PO=tabl[i];//选择数码管显示字形delay(l);P0=0xff;〃数码管消影}}}3、脉冲计数并显示。(用实验6仿真图)实验五定时/计数器实验:将定时/计数器0外部输入的脉冲进行计数#include#include#defineucharunsignedchar//宏定义用uchar代替unsignedchar#defineuintunsignedintcodeuchartab1[10]=(OxCO,0xF9,0xA4,OxBO,0x99,0x92,0x82,0xF8,0x80,0x90};unsignedlongintcount;//计数值uintsum;ucharnum[6],flag,i,j;ucharcodetab2[6]={0xfe,Oxfd,Oxfb,0xf7,Oxef,Oxdf};voiddelay(uintms)//延时MSuchari;while(ms--)for(i=0;i<123;i++);voiddisplay()//显示子函数{if(sum>1000000){sum二0;TH0=0;TL0=0;count二0;}elsecount二sum*65536+TH0*256+TL0;〃取计数值num[5]=count/100000;//第6位num[4]=count%l00000/10000;//第5位num[3]=count%l0000/1000;//第4位num[2]=count%1000/100;//第3位num[l]=count%100/10;//第2位num[0]=count%10;//第1位for(i=0;i<6;i++){Pl=tab2[i];if(i!=0&&num[i]==0)〃消0显示{flag=0;for(j=i;j<6;j++){if(num[j]!二0)//该位为0的情况下前面位是否还有大于0的值{flag=l;break;//跳岀循环if(flag)PO=tabl[O];//若有则该位显示0elseP0二Oxff;//若没有有则该位不显示elseP0=tabl[num[i]J;//显示相应位的数字delay(1);PO=Oxff;//消去阴影voidmainO{TMOD二0x05;〃开计数器THO=O;TLO=O;TRO=1;EA=1;ETO=1;while(l){//keyscan();display();}}voidintrOinterrupt1{SUID++;}4、24s倒计数器。(用实验6仿真图)#include#include#dofineucharunsignodchar#dofinouintunsignedintucharcodetabl[10]={0xC0,0xF9,0xA4,OxBO,0x99,0x92,0x82,OxF8,0x80,0x90};〃段选unsignedinti;unsignedcharcount,a,b;voiddelay(uintms)〃延时子程序{uchari;while(ms一)for(i=0;i<123;i++);)voidmain(){TMOD=0x02;//方式2定时TH0=0x06;//定时賦初值TL0=0x06;〃自动重载值EA=1;//开中断ETO=1;TRO=1;i=0;//循环计数值count=24;//倒计时值while(l){a=count/10;//取十位b=count%10;//取个位Pl=Oxfd;PO=tabl[a];〃显示十位delay(3);PO=Oxff;Pl=Oxfe;PO=tabl[b];〃显示个位delay(3);PO=Oxff;〃消除阴影})voidintr()interrupt1//开定时器中断{i++;if(i%4000==0)//IS循环,250*4000*lus=lS{if(count==0)count=24;〃满24重新计数elsecount一;//未满24继续减1
本文档为【绍兴文理学院单片机试验考试文档资料】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
與因
暂无简介~
格式:doc
大小:63KB
软件:Word
页数:11
分类:
上传时间:2022-01-13
浏览量:0