
2009-2010 学年第 1 学期 课号
课程名称 单片机原理与应用技术( A卷; 笔试, 闭卷) 适用班级(或年级、专业) 07级 电信、信息
考试时间 120 分钟 班级 学号 姓名
| 题 号 | 一 | 二 | 三 | 四 | 五 | 六 | 七 | 八 | 九 | 十 | 成绩 | 
| 满 分 | 45 | 25 | 20 | 10 | 100 | ||||||
| 得 分 | |||||||||||
| 评卷人 | 
1、补码为FFH的机器数真值是( A )。
A:-1D B:-2D C:-127D D:254D
2、单片机复位后的IE与TMOD的内容是( A )。
A:IE=0xx0 0000B,TMOD=00H B: IE=0xx0 0000B,TMOD=FFH
C:IE=1xx0 0000B,TMOD= 00H D:IE=1xx0 0000B,TMOD= FFH
3、单片机中的功能是选通是( C )。
A:片外数据RAM B:片内数据RAM
C:片外程序ROM D:片内程序ROM
4、在下列指令中,正确的MCS-51单片机指令是( C )。
A:PUSH R7 B:MOV DPTR, 8000H
C:ADDC A,#0FFH D:XRL 20H, C
5、能同时将TF0清零的跳转指令是( B )。
A:JB TF0,LOOP B:JBC TF0,LOOP
C:JNB TF0,LOOP D:JNC LOOP
6、当R0的地址为10H时,PSW中的RS1、RS0两位是( C )。
A:00 B:01 C:10 D:11
7、没有片0内上拉电阻的并口是( D )。
A:P3 B:P2 C:P1 D:P0
8、外部中断0的中断服务程序入口地址是( A )。
A:0003H B:000BH C:0013H D:0023H
9、用6MHz晶体时,T1做一次定时的最长时间为( D )。
A:510 μS B:512 μS C:131070μS D:131072 μS
10、在串口控制寄存器SCON中,TI是( C )。
A:串行接收中断标志位 B:串行接收允许位
C:串行发送中断标志位 D:串行发送允许位
11、定时器T1的溢出中断标志是( C )。
A:TF0 B:TI C:TF1 D:IE0
12、START在ADC0809中起到什么样的作用( A )
A.启动AD转换 C. ADC0809的片选信号
B. AD转换结束标志 D. 不能确定
13、已知PSW = FFH, R0= 06H,R1 = 08H, 有这样的定义char idata *p; 其中p = 0x19;则*p = ( D )
A.00H C.01H
B.06H D.08H
14、已知C语言程序 p = 0x30; *p = 0x48与之等价的汇编语言程序为(A )
A.MOV 30H,#48H C.MOV 30H,48H
B.MOV 30H,#48 D.MOV 30H,48
15、单片机的ALE信号的频率与单片机Fosc的频率的比值为( A )
A.1/6 C.1/12
B.6 D.12
二、阅读程序填空(每小题5分,共25分)
1、设DPTR=2049H、A=0EDH,问:执行下列程序后DPTR= 4A4AH ?A= 0DEH ?
INC DPTR
PUSH ACC
PUSH DPL
POP DPH
POP ACC
SWAP A
2、问:执行下列程序后DPTR= 0300H ?A= 09H ?
MOV DPTR,#0300H
MOV A,#03H
MOVC A,@A+DPTR
LJMP $
ORG 0300H
SEGCODE: DB 01H,02H,05H,09H,0AH,12H
3、用6MHz晶体。该程序段的运行时间= 401.202 ms?并写出计算步骤: 2*(1+200*(2+1+250*4)) =401202 us 。
MOV R1,#200 ;该指令的时钟周期数为12
LOOP1: MOV R0,#250 ;该指令的时钟周期数为12
LOOP2: NOP ;该指令的时钟周期数为12
NOP
DJNZ R0,LOOP2 ;该指令的时钟周期数为24
DJNZ R1,LOOP1
4、单片机外接22.1184MHz晶体,复位后执行了下列串口初始化程序段。问:串口的波特率被设置为 19200 bps?串行通信的一帧数据有 10 位?
MOV SCON,#40H
MOV TMOD,#20H
MOV TH1,#250
MOV TL1,#250
SETB TR1
MOV PCON,#80H
5、DAC0832工作在直通工作方式,DAC0832的D4~D0与单片机的P0.4~P0.0依次连接。问:运行如下程序时产生的波形是 锯齿波 波?
MOV A,#00H
LOOP: MOV P0,A
INC A
LJMP LOOP 循環
三、编程题(每小题4分,共20分)
1、编写程序段,将20H与30H中的内容互换,其中R0的地址为00H,请在程序中设置PSW。
char *p1,*p2;
char m;
PSW=0;
p1=0x20; p2=0x30;
m=*p1; *p1=*p2; *p2=m;
程序1:
MOV PSW,#0
PUSH 20H
PUSH 30H
POP 20H
POP 30H
程序2:
MOV PSW,#0
MOV A, 20H
MOV 20H,30H
MOV 30H,A
2、编写汇编语言程序段,完成对立即数BDH、45H、55H的相加运算,结果存放在地址为50H和51H两个存储单元中,其中低字节结果放在50H中,高字节结果放在51H单元中。
mov 50h,a
mov a,51h
addc a,#0
mov 51h,a
addc a,#0
mov 51h,a
pop acc
add a,#55h
mov a,#0bdh
add a,#45h
push acc
mov a,#0
3、编写汇编语言程序段,将地址20H开始的20H个连续单元的内容按顺序传送到地址40H开始的20H个连续单元中,要求用R6作为循环计数器。
mov @r1,a
inc r0
inc r1
djnz r6,lp
mov r6,#20h
mov r0,#20h
mov r1,#40h
lp: mov a,@r0
4、编写汇编语言程序段,实现以下公式的计算。其中有符号数X在R1中,Y在R2中。
mov a,r1
jnb acc.7,lp
cpl a
inc a
lp: mov r2,a
sjmp $
5、编写完整C语言程序,使用定时器T0进行定时,用中断方式在P2.0引脚产生周期为10Hz的方波。
main()
{
EA=1; ET0=1; TMOD=0X11;
TH0=(-50000)>>8;
TL0=(-50000)&0XFF;
TR0=1;
while(1);
}
#include  sbit led=P2^0; void timer0() interrupt 1 {   TH0=(-50000)>>8;   TL0=(-50000)&0XFF;   led=!led; } 四、综合应用题(每小题5分,共10分)第一题必须用汇编语言编写,第二题可以用汇编也可以用C语言 硬件电路的示意图如下(晶体频率为12MHz): 1、设计使数码管显示数字“7”的完整汇编语言程序。 ORG 0 lp: mov p2,#11100000b SJMP lp END 2、设计从P1口读入开关的状态并在数码管中显示相应数值的完整程序。 ORG 0     mov dptr,#tab lp:  mov a,p1     anl a,#0fh     movc a,@a+dptr     mov p2,a     ljmp lp        ;abcdefgp tab:  db 11111100b  ;0      db 01100000b  ;1      db 11011010b  ;2      db 11110010b  ;3   db 01100110b  ;4      db 10110110b  ;5      db 10111110b  ;6      db 11100000b  ;7      db 11111110b  ;8      db 11110110b  ;9      db 11101110b  ;a      db 00111110b  ;b      db 10011100b  ;c      db 01111010b  ;d      db 10011110b  ;e      db 10001110b  ;f END   附录: 定时器方式寄存器TMOD 定时器控制寄存器TCON
 ---------------------- T1 -------------------------    ----------------------- T0------------------------- GATE M1 M0 GATE M1 M0 
串行口控制寄存器SCONTF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 SM0 SM1 SM2 REN TB8 RB8 TI RI 
