迷人的8051单片机机编程题

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
2016单片机复习题
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口 上传我的文档
 下载
 收藏
粉丝量:12
该文档贡献者很忙,什么也没留下。
 下载此文档
单片机练习题(含答案)
下载积分:900
内容提示:单片机练习题(含答案)
文档格式:DOC|
浏览次数:762|
上传日期: 21:22:10|
文档星级:
全文阅读已结束,如果下载本文需要使用
 900 积分
下载此文档
该用户还上传了这些文档
单片机练习题(含答案)
关注微信公众号(window.slotbydup=window.slotbydup || []).push({
id: '3284507',
container: s,
size: '0,0',
display: 'inlay-fix'
单片机的C51语言-习题及参考答案
1.C语言的优点是什么?C程序的主要结构特点是什么?
答:C语言是一种高级语言,学习比低级容易,不需要具体组织、分配存储器资源和处理端口数据,可以直接驱动单片机的所有资源。
C程序以函数为单位,由一个主函数和若干个其他函数构成,主函数是程序的入口,其他函数由主函数直接或间接调用。程序可以由一个文件或多个文件组成。文件类型包括头文件和C语言源文件,也可以是汇编语言文件,C程序可与汇编语言混合编程。
2.C51语言的变量定义包含哪些关键因素?为何这样考虑?
答:C语言的变量定义格式如下:
[存储种类] 数据类型 [存储类型] 变量名
存储种类与标准C语言相同,包括:自动型(auto)、外部型(extern)、静态型(static)、寄存器型(register)。
数据类型除了包含标准C语言类型的字符型(char),整型(int),长整型(long),浮点型(float),双精度型(double)外,还有二进制位型(bit),特殊功能寄存器型(sfr),SFR可位寻址的位类型(sbit)。
存储类型包括:片内RAM区(data)、片内可位寻址区(bdata),片内RAM间接寻址区(idata),片外RAM页寻址区(pdata),片外RAM区(xdata)、ROM区(code)。
只所以比标准C语言多了存储类型,就是因为MCS-51单片机的存储结构中有四个物理存储空间(片内RAM、片内ROM,片外RAM,片外ROM),三个逻辑地址空间(片内RAM,片外RAM,ROM),而且有多种寻址方式(直接寻址、间接寻址、页面寻址、位寻址)所致,所以在定义变量时,要根据其所在位置和寻址方式明确指定存储类型。
3.C51与汇编语言的特点各有哪些?怎样实现两者的优势互补?
答:C51是结构化语言,代码紧凑;接近自然语言,程序可读性强,易于调试、维护;库函数丰富,编程工作量小,可使产品开发周期短;具有机器级控制能力,功能很强,适合于嵌入式系统开发;不涉及指令系统,易于掌握,上手快。
汇编语言优点是:编写的程序代码精炼、执行速度快,在相同功能下,汇编语言程序可能比C语言程序效率高。缺点是对程序员要求高,必须对单片机的硬件结构非常熟悉才能编程,不便于编写比较复杂的程序。
可根据需要对要求时间性很强的代码用汇编语言编写,其它部分用C语言编写,两者混合编程就可以实现优势互补。
4.指出下面程序的语法错误:
#include&reg51.h&
void delay();{
for(i=O; i&=255; &++&);
#include&reg51.h&
a=C; //a和C必须先定义才可使用
int a=7,C //缺分号,应该提在使用前说明,C应该先赋值
delay(10) //延时子程序必须先定义,或先有函数原型说明,缺分号
void delay();{
//作为函数定义,有函数定义不能嵌套的问题,
//即不能在一个函数内定义另一个函数,而且&{&前不应有分号
//作为函数原型说明,应该放在函数调用之前,且其后不应该接函数体
cgar i;//字符型应该是unsigned char,因为其下的取值大于127
for(i=O; i&=255; &++&);// &++&应改成i++
//主函数没有结束,缺&}&
如果要改正确,可改成如下形式
#include&reg51.h&
void delay(unsigned char n);
void main(){
int a,C=7;
delay(10);
void delay(unsigned char n){
unsigned char i;
for(i=O; i&=n; i++);
5.定义变量a,b,c,其中a为内部RAM的可位寻址区的字符变量,b为外部数据存储区浮点型变量,c为指向 int 型 xdata 区的指针。
int xdata *c;
6.编程将8051的内部数据存储器20H单元和35H单元的数据相乘,结果存到外部数据存储器中(任意位置)。
解:方法一:用嵌入式汇编语言实现
#include&reg51.h&
void main()
#pragma asm
MOV DPTR,#1234H
MOVX @DPTR,A
MOVX @DPTR,A
#pragma endasm
方法二:单用C语言编程实现
#include&reg51.h&
#include&math.h&
int movdata(char);
void main()
unsigned char *ptr,a,b;
7.8051的片内数据存储器25H单元中存放有一个0~10的整数,编程求其平方根(精确到5位有效数字),将平方根放到30H单元为首址的内存中。
解:方法一:用C语言与汇编语言混合编程实现
//用C语言编写的主函数MAIN.C
#include&reg51.h&
#include&absacc.h&
#include&math.h&
float data f _at_ 0x30;
char getdata(char);
void main()
char a=0x25,c;
c=getdata(a);
f=sqrt(c);
;用汇编语言编写的取数据子函数,只有一个地址参数在R7中,返回值为指定地址单元中的内容,用R7返回主函数。
PUBLIC _GETDATA
DE SEGMENT CODE
_GETDATA: MOV A,R7 ;取地址参数
MOV R7,A ;返回地址单元中的内容
方法二:单用C语言编程实现
#include&reg51.h&
#include&math.h&
void main()
float *ptr2;
f=sqrt(n);
ptr2=0x30;
8.将外部RAM 10H~15H单元的内容传送到内部RAM 10H~15H单元。
解:方法一:采用C语言与汇编语言混合编程
//用C语言编写的主函数MAIN.C
#include&reg51.h&
char movdata(char,char);
void main()
char a=0x10,b=0x06;
movdata(a,b);
;用汇编语言编写的移动数据子函数MOVDATA,其中第一个参数在R7中为首地址,第二个参数在R5中为字节数
PUBLIC _MOVDATA
DE SEGMENT CODE
_MOVDATA: MOV A,R7 ;取参数
LOOP: MOVX A,@R0
DJNZ R5,LOOP
方法二:单用C语言编程实现
#include&reg51.h&
int movdata(char);
void main()
char *ptr1=0x10;
char xdata *ptr2;
ptr2=0x10;
while(n&){
*ptr1++=*ptr2++;
9.内部RAM 20H、21H和22H、23H单元分别存放着两个无符号的16位数,将其中的大数置于24H和25H单元。
解:方法一:
#include&reg51.h&
void main()
unsigned int * //设置一个内部RAM指针
unsigned int x,y,z;
ptr=0x20; //指向0x20单元
x=* //取第一个数
ptr=0x22; //指向0x22单元
y=* //取第二个数
z=(x&y)?x:y; //将两数中的较大者赋给z
ptr=0x24; //指向地址为0x24的目标单元
*ptr=z; //将大数存入目标单元
#include&reg51.h&
#include&absacc.h&
void main()
unsigned int x,y,z;
x=DBYTE[0X20]*256+DBYTE[0X21];
y=DBYTE[0X22]*256+DBYTE[0X23];
z=(x&y)?x:y; //将两数中的较大者赋给z
DBYTE[0X24]=z/256;
DBYTE[0X25]=z%256;
#include&reg51.h&
unsigned int x _at_ 0x20;
unsigned int y _at_ 0x22;
unsigned int z _at_ 0x24;
void main()
z=(x&y)?x:y;
标签(Tag):
------分隔线----------------------------
------分隔线----------------------------您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
单片机习题集(含答案).doc 33页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
单片机原理及应用习题
1-1单项选择
1、计算机中最常用的字符信息编码是(
(A)ASCII
(B)BCD码
(C)余3码
(D)循环码
2、-31D的二进制补码为.(
(A)1110000B
3、十进制29的二进制表示为原码(
4、十进制0.625转换成二进制数是(
(A)0.101
(B) 0.111
(C)0.110
(D)0.100
5、十六进制数7的ASCII码是(
6、十六进制数B的ASCII码是(
(D) 1011
7、通常所说的主机是指(
(A)运算器和控制器 (B)CPU和磁盘存储器 (C)CPU和主存储器 (D)硬件和软件
8、使用单片机实现在线控制的好处不包括(?
(A)精确度高
(B)速度快
(C)成本低
(D)能与数据处理结合
1、计算机中常作的码制有
2、十进制29的二进制表示为
3、十进制数-29的8位补码表示为
是计算机与外部世界交换信息的载体。
5、十进制数-47用8位二进制补码表示为
6、-49D的二进制补码为
7、计算机中的数称为
,它的实际值叫
8、单片机的存储器结构形式有普林斯顿结构(又称冯.依诺曼结构)与哈佛结构,MCS-51存储器采用的是
1-3 问答题
1、何谓单片机?单片机与一般微型计算机相比,具有哪些特点?
2、单片机主要应用在哪些领域?
3、为什么80C51系列单片机能成为8位单片机应用主流?
4、举例说明单片机的主要应用领域。
5、二进制数、十进制数、十六进制数各用什么字母尾缀作为标识符?无标识符时表示什么进制数?
6、试比较MCS-51,MSP430,EM78,PIC,M6800及AVP等系列单片机的特点。
MCS-51单片机的硬件结构与工作原理
2-1 单项选择
1、要MCS-51系统中,若晶振频率屡6MHz,一个机器周期等于(
2、以下不是构成的控制器部件(
A 程序计数器、
B指令寄存器、
C指令译码器、
3、以下不是构成单片机的部件(
微处理器(CPU)、B存储器
C接口适配器(I\O接口电路)
4、下列不是单片机总线是(
A 地址总线
B 控制总线
C 数据总线
D 输出总线
5、PSW=18H时,则当前工作寄存器是(
(A)0组  (B)1组  (C)2组    (D)3组
6、P1口的每一位能驱动(  
(A)2个TTL低电平负载有   (B)4个TTL低电平负载
(C)8个TTL低电平负载有  (D)10个TTL低电平负载
7、MCS-51的中断允许触发器内容为82H,CPU将响应的中断请求是(
(C)串行接口
8、外部中断0的中断入口地址为
(A)0003H
(B)000BH
(C)0013H
(D)001BH
9、内部定时/计数器T0的中断入口地址为
(A)0003H
(B)000BH
(C)0013H
(D)001BH
10、在中断服务程序中,至少应有一条(
(A)传送指令(B)转移指令(C)加法指法(D)中断返回指令
11、MCS-51有中断源( 
(A)5个   (B)2个   (C)3个   (D
正在加载中,请稍后...

我要回帖

更多关于 stc8051单片机引脚图 的文章

 

随机推荐