单片机与应用复习题(含参考答案)(2)

2018-12-19 23:40

3、8051四个并行接口各自的功能;

P0口:P0口可以作为输入输出口,但在实际应用中常作为地址/总线口,即低8为地址与数据线分时使用P0口。低8位地址由ALE信号的负跳变使它锁存到外部地址锁存器中,而高8位地址由P2口输出。

P1口:P1口的每一位都能作为可编程的输入或输出线。

P2口:P2口可以作为输入口或输出口使用,外接I/O设备时,又作为扩展系统的地址总线,输出高8位地址,与P0口一起组成16位地址总线。

P3口:P3口为双功能口。作为第一功能使用时,其功能同P1口。

4、8051单片机试外部中断INT0、定时器中断T0、串行口中断产生中断的原理;

(1)、外部中断INT0的原理

若INT0中断允许(使能EX0=1,EA=1),则CPU立即停止当前程序,跳转到INT0对应的中断入口(ROM保留地址0x0003)执行中断服务程序(中断服务程序后CPU自动对中断标志清零:IE0=0),待INT0中断服务程序执行完毕后再回原执行程序处;

若INT0中断未允许,则程序不能跳转到INT0中断入口,不执行中断服务程序(中断标志IE0不能自动清0)。

(了解:当INT0引脚输入如下信号:下降沿(IT0=1)或低电平(IT0=0) CPU自动(硬件)产生中断标志(IE0=1))

(2)、定时器中断T0原理 若T0中断允许(使能ET0=1,EA=1),则CPU立即停止当前程序,跳转到T0对应的中断入口(ROM保留地址0x000B)执行中断服务程序(中断服务程序后CPU自动对溢出标志清零:TF0=0),待T0中断服务程序执行完毕后再回原执行程序处;

void TIMER0_ISR(void) interrupt 1 { //定时器0中断服务程序 }

若T0中断未允许,则程序不能跳转到T0中断入口,不执行中断服务程序(中断标志此时TF0不能自动清0)。

(了解:手工启动定时器(TR0=1)后,T0开始对机器周期计数(硬件对TH0、TL0构成的16位计数器递增计数);当计至TH0=0xff,TL0=0xff后,再计一次则定时器产生溢出(溢出标志TF0=1))

(3)、串行口中断产生中断的原理

执行串口发送指令SBUF=a;通过TXD口发送串行数据,发送结束后CPU自动产生发送结束标志(TI=1);此时若串行中断使能(ES=1,EA=1) ,则程序立即停止当前程序,跳转置中断号为4的串行口中断入口地址(0x0023),执行中断服务程序void UART_ISR(void) interrupt 4 ,CPU不具有自动清零功能;

同样,若串口在RXD引脚接收到数据,硬件自动产生接收结束标志(RI=1),若此时若串行中断使能(ES=1,EA=1),则程序立即停止当前程序,跳转置中断号为4的串行口中断入口地址(0x0023),执行中断服务程序void UART_ISR(void) interrupt 4 ,CPU不具有自动清零功能,可通过b=SBUF;指令取出暂存在数据缓冲区内的数据。

6

5、 8051单片机的5个中断源名称、各自对应的中断号与中断入口地址,中断服务程序函数形式,各自

的中断标志位名称,中断优先级等。

中断源名称 外部中断0 (INT0) 定时/计数器0溢出中断(T0) 外部中断1 (INT) 1定时/计数器1溢出中断(T1) 串行接口 4 0023H void UART_ISR(void) interrupt 4 {} 3 001BH void T1_ISR(void) interrupt 3 {} 2 0013H void INT1_ISR(void) interrupt 2 {} 1 000BH void T0_ISR(void) interrupt 1 {} 中断号(n) 中断入口地址(8n+3) 中断服务程序函数形式 0 0003H void INT0_ISR(void) interrupt 0 {} 中断标志位名称 中断优先级 IE0 高 TF0 IE1 TF1 RI、TI 低

6、若串口通信率为9600bps,每个字节以10位方式传输。若要传输1K字节大概多少时间?

t?1024?10?

1?1.07s 96007、会根据给定的fosc频率,计算8051定时器0的方式0、方式1、方式2的最长定时时间间隔计算。

方式0:tmax?12?213? fosc方式1:tmax?

12?216? fosc方式2:tmax?12?28? fosc8、8051单片机应用系统的开发语言与开发步骤; (1)开发语言:C语言、汇编语言 (2)开发步骤:①了解系统功能、要求、任务 ②确定设计方案

③硬件设计 ④软件设计 ⑤系统调试

7

9、标志位:EX0、EX1、ET0、ET1、ES;IE0、IE1、TF0、TF1、RI、TI;IT0、IT1;TR0、TR1;SMOD的功能;

EX0:外部中断0中断允许位。1允许;0禁止。 EX1:外部中断1中断允许位。1允许;0禁止。

ET0:定时/计数器0的溢出中断允许位。1允许;0禁止。 ET1:定时/计数器1的溢出中断允许位。1允许;0禁止。 ES:串行接口中断允许位。1允许;0禁止。

RI:串行接口接收中断标志。在串行接口方式0中,收到第8位数据时,由硬件置位;其它方式中,收到停止位的中间位置时硬件置位。中断服务子程序中,软件清0。

TI:串行接口发送中断标志。在串行接口方式0中,每当发完8位数据时由硬件置位;其它方式中,停止位开始时置位。中断服务子程序中,软件清0。

TF0:T0的溢出中断标志。当T0溢出时,硬件使其置1。CPU响应该中断时,硬件清0。 TF1:T1的溢出中断标志。当T1溢出时,硬件使其置1。CPU响应该中断时,硬件清0。 TR0:T0的运行控制位。1启动计数;0停止计数。 TR1:T1的运行控制位。1启动计数;0停止计数。

IT0:外部中断0触发方式控制位。1下降沿出发;0低电平触发。 IT1:外部中断1触发方式控制位。1下降沿出发;0低电平触发。

IE0:外中断0中断请求标志。当INT0为低电平或下降沿时,IE0由硬件置1。CPU响应该中断时,硬件使IE0清0。 IE1:外中断1中断请求标志。当INT1为低电平或下降沿时,IE1由硬件置1。CPU响应该中断时,硬件使IE1清0。 SMOD:波特率选择位。串口工作于方式2时,0波特率为振荡器频率的1/64,1波特率为振荡器频率的1/32;串口工作于方式1或方式3时,0波特率为定时器1溢出率的1/32,1波特率为定时器1溢出率的1/16。

10、寄存器:TMOD、TH0、TL0、TH1、TL1、SCON、PCON、PCON、SBUF的功能。

TMOD:

TH0:T0高8位。 TL0:T0低8位。 TH1:T1高8位。 TL1:T1低8位。

8

C/T:1计数器方式;0定时器方式。(一般取0)。 GATE:一般取0。

TCON:

SCON:

SM0,SM1:串口操作方式选择位。(表2-9)

SM2:允许方式2和方式3的多机通信使能位。(一般取0) REN:允许串行接收位。1允许;0禁止。(一般取1) TB8:方式2和3中要发送的第9位数据。(任意项) RB8:方式2和3中已接收的第9位数据。(任意项) TI,RI:发送、接收中断标志。(一般取0)

PCON:

SBUF:存放串口已接收或要发送的一个字节的数据。

四、程序设计

1、语句功能分析与应用;

#define setbit(var,bit) (var|=(0x01<<(bit))) //定义置位函数 #define clrbit(var,bit) (var&=(~(0x01<<(bit)))) //定义位清零函数 #define checkbit(var,bit) (var& (0x01<<(bit))) //定义位查询函数 #define xorbit(var,bit) (var^=(0x01<<(bit))) //定义位取反函数

9

2、给定晶振,在P1.0引脚上产生一要求的方波,写出完成的源程序,包括主程序与定时器中断服务程序;

#include \

void main(void) #define COUNT 445 //修改周期

union MY1 { { X.a=65535-COUNT; unsigned int a; TMOD=(TMOD&0xf0)|0x01; unsigned char b[2]; TH0=X.b[0]; } TL0=X.b[1]; union MY1 X; ET0=1; sbit p1_0=P1^0; EA=1; TR0=1; void T0_ISR(void) interrupt 1 while(1) { {} static unsigned char i=0; } TH0=X.b[0]; TL0=X.b[1]; 周期为2ms,占空比为75%的方波。 i++;

if(i==3){p1_0=0;} //修改占空比

if(i==4) { p1_0=1; i=0; } }

3、 给定fosc=11.0592MHz, 根据串口通信波特率参数要求,写出串口初始化程序void sbuf_init(),要

求有计算过程。 波特率计算方法:

fosc:晶振频率,n:计数器的计数值,SMOD:波特率选择位,等于0或1。

方式0:波特率?

方式2:波特率?2SMODfosc 12?

方式1:波特率?2SMOD?fosc

12?n?32fosc 64 方式3:与方式1一样

void sbuf_init(void) //11.0592MHz--10位异步通信方式,9600bps,SMOD=0,T1计数值n=3 { SCON=0x50; //01010000 串口工作于方式1 PCON=0X00; //最高位SMOD=0 TMOD=(TMOD&0x0f)|0x20; //T1工作于方式2,8位计数器TL1溢出后,TH1的值自动载入TL1. TH1=0Xfd; //T1计数值为3 TL1=0xfd; //T1计数值为3 TR1=1; //T1启动 }

10


单片机与应用复习题(含参考答案)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:08年度煤炭施工企业实力排行榜

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: