单片机原理及应用89c51期末复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机期末复习资料
实验3 数码管显示设计
1*功能描述:本程序集中体现数码管的静态显示,完成数码管由0到F
的静态显示
************************************************************/
#include
#define uchar unsigned char
#define uint unsigned int //宏定义
sbit dula=P1^4; //端口定义
uchar num,y;
uint x; //定义变量
uchar code table[]={
0xfc,0x60,0xda,0xf2,0x66,0xb6,
0xbe,0xe0,0xfe,0xf6,0xee,0x3e,
0x9c,0x7a,0x9e,0x8e};//0到F的数码管管码
/********************主函数**********************/
void main()
{
while(1)//进入大循环
{
for(num=0;num<16;num++) //判断是否到F
{
dula=1;//开启锁存器
P0=table[num];//送数码管管码
dula=0;//关闭锁存器
for(x=2000;x>0;x--)
for(y=220;y>0;y--);//延时
}
}
}
2 *功能描述:本程序集中体现数码管的动态扫描显示2009,通过改变数组的值可完成对任意四个数的显示
************************************************************/
#include
#include
#define uchar unsigned char
#define uint unsigned int //宏定义
sbit Dula=P1^4; //端口定义
uchar code table[]={
0xfc,0x60,0xda,0xf2,
0x66,0xb6,0xbe,0xe0,
0xfe,0xf6}; //0到F对应的数码管显示代码
uchar x,i,temp;
uchar a[4]={2,0,0,9}; //定义变量
void main() //主函数
{
temp=0x01;
for(i=4;i>0;i--) //将数值送入数码管
{
Dula=1; //开启锁存器
P0=table[a[i-1]];
Dula=0; //关锁存器
P0=0xff;
P1=temp;
temp=_crol_(temp,1); //循环左移一位函数
for(x=110;x>0;x--); //延时
}
课后重点习题
第二章
15.AT89C51单片机的片内都集成了哪些功能部件?各个功能部件的最主要的功能是什么?(1)1个微处理器(CPU);
(2)128个数据存储器(RAM)单元;
(3)4KB Flash程序存储器;
(4)4个8位可编程并行I/O口(P0口、P1口、P2口、P3口);
(5)1个全双工串行口;
(6)2个16位定时器/计数器;
(7)一个中断系统,5个中断源,2个优先级;
(8)21个特殊功能寄存器(SFR)。
16.说明AT89C51单片机的引脚EA的作用,该引脚接高电平和低电平时各有何种功能?
答:当EA脚为高电平时,单片机读片内程序存储器(4KB Flash),但在PC值超过0FFFH(即超
出4KB地址范围)时,将自动转向读外部程序存储器内的程序。当EA脚为低电平时,对程序存储器的读操作只限定在外部程序存储器,地址为0000H~FFFFH,片内的4KB Flash程序存储器不起作用。
17.64KB程序存储器空间有5个单元地址对应AT89C51单片机5个中断源的中断入口地址,请写出这些单元的入口地址及对应的中断源。
答:64KB程序存储器空间中有5个特殊单元分别对应于5个中断源的中断服务程序的入口地址,见下表。
表5
18.当AT89C51单片机运行出错或程序陷入死循环时,如何摆脱困境?
答:按下复位按钮。
第三章
13.访问SFR,可使用哪些寻址方式?
答:只能使用直接寻址方式。
14.下列程序段的功能是什么?
PUSH Acc
PUSH B
POP Acc
POP B
答:A的内容与B的内容互换。
15.写出完成如下要求的指令,但是不能改变未涉及位的内容。
(1)把ACC.3,ACC.4,ACC.5和ACC.6清“0”。
(2)把累加器A的中间4位清“0”。
(3)使ACC.2和ACC.3置“1”。
答:(1)ANL A,#87H
(2)ANL A,#0C3H
(3)ORL A,#0CH
第四章
2.说明伪指令的作用。“伪”的含义是什么?常用伪指令的功能如何?
答:伪指令不属于指令系统中的汇编语言指令,它是程序员发给汇编程序的控制命令。只有在汇编前的源程序中才有伪指令。所以“伪”体现在汇编后,伪指令没有相应的机器代码产生。4.下列程序段经汇编后,从1000H开始的各有关存储单元的内容是什么?
ORG 1000H
TAB1 EQU 1234H
TAB2 EQU 3000H
DB "MAIN"
DW TAB1,TAB2,70H
答:4D 41 49 4E 12 34 30 00 00 70
5.设计子程序时应注意哪些问题?
答:在编写子程序时应注意以下问题。
(1)子程序的第一条指令前必须有标号。
(2)使用子程序调用指令时,有两条调用指令可供使用。
①使用绝对调用指令(ACALL addr11)要注意,被调用的子程序的首地址与本绝对调用指令的下一条指令的高5位地址相同,即只能在同一2KB程序存储区内。
②使用长调用指令(LCALL addr16)时,addr16为直接调用的子程序的目标地址,也就是说,被调用的子程序可放置在64KB程序存储器区的任意位置。
(3)子程序结构中必须用到堆栈,堆栈通常用来保护断点和现场保护。
(4)子程序返回主程序时,最后一条指令必须是RET指令。
(5)子程序可以嵌套,即主程序可以调用子程序,子程序又可以调用另外的子程序。
6.试编写一个程序,将内部RAM中45H单元的高4位清“0”,低4位置“1”。
答:参考程序如下:
MOV A,45H
ANL A,#0FH
ORL A,#0FH
MOV 45H,A
7.试编写程序,查找在内部RAM的30H~50H单元中是否有0AAH这一数据。若有,则将51H 单元置为“01H”;若未找到,则将51H单元置为“00H”。
答:参考程序如下:
START: MOV R0,#30H
MOV R2,#20H
LOOP: MOV A,@R0