资源描述
CH5
2.8051单片机提供几个中断源?几个中断优先级?中断优先级的处理原则是什么?
答:五个中断源:,,T0,T1,TXD/RXD.
两个中断优先级:高优先级、低优先级
优先级处理原则:
①不同级中断同时申请,先高后低
②低优先级中断可被高优先级中断所中断,反之不能
③同级中断源同时申请,按自然优先级顺序,从高到低依次是、T0、、T1、TXD/RXD.
4.说明MCS-51单片机响应中断后,中断服务程序的入口地址
解: 入口地址:外中断0 0003H
T0溢出中断 000BH
外中断1 0013H
T1溢出中断 001BH
串口中断 0023H
8.编写一程序,对中断系统进行初始化,要求允许、中断,并将设置为低优先级,边沿触发方式,将设为高优先级,电平触发。
解: MOV IE, #85H ;总中断允许,、允许
MOV IP,#04H ; 设为高优先级, 低优先级
SETB IT0
CLR IT1
Ch6
1.8051定时器有哪几种工作方式?如何选择和设定?
答:4种工作方式,由TMOD中M1、M0设定。
M1 M0
0 0 13位计数器
0 1 16位计数器
1 0 自动重装初值8位计数器
1 1 定时器0: 分成两个8位计数器
定时器1:停止计数
5.定时器模式2有什么特点?适用于哪些场合?
答:定时器模式2可以省去用户重装初值的语句,可以产生相当精确的定时时间,特别适于用作串行口的波特率发生器.
6.已知8051单片机的fosc=12MHz,用T1定时,试编程在P1.0和P1.1引脚分别输出周期为2ms和500μs的方波.
答:P1.1方波T=500μs,则T1定时250μs,采用方式1,TMOD:#20H,初值为X=65536-250=FF06H。P1.0方波采用P1.1信号循环得到。
工作方式1,查询方式:
MOV R0,#04H
MOV TMOD, #10H ;T1 工作方式1
MOV TH1, #0FFH ;方式1初值
MOV TL1,#06H
SETB TR1 ;启动定时器工作
LOOP: JBC TF1, L1 ;等待中断
SJMP LOOP
L1: MOV TH1, #0FFH ;重赋初值
MOV TL1,#06H
CPL P1.1
DJNZ R0,LOOP
CPL P1.0 ;输出信号电平取反,得到方波
MOV R0,#04H ;R0重赋初值,准备下半周期输出
SJMP LOOP
中断方式:
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP SERVE
MAIN:MOV R0,#04H
MOV TMOD, #20H
MOV TH1, #06H
MOV TL1,#06H
SETB EA
SETB ET1
SETB TR1
SJMP $
ORG 0100H
SERVE: CPL P1.1
DJNZ R0, DONE
CPL P1.0
MOV R0, #04H
DONE: RETI
8.当定时器T0用作模式3时,由于TR1位已经被T0占用,如何控制定时器T1的开启和关闭?
答:T0方式3时,仅用T1控制C/T切换T1的工作方式就可以启动T1运行或关闭.
11.设单片机的fosc=12MHz,试编写一段程序,功能为:对T0初始化,使之工作在方式2,产生200μs定时,并用查询T0溢出标志的方法控制P1.0输出周期为2ms的方波.
答:T0定时200μs,方式2,TMOD:#20H,P1.0方波半周期T=1ms,采用200μs循环5次得到。初值为X=256-200/1=56=38H。
T0工作方式2,查询方式:
MOV R0,#05H
MOV TMOD, #02H ;T0 工作方式2
MOV TH0, #38H ;方式0初值
MOV TL0,#38H
SETB TR0 ;启动定时器工作
LOOP: JBC TF0, L1 ;等待中断
SJMP LOOP
L1: DJNZ R0,LOOP
CPL P1.0 ;输出信号电平取反,得到方波
MOV R0,#05H ;R0重赋初值,准备下半周期输出
SJMP LOOP
Ch7
4.8051串行口有几种工作方式?有几种帧格式?各工作方式的波特率如何确定?
答:串行口有4种工作方式,有8位、10位、11位3种帧格式。方式0的波特率为fosc/12,方式2的波特率为×fosc,方式1和方式3的波特率由定时器T1的溢出率决定。
5.假定串行口发送的字符格式为1个起始位,7个数据位,一个奇偶校验位,一个停止位,请画出传送ASCⅡ码字符“A”并且采用奇校验的帧格式。
解:A的ASCⅡ码为41H,帧格式
起始位 D0 D1 D2 D3 D4 D5 D6 D7 D8 停止位
41H 0 1 0 0 0 0 0 1 0 1 1
6、某异步通信接口,其帧格式由1个起始位,7个数据位,一个偶校验和1个停止位组成。当该接口每分钟传送1800个字符时,试计算波特率。
解: ×10=300bps
16、以8031串行口按工作方式3进行串行数据通信.假定波特率为1200B/S,第9位数据位作奇偶校验位,以中断方式传送数据。请编写通信程序,将甲机片内RAM 30H~3FH的内容通过串行口发送到乙机片内RAM 40H~4FH中.
解:设fosc=11.0592MHz, 定时器工作在方式2,B=1200b/s,查表得初值为E8H
发送程序:
ORG 0000H
AJMP MAIN
ORG 0023H
AJMP SERVE
ORG 0100H
MAIN: MOV TMOD,#20H ;T1工作方式2
MOV TH1,#E8H ;设初值
MOV TL1,#E8H
SETB TR1
MOV SCON, #0C0H ;SCON=1100 0000,方式3,发送
MOV PCON,#00H ;SMOD=0
MOV R0, #30H
MOV R1, #0FH
SETB ES
SETB EA
MOV A, @R0
MOV C, PSW.0
MOV TB8,C
MOV SBUF, A
SJMP $
SERVE:CLR TI
INC R0
MOV A,@R0
MOV C,P
MOV TB8,C
MOV SBUF,A
DJNZ R1,ENDT
CLR ES
ENDT: RETI
接收程序:
ORG 0000H
AJMP MAIN
ORG 0023H
AJMP SERVE
ORG 0100H
MAIN: MOV TMOD,#20H ;T1工作方式2
MOV TH1,#E8H ;设初值
MOV TL1,#E8H
SETB TR1
MOV SCON, #0D0H ;SCON=1101 0000,方式3,接收
MOV PCON,#00H ;SMOD=0
MOV R0, #40H
MOV R1, #10H
SETB ES
SETB EA
SJMP $
SERVE: CLR RI
MOV A, SBUF
JNB P, PNP
JNB RB8, PER
SJMP RIGHT
PNP : JB RB8, PER
RIGHT: MOV @R0, A
INC R0
DJNZ R1, WAIT
CLR PSW.5
RETI
PER: SETB PSW.5
RETI
Ch8
7.以两片Intel 2716芯片给8051单片机扩展一个4KB的外部程序存储器,要求地址空间与8051内部ROM相衔接(即从1000H开始编址),请画出逻辑连线图。
IC1: 1000H~17FFH IC2:1800H~1FFFH
8.以一片2716和一片6116组成一个既有外扩程序存储器,又有外扩数据存储器的扩展系统,请画出逻辑图,并说明各芯片的地址范围。
存储器容量均为2K
IC1和IC3地址范围相同:
P2.7~P2.5 P2.4 P2.3 P2.2~P2.0 P0.7~P0.0
1 1 1 1 0 000 00000000 F000H~F7FFH
IC2和IC4地址范围相同:
P2.7~P2.5 P2.4 P2.3 P2.2~P2.0 P0.7~P0.0
1 1 1 0 1 000 00000000 E800H~EFFFH
9.在一个由8051单片机与一片ADC0809组成的数据采集系统中,ADC0809的地址为7FF8H~7FFFH。试画出相关逻辑框图,并编写出每隔1秒钟轮流采样一次8个通道数据的程序(共采样100次,采样值存入片外RAM3000H开始的地址空间)。
解:
1.采用延时程序定时。
ORG 0000H
LJMP MAIN
ORG 0013H
AJMP ADCVT
ORG 2000H
MAIN: MOV P2, #30H
MOV R0, #00H
MOV R1, #08H
MOV R2, #64H
SETB EX1
MOV DPTR, #7FF8H
MOVX @DPTR, A
SJMP $
ADCVT: MOVX A, @DPTR
MOVX @R0, A
INC DPTR
INC R0
DJNZ R1, AGAIN
DJNZ R2, DELAY ;一次转换结束,延时1s
RETI
AGAIN: MOVX @DPTR, A
RETI
DELAY: MOV R3, #04H
DLY1: MOV R4, #0FAH
DLY2:MOV A, #0A5H
DJNZ R4, DLY2
NOP
NOP
DJNZ R3,DLY1
RET
{{[(1+2)*165+2+2+1]*250+2+1}*4+2+1}*2=1000030
10. 在一个8051单片机与一片DAC0832组成的应用系统中,DAC0832的地址为7FFFH,输入电压为0V~5V。试画出有关逻辑框图,并编写产生一个矩形波(占空比1:4,高低电平分别为2.5V和1.25V)的程序。
矩形波:
ORG 2000H
START: MOV DPTR,#7FFFH
LOOP: MOV A,#80H
MOVX @DPTR,A ;置矩形波上限电平
LCALL DELAY1 ;调用高电平延时程序
MOV A,#40H
MOVX @DPTR,A ;置矩形波下限电平
LCALL DELAY2 ;调用低电平延时程序
SJMP LOOP ;重复进行下一个周期
如图所示,现有8031单片机、74LS373锁存器、74LS138、l块2764(要求其首地址为0000H)和1块6264(首地址为2000H).试利用它们组成一单片机系统,要求画出硬件连线图(含控制信号、片选信号、数据线和地址线)
第9题
2.采用定时器定时。设晶振为6MHz,采用定时器0工作方式1,每次定时100ms,中断10次为1s,TH0=3CH, TL0=0B0H。
采用查询方式:
MAIN: MOV P2, #30H
MOV R0, #00H
MOV R1, #08H
MOV R2, #63H
MOV DPTR, #7FF8H
MOV TMOD, #01H ;定时器0方式1
SAM1: MOVX @DPTR, A ;先启动转换,
JBC P3.3, $ ;等待转换结束
MOVX A, @DPTR ;存放结果
MOVX @R0, A
INC DPTR
INC R0
DJNZ R1, SAM1 ; 8个通道循环
L0: MOV R1, #08H ;一轮转换结束,准备下一轮
MOV DPTR, #7FF8H
MOV R3, #0AH
MOV TL0, #0B0H ;开始定时
MOV TH0, #3CH
SETB TR0
L1: JBC TF0, L2 ;等待100ms结束
SJMP L1
L2: MOV TL0, #0B0H
MOV TH0, #3CH
DJNZ R3, L1 ;循环10次,等待1s定时结束
SAM2: CLR TR0 ;1s定时到,关闭定时器
DJNZ R2, SAM1 ;再次开始转换,一共采样100次
SJMP $
3.采用中断方式
ORG 0000H
LJMP MAIN
ORG 000BH
AJMP TIME
ORG 0013H
AJMP ADCVT
ORG 2000H
MAIN: MOV B, #0AH ;定时100ms,10次
MOV P2, #30H ;片外RAM3000H
MOV R0, #00H
MOV R1, #08H ;8个通道
MOV R2, #64H ;采样100次
MOV TMOD, #01H ;定时器0工作方式1
MOV TL0, #0B0H
MOV TH0, #3CH
SETB IT1
SETB ET0
SETB EX1
SETB TR0
MOV DPTR, #7FF8H
SJMP $ ;等待定时时间到
TIME: MOV TL0, #0B0H ;定时器中断子程序
MOV TH0, #3CH
DJNZ B, LOOP1 ;循环不到10次,中断返回
CLR TR0 ;10次结束,关闭定时器
MOVX @DPTR, A ;启动A/D转换
LOOP1: RETI ;中断返回,等待转换结束
ADCVT: MOVX A, @DPTR ;读A/D转换结果
MOVX @R0, A ;存放结果
INC DPTR
INC R0
DJNZ R1, AGAIN ;8个通道未结束,重复
DJNZ R2, LOOP2 ;一轮转换全部结束,重复100次
RETI
AGAIN: MOVX @DPTR, A
RETI
LOOP2: MOV R1, #08H ;重新开始下一轮定时、转换
MOV B, #0AH
MOV DPTR,#7FF8H
MOV TL0, #0B0H
MOV TH0, #3CH
SETB TR0
RETI
展开阅读全文