单片机编程题库及答案(急求几套51单片机经典考试题好的追加20分哦!)
本文目录
- 急求几套51单片机经典考试题好的追加20分哦!
- msc51单片机:利用定时器T0编出使p1.0引脚输出2ms的矩形波程序,要求占空比系数为1:3
- 求一道最简单的关于8051单片机的编程题及答案解析
- 5V 1A 的VCC在单片机P1口接LED发光二极管时,上拉电阻灌电流方式提供足够的电流,那么请问电阻用多大的
- (MSC-51单片机问题 汇编)JZ e的操作码地址为1000H,e=20H,它的转移目的地址为__________.
- 1、 基于AT89C51单片机,利用定时器设计一个两位数码管显示电路 设计要求:每隔2S显示数字加1,显示初值
急求几套51单片机经典考试题好的追加20分哦!
一.填空题(每空2分,共30分)
1、真值1001001B的反码为01001001 ;其补码为 01001001 。
2、MCS-51系列单片机内部数据存储器,即内RAM中位寻址区的地址范围是 128 B
工作寄存器区的地址范围是 00—1FH 。
3、程序状态标志字寄存器PSW中的PSW.7的含义是 奇偶标志 ;PSW.0的含义是 进位/借位标志 。
6、单片机汇编语言程序有三种基本结构,分别是: 顺序 、 分支 和 循环 。
7、MCS—51单片机内部有 2 个 16 位加1定时 / 计数器,可通过编程决定它们的工作方式,其中,可进行13位定时 / 计数的是方式是 0 。
8、存储器EPROM 27128的地址线有 根,容量为 KB。
9、可编程并行I / O接口芯片8255A有 4 个8位并行I / O端口,可通过编程决定它们的功能。
二、单项选择题(每小题3分,共15分)
1、MCS—51单片机外部有40个引脚,其中,地址锁存允许控制信号引脚是 (A )
(A)ALE (B) (C) (D)RST
2、下列指令写**确的是。 (B )
(A)MOV #20H,A (B)ADD R2,#30H (C)PUSH R0 (D)RRC A
3、ORG 0003H
LJMP 2000H
ORG 000BH
LJMP 3000H 当CPU响应外部中断0后,PC的值是(B)
(A) 0003H (B)2000H (C)000BH (D)3000H
4、用MCS-51用串行扩展并行I/O口时,串行接口工作方式选择(A)
(A) 方式0 (B)方式1 (C)方式2 (D)方式3
5、MCS-51的并行I/O口信息有两种读取方法:一种是读引脚,还有一种是(A)
(A)读锁存器具 (B)读数据库 (C)读A累加器具 (D)读CPU
三、简答题(每小题10分,共20分)
1 简述可编程并行接口8255 A的内部结构?
答:8255 A的内部结构由三部分组成:总线接口部分,内部逻辑部分,外部接口部分。
(1)总线接口部分 其中有数据总线驱动器,读/写控制逻辑
(2)内部逻辑部分 由A组和B组控制电路。
(3)外部接口部分 该部分有3个8位并行I/O端口,即A口、B口和C口。
2 单片机有哪几个特殊功能寄存器?各在单片机的哪些功能部件中?
答:8051单片机内部有21个特殊功能寄存器,在物理上是分散在片内各功能部件中,在数学上把它们组织在内部数据存储器地址空间80H~FFH中,以便能使用统一的直接寻址方式来访问。这些特殊功能寄存器颁在以下各个功能部件中:
(1)CPU:ACC、B、PSW、SP、DPTR(由DPL和DPH两个8位寄存器组成);
(2)中断系统:IP、IE;
(3)定时器/计数器:TMOD、TCOM、TL0、TH0、TL1、TH1;
(4)并行I/O口:P0、P1、P2、P3;
(5)串行口:SCON、SBUF、PCON。
四、编程题(共35分)
1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。(15分)
解:STRAT:MOV R0,#30H
MOV R7,#0FH
MOV DPTR,#3000H
LOOP: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,LOOP
RET
2. 编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。(20分)
本程序的硬件连接如图所示。当P1.0输出高电平时,LED灯亮,否则不亮。
其程序如下:
MOV A,#01H ;灯亮初值
SHIFT: LCAIL FLASH ;调闪亮10次子程序
RR A ;右移一位
SJMP SHIFT ;循环
FLASH: MOV R2,#0AH 闪烁10次计数
FLASH1; MOV P1,A ;点亮
LCALL DELAY ;延时
MOV P1,#00H ;熄灭
LCALL DELAY ;延时
DJNZ R2,FLASH1 ;循环
RET
msc51单片机:利用定时器T0编出使p1.0引脚输出2ms的矩形波程序,要求占空比系数为1:3
2ms大概是周期。
那么按照要求,是输出高电平500微秒、输出低电平1500微秒。
令T0定时500微秒,在中断程序里面,控制输出。
;下列程序,经过编译、仿真,符合要求。
;-------------------------------------
ORG 0000H
SJMP START
ORG 000BH
SJMP T0_INT
;-------------------------------------
START:
MOV TMOD, #01H
MOV TH0, #(65536-500)/256
MOV TL0, #(65536-500) MOD 256 ;500us@12MHz
SETB TR0
SETB ET0
SETB EA
CLR P1.0
MOV R2, #3 ;输出3个500us的低电平
SJMP $
;-------------------------------------
T0_INT:
MOV TH0, #(65536-500)/256
MOV TL0, #(65536-500) MOD 256 ;500us@12MHz
CLR P1.0
DJNZ R2, T0_END
SETB P1.0
MOV R2, #4
T0_END:
RETI
;-------------------------------------
END
求一道最简单的关于8051单片机的编程题及答案解析
题目:
8个发光管来回流动,
每个管亮100ms,流动时让蜂鸣器发出"滴滴"声。
taobao店:广州华电
#include《reg52.h》 //52单片机头文件
#include 《intrins.h》 //包含有左右循环移位子函数的库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
**it beep=P2^3;
void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{ //delay(500);大约延时500ms.
uint x,y;
for(x=z;x》0;x--)
for(y=110;y》0;y--);
}
void main() //主函数
{
uchar a,i;
while(1) //大循环
{
a=0xfe; //赋初值
for(i=0;i《8;i++) //左移
{
P1=a; //点亮小灯
beep=0; //开启蜂鸣器
delay(50); //延时50毫秒
beep=1; //关闭蜂鸣器
delay(50); //再延时50毫秒
a=_crol_(a,1); //将a变量循环左移一位
}
a=0x7f;
for(i=0;i《8;i++) //右移
{
P1=a; //点亮小灯
beep=0; //开启蜂鸣器
delay(50); //延时50毫秒
beep=1; //关闭蜂鸣器
delay(50); //再延时50毫秒
a=_cror_(a,1); //将a变量循环右移一位
}
}
}
5V 1A 的VCC在单片机P1口接LED发光二极管时,上拉电阻灌电流方式提供足够的电流,那么请问电阻用多大的
这个参数的计算有些罗嗦,如下:
1)首先,一般标准51单片机的端口输入电流有如下要求:
对于P1,P2,P3口,该端口总的吸入电流不能高于15mA ;每位的吸入电流不能高于10mA。否则,单片机可能无**常工作。(注意:一些改进型的单片机的吸入电流值有所提高,但是没有大幅度提高)
2)因此,如果你只是驱动一个LED,电阻最小可以取5V/10mA=500欧姆,为了留有余量,可以取1K欧姆。(如果考虑到饱和压降和LED压降,可以取得更低一点)
如果你驱动八个LED,考虑到最坏情况(8个数码管都亮),每个引脚的电流值不能高于1..2mA,可以把最小电阻取为5V/1mA=5k欧姆。为了留有余量,可以取6.8-10 k欧姆。
最后,还有只一个指标需要注意:标准51的4个端口引脚的总的同时吸入电流必须小于70mA。
因此,如果驱动多个大功率LED的话,用引脚直接驱动不合适的。
(MSC-51单片机问题 汇编)JZ e的操作码地址为1000H,e=20H,它的转移目的地址为__________.
如果 A为00H
目的地址为1022H
如果A不为00H
目的地址为1002H
JZ rel 操作码自己为2字节的,在程序存储器rom中占2字节,执行完这一个语句rom就加2,如果要跳转再加上rel的值
1、 基于AT89C51单片机,利用定时器设计一个两位数码管显示电路 设计要求:每隔2S显示数字加1,显示初值
这个我仿真过了 是有用的,,,是从00开始显示 到了99会从新开始从00开始加
#include《reg51.h》
#define uchar unsigned char
#define uint unsigned int
uchar code disp={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code bit_tab={0xfe,0xfd};
uchar disp_buf;
uchar shu;
uchar count;
void delay(uchar x)
{
uchar i,j;
for(i=0;i《x;i++)
for(j=0;j《120;j++);
}
void conv(uchar flag)
{
disp_buf=flag/10;
disp_buf=flag%10;
}
void display()
{
uchar tem,wei;
P2=bit_tab;
tem=disp_buf;
P0=disp;
wei++;
if(wei==2)
wei=0;
}
void time0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++count==40)
{
count=0;
shu++;
if(shu==99)
shu=0;
}
}
void time1(void) interrupt 3
{
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
display();
}
void init()
{
TMOD=0x11;
EA=1;
ET0=1;
ET1=1;
TR1=1;
TR0=1;
}
main()
{
init();
while(1)
{
conv(shu);
}
}
更多文章:
网页上部分汉字乱码怎么办?我的电脑有时候显示中文字体会出现乱码,是怎么回事
2026年3月30日 04:20
eclipse配置tomcat环境变量(在Eclipse lomboz中运行JSP时,如何配置Tomcat服务器)
2026年3月30日 04:00
ps keygen注册机下载(跪求MAC 版的PS 注册机下载地址 百度盘等连接 谢谢了大婶们)
2026年3月30日 03:40
冒泡排序最坏情况下比较次数(对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为多少)
2026年3月30日 03:20
java webserver教程(急!java调用webservice并解析返回值,重谢!!)
2026年3月30日 02:40
建站成功是怎么回事(打开一个网页显示恭喜站点创建成功怎么回事)
2026年3月30日 02:20
c***tantly和continuously的区别(continually continuously的区别是什么)
2026年3月30日 02:00
单片机编程题库及答案(急求几套51单片机经典考试题好的追加20分哦!)
2026年3月30日 01:40
minidump是什么文件夹可以删除吗(C盘中有几个特别大的dmp文件,不知道能不能删)
2026年3月30日 01:20



