ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:20.72KB ,
资源ID:29949605      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29949605.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机部分答案第四版北航马忠梅.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机部分答案第四版北航马忠梅.docx

1、单片机部分答案第四版北航马忠梅 已知(A)=7AH,(R0)=30H,(30H)=A5H,PSW=80H。问执行(单独执行)以下各指令的结果 XCH A,R0; A=30H, R0=7AH XCH A,30H; A=A5H XCH A,R0; A=A5H XCHD A,R0; A=75H ;二者低4位互换 SWAP A; A =A7H; A高低4位互换 ADD A, R0; A = AAH, Cy=0, OV=1(a6 a7 =1) ADD A,30H; A= 1FH, Cy=1, OV=0 ADD A, A,#30H; A= AAH, Cy=0, OV=1; ADDC A,30H; A= 2

2、0H, Cy=1, OV=0; 因为PSW的Cy=1 SUBB A,30H; A= D4H, Cy=1, OV=1; 因为PSW的Cy=1 SUBB A,#30H; A= 49H, Cy=0, OV=0; 因为PSW的Cy=1 已知(A)=83H,(R0)=17H,(17H)=34H。执行以下指令后A=? ANL A,#17H ; 逻辑与 (A)=03H ORL 17H,A ;逻辑或 (17H)=37H XRL A,R0 ; 异或(A)=34H CPL A ; 取反 (A)= CBH 将内部RAM20H、21H、22H,连续三个单元的内容以此放入 2FH、2DH、2EH单元 MOV R0, #

3、20H MOV R1, #2FHLOOP : MOV A, R0 MOV R1, A INC R0 DEC R1 CJNE R0, #23H, LOOP SJMP $ 外部数据RAM在2000H2100H区域有一个数据块,将他们移动到3000H3100H区域 解一: MOV DPTR, #2000H MOV P2, #30H MOV R1, #00HLOOP : MOVX A, DPTR MOV X R1, A INC DPTR INC R1 CJNE R1, #00H, LOOP INC P2 MOV X A, DPTR MOVX R1, A解二: MOV DPTR, #2000H MOV

4、P2, #30H MOV R1, #00HLOOP : MOV X A, DPTR MOV X R1, A INC DPTR INC R1 CJNE R1, #00H, LOOP INC P2 MOV A, DPH CJNE A,#21H,NEXTNEXT1: MOVX A, DPTR MOVX R1, A SJMP $NEXT: INC DPTR SJMP NEXT1解三: MOV DPTR, #2000H MOV R5, #00H MOV A, #00H MOV R1,ALOOP : MOV A,R1 MOV X A, A+DPTR MOV X R0, A MOV DPTR, #3000H

5、 MOV A, R0 MOVX A+DPTR, A INC R1 DJNZ R5, LOOP MOV DPTR, #2100H MOVX A, DPTR MOV DPTR, #3100H MOVX DPTR,A 外部数据RAM从2000H开始有100个数据块,将他们移动到2030开始的单元 解一: MOV DPTR, #2000H MOV R4,#64H MOV P2, #10H LOOP1: MOVX A, R1 MOV R1, #00H MOVX DPTR, A MOV R4,#64H INC R1LOOP : MOVX A, DPTR INC DPTR MOV X R1, A DJNZ

6、R4, 64H, LOOP1 INC DPTR INC R1 DJNZ R4, 64H, LOOP MOV DPTR, #2030H MOV P2, #10H MOV R1, #00H解二: MOV DPTR, #2000H MOV R3,#64H MOV P2, #10H DJNZ R3, LOOP NEXT: MOV R1, #00H SJMP $ MOV R4,#64H LOOP : MOVX A, DPTR MOVX R1, A INC DPTR INC R1NEXT1: DJNZ R4, LOOP LOOP1: MOV DPTR, #1000H MOV P2, #20H MOV R1

7、, #30H习题参考答案习题3. 8051主要的存储空间是什么?为什么两个RAM的空间不同?答:8051单片机的存储空间分为数据RAM和代码ROM,其中数据RAM又分为片内RAM和片外RAM。 片内RAM的地址为8位,由单片机指令直接在单片机内部寻址访问,而片外RAM的地址为16位,只能由单片机的MOVX指令通过外部总线访问。习题4. 编一段程序,把8位口新的输入值和前一次的输入值进行比较,然后产生一个8位数。这个数中的位为“1”的条件是:仅当新输入的位为“0”,而前一次输入的位为“1”。 答:设该8位口为P1,新产生的8位数为x: unsigned char x; x=P1; x&=P1;习

8、题6. 按给定的存储类型和数据类型,写出下列变量的说明形式:up,down 整数,使用堆栈存储;first,last 浮点数,使用外部数据存储器存储;cc,ch 字符,使用内部数据存储器存储。 答:堆栈只能存储内部RAM字节内容,必须在idata区:(复位后SP=07H,但是07H中存放堆栈地址,上电复位后典型寄存器的值?) int idata up,down; float xdata first,last; char idata cc,ch; 或char data cc,ch;习题7. 判断下列关系表达式或逻辑表达式的运算结果(1或0) 1、10=9+1; 1 2、0&0; 03、10&8;

9、 14、8|0; 15、!(3+2); 06、设x=10,y=9;x=8&y2; -b,结果右移2位。注: -b不是取反也不能确定为负数;取反一般是变成2进制然后按位取反。如b=-3,即0FDH,则-b=3,而不是0FD按位取反 4、c=+a%b-; a=a+1,a%b,b=b-1,%结果赋给c 5、!m&n; !m,若结果为1再和n相与。X(不是&) !m,再和n相与6、ab|c&d; ab,若结果为0再c&d,结果相或习题参考答案 习题6. 用选择分支编写程序,把输入的一个数字按下列对应关系显示。当输入Z时,程序结束。#include #include main( ) unsigned c

10、har k; do scanf(“%c”,&k); switch(k) case 1: printf(“A”); break; case 2: printf(“B”); break; case 3: printf(“C”); break; case 4: printf(“D”); break; default: printf(“?”); break; while( k ! = Z ); while( 1 ); 习题7. 若在C中的switch操作漏掉break,会发生什么?答:若在case语句中漏掉break,则程序执行case选择部分程序后不会按照要求退出switch语句,而是继续执行下一个

11、case语句选择的内容。习题8. 编写程序,输出x3数值表,x为010。main() unsigned char x; unsigned int y; for(x=0;x11; x+) y=(unsigned int)x*x*x; printf(“%c,%dn”,x,y); while(1);习题9. 用三种循环方式分别编写程序,显示1100的平方。答:三种流程图如下:#define uint unsigned int main() unsigned int y; unsigned char x; for( x = 0 ; x 101 ; x+) y=(unsigned int)x*x; pr

12、intf(“%c,%dn”,x,y); while(1); main( ) unsigned int y; unsigned char x=1; while(x101) y=(unsigned int)x*x; printf(“%c,%dn”,x,y); x+; while(1);main() unsigned int y; unsigned char x=1; do y = (unsigned int)x*x ; printf( “%c, %dn”, x, y ) ; x+; while(x101); while(1);习题9. 写出下列数组使用*运算的替换形式。2; i+1; 53。1、*

13、(data+2) p1072、*(num+i+1)3、*(*(man+5)+3)习题10. 设下列运算表达式中p是指针,试分析各表达式的运算顺序。=*p-; =*p+;+i=*p+ ; =*-*+p-6。答:1、先取*p给b,再使p减1单元(注意不是*p减1单元);2、先取*p给x,再使p加1单元(注意不是*p加1单元);3、先使i加1,再取*p给ai,再使p加1单元;4、这里p是指针的指针,先使p加1单元,再使*p减1单元,再使*(*p)减6后赋给y;习题12. 结构的定义和说明在程序中的作用是什么?在对结构初始化时应该注意些什么问题。答: 结构的定义和说明在程序中可以把一组关系密切的变量存

14、放在一个连续的存储空间中,便于对这些变量的访问。同一个结构中不能存在同名变量名称。 可以把具有相同结构的已知结构直接用“=”对结构进行赋值,或者通过其成员的逐个引用分别赋值。在没有赋值前结构成员的值是不确定的,有可能被编译器启动代码初始化为0。 习题14. 使用union的目的是什么?定义union,它用于容纳下列数据: int data4; char ch8; float f。答:使用union的目的之一是若干个不会同时使用的变量公用存储单元,以便节省存储空间。同一个union中不能存在同名变量名称。union data_type int data4; char ch8; float f;m

15、ydata ;习题参考答案习题1. C语言中,函数的存储类型和数据类型的意义是什么?答:一,函数存储类型有extern(外部函数)和static(内部函数或静态函数)。在没有任何存储类说明的情况下函数都是全程序可见的,即函数的默认存储类特性为extern。Static存储类使函数对对其所在的文件定义之前的部分和非定义文件是不可见的,不能调用的。 二,数据类型是说明函数的返回值类型。包括简单类型(char,unsigned char,int,unsigned int,long,unsigned long,float,bit),复合型(stuct,union) 和无类型(void) 习题3. 作为

16、函数形式参数使用的数组名具有什么特征?它们的使用特点是什么?1、当用数组作为函数的参数时,应当在调用函数和被调用函数中分别定义数组;2、实参数数组与形式参数数组的类型应当一致;3、实参数数组与形式参数数组的大小可以一致,也可以不同,用户需自行考虑数组的边界问题。习题5. 当一个函数需要返回多于一个值时,可以怎么做? 可以通过返回指针实现,先把需要返回的所有数据连续存放在一段存储空间中,让该指针指向其首地址,然后返回该指针。 7.编写字符串字符替换函数replchr(s,c1,c2),把字符串s中的c1置换为c2 void replchr(char* s,char c1,char c2) cha

17、r i=0,temp; while(si !=0) if(si=c1) temp=c1; c1=c2; c2=temp; else s+; 写把十六进制字符串s变换成整数值返回的函数htoi(s) #include “” #include “” int translat(char c) 写函数itob(n)。它把整数n变换成二进制字符串,并返回字符串地址。unsigned char p17;unsigned char* itob(int n) unsigned char i=0; unsigned int m; if(n0) pi+=-; m=-n; else m=n; do pi+=(m&0

18、x8000)?1:0; 写把字符串s逆转的函数reverse(s).void reverse (unsigned char* s) unsigned char i, s , n;for(i=0;i2) reverse(p+1, i-2);习题12.设计并初始化一个具有2个元素的2维数组保存图画(如正方形)的X-Y坐标值。然后设计一个画图函数。标明怎样调用函数画正方形。 #include unsigned char G12=1,2; 用图11-3的接口电路,编写由ADC0809的通道6连续采集20个数据放在数组中的程序解一:#include#include#define IN6 XBYTE0x7

19、ffe /*设置ADC0809的通道6地址*/sbit ad_busy=P33; /*即EOC状态*/char ad0809(void) /*A/D采集函数*/ uchar i; IN6=0; /*启动转换*/ i=i; i=i; /*延时等待EOC变低*/ while(ad_busy=0); /*查询等待转换结束*/ return(IN6); void main(void) static uchar idata ad20; uchar j; for(j=0;j20;i+) adj=ad0809(); /*20次采样ADC0809通道6的值*/ 解二: #include#include#def

20、ine uchar unsigned char#define IN6 XBYTE0xfffe /*设置ADC0809的通道6地址*/sbit ad_busy=P33; /*即EOC状态*/void ad0809(uchar idata * x) /*采样结果放指针中的A/D采集函数*/ uchar i; uchar xdata * ad_adr; ad_adr=&IN6; for(i=0;i20;i+) /*20次采集*/ *ad_adr=0; /*启动转换*/ i=i; /*延时等待EOC变低*/ i=i; while(ad_busy=0); /*查询等待转换结束*/ xi=*ad_adr;

21、 /*存转换结果*/ void main(void) static uchar idata ad20; ad0809(ad); /*采样ADC0809通道的值*/ 4.对0809进行数据采集编程。要求对8路模拟量连续采集24h,每隔10min采集一次,数据存储在外部数据存储区中。 解:图11-3#include#include#define uchar unsigned char#define uint unsigned int #define IN0 XBYTE0x7ff8 /*设置ADC0809的通道0地址*/sbit ad_busy=P33; /*即EOC状态*/uint overflo

22、w_count = 0; /*T1中断次数初值*/ void ad0809(uchar xdata * x) /*采样函数,结果x放外部数据存储器*/ uchar i; uchar idata * ad_adr; ad_adr=&IN0; for(i=0;i8;i+) /*处理8通道*/ *ad_adr=0; /*启动转换*/ i=i; /*延时等待EOC变低*/ i=i; while(ad_busy=0); /*查询等待转换结束*/ xi=*ad_adr; /*存转换结果*/ *(*(p+j)+i)=xi; ad_adr+; /*下一通道*/ /* 定时器1中断服务程序;每100ms执行一次,fosc=6MHz*/void timer1_ISR(void) interrupt 3 TH1 = (65536 50000)/256; 于频率测量,何时采用频率测量法,何时采用周期测量法?解:频率较高时,采用频率测量法; 频率较低时,采用周期测量法; 这样就可以提高测量精度

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1