单片机原理及应用89c51期末复习资料

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档