单片机原理与应用习题 联系客服

发布时间 : 星期五 文章单片机原理与应用习题更新完毕开始阅读

MOV INC JNZ MOV DEC JNZ SJMP

A,#00H @DPTR,A A UP A,#0FEH @DPTR,A A DOWN UP

UP: MOVX

DOWN: MOVX

7.16.使用8031和ADC0809芯片设计一个巡回检测系统。共有8路模拟输入,采用周期为1秒,其它条件可自定。请画出电路连接图并进行程序设计。

解:设采集的数据依次放在内部RAM以Dada开始的8个单元,电路如图7.41所示,ADC0809的CLK引脚时钟为500KHz(设单片机的时钟为6MHz),满足0809典型值范围,其转换时间约为100us,则转换8路模拟信号时间远远小于1S。现采用定时器T0工作于方式1实现定时10次100ms来实现。

定100ms的初值为:

216-100×10-3/(2×10-6)=15 536=3CB0H 程序如下:

ORG AJMP ORG AJMP ORG AJMP

0000H MAIN 000BH CT0 0013H INT1 R0,#Data R2,#08H TL0,#0B0H TH0,#3CH R3,#0AH IT1 ET0 EX1 EA

;数据存区首址 ;8路模拟信号 ;100ms定时

;循环次数

;外部中断1边沿触发 ;允许T0中断

;允许外部中断源1中断 ;CPU开中断

;启动D/A转换 ;开始计数 ;等待中断

;外部中断1入口 ;T0中断入口

;主程序: MAIN: MOV

MOV MOV MOV MOV MOV SETB SETB SETB ESTB MOV MOV MOVX SETB SLMP

TMOD,#01H ;T0方式1

DPTR,#0FEF0H;D/A转换地址 A,#00H @DPTR,A TER0 $

;T0中断服务程序: CTC0:MOV

MOV DJNZ MOV

TL0,#0B0H TH0,#3CH R3,EXIT R3,#0AH

;定时不到1S,则继续等待 ;软件计数初值

MOV MOV MOVX SETB

DPTR,#0FEF0H;D/A转换地址 A,#00H @DPTR,A EX1

;启动D/A转换

EXIT:RETI

;A/D转换结束中断服务程序: INT:MOVX

MOV INC INC DJNZ CLR

A,@DPTR @R0,A DPTR R0 EX1

;读A/D转换结果 ;存放内部RAM单元 ;指向下路通道 ;指向下RAM单元

;关A/D转换z结束中断

R2,NEXT

NEXT:RETI

习题8

1.说明下列概念 (1)串行通信 (3)异步通信 (5)波特率

(7)半双工通信方式 答:略

2.假定异步串行通信的字符格式为一个起始位、八个数据位、二个停止位以及奇校验位,请画出传送字符“T”的桢格式。

解:“T”的ASCII码为54H=01010100B,传送桢格式如下:

(2)并行通信 (4)同步通信 (6)单工通信方式 (8)全双工通信方式

一桢10起始位D0D1D2D3D4D5D6D700101010P110奇偶校验位停止位3.串行通信有那几种数据通信格式,试举例说明。 答:略

4.串行通信的总线标准是什么?有那些内容? 答:略

5.MCS-51单片机的串行口共有那几种工作方式?各有什么特点和功能?

答:MCS-51单片机串行口的工作方式有方式0、方式1、方式2和方式3四种,各工作方式是由设置串行口控制寄存器SCON来确定的。串行口控制寄存器SCON还用来设定串行口的接收或发送控制及状态,其格式如下:

SM0 SM1 SM2 REN TB8 RB8 TI RI 串行口的工作方式及串行口的4种工作方式的功能及相应的波特率如下表。

SM0 SM1方式0 00 11 01 10123功 能同步移位存储器(用I/O口扩展)8位UART(通用异步接收和发送器)9位UART(起始位1、数据位8、可编程位1、停止位1)9位UART波特率 fosc/12222SMODSMODSMOD(T1溢出率)/32 fosc/64(T1溢出率)/32

6.MCS-51单片机四种工作方式的波特率应如何确定? 答:见5题

7.简述单片机多机通信的原理。 答:略

8.已知异步通信接口的桢格式由一个起始位、七个数据位、一个奇偶校验位和一个停止位组成。当该接口每分钟传送3600个字符时,计算其传送波特率。

解:由题意可知,每个字符为10位,则每秒传送3600/60=60个字符。 故波特率为:

60×10=600(位/秒)=600b/s

9.试设计一个发送程序,将片内RAM 20H~2FH中的数据从串行口输出,要求将串行口定义为工作方式2,TB8作为奇偶校验位。 解:程序如下:

MOV SCON,#80H

MOV PCON,#80H MOV

SMOD,#00H

;首地址20H→间址寄存器R0 ;数据字节数→R7 ;取一数据→A

;P随A变,P→C→TB8 ;数据→SBUF,启动发送 ;等待发送完 ;调整发送数据指针

MOV R0,#20H MOV R7,#16 MOV C,P MOV SBUF,A JNB TI,$ CLR TI INC R0 DJNZ R7,LOOP SJMP $

LOOP: MOV A,@R0

;设定为方式2发送 ;波特率为fosc/32

MOV TB8,C

10.以8031串行口按工作方式1进行串行数据通信。假定波特率为1200bps,以查询方式传送数据,请编写全双工通信程序。

解:参考程序略(见8.5.1 双机通信举例)

11.以8031串行口按工作方式3进行串行数据通信。假定波特率为1200bps,第九数据位作奇偶校验位,以中断方式传送数据,请编写通信程序。

解:设为单片机双机通信系统按工作方式3实现全双工通信,若发送数据区的首址为内部RAM30H~3FH单元,接收数据的首址为40H单元,设两机晶振为6MHz,则采用定时器T1方式2计算初值为0F3H。通信程序如下: 主程序:

ORG LJMP ORG MAIN:MOV

MOV MOV SETB MOV

0000H MAIN 1000H

TMOD,#20H ;定时器1设方式2 TL1,#0F3H TH1,#0F3H TR1

;启动T1

SCON,#0D0H ;串行口设方式3,充许接收

;定时器初值

MOV MOV MOV SETB SETB LCALL SJMP R0,#30H R1,#40H R7,#16 EA ES STXD $

;发送区首址 ;接收区首址 ;数据块长度计数器 ;开总中断 ;开串行口中断 ;先输出一个字符 ;等待中断 ;中断服务程序:

ORG AJMP ORG

SBRK: JB

LCALL SJMP

SEND: LCALL NEXT:RETI ;发送子程序 ORG STXD: CLR

MOV MOV MOV MOV

DJNZ INC

EXIT: RET ;接收子程序:

ORG SRXD:CLR

MOV JNB JNB

RIGHT: MOV

DJNZ INC

CLR SJMP

PER: SETB SJMP PNP: JB

SJMP

EXIT1:RET

0023H

SBRK 0100H T1,SEND SRXD NEXT STXD

0200H TI

A,@R0 C,P

TB8,C SUBF,A R7,EXIT R0

0400H RI

A,SBUF P,PNP

RB8,ERR @R1,A R7,EXIT1

R1 F1

EXIT1 F1

EXIT1 RB8,PER RIGHT

;串行口中断入口

;TI=1为发送中断 ;RI=1为接收中断 ;转到统一出口 ;调发送子程序

;TI清零 ;取发送数据到A ;奇偶校验赋予TB8C ;启动发送

;判断16位是否发送完 ;修改发送地址指针

;从串行口中读取数据 ;P=0,去PNP

;P=1,RB8=0,出错去PER ;P=1,RB8=1,存接收数据 ;判断16位是否接收完

;正确接收完16个字节数据清零标志位F1 ;奇偶错置位F1

;P=0,RB8=1,奇偶错去PER ;P=0,RB8=0,去RIGHT