单片机学习通习题
第三章作业单片机的汇编语言与程序设计
一. 单选题(共4题,40分)
1. (单选题, 10分)下列指令中,能访问外部数据存储器的正确指令为()
- A. MOV A, @DPTR
- B. MOVX A,Ri
- C. MOVC A,@A+DPTR
- D. MOVX A,@Ri
2. (单选题, 10分)80C51指令 MOV R0, 20H中的20H是指()
- A. 立即数
- B. 内部RAM中的字节地址
- C. 内部RAM中的位地址
- D. 内部ROM中的字节地址
3. (单选题, 10分)已知A=0DBH, R4=73H, CY=1, 指令SUBB A,R4执行后的结果是()
- A. A=73H
- B. A=0DBH
- C. A=67H
- D. A=68H
4. (单选题, 10分)设累加器A中为无符号数,B中数为2,下列指令中()的作用于其他几条不同
- A. ADD A,0E0H
- B. MUL AB
- C. RL A
- D. RLC A
二. 简答题(共3题,60分)
5. (简答题, 20分)编程将内部RAM的30H—50H单元内容分别加1,假定不涉及进位。并将结果存入片外RAM的50H—70H单元。编写汇编程序。
6. (简答题, 20分)编程查找片内32H—41H单元中出现0AAH的次数,若有,则将查询结果赋给50H;若没有,则将51H单元清零。绘制流程图,编写汇编程序。
7. (简答题, 20分)内部RAM从30H单元开始有一数据块,以0EH为结束,试统计数据块长度,并将结果存入片外RAM的50H单元。绘制流程图,编写汇编程序。
第四章单片机的C51语言
一. 简答题(共3题)
1. (简答题)指出下面程序的语法错误:
#include
main(){
a=C;
int a=7,C
delay(10)
void delay();
cgar i;
for(i=0; i<=255; i++);
}
没有#include<reg51.h> ,没有函数的返回值类型void,未声明变量就使用,cgar拼写错误,应该为char,函数声明在Main()中,应该在外部声明,没有初始化变量c
2. (简答题)将片内RAM中20H、21H单元存放的无符号整数比较大小,并将大数存放到片外RAM的30H
#include<reg51.h>
void main(){
unsigned char a,b,max;
a=*((unsigned char idata *)0x20)
b=*((unsigned char idata *)0x21)
if(a>b)
max = a;
else
max=b;
*((unsigned char xdata *)0x30)= max;
while(0);
}
3. (简答题)将片外RAM中30H、31H单元存放的带符号整数比较大小,并将大数存放到片内RAM的20H
#include<reg51.h>
void main(){
signed char x= *((signed char xdata *)0x30);
signed char y =*((signed char ydata *)0x31);
*((signed char idata *)0x20) = (x>y)?x:y;
while(0);
}
第7章单片机的串行通信技术
一. 简答题(共1题)
1. (简答题)两个80C51(主机、从机)晶振频率为12MHz,通信波特率为2400bps,请绘制流程图并编程实现。
(1)主机将指令帧0xAF发向从机(高四位为主机地址,低四位为命令),从机对指令帧进行奇偶校验,正确则执行指令帧,否则通知主机重发指令帧; (2)从机判断指令是否为0x0F,若是,则将从机片内RAM中20H-30H中的无符号整数进行叠加(结果不溢出),结果存入从机的片外RAM中的35H,同时将结果的低四位组成数据帧0xBX(高四位为从机地址,X为结果低四位),发回主机; (3)主机接到从机数据帧后,将0x0X存入主机片内RAM55H。 要求主机通信以查询方式,从机通信以中断方式。