单片机重要考点

单片机重要考点
单片机重要考点

中断源入口地址(即LCALL指令的XXXX地址) 外中断0 0003H

定时/计数器T0溢出中断000BH

外中断1 0013H

定时/计数器T1溢出中断001BH

串行口中断0023H

定时/计数器T2溢出中断002BH

PX0H、PX0——外中断优先级高、低位。

PX1H、PX1——外中断优先级高、低位。

PT0H、PT0——定时/计数器T0优先级高、低位。

PT1H、PT1——定时/计数器T1优先级高、低位。

PSH、PS——串行口中断优先级高、低位。

PT2H、PT2——定时/计数器T2优先级高、低位。

可见,当IPH为XX000000B时,中断优先级仅由IP 寄存器决定,即与标准MCS-51内核CPU中断优先级兼容。

(3) 清除中断请求标志。进入中断服务程序后,CPU能自动清除下列中断请求标志位:

*定时器T0中断请求标志TF0;

*定时器T1中断请求标志TF1;

*边沿触发方式下外中断的中断请求标志IE0;

*边沿触发方式下外中断的中断请求标志IE1。

不能自动清除的中断请求标志

串行发送结束中断标志TI、

串行接收有效中断标志RI、

定时/计数器T2溢出中断标志TF2、

定时/计数器T2外触发标志EXF2

电平触发方式下的外中断标志IE0和IE1。

对于不能自动清除的中断请求标志,需要在中断服务程序中,用“CLR 位地址”指令清除。

主机与特定从机的通信过程如下:

(1) 主机发送从机地址(TB8位为1),然后进入接收状态,接收从机应答信号(实际上就是相应从机的地址信息)。

(2) 所有从机均接收主机送出的地址信息,并与本机地址比较,当接收到的地址信息与本机地址相符时,表示被选中,将本机地址信息发给主机,然后执行“CLR SM2”指令,使SM2位为0,以便接收主机随后送出的数据信息。对于未被选中的从机,SM2位依然为1,因此不接收主机送出的数据信息。

(3) 主机收到从机的应答信号后,发出数据信息(TB8位为0)。

(4) 从机正确接收主机数据信息后,发应答信号给主机,并将SM2置1,主机与从机通信过程结束。

从机与主机的通信过程如下:

(1) 发送前从机先检测TXD引脚,如果在(20/波特率)时间内,TXD引脚依然为高电平,则表明没有其他从机给主机发送信息,主机的RXD引脚处于空闲状态。

(2) 从机确认主机的RXD 引脚处于空闲状态后,发出地址信息 (TB8位为1) 到主机。

(3) 从机收到主机的应答信号(实际是从机地址信息)后,发送数据(TB8位为0)给主机,然后令从机的SM2为0,以便接收主机发送的接收正确信号。

(4) 主机正确接收后,再发接收正确信号给从机。 (5) 从机收到主机发来的“接收正确”信号后,表明通信过程结束——可将SM2位置1,以便从机能接收主机发送的地址信息。

MCS -51RXD TXD

0号从机

MCS -51RXD TXD

1号从机

MCS -51RXD TXD

n 号从机地线

MCS -51

主机

TXD RXD

P KB1.7P KB1.6P KB1.5P KB1.4P KB1.3P KB1.2P KB1.1P KB1.0

EKB(IEN1.1)

键盘中断允许

键盘中断标志KBF(AU XR1.7)

例如,键盘中断KBI寄存器内容为00000111B,且P0.0、P0.1、P0.2引脚被定义为准双向输入方式,则当P0.0、P0.1、P0.2之一为低电平时,或门输出高电平,如果中断允许寄存器IEN1的EKB(键盘中断允许)位为1,键盘中断标志KBF置位。如果中断开放(EA为1)并满足中断响应条件,将进入键盘中断服务程序(入口地址为003BH)。

【例6.1】某应用系统键盘接口电路如图6-9所示,写出中断监控方式下的键盘监控程序(键码存放在30H单元中,当有按键被按下时,按键编码存放在30H单元)。

; ---------键盘接口初始化--------

MOV A, P0M1

ANL A,#01111000B

MOV P0M1,A ; 将P0M1的b7、b2、b1、b0位清零

MOV A, P0M2

ANL A,#01111000B

MOV P0M2,A ; 将P0M2的b7、b2、b1、b0位清零

; 使P0.0、P0.1、P0.2、P0.7引脚处于准双

向输出(以便利用上拉电阻)

MOV A, P2M1

ORL A, #00100000B; 为了提高抗干扰能力,避免减少按键抖动

造成的干扰,P0口采用施密特输入MOV P2M1, A

SETB P0.0

SETB P0.1

SETB P0.2

SETB P0.7 ; 使P0.0-0.7位锁存器为1,即处于输入状态SETB EKB ; 允许键盘中断

SETB EA ; 开中断; 根据需要设置中断优先级ORG 003BH

LJMP KBIN ; 键盘中断服务程序入口地址

; ----------键盘中断服务程序-------

PROC KBIN

KBIN:

MOV 30H, #55H ; 无按键标志55H送30H单元

LCALL DELAY10ms ; 延迟10 ms

MOV A, P0 ; 读P0口

ANL A, #10000111B ; 屏蔽无关位

XRL A, #10000111B

JZ RETURN ; 为0,说明本次按键输入无效,退出

; 判别哪一按键被按下

MOV C, P0.0

JC K1

MOV 30H, 00H ; 如果P0.0引脚为0,则说明是K0键有输入SJMP EXIT

K1: MOV C, P0.1

JC K2

MOV 30H, 01H ; 如果P0.1引脚为0,则说明是K1键有输入SJMP EXIT

K2: MOV C, P0.2

JC K3

MOV 30H, 02H ; 如果P0.2引脚为0,则说明是K2键有输入SJMP EXIT

K3: MOV C, P0.7

JC RETURN ; P0.0~P0.2、P0.7均为高电平,按键输入无效MOV 30H, 03H ; 如果P0.7引脚为0,则说明是K3键有输入EXIT: MOV A, P0

ANL A, #10000111B ; 屏蔽无关位

XRL A, #10000111B

JNZ EXIT; 不为0,说明按键未释放,循环等待RETURN: MOV A, #AUXR1

ANL A, #01111111B

MOV AUXR1, A ; 清除中断标志KBF

RETI ; 返回

END

相关主题
相关文档
最新文档