单片机复习重点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机复习重点

1.单片机的堆栈指针SP始终是指示堆栈顶。

2.当程序状态字寄存器PSW状态字中RS1和RS0分别为0和1 时,系统先用的工作寄存器组为组1。

3.定时器T1的中断入口地址是 001BH 。

4.8051定时/计数器共有四种操作模式,由TMOD寄存器中M1 M0的状态决定,当M1 M0的状态为01 时,定时/计数器被设定为 16位定时/计数器。

5.串行口的工作方式由SCON寄存器决定。

6. 定时器T0的溢出标志TF0,在CPU响应中断后由硬件自动清零。

7.扩展程序存储器2764时,需要 5 条P2口线。

8.若单片机的振荡频率为6MHz,设定时器工作在方式1需要定时1ms,则定时器初值应为216-500。9.扩展存储器时要加锁存器373,其作用是锁存寻址单元的低八位地址。

11.8051单片机中,唯一一个用户可使用的16位寄存器是DPTR 。

12.8051的程序计数器PC为16位计数器,其寻址范围是0000H-FFFFH ,64KB 。

13.单片机应用程序一般存放在 ROM 中。

14.MCS-51单片机在同一优先级的中断源同时申请中断时,CPU首先响应外部中断0 。

15.定时器若工作在循环定时或循环计数场合,应选用工作方式2

16.MCS-51单片机的外部中断1的中断请求标志是 IT1 。

17.中断入口地址一般可存放转移指令。

18.串行口每一次传送 1帧字符。

19.定时器1工作在计数方式时,其外加的计数脉冲信号应连接到 P3.5/ T1引脚。

20某应用系统需要通过P1.0输出脉宽为500us的方波,系统选用定时器/计数器0(T0),定时方式3,主频为12MHz。试写出相应的程序。 (参考课件例题)

C语言程序(中断方式):

# include //包含特殊功能寄存器库

sbit P1_0=P1^0;

void main( )

{ TMOD=0x03; //设置工作模式

TL0=0x06;

TH0=0x06; //为定时器赋初值

ET0=1; //允许定时0中断

EA=1;

TR0=1; //启动定时器0

while(1); //等待中断

}

void time0_int(void) interrupt 1

{

P1_0=~P1_0;

}

中断方式汇编语言程序:

ORG 0000H

LJMP MAIN

ORG 000BH ;中断处理程序

CPL P1.0

RETI

ORG 0030H ;主程序

MAIN:

MOV SP, #0DFH

MOV TMOD,#02H

MOV TL0, #06H

MOV TH0, #06H

SETB ET0 ;允许定时器0中断

SETB EA ;允许CPU中断

SETB TR0 ;启动定时器0

SJMP $ ;等待中断

END

采用查询方式C语言程序:

# include

sbit P1_0=P1^0;

void main()

{ TMOD=0x02;

TL0=0x06;

TH0=0x06;

TR0=1;

while (1)

{ while(!TF0) ; //查询计数溢出TF0=0;

P1_0=~P1_0;

} }

查询方式汇编语言程序:

MAIN:

MOV TMOD,#02H ;主程序

MOV TL0,#06H

MOV TH0,#06H

SETB TR0

LOOP:

JNB TF0,$ ;查询计数溢出

CLR TF0

CPL P1.0

SJMP LOOP

END

21.将片内RAM 50H~5FH中的数据串行发送,用第9个数据位作奇偶校验位,设晶振为11.0592 MHz,波特率为2400 b/s,编制串行口方式3的发送程序。(参考课件例题)

解:用TB8作奇偶校验位,在数据写入发送缓冲器之前.先将数据的奇偶位P写入TB8,这时,第9位数据作奇偶校验用,发送采用中断方式。

C语言程序清单:

#include

unsigned char i=0;

unsigned char array[16] _at_ 0x50; //发送缓冲区

void main()

{ SCON=0xc0; //串行口初始化

TMOD=0x20; //定时器初始化

TH1=0xf4; TL1=0xf4;

TR1=1;

ES=1; EA=1; //中断初始化

ACC=array[i]; //发送第一个数据送

TB8=P; //累加器,目的取P位

SBUF=ACC; //发送一个数据

while(1); //等待中断

}

void server() interrupt 4 //串行口中断服务程序

{

TI=0; //清发送中断标志

ACC=array[++i]; //取下一个数据

TB8=P;

SBUF=ACC;

if(i==16) //发送完毕,

ES=0; //禁止串口中断

}

汇编语言程序清单:

ORG 0000H

SJMP MAIN ;上电,转主程序

ORG 23H

SJMP SERVER ;转中断服务程序

MAIN:

MOV SCON,#0C0H ;串行口方式3初始化

MOV TMOD,#20H ;定时器1工作在方式2

MOV TH1,#0F4H

MOV TL1,#0F4H

SETB TR1

SETB ES ;允许串行口中断

SETB EA ;CPU开中断

MOV R0,#50H

MOV R7,#0FH

相关文档
最新文档