单片机原理及应用期末考试试题一、填空题(每空1分,共20分)1.相对寻址是以PC的当前值为基准,加上指令中给出的相对偏移量形成目标地址的方式。
2.A T89S51单片机的1个机器周期含有12 个晶振周期或 6 状态周期。
3.AT89S51单片机进行扩展时,用P0 口作为地址/数据总线,用P2口作为地址总线高8位。
4.假定累加器A的内容30H,执行指令:1000H:MOVC A,@A+PC后,把程序存储器1031H单元的内容送累加器A中5.指令格式是由操作码和操作数部分组成。
6. AT89S51单片机的串行口控制寄存器中有2个中断标志位,它们是TI和RI7.在进行BCD码加法运算时,紧跟ADD 或 ADDC 指令后的指令必须是DA A 指令8. JNC rel指令执行时,当CY位为0时程序发生跳转。
9.单片机位寻址区的单元地址是从20H单元到2FH单元,若某位地址是10H,它所在单元的地址应该是22H 。
10.外部中断0的中断入口地址为0003H,定时/记数器T1的中断入口地址为001BH。
11.串行口工作方式2为9位异步通信,若SMOD=0,f OSC = 6 MH Z,则其相应波特率为6×106/64 b/s12.堆栈应遵循先进后出规律,堆栈指针的符号为SP二、单项选择题(每小题1分,共20分)1.AT89S51单片机的( d )口的引脚,还具有外中断、串行通信等第二功能。
a)P0 b)P1 c)P2 d)P32.单片机应用程序一般存放在( b )a)RAM b)ROM c)寄存器 d)CPU3.已知某数的BCD码为0111010101000010 则其表示的十进制数值为(b)a) 7542H b) 7542 c) 75.42H d) 75.424.下列指令中不影响标志位CY的指令有( d )。
a)ADD A,20H b)CLR c)RRC A d)INC A5.CPU主要的组成部部分为( a )a)运算器、控制器b)加法器、寄存器c)运算器、寄存器d)运算器、指令译码器6.AT89S51 的CPU是( c )位的单片机a) 16 b)4c)8 d)准167.AT89S51复位后,PC与SP的值为( b )a )0000H,00H b)0000H,07Hc) 0003H,07H d)0800H,00H8.当需要从AT89S51单片机程序存储器取数据时,采用的指令为(b)。
a)MOV A, @R1 b)MOVC A, @A + DPTR c)MOVX A, @ R0 d)MOVX A, @ DPTR9.AT89S51单片机中既可位寻址又可字节寻址的单元是( a )a)20H b)30H c)00H d)70H10.下列哪条指令是正确的(d )a)PUSH R2 b)ADD R0, Ac)MOVX A @DPTR d)MOV @R0, A三、写出实现下列各要求的指令或程序段(本大题共5小题,29分)1、将80H单元中的内容与数据4FH相比较,相等返回,不相等将80H单元置FFH返回。
(5分)MOV A,80HCJNE A,# 4FH,BDSJMP L1BD:MOV 80H,#0FFHL1:RET2、外部RAM单元2000H的内容传送到内部RAM单元70H;(5分)MOV DPTR,#2000HMOVX A,@DPTRMOV 70H,A3、将32H单元中内容的第7位取反后送给50H。
(5分)MOV A,32HCPL ACC.7MOV C,ACC.7MOV 50H,C4、若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、42H单元中的内容各为多少?(5分)MOV A,50H ;(A)=40HMOV R0,A ;(R0)=40HMOV A,#00H ;(A)=0MOV @R0,A ;(40H)=0MOV A, #3BH ;(A)=3BHMOV 41H,A ;(41H)=3BHMOV 42H,41H ;(42H)=3BH(A)=3BH ;(R0)= 40H;(40H)= 0;(41H)= 3BH;(42H)= 3BH5、将外部数据存储器3000H开始100个存储单元的内容存入3070开始的存储单元(9分)MOV DPTR #3000HMOV P2,#30HMOV R1,#70HMOV R5,#100L1:MOVX A, @DPTRMOVX@R1,AINC R1INC DPTRDJNZ R5, L1RET四、读程序填空(本大题共4小题,共19分)1. CLR CMOV A, 4DHSUBB A,, 4EHMOV 30H, AMOV A, 7FHSUBB A, 2BHMOV 31H, ASJMP $(1)该程序的功能是:两个16位数的减法:(7F4DH)-(2B4EH),结果存入内部RAM的30H和31H单元,31H单元存差的高8位,30H单元存差的低8位(3分)(2)若(4DH)=06H,(4EH)=05H,(7FH)=0AH,(2BH)=01H则执行上述程序后(30H)= 01 H。
(31H)= 09 H。
(2分)2. START: MOV R0 , #40HMOV R7, #04HMOV A, @R0LOOP: INC R0MOV 50H , @R0CJNE A, 50H , NEXTNEXT: JNC BIE1MOV A, 50HBIE1: DJNZ R7, LOOPMOV 30H, ARET(1) 该程序的功能是:求出40H—44H中最大的无符号数,并将最大数存入30H中(3分)(2) 设(40H)=12H, (41H)=22H , (42H)= 6EH, (43H)=5AH , (44H)= 8AH,填写程序执行后的结果,(30H)= 8A H。
(1分)3.已知(30H)=49H,(31H)=2BH,(32H)=0A3H,执行以下程序:MOV R7,# 4RR0: MOV R6,# 3CLR CMOV R0,# 30HRR1: MOV A,@R0RRC AMOV @R0,AINC R0DJNZ R6,RR1DJNZ R7,RR0RET从该程序可看出这段程序的功能是:将内RAM中30H~32H的内容右移4位(3分)执行后结果:(30H)= 04H ,(31H)= 92H ,(32H)= 0BAH 。
(3分)4、已知(A)=58H,(30H)=7FH,(P1)=EAH,执行下列程序:MOV SP,#40HPUSH APUSH 30HMOV A,P1MOV 30H,APOP 30HPOP A执行后结果:(SP)= 40H ,(A)= 58H ,(30H)= 7FH ,(41H)= 58H 。
(每空1分)五、根据题意,按要求答题。
(共12分)AT98S51单片机P1口上接8只发光二极管(高电平亮,低电平灭),若晶振频率是12MHz,用定时/计数器T0以工作方式1工作,使8只发光二极管每1S单循环点亮。
(1)计算定时初值,写出过程(3分)(2)根据相关注释,填写程序,(9分)答:(1)定时初值:(216-X)×1μS = 50mSX=216-50000=15536(2)MOV TMOD,#01H ;设T0工作方式MOV DPTR,#15536 ;置定时初值50mSMOV TH0,DPHMOV TL0,DPLMOV A,#01H ;置A初值SETB TR0 ;允许定时LOOP:MOV R7,#20 ;设定时次数MOV P1,A ;从P1口输出LOOP1:JNB TF0,$ ;判断定时50mS到没CLR TF0 ;定时时间到,TF0清0MOV TH0,DPH ;重新置定时初值50mSMOV TL0,DPLDJNZ R7,LOOP1 ;判断定时次数到没RL A ;输出左移SJMP LOOP ;继续循环输出END2. MCS-51的标志寄存器有多少位,各位的含义是什么?答:MCS-51的标志寄存器PSW有8位;D D D D D D D DC(PSW.7):进位或借位标志位。
AC(PSW.6):辅助进位或借位可标志位。
F0(PSW.5):用户标志位。
是系统预留给用户自己定义的标志位。
RS1、RS0(PSW.4、PSW.3):寄存器组选择位。
可用软件置位或清零,用于从四组工作寄存器中选定当前的工作寄存器组。
OV(PSW.2):溢出标志位。
在加法或减法运算时,如运算的结果超出8位二进制数的范围,则OV置1,标志溢出,否则OV清零。
P(PSW.0):奇偶标志位。
用于记录指令执行后累加器A中1的个数的奇偶性。
若累加器A中1的个数为奇数,则P置位,若累加器A中1的个数为偶数,则P 清零。
3.在8051存储器结构中,内部数据存储器可分为几个区域?各有什么特点?答:片内数据存储器按功能可以分成以下几个部分:工作寄存器组区、位寻址区、一般RAM区和特殊功能寄存器区,其中还包含堆栈区。
工作寄存器组区,00H~1FH单元,可用R0~R7等8个寄存器访问;位寻址区,20H~2FH单元,可按位方式访问;一般RAM区,30H~7FH单元;堆栈区,可从08到7F单元;特殊功能寄存器区位于80H~FFH单元。
7.如果时钟周期的频率为12MHz,那么ALE信号的频率为多少?答:2MHZ5. 设振荡频率为12MHz,如果用定时/计数器T0产生周期为100ms的方波,可以选择哪几种方式,其初值分别设为多少?答:只能选择方式1,初值为65536-50000=15536。
18. 8051系统中,已知振荡频率为12MHz,用定时/计数器T0,实现从P1.0产生周期为2ms的方波。
要求分别用汇编语言和C语言进行编程。
解:分析:从P1.0输出周期为2ms的方波,只须P1.0每1ms取反一次则可。
当系统时钟为12MHZ,定时/计数器T0工作于方式1时,最大的定时时间为65.536ms,满足1ms的定时要求,方式控制字应设定为00000001B(01H)。
定时1ms,计数值N为1000,初值X=65536-1000=64536,则TH0=FCH,TL0=18H。
采用中断处理方式:程序如下:ORG 0000HLJMP MAINORG 000BH ;中断处理程序MOV TH0,#0FCHMOV TL0,#18HCPL P1.0RETIORG 0100H ;主程序MAIN:MOV TMOD,#01HMOV TH0,#0FCHMOV TL0,#18HSETB EASETB ET0SETB TR0SJMP $ENDC语言程序:#include <reg51.h> //包含特殊功能寄存器库sbit P1_0=P1^0;void main(){TMOD=0x01;TH0=0xFC;TL0=0x18;EA=1;ET0=1;TR0=1;while(1);}void time0_int(void) interrupt 1 //中断服务程序{TH0=0xFC;TL0=0x18;P1_0=!P1_0;}。