的波特率发生器,并设定为工作方式2,使用时只要将计数器初值送到计数器寄存器即开始工作,启动后不需要软件干预,也不使用溢出标志。
9、设晶振频率为6MHz。编程实现:使用定时器T0工作在方式2、定时,在P1.4输出周期为100us,占空比为4:1的矩形脉冲。
答:使用晶体振荡器频率为6MHz时,1个机器周期为2us。欲使占空比为4:1,可将矩形脉冲分为5份,前4份P1.4输出高电平,第5份输出低电平。计数初值: 计数初值满足:(256-Y)*2us=20us,解得计数初值为Y=246=0F6H,则TH0=TL0=0F6H。 TMOD寄存器定义: D7 GATE 定时器1 定时器工作方式定义: M1 0 0 1 1 M0 0 1 0 1 工作方式 0 1 2 3 说明 13位定时器/计数器 16位定时器/计数器 可重装8位定时器/计数器 T0分成两个8位定时器/计数器,T1停止计数 D6 C/ D5 M1 D4 M0 D3 GATE 定时器0 D2 C/ D1 M1 D0 M0 定时器0,定时方式2,故TMOD设置:00000010=02H,。程序如下: ORG 2000H
START: MOV TMOD, #02H //定时器0,定时方式2 MOV TL0,0F6H //初值送TL0 MOV TH0,0F6H //初值送TH0 SETB P1.4 //P1.4置高 SETB TR0 //允许T0计数
LOOP: MOV R0, #4 //由于是4:1,故计数周期定为4 WAIT1: JNB TF0,WAIT1 //等待定时器T0溢出标志位 CLR TF0 //软件清零TF0
DJNZ R0,WAIT1 //判断R0是否等于0,即判断是否循环了四次 CPL P1.4 //对P1.4取反
WAIT2: JNB TF0,WAIT2//等待定时器T0溢出标志位,即判断是否循环一次 CLR TF0 //软件清零TF0 CPL P1.4 //对P1.4再次取反
SJMP LOOP //程序循环运行 第六章
2、MCS-51单片机的串行口共有哪几种工作方式?各有什么特点和功能?P129 答: MCS-51单片机的串行口共有以下四种工作方式:
工作方式0:SM1SM0=00,为同步移位寄存器。当一个数据写入串行口发送缓冲器时,串行口即将8位数据以fosc/12的固定波特率从RXD引脚输出,低位在先,TXD为移位脉冲信号输出端。发送完8位数据后中断标志位T1置“1”。 特点是:移位寄存器的发送和接收以8位为一帧,不设起始位和停止位,低位在前高位在后,波特率固定,一个机器周期移位一次。
工作方式1:SM1SM0=01,串行口被定义为波特率可变的8位异步通信接口。方式1的波特率=(2smod/32) x定时器T1的溢出率
特点为:一帧信息为10位,其中1位起始位“0”,8位数据位(地位在前)和一位停止位“1”,其波特率可变。 工作方式2:SM1SM0=10,串行口被定义为9位异步通信接口。 方式2的波特率=(2smod/64) x 振荡器频率
特点是:一帧信息为11位,1位起始位“0”,8位数据位(低位再前),1位可编程为“1”或“0”的第9位数据,1位停止位“1”。
工作方式3:SM1SM0=11,串行口被定义为波特率可变的9位异步通信方式,除了波特率外,方式3和方式2完全相同。
方式3的波特率=(2smod/32) x 定时器T1的溢出率
特点:一帧信息为11位,1位起始位“0”,8位数据位(低位在先),1位可编程为“1”或“0”的第9位数据,1位停止位“1”。
3、MCS-51单片机4种工作方式的波特率应如何确定?P134 答: MCS-51单片机波特率的确定方法: (1)方式0的波特率=fosc/12
(2)方式1的波特率=(2smod/32) x定时器T1的溢出率。 (3)方式2的波特率=(2smod/64) x 振荡器频率 (4)方式3的波特率=(2smod/32) x 定时器T1的溢出率
7、请用查询法编写程序实现串行口工作方式1下的发送程序。设单片机主频为11.0592MHz,波特率为1200bps、发送数据缓冲区在外部RAM,起始地址为1000H,数据块长度为30B,采用偶校验(其他条件自设)。 答:
1) 设数据为ASCII码形式,最高位作为奇偶校验位。 2) T1作为波特率发生器,工作于方式2。 TMOD寄存器定义:
D7 GATE 定时器1 D6 C/ D5 M1 D4 M0 D3 GATE 定时器0 D2 C/ D1 M1 D0 M0 定时器工作方式定义: M1 0 0 1 1 M0 0 1 0 1 工作方式 0 1 2 3 说明 13位定时器/计数器 16位定时器/计数器 可重装8位定时器/计数器 T0分成两个8位定时器/计数器,T1停止计数 故,TMOD=20H; 3) 设SMOD=0。 4) 串行口工作在方式1 SCOD寄存器定义: D7 SM0 D6 SM1 D5 SM2 D4 REN D3 TB8 D2 RB8 D1 TI D0 RI 串行口工作方式定义: SM0 0 0 1 1 SM1 0 1 0 1 工作方式 0 1 2 3 方式简单描述 移位寄存器I/O 8位UART 9位UART 9位UART 波特率 主振频率/12 可变 主振频率/32或主振频率/64 可变 故,SCON=40H; 5) 波特率为1200bps
通过计算得T1的时间常数为0E8H。 程序如下: ORG 1000H
START: MOV TMOD, #20H ;T1工作方式2 MOV TL1, #0E8H MOV TH1, #0E8H
MOV PCON, #00H ;SMOD=0波特率不倍增 SETB TR1 ;启动T1
MOV SCON, #40H ;串行口工作方式1
MOV DPTR, #1000H ; MOV R2, #30 ;计数值30 LOOP: MOVX A, @DPTR MOV C, P ;送奇偶标志 MOV ACC.7, C ; MOV SBUF, A ;发送字符 WAIT: JNB TI, WAIT ; CLR TI ; INC DPTR DJNZ R2,LOOP AJMP START 第七章
1、MCS-51有几个中断源?有几级中断优先级?各中断标志如何产生?又如何清除? P149 答:5个中断源:2个外部中断INT0、INT1,3个内部中断T0、T1、串行口。 2个优先级:高级中断和低级中断,由用户定义。 中断标志的产生:
(1) 外部中断可以设置边沿触发或者电平触发,边沿触发进入中断程序后硬件自动清中断标志,电平触发需要软件清标志位;
(2) 定时器T0,T1计数溢出产生中断,进入中断程序硬件自动清标志位;
(3) 串行口发送完成或者接收到数据就触发中断,由于是两个中断标志共享一个中断向量,所以需要在中断程序里由软件判断是发送中断还是接受中断,并且只能由软件清标志位; 中断请求的清除:
(1) 定时中断由硬件自动撤除定时中断响应后,硬件自动把标志位(TFx)清零。 (2) 外部中断的自动与强制撤除
若外部中断以脉冲方式触发,则由硬件自动地把标志位(IEx)清零。24 若以电平方式触发,则需由外部电路和软件配合撤除。
(3)串行中断软件撤除CLR TI; CLR RI;
2、什么是中断优先级?优先级的处理原则是什么?P151
答: CPU一般与多个中断源相连,因此有多个中断同时发生的可能,为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程序,将中断源分为若干个级别,称作中断优先级; 中断优先级的处理原则:
1、低优先级中断请求不能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套。
2、如果一个中断请求已被响应,则同级的其他中断响应将被禁止。
3、如果同级的多个请求同时出现,则按CPU查询次序确定哪个中断请求被响应。其查询次序为:外部中断0→定时中断0→外部中断1→定时中断1→串行中断。
8试编写一段对中断系统初始化的程序,使之允许INT0、INT1、T0和串行口中断,且使串行口中断为高优先级中断。 P150、P151 答:
允许INT0、INT1、T0和串行口中断 中断控制寄存器IE定义: D7 EA D6 D5 ET2 D4 ES D3 ET1 D2 EX1 D1 ET0 D0 EX0 EA=1(中断使能),ES=1(串行口中断),EX1=1( 中断),ET0=1(T0中断),EX0=1( 中断)。故IE=97H; 串行口中断为高优先级中断 优先级寄存器IP定义: D7 D6 D5 PT2 D4 PS D3 PT1 D2 PX1 D1 PT0 D0 PX0 PS=1(串行口中断高优先级),故IP=10H; MOV IE #97H MOV IP #10H 第八章
9、 MCS-51单片机利用4KB的EPROM 2764和2KB的 SRAM 6116及74HC138译码器,构成一个具有8KB ROM, 16KB RAM的存储器系统,给出硬件连接图并指出各芯片地址范围。 答:需要两个2764和8个6116。