绍兴文理学院单片机实验考试文档资料_第1页
绍兴文理学院单片机实验考试文档资料_第2页
绍兴文理学院单片机实验考试文档资料_第3页
绍兴文理学院单片机实验考试文档资料_第4页
绍兴文理学院单片机实验考试文档资料_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、绍兴文理学院单片机实验考试程序: 基本部分: 实验三:汇编语言程序设计清零:把外部RAM 2000H-20FFH的内容清零。ORG 0000HAJMP MAINORG 0030H累加器A清零MAIN: MOV A,#00H/MOV R0,#00H/ 将2000H内容送给 DPTR /将2000H中的内容清零/DPTR 增 1MOV DPTR,#2000HLOOP: MOV DPTR,AINC DPTRDJNZ R0,LOOP /减1不为0则转移,继续循环,否则结束SJMP $ END 拆字:把外部RAM 2000H勺内容拆开,高位送外部 RAM 2001H低位,低位送 外部RAM 2002H氐

2、位,外部RAM 2001H外部RAM 2002HS位清零。ORG 0000HAJMP MAINORG 0030H/2000H内容送A将A中内容寄存在B中 高低位交换高位清零中为2001HMAIN: MOV DPTR,#2000H /DPTR 中为 2000HMOVX A,DPTR/MOV B,ASWAP AANL A,#0FH/DPTRINC DPTR/DPTR/中为2002H将B中的内容(2000H内容)还给A屏蔽200OH的高位MOVX DPTR,A /将A中的内容(2000H的高位)给2001H的低位 INC DPTRMOV A,BANL A,#0FHMOVX DPTR,A /将A中的内

3、容(2000H的低位)给2002H的高位 SJMP $END(3)拼字:把外部 RAM 2000H外部RAM 2001H的低位分别送入外部 RAM 2002H 咼低位。ORG 0000HAJMP MAINORG 0030HMAIN: MOV DPTR,#2000H / 将 2000H中的内容送 DPTRMOVX A,DPTR / 将 2000H 中的内容送 AANL A,#0FH / 交换高低位送BSWAP AMOV B,AINC DPTR /DPTR 增 1MOVX A,DPTRANL A,#0FH / 屏蔽高位,将2001H内容送AORL A,B/A 和 B或后送 2002HINC DPT

4、RMOVX DPTR,ASJMP $END(4)在内部RAM中查找是否有单元为特殊值。(单重循环)如:查找找内部 RAM 的30H-50H单元中是否有0AAH这一数据。若有,则将51H单元置为“ 01H;若 未找到,则将51H单元置为“ 00IH。ORG0000HAJMPSTARTORG0030HSTART:MOVR0,#30HMOVR2,#20HLOOP:MOVA,R0CJNEA,#0AAH,NEXTMOV51H,#01HLJMPEXITNEXT:INCR0DJNZR2,LOOPMOV51H,#00HOVER:SJMP $END实验四:汇编语言程序设计1外部RAM数据块搬移程序:(1)试将片

5、内RAM中 30H3FH的数据传送到片外RAM地址为1000H开始的单 元中。数据搬移:(内部和外部数据存储器之间,单重循环)ORG 0000HAJMP MAINORG 0030HMAIN: MOV R0,#30HMOV R1,#10HMOV DPTR,#1000HLOOP: MOV A,R0MOVX DPTR,AINC DPTRINC R0OVER: DJNE R1,LOOPSJMP $END(2)将外部RAM中 R2 R3为源地址的N个字节数据传送到R4 R5为目的地 址的外部RAME中,字节个数存放在 R6 R7中。数据区传送功能:在 R2 R3中输入源地址(例如0000H,R4 R5中

6、输入目的 地址(例如2000H , R6 R7中输入字节数(例如2000H),运行程序,检查0000 仆FFH中内容是否和2000H-3FFFH中内容完全一致。ORG 0000HAJMP MAINORG 0030HMAIN: MOV DPL,R3R3 内容给 DPTR氐位MOV DPH,R2R2内容给DPTF高位MOVX A,DPTRR2, R3源地址内容给累加器 A,即取数MOV DPL,R5R5 内容给 DPTR低位MOV DPH,R叙4内容给DPTF高位MOVX DPTR,A数据搬移CJNE R3,#0FFH,LOOP1 ;R3是否需要进位,即传送数据是否超过 OFFHINC R2 ;若

7、超过则进位LOOP1: INC R3 ;源地址加 1CJNE R5,#0FFH,LOOP2 ;R5是否需要进位,即接受数据是否超过 OFFHINC R4 ;若超过则进位LOOP2:INC R5 ;目的地址加1CJNE R7,#00H,LOOP3 ;若低位字节数不为0,则跳转LOOP3字节数减1CJNE R6,#00H,LOOP4 ;若高位字节数不为 0,则跳转LOOP4产生借位,高低位字节数均减1SJMP $NOP ;空操作LOOP3: DEC R7SJMP MAINLOOP4: DEC R7DEC R6SJMP MAINEND2. 双字节*单字节无符号乘法程序:是编写程序,其功能为:(R0R

8、1)*(R2)fR3R4R5ORG 0000HAJMP MAINORG 0030HMAIN: MOV A,R1MOV B,R2MUL AB ;R1*R2XCH A,R5 ;乘积低位R5,R5A准备乘数MOV R4,B ;乘积高位暂存R4MOV A,R0MOV B,R2MUL AB ;R0*R2ADD A,R4 ;乘积低位加上一次的乘积高位暂存 R4CLR A;清累加器ADDC A,B ;高位加从低位来的进位给乘积高位MOV R3,ASJMP $END提高部分:1、数据排序。(256个数以内)编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中几个单字节无 符号的正整数,按从小到大的次序重新

9、排列。数据排序功能:把RAM空间50H-5AH中放入不等的数据,运行本实验程序后检 查50H5AH中数据是否按从小到大排列。ORG 0000HAJMP STARTORG 0030HSTART: MOV R0,#50H ;将 50h 的值赋给 R0MOV R2,#10;将 10 赋给 R2 SORT: MOV A,R0 ;将 R0值给 AMOV R1,A ;将A的值给R1MOV A,R2 ;将R2的值给AMOV R5,A ;将A的值给R5CLR F0 ;将F0清零MOV A,R1;将R1的地址给 A LOOP: MOV R3,A ;将 A 的值给 R3INC R1;R1 自加CLR C;清零进位

10、标志MOV A,R1;将R1的地址给 ASUBB A,R3 ;将A与R3的值相减JNC LOOP1 ;如果借位跳转到LOOP1反之按顺序往下SETB F0;把 F0 置 1MOV A,R3 ;把R3的值给AXCH A,R1;将A与R1的字节交换DEC R1 ;R1 自减XCH A,R1;将A与R1的字节交换INC R1 ;R1 自加LOOP1:MOV A,R1;将R1的地址赋给 ADJNZ R5,LOOP ;判断R5是否为0是则跳转 反之按顺序继续程序JB F0,SORT;判断F0是否为1,是则跳转 反之按顺序继续程序RET ;返回SJMP $;数据保留END ;结束2、动态显示。(用实验6仿

11、真图)实验二:编写程序,在数码管上显示固定“654321”字形#in clude#in clude#defi ne uchar un sig ned char#defi ne uint un sig ned intuchar code tab1=0xF9,0xA4,0xB0,0x99,0x92,0x82;数码管显示数字 1-6uchar code tab2=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/ 控制数码管位选uchar i;void delay(ui nt ms)/ 延时 1Msuchar i;while(ms-)for(i=0;i123;i+);void mai n

12、()while(1)for(i=0;i6;i+)P1=tab2i;/选择数码管位选PO=tab1i;/选择数码管显示字形delay(1);P0=0xff;数码管消影3、 脉冲计数并显示。(用实验6仿真图)实验五 定时/计数器实验:将定时/计数器0外部输入的脉冲进行计数#in clude#i nclude#define uchar unsigned char /宏定义 用 uchar 代替 unsigned char#defi ne uint un sig ned intcodeuchar tab110=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0

13、x90; un sig ned long int count; /计数值 uint sum;uchar nu m6,flag,i,j;uchar code tab26=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;void delay(uint ms)/ 延时 MS uchar i;while(ms-) for(i=0;i1000000) sum=0;TH0=0;TL0=0;coun t=0; elsecount=sum*65536+TH0*256+TL0; / 取计数值 num5=count/100000; / 第 6 位 num4=count%100000/10000; 第

14、5 位 num3=count%10000/1000; 第 4 位 num2=count%1000/100; 第 3 位 num1=count%100/10; 第 2 位 num0=count%10; 第 1 位 for(i=0;i6;i+) flag=0;for(j=i;j6;j+)if(nu mj!=0)/该位为0的情况下前面位是否还有大于的值flag=1;break; if(flag)/跳出循环P0=tab10; / else若有则该位显示0P0=0xff;/若没有有则该位不显示P1=tab2i;if(i!=0 & numi=0) / 消 0 显示0elseP0=tab1numi;/显示相

15、应位的数字delay(1);P0=0xff; /消去阴影void mai n()TMOD=0x05; /开计数器TH0=0;TL0=0;TR0=1;EA=1;ET0=1;while(1)/keysca n();display。;void in tr() in terrupt 1sum+;4、24s倒计数器。(用实验6仿真图)#in clude#in clude#defi ne uchar un sig ned char#defi ne uint un sig ned int段选uchar code tab110=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90; un sig ned in t i;un sig ned char coun t,a,b;void delay(ui nt ms) /延时子程序uchar i;while(ms-)for(i=0;i123;i+);void mai n()TMOD=0x02; / 方式 2 定时TH0=0x06; /定时赋初值TL0=0x06; / 自动重载值EA=1;/开中断ET0=1;TR0=1;i=0; /coun t=24; / while(1)a=cou nt/1O

温馨提示

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

评论

0/150

提交评论