资源描述
<1.1>
单片机是指单一集成电路芯片,是集成的微型计算机,其包含中央处理器CPU、内存MEM和输入输出I/O三部分。而个人计算机至少包含显示器和键盘,其核心部分也包含CPU、MEM和I/O,也可以用单片机制作个人计算机。
注:个人计算机强调人机交互操作,而单片机主要应用于自动控制。现代的个人计算机内存容量比较大,一般都超过1MB RAM,难以集成到单片机中,所以个人计算机的内存MEM都采用独立的MEM芯片。
<1.2>
单片机由于集成在单一芯片上,所以高可靠性是其最主要的特点。单片机由于CPU、MEM和I/O的差别,种类繁多,能适应各种各样的要求,性价比极高。
<1.3>
1)民用智能家电;2)个人移动电子设备:电子表,手机,MP3;3)工业智能测控;4)农业,医疗,军事;5)计算机网络设备
<1.4>
1)CPU; 2) I/O: 定时计数器、普通I/O、串行通信;3)MEN:FLASH+RAM
<1.5>
第13页。计算机各组成部分的信息传输的一组公共线路。总线分为片总线,内总线,和外总线。采用总线方便系统的功能扩充。
<1.6>
CPU读存储器的过程:1)送出地址 2)读信息有效 3)存储器对应单元的数据输出到总线 4)CPU取得数据 5)结束读信号地址。
CPU写存储器的过程:1)送出地址,选择存储器对应单元 2)送出数据 3)输出有效写信号 4)结束写信号 5)结束数据和地址信号。
<1.7>
B、D、H;十进制。
<1.8>
该题目的意思应该是8位二进制数。无符号书0~255,带符号数通常是补码:-128~127;BCD码是指压缩BCD码:00~99。
<1.9>
这是一个7位二进制书,补码是-11 0111B=-37H=-(48+7)=-55。
无符号二进制数是49H=4*16+9=73。
‘A’的ASCII码是41H,49H既是字母‘I’,BCD码是49.
<1.10>
电脑型电饭锅,电子表。
<1.11>
第15页,1)程序地址指针寄存器(PC或AR)的内容输出到地址总线,选择程序存储器单元;2)控制单元输出读信号;3)存储器输出指令内容到数据总线;4)CPU将指令内容存入CPU指令寄存器;5)PC指针加一;6)指令译码;7)执行指令。
<1.12>
1)24+23+22+21+20+2-2=16+8+2+1+0.25=27.25
2) 256-43+2-1=100H-2BH+2-1=11010101.1B=0D5.8H
3) 126 = 128 - 2 = 80H - 02H = 7EH
4) 111 = 128 - 17 = 80H -11H = 6FH = 0110 1111B
5) 7542
6) 5923H = 0101 1001 0010 0011B
7) -(100H - 85H) = -7BH = -(7*16 + 11) = -123
8) -112 = 100H -70H = 90H
9) 84H = -(100H - 84H) = -7CH = -124
<2-1>
(1)8位CPU
(2)程序存储器8K Flash
(3)256B内部RAM
(4)4个8位I/O端口
(5)3个16位定时/计数器
(6)6个中断源
(7)1个串行接口
<2-2>
(1)4*8=32根I/O线
(2)P0是数据线和低8位地址线的分时复用总线
P2是高8位地址总线
P3.6和P3.7是外扩RAM的读写信号线
(3)地址总线16位,数据总线8位
<2-3> (35页)
(1) 难记可以列举。最多128个通用PSW,A,B,SP,DPH,DPL
控制:TMOD,TCON
T0:TH0,TL0
T1:TH1,TL1
中断:IE,IP
I/O:P0,P1,P2,P3
串口:SCON,SBUF
电源:PCON
T2:TH2,TL2;RCAP2H,RCAP2L;T2CON,T2MOD;
难点:WDTRST;AUXR;AUXR1;DP0L,DP0H;DP1L;DP1H
(2)问题是分组的方法:可按(1)的方式分组
(3)内容太多,不列举。
<2-4>
(1)内部RAM:00~FFH SFR:80H~FFH
RAM又分成:寄存器区 00~1FH
位寻址区 20H~2FH
通用RAM 30H~FFH
(2)各区域寻址方式有差别
<2-5>
RESET:高电平复位;
ALE:外部低8位地址有效
PSEN:取代码有效(外部);
EA:选择内外程序存储器
INT0,INT1,T0,T1,RD,WR,X0/X1晶振
<2-6>
节能,中断及复位可启动
节电是CPU无时钟而停止工作,其它部分正常。
掉电是所有部分无时钟,振停。
因为电池容量有限,要延长便携设备的工作时间,节电尤其重要。
<2-7>
通常有冷启动上电复位,热启动手动复位,以及看门狗复位。
冷启动复位后,程序指针PC的值是确定的(PC)=0000H,其次是中断允许EA=0;P0=P1=P2=P3=0xFF。RAM的值是随机值,一般还有堆栈指针(SP)=0x07; (PSW)=00H.
而热启动和看门狗复位时,除RAM保持复位前的值外,其它寄存器的值同上。
<2-8>
AT89S52采用的是哈佛结构,程序和数据存储是独立的,它们共用地址数据总线,但是通过分时共享,PSEN信号有效时取程序空间,而WR和RD有效时取数据空间,PSEN,WR和RD三个信号任何时刻最多仅一个有效。
<2-9>
后进先出或先进后出的队列称为堆栈。AT89S52的堆栈设在内部RAM数据区;SP是堆栈指针;存取数据的原则是先将SP增一再存入数据,取数时根据SP取数后将SP减一。
<2-10>
DPTR是数据指针寄存器。用于存取外部数据RAM和程序空间的数据,由DPH和DPL组成。
<2-11>
PC:16位,但不在SFR区域中。见page38最后一段。
<2-12>
有4组工作寄存器;8个;PSW寄存器中的RS1和RS0位。
<3-1>
假设晶体频率为12MHZ,任何时候只有一个灯亮,每延时一定时间换一盏灯。由于没学过51的汇编,可用C语言实现。
#include <REG52.h>
Void Delay(void)
Void main(void)
{
int i;
P1 = 0xFF;
P2 = 0xFF;
While
{
P1 = 0xFE; Delay(); //p1.0灯亮
P1 = 0xFD; Delay(); //p1.1灯亮
.
.
.
P1 = 0xFF; //p1所有灯灭
P2 = 0xFE; Delay(); //p2.0灯亮
.
.
.
P2 = 0x7E; Delay(); //p2.7灯亮
P2 = 0xFF; //p2所有灯灭
}
}
Void Delay(void) //延时
{
int i, j;
for( i = 0; i < 1000; i++)
for( j=0; j<1000;j++)
}
<3-2>
在p3.0引脚上设一键,按下为0,开机后判断p3.0的状态决定流水方向。
if(p3 & 0x01) //只判p3最低位
LoopUpDown();
else
LoopDownUp();
<3-3>
书中没有介绍数码管的工作原理,自己查资料完成。
<3-4> 同上
<3-5> 同上
提示:自学5.2.3,习题集中应预习相关内容。
<4-1>
汇编指令中存取数据的方式或数据所在地址的方式(见page74:表4-1)
(1) 立即数:程序空间
(2) 直接地址:RAM:00~7FH,SFR:80H~FFH
(3) 间接地址:RAM:00~FFH,外部RAM
(4) 变址:程序
(5) 寄存器:A,DPTR,R0~R7,乘除法中得B,位寻址的C
(6) 相对:程序
(7) 位寻址:内部RAM:20~2FH;SFR中被8整除的字节
<4-2>
255条(111条不科学)page74
(1) 移动;(2)算术;(3)逻辑;(4)位操作;(5)控制
每类包括的指令不好记忆
指令[操作数1[操作数2[操作数3] ] ]
CJNE A,#55,NEXT
控制指令,累加器A中得内容不是55时转移到NEXT
<4-3>
MOV R2,#5
MOV R0,#30H
MOV DPTR,#100H
LOOP: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R2,LOOP1
MOV R2,#10
MOV DPTR,#2000H
MOV R0,#40H
LOOP2:MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,LOOP2
<4-4>
MOV R2,#6
MOV DPTR,#1000H
MOV R0,#0
LOOP: MOV P2,#20H
MOVX A,@R0
MOV P2,#30H
MOVX @R0,A
CLR A
MOVC A,@A+DPTR
MOV P2,#20H
MOVX @R0,A
INC R0
INC DPTR
DJNZ R2,LOOP
<4-5>
CLR C
MOV A,51H
SUBB A,41H
MOV 31H,A
MOV A,50H
SUBB A,40H
MOV 30H,A
<4-6>
MOV DPTR,#1000H INC DPTR
MOV A,30H MOV A,31H
ADD A,40H ADDC A,41H
DA A DA A
MOVX @DPTR,A MOVX @DPTR,A
<4-7>
设低8位存R6,高8位存R5
MOV A,R3
MOV B,R4
MUL AB
MOV R5,B
MOV R6,A
<4-8>
MOV A,20H
ANL A,21H
ORL A,22H
XRL A,23H
ADD A,ACC
CPL A
MOV 25H,A
<4-9>
MOV R0,#30H
MOV R2,#20
MOV B,#0
LOOP:CJNZ @R0,#‘W’,NEXT
INC B
NEXT: INC R0
DJNZ R2,LOOP
MOV A,B
JZ NEXT2
MOV A,#‘Y’
SJMP NEXT3
NEXT2:MOV A,#‘N’
NEXT3:NOP
<4-10>
MOV A,30H
MOV B,#10H
DIV AB //拆分BCD码,分别存入A,B
MOL AB
DA A
MOV 31H,A
MOV B,#10
DIV A,B
SWAP A
ORL A,B
SWAP A
<4-11>
当在30H区域找到一个最小值时,将相应单元置成FFH。从小到大找完后,再移动到50H区域。B保存最小值
MOV R3,#10
LOOP2:MOV R1,#40H
MOV R2,#10
MOV R0,#30H
MOV A,#0FFH
LOOP1:MOV B,@R0
CJNE A,B,$+3
JNC
MOV A,@R0
MOV DPH,R0;记忆地址
INC RO
DJNZ R2,LOOP1
MOV @R1,A
MOV R0,DPH
MOV @R0,#0FFH
INC R1
DJNZ R3,LOOP2:倒转40H区域到50H区域
MOV R2,#10
MOV R0,#40H
MOV R1,#50+9
LOOP3:MOV A,@R0
MOV @R1,A
INC R0
DEC R1,LOOP
<4-12>
MOV A,30H
MOV B,#10
DIV A,B
MOV 40H,A
MOV A,B
MOV B,#10
DIV A, B
MOV 41H,A
MOV 42H,B
<4-13>
MOV R2,#10
MOV R0,#40H
MOV R1,#50H
LOOP:MOV A,@R0
ADD A,#’0’
MOV @R1,A
INC R0
INC R1
DJNZ R2,LOOP
<4-14>
MOV R2,#16
MOV R0,#30H
MOV R1,#40H
LOOP:MOV A,@R0
CJNE A,#0AH,$+3
JNC NEXT1
ADD A,#’0’
SJMP NEXT2
NEXT1:ADD A,#‘A’- 0AH
NEXT2:MOV @R1,A
INC R0
INC R1
DJNZ R2,LOOP
<4-15>
MOV R2,#30H
MOV DPTR,#2000H
MOV P2,#10H
MOV R0,#00H
MOV R1,#30H
LOOP:MOV A,@DPTR
MOV @R1,A
MOVX @R0,A
CLR A
MOVX @DPTR,A
INC DPTR
INC R1
INV R0
DJNZ R2,LOOP2
<5-1>
由于p0~p3是准双向口,作为输入时首先应输出高电平。
<5-2>
(1)本题的LED应该指数码管,多个LED可以静态,也可以动态显示。
(2)原理是分时动态扫描每支LED,所有LED每秒至少要显示25次,利用人眼的视觉特性实现同时显示的现象。
(3)静态显示不存在该问题,所以此处仍指动态显示方式。其他操作是指无法保证LED的扫描显示,可以理解应用定时中断实现动态扫描?
<5-3>
(1) 独立按键:中断,查询
(2) 矩阵键盘:扫描
<5-4>
P0要外接上拉电阻(通常情况,保证与P1~P3相同)
<5-5>
P0是数据总线与低8位地址总线的复用总线,当ALE为高时,P0为A0~A7,当ALE为低时P0为D0~D7,P2是高8位地址总线。
<5-6>
P3.0: RXD 串行口接收信号输入
P3.1: TXD 串行口发送信号输出
P3.2: INT0 外部中断输入0
P3.3: INT1 外部中断输入1
P3.4: T0 计数器的输入时钟
P3.5: T1 计数器的输入时钟
P3.6: WR 外部扩展RAM的写信号
P3.7: RD 外部扩展RAM的读信号
<5-7>
由于有6位数,静态方式要较多的硬件,所以采用动态方式。采用共阴数码管,P1接段选,P2接字选即可。如果亮度不够,可在P1接上拉电阻,增加驱动电流。
ORG 0000H
LOOP: MOV P1, #(1的代码)
MOV P2,#1111 1110B
LCALL DELAY
.
.
.
MOV P1, #(2的代码)
MOV P2,#1101 1111B
LCALL DELAY
LJMP LOOP
DELAY: MOV R6, #100
DELAY1:MOV R7, #100
DJNZ R6, DELAY1
RET
END
<5-8>
在P1接静态数码管(共阴)。
在P2和P3接10个独立按键。
ORG 0000H
MOV P2, #0FFH
MOV P3, #0FFH
LOOP: JB P2.0, LOOP1
MOV P1, #(0代码)
LJMP LOOP
LOOP1: JB P2.1, LOOP2
MOV P1, #(1代码)
JMP LOOP
.
.
.
JB P3.0
MOV P1, #(8...)
LJMP LOOP
JB P3.1
MOV P1, #(9...)
LJMP LOOP
END
<5-9>
1ms=800us+200us=200us*(4+1)
ORG 0000H
LOOP: SETB P1.0
LCALL DELAY200
LCALL DELAY200
LCALL DELAY200
LCALL DELAY200
CLR P1.0
LCALL DELAY200
SJMP LOOP
DELAY: MOV R2, #100
DJNE R2, DELAY
RET
END
修正时R2值可以改为98
<5-10>
大题,超难。字符‘B’应改为‘b’
P1段选,P0字选,共阴动态
P2和P3独立按键
4位数存入 30H~33H/40H~43H
ORG 000H
MOV R0, #30H
MOV R2, #4
LCALL KeyIn ;显示
LCALL Compare; 得证不重复
JZ
MOV @R0
INC R0
DJNE R2
②K设置显示
③同上输入40H~43H
④比较30H~33H/40H~43H,求得A参数
⑤求得B参数
⑥显示A、B参数
⑦A参数不为4
⑧结束
<5-11>
在P1和P2端口上接两个共阴数码管(静态),酒瓶通过信号接到P3.2,输出脉冲接P3.3。
当有酒瓶通过时,光线被遮挡,光敏三极管截止,P3.2为高电平,否则P3.2为低电平。30H单元存酒瓶计数值。设晶体频率为12MHz
ORG 0000H
Start: MOV 30H, #0 ; 开始0瓶
Loop: LCALL SHOW
JNB P3.2, $
JB P3.2, $
INC 30H
LCALL SHOW
MOV A, 30H
CJNE A, #12, Loop
SETB P3.3
MOV R7, #100
Loop1: MOV R6, #100
Loop2: MOV R5, #50
DJNE R5, $
DJNE R6, Loop2
DJNE R7,Loop1
CLR P3.3
LJMP Start
END
<6-1>
处理器在执行正常程序过程中,发生某一事件,需要处理器暂停当前的程序,转而去处理突发事件。这种现象称为中断。
中断的主要功能是解决突发事件的处理能力。
<6-2>
6个中断源
X0: 0003H
T0: 000BH
X1: 0013H
T1: 001BH
RS: 0023H
T2: 002BH
<6-3>
当处理器在处理某中断事件时,又再次被另一个中断事件中断,也就是新事件的中断 级比之前的中断高。这种处理器中则支持不同级别的中断,这就是中断优先级别的问题。 单片机中存在同级别的自然优先权问题和不同优先级问题高级别的中断将中断低级别 中断,发生中断嵌套现象。
<6-4>
MOV IP, #0
SETB PT2
SETB EX0
SETB EX1
SETB ET2
SETB ES
SETB EA
<6-5>
TF0, TF1, IE0, IE1, TF2, RI, TI, TF0, TF1在中断服务返回时自动清零。
IE0,和IE1都工作在下降沿方式时,中断返回时自动清零。
而TF2, RI, TI 必须通过软件清零。
<6-6>
①产生了中断请求
②允许了该中断
③允许CPU中断,即EA=1
④当前CPU没有在中断服务或正在服务的中断级别比该中断级别低
⑤执行完了一条制定,如果是RETI指令或是处理中断IE, IP允许的指令,必须还要执行一条指令。
<6-7>
①中断请求
②CPU响应中断
③保护现场
④中断服务
⑤恢复现场
⑥中断返回
<6-8>
①将X0或X1置为电平中断方式,扩展中断源相与输入,同时各扩展源通过I/O并口输入查询
②将T0, T1, T2改为计数器方式中断,计数值为-1
<6-9>
①RETI
②操作IE和IP的指令
<6-10> ?
之前计算机智能按指令批量处理,不能实现人机交互工作。中断概念的提出,才让计算机能解决实时事件。
<6-11>
烧水设一气阀,烧开时触发一开关,变换成电压信号低电平,接P3.2产生中断,单片机响应中断后关电源或燃气阀,同时输出报警信号。
<6-12> ?
降低了系统的效率和实际性
<6-13>
可屏蔽中断是指通过指令可关闭被开放的中断,而非屏蔽中断,是指一但开放后,无法通过指令关闭的中断,非屏蔽中断常用于一些非处理不可的突发事件,比如掉电要保护当前数据等。
<6-14>
两者都让CPU执行指定地址的指令。但复位时CPU内很长寄存器被置为固定值。而中断在执行指定地址的指令前,会将当前的PC值压栈,而且不影响硬件。
<6-15>
中断入口是指某中断产生中断请求后,CPU响应中断直接转入到固定地址,该地址即为中断入口。而中断矢量是指CPU响应中断时,CPU从某向量表中取得一运行地址,该地址通常可通过软件修改设置。
<6-16>
电平中断适用那些通过软件方式可以清除的中断。而边沿中断适合事件记录,即使CPU响应中断后该中断信号已消失,但这种中断能记忆曾经发生过的中断。
<6-17>
如果首先出现的中断还没消失,而又产生了第二个中断,且在CPU响应中断之前所有中断都消失了,这样采用边沿中断,但无法查出某个扩展中断产生过。
<7-1>
①有3个,T0,T1,T2
②T0有4中工作方式。方式0为13位非重载;方式1为16为非自动重载;方式2为8为自动重载;方式3为双8为两计数器。
T1有3中工作方式,无T0的方式3。
T2有16位重载方式或工作在捕获模式。
<7-2>
此题目有问题。T1无方式3。T0工作在方式3时,T1通常工作在方式2作为串口的速率发生器。此时T0的TH0 8位计数器将使用T1的TR1,TF1标志控制位,工作于定时器模式。
<7-3>
通过T2CON中的RCLK和TCLK进行设置,为1时用T2产生波特率,否则用T1产生波特率,只要两者不同,就可以用T1和T2分别产生收发速率,从而实现串口收发速率不相同的功能。
<7-4>
初始化时让T1工作在计数器方式1,而T0工作在定时器方式1,初始值分别为-1000和-2000.首先启动T1,当T1产生溢出后启动T0,到T0产生溢出时,重复上述过程即可。
ORG 0000H
Loop: MOV TCON, #0
MOV TMOD, #01010001B
MOV TH1, #high(-1000)
MOV TL1, #low(-1000)
MOV TH0, #high(-2000)
MOV TL0, #low(-2000)
SETB TR1
JNB TF1, $
SETB TR0
JNB TF0, $
LJMP Loop
END
<7-5>
由于对精度没有要求,可用T0工作在定时方式1,实现计时,每次定时2.5ms
ORG 0000H
MOV TCON, #01H
Loop: LCALL Delay ;2.5ms
SETB p1.3
LCALL Delay ;2.5ms
CLR P1.3
LCALL Delay
SETB p1.3
LCALL Delay
CLR p1.3
SETB p1.2
LCALL Delay
SETB p1.3
LCALL Delay
CLR p1.3
LCALL Delay
PETB P1.3
LCALL Delay
CLR p1.3
CLR p1.2
LJMP Loop
Delay: MOV TH0, #
MOV TL0, #
CLR TF0
SETB TR0
JNB TF0,$
CLR TR0
RET
<7-6>
(补充T2的说明)让T2工作在10ms定时方式,然后通过计数变量实现。
ORG 0000H
MOV T2MOD,#0
MOV T2CON, #0
MOV RCAP2L, #low(-10000)
MOV RCAP2H, #high(-10000)
SET TR2
LOOP: MOV R2, #5
SETB P1.2
LOOP1: JNB TF2, $
CLR TF2
DJNZ R2, LOOP1
MOV R2, #16
CLR P1.2
LOOP2: JNB TF2, $
CLR TF2
DJNZ R2, LOOP2
SJMP LOOP
END
<7-7>
按题意用T1定时器方式1单次决定定时即可测量脉冲的宽带。
ORG 0000H
JB INT1, $
LOOP: MOV TMOD, #1001 0000H;
MOV TL1, #0
MOV TH1, #0
SETB TR1
JNB INT1, $ ; 等高
JB INT1,$ ; 等低
MOV DRH, TH1 ;取高电平时间入DPTR
MOV DRL, TL1
SJMP LOOP ;重复
<7-8>
题目不确定。首先高于3MHz的信号无法测量,而频率太低的信号没有精度要求,所 以本题假设用一秒钟统计信号的计频方式进行工作,用T2计时一秒,用T0计频。
ORG 0000H
MOV TMOD, #0001 0101B
MOV TH0, #0
MOV TL0, #0
MOV T2CON, #0
MOV T2MOD, #0
MOV RCAP2H, #high(-50000)
MOV RCAP2L, #low(-50000)
MOV R2, #0
MOV R7, #0
SETB TR2
SETB TR1
LOOP:JNB TF0,LOOP1
CLR TF0
INC R7
LOOP1:JNB TF2, LOOP
CLR TF2
DJNZ R2, LOOP
CLR TR0
CLR TR2
MOV R6, TH0
MOV R5, TL0
R5, R6, R7中为频率
低 高
<7-9>
如果是减法计数器,其初始化原则为设计的计数值,但若是加法计数器,其初始值则为 计数器的最大值减去要计数的值。(或设为计数的负值)
<7-10>
当计数脉冲的频率是固定值时。
<7-11>
设一个变量,其初始值为0,每当计数器溢出时,该变量加一(通过软件或中断检测溢 出),最终计数值有变量和计数器中的两部分构成。
<7-12>
采用补偿方式,将重载时的误差补偿去
CLR EA
CLR TR0
MOV A, TL0
ADD A, #low( +7)
MOV TL0, A
MOV A, TH0
ADDC A, #high( +7)
MOV TH0,A
SETB TR0
SETB EA
共7个周期
在执行TR0清零停止计数前,计数器超越的时间已累计在TH0和TL0中,所以在重载 前应计入,另外停止计数后到重新计数开始之间运行的几种指令共用去7个时钟周期, 所以也应计入。还有一点要注意的是,为了防止在补偿过程中产生中断响应额外加入时 钟,在补偿过程中应关中断(屏蔽中断)。
<8-1>
P3端口的P3.0和P3.1,分别为RXD接收和TXD发送
<8-2>
SBUF收发缓冲寄存器。不能,厨房讲TXD与RXD连接。写入SBOF的数据将从TXD 串行发送出去
<8-3>
RI表示收到数据,TI表示发送完数据
<8-4>
SCON: SM0, SM1, SM2, REN, RB8, TB8, RI, TI
(1)SM0和SM1组合定义工作方式
(2)SM2主要用于多机通信中的地址接收控制
(3)REN接收允许
(4)方式2和方式3的接收第9位RB8和发送第9位TB8
(5)RI接收中断标志
(6)TI发送中断标志
<8-5>
方式0是一种同步移位半双工,并非常有用的串行通信
方式1是1+8+1的标准串行全双工通信
方式2和方式3的通信方式相同,方式2只有两种可选的固定速率,而方式3的速率可 变,方式2和方式3主要用于多机通信
方式1和方式3的速率控制方法相同
<8-6>
设通信速率为x,T1的溢出率应为x的2SOMD *16倍
让T1工作在定时器方式2,则T1的初值为:
TH1=256-fosc/12/x/32*2SMOD
<8-7>
因为T1工作在定时器方式2,是8位自动重载模式,所以初值的取值范围为0~255, 其中0相当于256.如果不是整数,必须取整数后使用,因为TH1只能保存整数,取整 数后将导致通信速率产生误差,可能导致接收错误
<8-8>
由于通信速率只与T1的溢出率有关,而与T1的工作方式无关,所以方式0和方式1 也能产生速率.
<8-9>
可以。但计数脉冲的频率要求稳定不变,这样才能产生稳定的通信速率
<8-10>
工作方式0和方式2
<8-11>
最高速率为SMOD=1,TH1=-1时,即
BPS=fosc/12/16
而最低速率为SMOD=0,YH1=-256=0时,即
BPS=fosc/12/32/256
<8-12>
由于TMOD中包含T0和T1两个定时计数器的工作模式设置,初始化时如果分开对T0 和T1进行设置。常常在初始化T0时修改了T1的配置,而初始化T1时又容易变更了 T0的配置。所以将T0和T1初始化时,应该分别采用下面两式:
TMOD=(TMOD&0x0F)| (x&0xF0);T1
TMOD=(TMOD&0xF0)| (y&0x0F)
9-1. MCS-51系列单片机的三总线包括哪些信号,信号传送的方向如何?
【答】
数据总线8根D0—D7,双向;
地址总线16根A0—A15,输出;
输出的控制总线信号:地址锁存信号ALE,外部扩展数据空间读信号RD和写信号WR,外部扩展程序空间读信号PSEN
输入的控制总线信号:内外程序空间选择信号EA,复位信号RESET
9-2. MCS-51系列单片机片外扩展存储器的最大容量是多少,由什么决定?
【答】
分为数据和程序两部分,都是64KB。不过程序空间还与EA信号有关,由EA信号决定,如果EA接高平,最大容量为64KB扣除内部程序空间ROM容量。
9-3. 见图9-16,如果单片机需要访问AT29C010内超过64K的存储单元,如何修改电路?单片机能否正常工作?
【答】
将AT29C010的A16与单片机P1.0连接,P1.0置0可以访问AT29C010的低64K,P1.0置1可以访问AT29C010的高64K。
单片机不能工作,原因是程序在低64K,P1.0置1后高64K无程序,除非将程序拷贝一份存到高64K相同位置。
还有一个问题,利用WR是无法写入FLASH的,因为传送数据期间因取指而不断读FLASH,将导致写入失败。
展开阅读全文