单片机嵌入式考试和答案(中南大学)

2020-03-27 16:18

1、Intel公司的单片机的发展经历了MCS-48、MCS-51、MCS-96和MCS-960系列 2、若MCS-51的晶振频率为12MHz,则状态周期为1/6us,机器周期为1us

3、MCS-51中断服务子程序的入口地址是 (可变的/固定的)。同优先级的中断(能/不能)相互之间中断。 4、计算机的内总线(即CPU的三总线是)数据总线、地址总线和控制总线

5、SRAM的特点是不需要刷新,随机存储,只读,内容容易因为电源掉落后失去,EPROM的特点是可编程,可擦除,只读,EEPROM的特点是可编程,电可擦除,擦除时以字节为单位,只读,Flash memonry的特点是可写入可擦除,擦除时以页为单位,写入的内容不会因电源关闭而失去

6、MCS-51中,内部RAM中有一个区域既可以按字节寻址,也可按位寻址,该区域是位寻址区 7、MCS-51中的中断触发方式有两种外部触发和边缘触发

8、若A/D转换参考电压Vnf为5.12V,请问一个10位A/D转换芯片的A/D转换分辨率是 0.005 V。 指出下列指令中带下划线的操作数所采用的寻址方式 1、 MOV B, #09H 立即数寻址 2、 MOV A, #68H 立即数寻址 3、 DNC A 寄存器寻址 4、 MOV A @R0 寄存器间接寻址 5、 MOVX A @A+DPTR 变址寻址 三、编程

编写X5045一个字节最基本的写入子程序。A中为输出到X5045的字节内容。 OUTB45: MOV OUTB41: CLR

RLC

R0, #8

SCK A

MOV SDI,C SETB SCK DJNZ R0,OUTB41 CLR SCK RET

ACALL R2,$

;延时(2R2+3)μs

JB Delay DQ,$ ;延时440μs 1、编写一线总线输出1位子程序(输出位在C中)。 ;延时子程序 Delay:

DJNZ NOP RET

MOV R2,#220 ACALL RET SETB DQ CLR DQ NOP SETB DQ NOP NOP Delay RdBit: ;拉低总线1μs ;初始化子程序 INIT:

SETB DQ NOP CLR

DQ

;拉低总线至少480μs

;延时60μs

MOV R2,#240 ACALL SETB DQ MOV R2,#30

Delay

MOV C,DQ ;读入DQ到Cy MOV R2,#28 ACALL RET Delay 按DS1822初始化时序的要求编写DS1822初始化子程序(6MHZ晶振)

SETB NOP CLR

DQ

;拉低总线至少480μs DQ

INIT:

MOV R2,#240 ACALL SETB DQ MOV R2,#30 ACALL JB

DQ,$

Delay Delay

;延时60μs

MOV R2,#220 ACALL RET

Delay

;延时440μs

2、编写8279显示子程序,完成字形查表送8279显示到一个LED上。设命令口/数据入口地址分别为:M8279/D8279,LED字段码表首址为:LEDTAB。入口条件: A 中为[]的地址码,B中为要显示的数。

W8279:

MOV DPTR,#M8279 ;写显示RAM命令 MOVX @DPTR,A MOV A,B

MOV DPTR,# LEDTAB

MOVC A,@A+DPTR ;查表求段显码 MOV DPTR,#M8279D;写显示RAM MOVX @DPTR,A RET

LEDTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;段显码表

END

db 7fh,6fh,77h,7ch,39h,5eh,79h,71h,40H

3、在MCS-51系列单片机中,用定时器T1定时,中断方式编程,不受外部引脚控制,式1,在P1.2口输出周期为1s的方波(高点位0.6s,低电位0.4s),设fosc=12MHZ 选定时器1,模式1.

按高电位6ms,低电位4ms,总周期10ms进行以下计算

MOV SETB LOOP:

TMOD, #10H TR1

MOV TH1,#0D8H MOV JNB CLR CPL

TL1,#0F0H TF1,$ TF1 P1.2

SJMP LOOP

题意要求输出一个周期为1s的方波,高电平0.6s,低电平0.4s,由于P1.2输出方波的周期时间较长,用一个定时器无法实现长时间的定时,解决的办法可以用定时器加软件计数的方法来实现。

用T1定时10ms,加软件计数10次为100ms,再计数6次与4次实现0.6s和0.4s,合计可以实现1s为方波周期的的方波。 40H单元作秒技术单元:100ms / 10ms = 10次

41H单元用作低电平持续时间的计数单元:600ms / 100ms = 6次 42H单元用作高电平持续时间的计数单元:400ms / 100ms = 4次 00H(20H的D0)位作为电平转换时间到的标志位

01H(20H的D1)位作为高、低电平持续时间标志位,为1时是高电平 T1的计数器初值为:0D8F0H,程序清单如下:

ORG 0000H AJMP 2000H ORG 001BH AJMP 2100H ORG 002BH AJMP 4000H ORG 003BH AJMP

4100H

ORG 004BH AJMP

4200H

ORG 2000H

MOV TMOD,#10H ;T1定时,模式1 MOV TH1,#0D8H ;T1计数初值 MOV TL1,#0F0H

MOV IE,#88H ;CPU、T1开中断 SETB

TR1 ;启动T1

MOV 40H,#10 ;100ms计数初值 MOV 41H,#4 ;0.4S计数初值 MOV 42H,#6 ;0.6S计数初值 CLR 00H ;清电平转换时间到标志位 CLR 01H ;置低电平持续时间标志位 CLR P1.2 ;输出低电平

TT: JNB 00H,TT ;等待电平转换时间到 CLR 00H ;清电平转换时间到标志位 CPL P1.2 ;输出变反 AJMP

TT ;反复循环

;T1中断服务程序 ORG 2100H MOV TH1,#0D8H ;T1重赋计数初值 MOV TL1,#0F0H JNZ 01H,TT1 ;是高电平持续时间转移 DJNZ 40H,TT2 ;判100ms到否?未到转移到出口 MOV 40H,#10 ;到100ms重赋计数值 DJNZ 41H,TT2 ;判0.4S到否?未到转移到出口 MOV 41H,#15 ;到0.4S重赋计数值 SETB 01H ;置高电平持续时间标志 SETB 00H ;置电平转换时间到标志位 LJMP TT2 ;转出口 TT1:DJNZ 40H,TT2 ;判100ms到否? MOV 40H,#10 ;到100ms重赋计数值 DJNZ 42H,TT2 ;判0.6S到否? MOV 42H,#4 ;到0.6S重赋计数值 CLR 01H ;置低电平持续时间标志 SETB 00H ;置电平转换时间到标志位 TT2:RETI ;中断返回 4、定时器工作时,编程可靠读取定时器T0的值,高8位存入21H,低8位存入20H。

修改的地方在,将24H,23H做计数器(原本是20H,21H),现在用20H,21H存储高低位数据(原本是24,23H)

ORG 0

LJMP Start ORG 0BH ;T0中断入口 LJMP T0INT ORG 1BH ;T1中断入口 LJMP T1INT

ORG 0100H

Start: MOV SP,#60H

;主程序

MOV IE,#8AH ;开放T0,T1中断 MOV IP,#0AH

;设置中断优先级

MOV TMOD,#51H ;设置定时器工作方式,调试时11H MOV 24H,#0

;将计数单元清0

MOV 23H,#100

;设置1 s的初值

MOV TL0,#0F0H ;实际值0F8/9H MOV TH0,#0D8H SETB TR0 ;T0运行

SETB TR1 ;T1运行

LOOP1: LCALL

CORRECT ;软件修正测量值

MOV R0,#20H LCALL

DISP

;LED显示20H,21H,22H的值

SJMP LOOP1

$include

dis.lib

;包含显示和修正程序文件,该程序此处省略

;Timer0中断子程序 T0INT: MOV TL0,#0F0H ;T0赋初值 MOV TH0,#0D8H DJNZ 24H,EXIT ;判1s到否 MOV 22H,23H ;1s到读T1的值 PUSH ACC ;保护ACC LOOP2: MOV A,TH1 ;可靠读取T1中的值,先读高字节 MOV 20H,TL1 ;再读低字节 CJNE A,TH1,LOOP2 ;判在读数期间定时器高字节是否发生 MOV 21H,A POP ACC ;恢复ACC MOV TL1,#0 ;清T1和21H单元 MOV TH1,#0 MOV 24H,#0 MOV 23H,#100 ;20H赋初值 EXIT: RETI ;Timer1中断子程序 T1INT: INC 23H RETI 5、在MCS-51系列单片机中,用定时器T0定时,中断方式编程,不受外部引脚控制,方式1,在P1.1口输出周期为2s的方波(即高/低电平各1sec)设fosc=12MHz

计数状态: X = M – N,其中X为初值,M为最大值,N为计数值 定时状态: X = M – 定时时间 / T 而

T = 12 / 晶振频率

所以这个题目是12MHZ,所以T = 1us.

采用模式0工作的话,M = 213,,但是如果用模式1工作的话,M=216

两个模式的最大值减去以两秒为周期,1秒为定时时间,然后除以最小周期T,得到的X会是负数,所以题目不应该是以2s为周期。 以下以2ms为方波周期做计算,那么定时时间为1ms,也就是1000us 216-a=1000 =03E8H

a=216-03E8H=10000H-03E8H=0FC18H

1SEC=100*10ms ,用20H单元作计数单元。

ORG

LOOP2:

0

LJMP 60H ORG 60H MOV TMOD,#1 SETB TR0 MOV 20H,#100 CPL

;Timer0工作在方式1

;Timer0运行 ;设置1sec的初值

;P1.1取反

LOOP1:

P1.1

MOV TL0,#018H

;Timer0设置2ms初值

MOV TH0,#0FCH JNB CLR

TF0,$ TF0

;1sec到否?

;1sec到转LOOP1

END

;10ms到否?

DJNZ 20H,LOOP2 SJMP LOOP1

按周期为2s的做法,需要多加一个软件计数器30H,先用定时器0做一个50ms的定时器,定时时间到了以后将软件计数器中的值加1,如

果软件计数器计到了20,去反P1.1,并清除软件计数器中的值,否则就直接返回,因此定时时间为20x50 = 1000ms = 1s。采用工作方式1. 216-50ms/1us = 65536 – 50000 = 15536 = 3CB0H

ORG 0000H AJMP START ORG 000BH AJMP TIME0 ORG 0030H MOV SP,#60H MOV P1.1,#0FFH MOV 30H,#00H MOV TMOD,#01H MOV TH0.#3CH MOV TL0,#0BH SETB EA SETB ET0 SETB TR0

LOOP: TIME0: AJMP LOOP PUSH ACC PUSH PSW INC 30H MOV A,30H CJNE A,#20,T_LP2 CPL P1.1 START:

T_LP1: MOV 30H,#00H MOV TH0,#3CH MOV TL0,#0B0H POP POP RET1 END PSW ACC T_LP2: 四、问答

1、简述使用MCS-51进行测量频率的原理。为了使频率测量更准确对定时器初值设定有什么要求(6MHz晶振)

频率检测是对单位时间1s内的频率脉冲进行计数,因此,频率测量需要用两个计数器,两个定时器均应工作在中断方式,一个中断用于1s钟的中断处理,一个中断用于对频率脉冲的计数溢出处理(对另一计数单元加1,当频率大于65535时,T1计数就会溢出) +P81左流程图

要求:在做测量时,先调整T0的初值,使其测量值接近实际值,再用软件进一步修正测量值,修正的方法是对测量值按百分比进行修正。中断服务程序编写原则是中断服务子程序执行的时间应尽量少。

2、画出24C02在 WC接地时的随即连续读时序图(开始条件用S,应答用A,不应答用。。。)

P188第四个图(实例是P186的第四个表) 3、画出IC总线24C02的器件地址组成。

由7位数据位和一位读写为组成,即1、0、1、0、E2、E1、E0、R/W,其中高四位的1010为24系列的协议格式,是I2C总线分配给穿行

EEPROM器件的地址,之后的3为E2,E1,E0为可编程地址位,供在总线上连接多片同一型号器件时分配地址用。最后一位是读写控制位R/W,当该位为1时,表示当前的操作时读操作,该位是0时,表示当前的操作时写操作。


单片机嵌入式考试和答案(中南大学).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:华东师范大学环境科学概论专业课历年试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: