2,89c51的EA端有何用途?
/EA端接高电平时,cpu只访问片内flash,rom并执行内部程序,存储器。/EA端接低电平时,cpu只访问外部rom,并执行片外程序存储器中的指令。/EA端保持高电平时,cpu执行内部存储器中的指令。
6:如何简洁的判断89c51正在工作?
当89c51正常工作后,ALE引脚不断向外输出正脉冲信号,只要检测ALE是否有正脉冲信号输出,就可判断89c51是否在正常工作。
8:89c51 p0口作通用I/O口输入时,若通过TTL“oc“门输入数据,应注意什么,问什么?
11:89c51单片机的/EA信号有何功能?在使用8031时,/EA信号引脚应如何处理? /EA 接地 只读外rom
接高电平 从内rom到外rom 使用8031时/EA接地
13:内部RAM低128字节单元划分为哪三个主要部分?各部分主要功能是什么? 寄存器区、位地址区和通用RAM区。 寄存器区共占32个RAM单元,其地址为00H~1FH,将这32个单元分成了4组通用寄存器。在任一时刻,只能使用其中的一组作为R0~R7使用,通过设置PSW中的RSl和RS0来选择。系统复位后,默认第0组为通用寄存器组。
位地址区为20H,-~2FH字节地址单元,位地址为00H~7FH,共有128位,从20H字节地址的最低位开始编地址,到2FH字节地址的最高位为止。位地址区可以进行位访问,也可以使用字节地址进行访问,使用方法与通用RAM区的单元相同。
通用RAM区在30H~7FH,可以作为一股的单元使用,也可以用做堆栈。
17:位地址7CH与字节地址7CH如何区别?位地址7CH具体在片内RAM中什么位置? 用不同的寻址方式来加以区分,即访问128个位地址用位寻址方式,访问低128字节单元用字节寻址和间接寻址。具体地址为2F的第五位,即为7C。
18:89c51单片机的时钟周期与振荡周期之间有什么关系?什么叫机器周期与指令周期? 时钟信号的周期成为机器状态周期,是振荡周期的两倍。一个机器周期是指cpu访问存储器的一次所需的时间。指令周期是执行一条指令所需的时间。
20:什么叫堆栈?堆栈指针sp的作用是什么?89c51单片堆栈的容量不能超过多少字节?
第三章
6、在89c51片内ram中,已知(30H)=38H,(38H)=40H,(40)H=48H,(48H)=90H, 请分析下面各是什么指令,说明源操作数的寻址方式,以及按顺序执行每条指令后的果。 MOV A,40H ;直接寻址 (40H)→A MOV R0,A ;寄存器寻址 (A)→R0 MOV P1,#0F0H ;立即数寻址 0F0→P1 MOV @R0,30H ;直接寻址 (30H) →(R0) MOV DPTR,#3848H ;立即数寻址 3848H→DPTR MOV 40H,38H ;直接寻址 (38H) →40H MOV R0,30H ;直接寻址 (30H) →R0 MOV P0,R0 ;寄存器寻址 ( R0 )→P0 MOV 18H,#30H ;立即数寻址 30H→18H MOV A,@R0 ;寄存器间接寻址 ((R0)) →A
MOV P2,P1 ;直接寻址 (P1)→P2 最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H
11、如何访问片外RAM单元,可使用哪些寻址方式? 只能采用寄存器间接寻址(用MOVX指令)
12、如何访问片内RAM地址,可使用哪些寻址方式?
低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0~R7) 高128字节:直接寻址,位寻址,寄存器寻址
13、如何访问片内外程序存储器,可使用哪些寻址方式?
采用变址寻址(用MOVC指令)
17、使用位操作指令实现下列逻辑操作,要求不得改变未涉及位的内容。 (1)SETB ACC.0或SETB E0H ;E0H是累加器的地址 (2)CLR ACC.7 CLR ACC.6 CLR ACC.5 CLR ACC.4 (3)CLR ACC.6 CLR ACC.5 CLR ACC.4 CLR ACC.3
26.试编写程序,查找在内部RAM的20H~50H单元中出现00H的次数, 并将查找的结果存入51H单元
MOV R2,#31H ;数据块长度→R2 MOV R0,#20H ;数据块首地址→R0
LOOP:MOV A,@R0 ;待查找的数据→A JNZ L1 ;不为0,转L1
INC 51H ;为0,00H个数增1
L1:INC R0 ;地址增1,指向下一个待查数据
DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找 RET
MOV A,R3 ;取该数高8位→A
ANL A,#80H ;取出该数符号判断 JZ L1 ;是正数,转L1
MOV A,R4 ;是负数,将该数低8位→A CPL A ;低8位取反 ADD A,#01H ;加1
MOV R4,A ;低8位取反加1后→R4 MOV A,R3 ;将该数高8位→A CPL A ;高8位取反
ADDC A,#00H ;加上低8位加1时可能产生的进位 MOV R3,A ;高8位取反加1后→R3 L1: RET
第五章
2、试编写一段对中断系统初始化的程序,使之允许INT0,INT1,TO,串行口中断,且使T0中断为高优先级中断。 解:MOV IE,#097H MOV IP,#02H
4、89C51共有哪些中断源?对其中端请求如何进行控制? 答:(1)89C51有如下中断源 ① :外部中断0请求,低电平有效 ② :外部中断1请求,低电平有效 ③T0:定时器、计数器0溢出中断请求 ④T1:定时器、计数器1溢出中断请求 ⑤TX/RX:串行接口中断请求
(2)通过对特殊功能寄存器TCON、SCON、IE、IP的各位进行置位或复位等操作,可实现各种中断控制功能
5、什么是中断优先级?中断优先处理的原则是什么?
答:中断优先级是CPU相应中断的先后顺序。原则: (1) 先响应优先级高的中断请求,再响应优先级低的
(2) 如果一个中断请求已经被响应,同级的其它中断请求将被禁止
(3) 如果同级的多个请求同时出现,则CPU通过内部硬件查询电路,按查询顺序确定应该响应哪个中断请求
查询顺序:外部中断0→定时器0中断→外部中断1→定时器1中断→串行接口中断
14、89C51各中断源的中断标志是如何产生的?又是如何清0的?CPU响应中断时,中断入口地址各是多少?
答:各中断标志的产生和清“0”如下: (1) 外部中断类
外部中断是由外部原因引起的,可以通过两个固定引脚,即外部中断0和外部中断1输入信号。
外部中断0请求信号,由P3.2脚输入。通过IT0来决定中断请求信号是低电平有效还是下跳变有效。一旦输入信号有效,则向CPU申请中断,并且使IE0=1。硬件复位。 外部中断1请求信号,功能与用法类似外部中断0
(2) 定时中断类
定时中断是为满足定时或计数溢出处理需要而设置的。当定时器/计数器中的计数结构发生计数溢出的,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志位。这种中断请求是在单片机芯片内部发生的,无需在芯片上设置引入端,但在计数方式时,中断源可以由外部引入。
TF0:定时器T0溢出中断请求。当定时器T0产生溢出时,定时器T0请求标志TF0=1,请求中断处理。使用中断时由硬件复位,在查询方式下可由软件复位。 TF1:定时器T1溢出中断请求。功能与用法类似定时器T0
(3) 串行口中断类
串行口中断是为串行数据的传送需要而设置的。串行中断请求也是在单片机芯片内部发生的,但当串行口作为接收端时,必须有一完整的串行帧数据从RI端引入芯片,才可能引发中断。 RI或TI:串行口中断请求。当接收或发送一串帧数据时,使内部串行口中断请求标志RI或TI=1,并请求中断。响应后必须软件复位。 CPU响应中断时,中断入口地址如下: 中断源 入口地址 外部中断0 0003H 定时器T0中断 000BH 外部中断1 0013H 定时器T1中断 001BH 串行口中断 0023H
第6章
3、89C51定时器有哪几种工作模式?有何区别?
答:有四种工作模式:模式0,模式1,模式2,模式3
(1) 模式0:选择定时器的高8位和低5位组成一个13位定时器/计数器。TL低5位溢出时向TH进位,TH溢出时向中断标志位TF进位,并申请中断。定时时间t=(213-初值)×振荡周期×12;计数长度位213=8192个外部脉冲
(2) 模式1:与模式0的唯一差别是寄存器TH和TL以全部16位参与操作。定时时间t=(216-初值)×振荡周期×12;计数长度位216=65536个外部脉冲
(3) 模式2:把TL0和TL1配置成一个自动重装载的8位定时器/计数器。TL用作8位计数器,TH用以保存初值。TL计数溢出时不仅使TF0置1,而且还自动将TH中的内容重新装载到TL中。定时时间t=(28-初值)×振荡周期×12;计数长度位28=256个外部脉冲 (4) 模式3:对T0和T1不大相同
若设T0位模式3,TL0和TH0被分为两个相互独立的8位计数器。TL0为8位计数器,功能与模式0和模式1相同,可定时可计数。TH0仅用作简单的内部定时功能,它占用了定时器T1的控制位TR1和中断标志位TF1,启动和关闭仅受TR1控制。定时器T1无工作模式3,但T0在工作模式3时T1仍可设置为0~2。
5、定时器用作定时器时,其定时时间与哪些因素有关?作计数器时,对外界计数频率有何限制?
答:定时时间与定时器的工作模式,初值及振荡周期有关。 作计数器时对外界计数频率要求最高为机器振荡频率的1/24。
11、89C51定时器作定时和计数时其计数脉冲分别由谁提供?
答:作定时器时计数脉冲由89C51片内振荡器输出经12分频后的脉冲提供,作计数时计数脉冲由外部信号通过引脚P3.4和P3.5提供。
14、已知89C51单片机的fosc=12MHz, 用T1定时。试编程由P1.0和P1.1引脚分别输出周期为 2ms和500μs的方波。
解:采用模式0作 定时初值: 所以
MOV R2,#04H ;R2为“250μs”计数器,置入初值4 CLR P1.0 ;P1.0输出低电平 CLR P1.1 ;P1.1输出低电平
MOV TMOD,#00H
L2:MOV TH1,#0F8H ;置入定时250μs初值 MOV TL1,#06H
SETB TR1 ;启动T1
LOOP:JBC TF1,L1 ;查询250μs时间到?时间到,转L1 SJMP LOOP ;时间未到,转LOOP,继续查询
L1:CPL P1.1 ;P1.1输出取反,形成周期为500μs CLR TR1 ;关闭T1
DJNZ R2,L2 ;“250μs”计数器减1,到1ms吗?未到转L2 CPL P1.0 ;P1.0输出取反,形成周期为2ms方波 MOV R2,#04H ;重置“250μs”计数器初值4 LJMP L2 ;重复循环
18、 设fosc=12MHz。试编制一段程序,功能为:对定时器T0初始化,使之工作在模式2,产生200μs定时,并用查询T0溢出标志的方法,控制 P1.0输出周期为2ms的方波。 解:T0作定时器时初值: 所以 程序1: CLR P1.0 MOV R2,#05H MOV TMOD,#02H L2:MOV TH0,#38H MOV TL0,#38H SETB TR0 LOOP:JBC TF0,L1 SJMP LOOP L1:CLR TR0 DJNZ R2,L2 CPL P1.0 MOV R2,#05H LJMP L2 程序2:
MAIN:MOV TMOD,#02H CLR P1.0 LOOP1:MOV R2,#05H LOOP:MOV TH0,#38H MOV TL0,#38H
SETB TR0 JNB TF0,$ CLR TR0 DJNZ R2,LOOP CPL P1.0 SJMP LOOP1
第七章
4、89C51串行口有几种工作方式?有几种帧格式?各工作方式的波特率如何确定? 答:89C51串行口有4种工作方式: 方式0(8位同步移位寄存器),方式1(10位异步收发),方式2(11位异步收发),方式3(11位异步收发)。
有2种帧格式:10位,11位
方式0:方式0的波特率≌fosc/12(波特率固定为振荡频率1/12) 方式2:方式2波特率≌2SMOD/64×fosc
方式1和方式3:方式1和方式3波特率≌2SMOD/32×(T1溢出速率)
定时器T1用作波特率发生器时,通常选用工作模式2(自动重装初值定时器)
5、若异步通信接口按方式3传送,已知其每分钟传送3600个字符,其波特率是多少? 答:已知每分钟传送3600个字符,方式3每个字符11位,则: 波特率=(11b/字符)×(3600字符/60s)=660b/s
9、为什么定时器T1用作串行口波特率发生器时,常选用工作模式2?若已知系统时钟频率和通信用的波特率,如何计算其初值?
答:因为工作模式2是自动重装初值定时器,编程时无需重装时间参数(计数初值),比较使用。若选用工作模式0或工作模式1,当定时器T1溢出时,需在中断服务程序中重装初值。已知系统时钟频率fosc和通信用的波特率fbaud,可得出定时器T1模式2的初值 第八章
4:除地线公用外,六根地址线,十一根地址线各可选多少个地址? 六根地址线 2^6=64 十一根地址线2^11=2048 第九章
1:为什么要消除键盘的机械抖动?有哪些方法?
通常的按键所用开关为机械弹性开关,由于机械触点的弹性作用,按键在闭合和断开的瞬间均伴随有一连串的抖动,键抖动会引起一次按键被误读多次,为了确保cpu对键的一次闭合仅作一次处理,必须去除键抖动。
有硬件和软件两种方法。硬件方法常用rs触发器电路。软件方法是当检测出键闭合后执行一个5~10ms的延时程序,,再一次检测键的状态,如仍保持闭合状态,则确认真正有键按下。
3:设计一个2*2行列式键盘电路并编写键扫描程序
KEY1: ACALL KS1 LKP:ADD A,R4
JNZ LK1 PUSH ACC AJMP KEY1 LK3:ACALL KS1
LK1:ACALL T12MS JNZ LK3 ACALL KS1 POP ACC JNZ LK2 RET
AJMP KEY1 NEXT:INC R4 LK2:MOV R4,#00H MOV A,R2 MOV R2,#0FEH JNB ACC,1,KND
LK4:MOV A,R2 RL A MOV P1,A MOV R2,A MOV A,P1 AJMP LK4
JB ACC,6,LONE KND:AJMP KEY1 MOV A,#00H KS1:MOV A,#0FCH
AJMP LKP MOV P1,A LONE:JB ACC,7,NEXT MOV A,P1 MOV A,#02H CPL A ANL A,#0C0H
RET
12:在一个由89c51单片机与一片adc0809组成的数据采集系统中,adc0809的地址为
7FF8H~7FFFH。试画出有关逻辑电路图,并编写程序,每隔1min轮流采集一次8个通道数据共采集100次,其采样值存入片外RAM 3000H开始的存储单元中。
设Fosc=6mhz,用定时器定时100ms,用软件计数10*60实现定时1min,A/D转换采用查询(p1.0)方式。
ORG 0000H MOV TH1,#3CH MOV R2,#0AH INC DPTR AJMP MAIN MOV TL1,#0B0H DJNZ R3,RETURN MOV R1,DPH ORG 001BH SETB ET1 MOV DPTR,#7FF8H MOV R0,DPL AJMP SERVE SETB EA NEXT:MOVX @DPTR,A POP DPL MOV SF,#60H SETB TR1 JB P1.0,$ POP DPH MOV R7,#100 SJMF LOOP MOVX A,@DPTR DJNZ R6,NEXT MOV R1,#30H DJMZ R7,LOOP PUSH DPH RETURN:RET1 MOV R0,#00H SJMP $ PUSH DPL MOV R2,#10 MOV TH1,#3CH MOV DPH,R1 MOV R3,#60 MOV TL1,#0B0H MOV DPL,R0
MOV TOMD,#10H DJNZ R2,RETURN MOVX @DPTR,A
因篇幅问题不能全部显示,请点此查看更多更全内容