单片机复习重点
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定时 / 计数器被设定为 16 位定时 / 计数器
。
5.串行口的工作方式由 SCON
寄存器决定。
6. 定时器 T0 的溢出标志 TF0,在 CPU响应中断后
由硬件自动 清零。
7.扩展程序存储器 2764 时,需要 5
条 P2 口线。
8.若单片机的振荡频率为 6MHz,设定时器工作在方式 1 需要定时 1ms,则定时器初值应为
TMOD=0x20;
TH1=0xf4;
TL1=0xf4;
TR1=1; for(i=0;i<16;i++)
//
循环接收 16 个数据
{ while(!RI);
//
等待一次接收完成
RI=0;
ACC=SBUF;
if(RB8==P)
//
校验正确
array[i]=ACC;
else { F0=1;
// 校验不正确
MOV A,@R0
MOV C,P
MOV TB8,C
;
MOV SBUF,A ;
SJMP $
SERVER:
CLR TI
;
INC R0
;
MOV A,@R0
MOV C,P
MOV TB8,C
MOV SBUF,A ;
DJNZ R7,ENDT
CLR ES
;
ENDT:
RETI
送奇偶标志位到 TB8 发送第一个数据
19. 定时器 1 工作在计数方式时,其外加的计数脉冲信号应连接到
P3.5/ T1 引脚。
20 某应用系统需要通过 P1.0 输出脉宽为 500us 的方波,系统选用定时器
主频为 12MHz。试写出相应的程序。 ( 参考课件例题 )
C 语言程序(中断方式) :
# include
<reg52.h>
//
break;
}
}
while(1);
}
汇编语言程序清单: MAIN:MOV TMOD,#20H ;定时器初始化
MOV TH1,#0F4H
MOV TL1,#0F4H
SETB TR1
MOV SCON,#0D0H ; 串口初始化,允许接收
MOV R0,#50H
; 首地址送 R0
MOV R7,#10H
; 数据长度送 R7
TH0=0x06;
TR0=1;
while (1) { while(!TF0) ;
// 查询计数溢出
P1_0=~P1_0;
}
}
查询方式汇编语言程序 :
MAIN:
MOV MOV
TMOD,#02H ;主程序 TL0,#06H
MOV TH0,#06H
SETB TR0
LOOP:
JNB
TF0,$
;查询计数溢出
CLR TF0
;K7 按下转 PKEY7
EKEY: RET
PKEY1: LCALL K0
;K0
命令处理程序
RET
PKEY2: LCALL K1
;K1
命令处理程序
RET
… PKEY4: LCALL K7
;K7
命令处理程序
RET
WAIT: JNB RI,$
; 等待接收完成
CLR RI
; 清中断标志
MOV A,SBUF
; 读数到累加器
JNB P,PNP
;P=0 ,转 PNP
JNB RB8,ERROR
;P=1 , RB8=0,转出错
SJMP RIGHT
PNP: JB RB8,ERROR
;P=0 , RB8=1,转出错
RIGHT: MOV @R0,A
包含特殊功能寄存器库
sbit
P1_0=P1^0;
void
main( )
{ TMOD=0x03;
// 设置工作模式
TL0=0x06;
TH0=0x06;
// 为定时器赋初值
ET0=1; EA=1;
// 允许定时 0 中断
TR0=1;
// 启动定时器 0
while(1); }
// 等待中断
void time0_int(void) interrupt 1
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
P 写入 TB8,这时,第 9 位数
号键按下时执行程序段
//2
~ 6 号键程序省略
//7
号键按下时执行程序段
汇编语言程序清单: KEY: MOV P1,#0FFH ;P1
口为输入口
MOV A, P1
; 读取按键状态
CPL A JZ EKEY
; 取正逻辑
;
无键按下,返回
LCALL DELAY20MS
;
有键按下,去抖
MOV A, P1
CPL A
// 清发送中断标志
ACC=array[++i]; TB8=P;
// 取下一个数据
SBUF=ACC;
if(i==16)
// 发送完毕,
ES=0; }
// 禁止串口中断
汇编语言程序清单:
ORG 0000H SJMP MAIN
; 上电,转主程序
ORG 23H
SJMP MAIN:
SERVER
; 转中断服务程序
TR1=1;
ES=1;
EA=1; // 中断初始化
ACC=array[i];
// 发送第一个数据送
TB8=P;
// 累加器 , 目的取 P 位
SBUF=ACC;
// 发送一个数据
while(1);
// 等待中断
}
void server() interrupt 4 {
// 串行口中断服务程序
TI=0;
C 语言程序清单: #include<reg52.h> void key() { unsigned char k;
P1=0xff; k=P1; if(k==0xff)
return; delay20ms(); k=P1; if(k==0xff)
return; while(P1!=0xff); switch(k) {
case:0xfe … break; case:0xfd … break; … case:0x7f … break; } }
// 输入时 P1 口置全 1 // 读取按键状态 // 无键按下,返回
// 有键按下,延时去抖
//
确认键按下
//
抖动引起,返回
// 等待键释放
//0
号键按下时执行程序段
//1
CPL
P1.0
SJMP LOOP
END
TF0=0;
21. 将片内 RAM 50H~5FH 中的数据串行发送,用第 9 个数据位作奇偶校验位,设晶振为 特率为 2400 b/s ,编制串行口方式 3 的发送程序。 ( 参考课件例题 )
11.0592 MHz ,波
解:用 TB8 作奇偶校验位,在数据写入发送缓冲器之前.先将数据的奇偶位 据作奇偶校验用,发送采用中断方式。
; 存数
INC R0
; 修改地址指针
DJNZ R7,WAIT
; 未接收完,继续
CLR F0
; 置正确接收标志 F0=0
RET
ERROR: SETB F0
; 置错误接收标志 F0=1
RET
23. 设计一个独立式按键的键盘接口,并编写键扫描程序,电路原理图如图所示,键号从上到下分别 为 0~ 7。( 10 分) ( 参考课件例题 )
{
/ 计数器 0( T0),定时方式 3,
P1_0=~P1_0;
}
中断方式汇编语言程序:
ORG 0000H
LJMP MAIN
ORG 000BH ;中断处理程序
CPL
P1.0
RETI
ORG 0030H ;主程序
MAIN:
MOV MOV
SP, #0DFH TMOD, #02H
MOV TL0 , #06H
解: RB8作奇偶校验位,接收时,取出该位进行核对,接收采用查询方式。
C 语言程序清单: #include<reg52.h>
unsigned char i;
unsigned char array[16] _at_ 0x50;
// 接收缓冲区
void main()
{
SCON=0xd0;
//
串行口初始化,允许接收
MOV TH0 , #06H
SETB ET0
;允许定时器 0 中断
SETB EA
;允许 CPU中断
SETB TR0
;启动定时器 0
SJMP $
;等待中断
END
采用查询方式 C 语言程序:
# include <reg52.h>
sbit
P1_0=P1^0;
void main()
{
TMOD=0x02;
TL0=0x06;
14.MCS-51 单片机在同一优先级的中断源同时申请中断时,
CPU首先响应 外部中断 0 。
15. 定时器若工作在循环定时或循环计数场合,应选用工作方式
2
16.MCS-51 单片机的外部中断 1 的中断请求标志是 IT1
。
17. 中断入口地址一般可 存放转移指令 。
18. 串行口每一次传送 1 帧 字符。
C 语言程序清单:
#include<reg52.h>
unsigned char i=0;
unsigned char array[16] _at_ 0x50;
// 发送缓冲区
void main()
{ SCON=0xc0; TMOD=0x20;
// 串行口初始化 // 定时器初始化
TH1=0xf4; TL1=0xf4;
清除发送中断标志 修改数据地址
发送下一个数据 ; 判断数据块是否发送完 否则,禁止串行口中断 ; 中断返回
22. 编写一个接收程序,将接收的 16 字节数据送入片内 RAM 50H~ 5FH 单元中。设第 9 个数据位作奇偶校 验位,晶振为 11.059 2 MHz ,波特率为 2 400b/s 。 ( 参考课件例题 )
2 16 -500 。
9.扩展存储器时要加锁存器 373,其作用是 锁存寻址单元的低八位地址
。
11. 8051 单片机中,唯一一个用户可使用的 16 位寄存器是 DPTR
。
12. 8051 的程序计数器 PC为 16 位计数器,其寻址范围是
0000H-FFFFH ,64KB 。
13.单片机应用程序一般存放在 ROM 中。
单片机复习重点
1.单片机的堆栈指针 SP 始终是指示 堆栈顶 。
2.当程序状态字寄存器 PSW状态字中 RS1和 RS0分别为 0 和 1 时,系统先用的工作寄存器
பைடு நூலகம்
组为 组 1 。
3.定时器 T1 的中断入口地址是 001BH
。
4. 8051 定时 / 计数器共有四种操作模式,由 TMOD寄存器中 M1M0的状态决定,当 M1M0的状态为 01 时,
JZ EKEY ;
抖动引起,返回
MOV B, A ;
存键值
KEY1: MOV A, P1 CPL A
; 以下等待键释放
JNZ KEY1
; 未释放,等待
MOV A,B
; 取键值送 A
JB ACC.0,PKEY0
;K0 按下转 PKEY0
JB ACC.1,PKEY1
;K1 按下转 PKEY1
…
JB ACC.7,PKEY7