单片机作业之编程题1
单片机试卷及答案(1)
2013A卷一、填空题(每空1分,共20分)1、+1000001的反码是。
十进制数-4的8位二进制补码是。
2、计算机所能执行的指令的集合称为。
指令的编码规则称为,一般由和操作数两部分组成。
3、CPU一次可以处理的二进制数的位数称为CPU的。
4、当EA为电平时,CPU总是从外部存储器中去指令。
5、89C52单片机有6个中断源,其中内部中断源有个,外部中断源有个。
6、汇编指令中,对程序存储器的访问用指令来访问,外部RAM用指令来访问。
7、C51的数据类型sfr占个字节,C51中整型变量占个字节。
8、指令MOV 20H,#20H中,源操作数的寻址方式是,目的操作数的寻址方式是。
9、定时器T1方式2的8位常数重装初值存放于寄存器中。
定时器T0方式0,寄存器用于存放计数初值的低5位。
10、多机通信中,主机的SM2= 。
11、EPROM存储器27C256内部容量是32K字节,若不考虑片选信号,则对其内部全部存储单元进行寻址共需根地址线。
12、波特率倍增位位于特殊功能寄存器中。
13、8155A内部具有1个位减法定时器/计数器。
二、单项选择题(共20题,每题1分,共20分)1、单片机的应用程序一般存放于()中A、RAMB、ROMC、寄存器D、CPU2、定时器0工作于计数方式,外加计数脉冲信号应接到()引脚。
A、P3.2B、P3.3C、P3.4D、P3.53、MCS51单片机在同一优先级的中断源同时申请中断时,CPU首先响应()。
A、外部中断0B、外部中断1C、定时器0D、定时器14、ADC0809是()AD的转换器件A、4通道8位B、8通道8位C、4通道12位D、8通道12位5、执行中断返回指令后,从堆栈弹出地址送给()A、AB、RiC、PCD、DPTR6、串行通信中,发送和接收寄存器是()A、TMODB、SBUFC、SCOND、DPTR7、要使MCS-51能响应外部中断1和定时器T0中断,则中断允许寄存器IE的内容应该是()A、98HB、86HC、22HD、A2H8、要将P1口高4位清0,低4位不变,应使用指令()A、ORL P1,#0FHB、ORL P1,#F0HC、ANL P1,#F0HD、ANL P1,#0FH9、当选中第1工作寄存器区时,工作寄存器R1的地址是。
《单片机》读程序题题库答案1
四、阅读下列程序,注释并填写指令执行后的结果(每题10分)1、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART:MOV R0,#20H ;#20H->R0 (R0)=20HMOV R1,#30H ; #30H->R1 (R1)=30HMOV A,R0 ;(R0)->A (A)=20HADD A,#36H ;(A)+#36H->A (A)=56HMOV P1,A ;(A)->P1 (P1)=56HINC R0 ;(R0)+1->R0 (R0)=21HINC R1 ;(R1)+1->R0 (R1)=31HANL A,R1 ;(A)&(R1)->A (A)=10HSWAP A ;累加器A的高低4位交换 (A)=01HPUSH ACC ;累加器A内容压栈MOV P1,A ;(A)->P1 (P1)=01HPOP B ;堆栈内容出栈到B寄存器 (B)=01HMOV R0,A ;(A)->R0 (R0)=01HMOV DPTR,#2200H ;#2200H->DPTR (DPTR)=2200HSETB C ;1->Cy (Cy)=1ADDC A,#0 ;(A)+0+(Cy)->A (A)=02HMOVX @DPTR,A ;(A)->(DPTR) (2200H)=02HEND(R0)= 01H (R1)= 31H (P1)= 01H(B)= 01H (2200H)= 02H2、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART:MOV SP,#50H ;#50H->SP (SP)=50H第1页共57页MOV R2,#10H ;#10H->R2 (R2)=10HMOV DPTR,#3000H ;#3000H->DPTR (DPTR)=3000HCRL A ;0->A (A)=0LOOP: MOVX @DPTR,A ;(A)->(DPTR)INC DPTR ;(DPTR)+1->DPTRDJNZ R2,LOOP ;(R2)-1->R2 若(R2)不等于零则转移到LOOP处INC DPH ;(DPH)+1->DPH (DPH)=31H (R2)=00H (DPL)=10H INC DPH ;(DPH)+1->DPH (DPH)=32HMOV 20H,#36H ;#36H->(20H) (20H)=36HSETB 00H ;位地址00H置1 20H.0=1 (20H)=37HMOV A,20H ;(20H)->A (A)=37HMOVX @DPTR,A ;(A)->(DPTR) (DPTR)=3210H (3210H)=37HINC A ;(A)+1->A (A)=38HINC A ;(A)+1->A (A)=39HPUSH ACC ;累加器A内容压栈 (SP)=51HXCH A,R2 ;累加器A的内容与R2内容互换 (A)=00H (R2)=39H POP DPH ;堆栈内容弹到DPH (DPH)=39HADD A,#55H ;(A)+#55H->A (A)=55HPUSH ACC ;累加器A内容压栈END(A)= 55H (R2)= 39H (20H)= 37H (DPTR)= 3910H (SP)= 51H3、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART:MOV R0,#30H ;#30H->R0 (R0)=30HMOV A,#12H ;#12H->A (A)=12HSETB C ;(Cy)=1ADDC A,R0 ;(A)+(R0)+Cy->A (A)=43HMOV @R0,A ;(A)->(R0) (30H)=43H第2页共57页SWAP A ;累加器A高低4位交换 (A)=34HINC A ;(A)+1->A (A)=35HMOV DPTR,#2000H ;#2000H->DPTR (DPTR)=2000HINC DPH ;(DPH)+1->DPH (DPH)=21HMOV P1,A ;(A)->P1 (P1)=35HINC A ;(A)+1->A (A)=36HMOVX @DPTR,A ;(A)->(DPTR) (2100H)=36HXCH A,R0 ; (A) R0 (A)=30H (R0)=36HRL A ;累加器A内容循环左移 (A)=60HPUSH ACC ;累加器A的内容入栈RL A ;累加器A内容循环左移 (A)=0C0HPOP ACC ;堆栈内容弹出到累加器A (A)=60HEND(A)= 60H (R0)= 36H (DPTR)= 2100H(P1)= 35H (30H)= 43H4、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART: MOV SP,#50H ;#50H->SP (SP)=50HMOV DPTR,#3000H ;#3000H->DPTR (DPTR)=3000HMOV R0,#20H ;#20H->R0 (R0)=20HMOV A,#23H ;#23H->A (A)=23HMOV R2,#0FH ;#0FH->R2 (R2)=0FHSETB 01H ;置位20H.1 (20H.1)=1SETB C ;置位Cy (Cy)=1ADDC A,@R0 ;(A)+((R0))+Cy->A (A)=26HINC R0 ;(R0)+1->R0 (R0)=21HMOV @R0,A ;(A)->((R0)) (21H)=26HLOOP: DJNZ R2, LOOP ;(R2)-1->R2 若R2内容不等于零则转移 SWAP A ;累加器A内容的高低4位交换 (A)=62H PUSH ACC ;累加器A内容入栈INC DPH ;(DPH)+1->DPH (DPH)=31HMOVX @DPTR,A ;(A)->(DPTR) (3100H)=62H第3页共57页POP B ;堆栈内容弹出到B (B)=62HRR A ;累加器A内容循环右移 (A)=31HADD A,B ;(A)+(B)->A (A)=93HMOV P1,A ;(A)->P1 (P1)=93HEND(21H)= 26H (R2)= 00H (A)= 93H (B)= 62H (3100H)= 62H5、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART: MOV DPTR,#1000H ;#1000H->DPTR (DPTR)=1000HMOV A,#13H ;#13H->A (A)=13HMOV R0,#20H ;#20H->R0 (R0)=20HSETB C ;1->Cy (Cy)=1MOV @R0,A ;(A)->((R0)) (20H)=13HRLC A ;累加器A的内容带进位循环左移 (A)=27HXCH A,@R0 ;累加器A的内容与20H单元的内容互换 (A)=13H (20H)=27H PUSH ACC ;累加器A的内容入栈POP DPL ;堆栈内容弹出到DPL (DPL)=13HMOVX @DPTR,A ;(A)->(DPTR) (1013H)=13HDEC A ;(A)-1->A (A)=12HPUSH DPH ;DPH内容压栈POP B ;堆栈内容弹出到B (B)=10HADD A,B ;(A)+(B)->A (A)=22HMOV P1,A ;(A)->P1 (P1)=22HCLR A ;累加器A内容清零ADD A,B ;(A)+(B)->A (A)=10HEND(P1)= 22H (B)= 10H (20H)= 27H (DPTR)= 1013H (R0)= 20H6、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART:MOV SP,#50H ;#50H->SP (SP)=50HMOV R0,#20H ;#20H->R0 (R0)=20H第4页共57页MOV R2,#10H ;#10H->R2 (R2)=10HMOV A,#24H ;#24H->A (A)=24HLOOP: MOV @R0,A ;(A)->((R0))INC R0 ;(R0)+1->R0DJNZ R2,LOOP ;(R2)-1->R2 若R2内容不等于0则跳转到LOOP处SETB 00H ;1->位地址为00H的位 (20H.0)=1 (20H)=25HSETB C ;1->Cy (Cy)=1ADDC A,#00H ;(A)+00H+(Cy)->A (A)=25HSWAP A ;累加器A内容高低四位互换 (A)=52HPUSH ACC ;累加器A内容压栈POP DPH ;堆栈内容弹出到DPH (DPH)=52HPUSH ACC ;累加器A内容压栈POP B ;堆栈内容弹出到B (B)=52HMOV A,R2 ;(R2)->A (A)=00HMOV DPL,A ;(A)->DPL (DPL)=00HMOV A,B ; (B)->A (A)=52HPUSH ACC ;累加器A内容压栈 (SP)=51HEND(A)= 52H (R2)= 00H (20H)= 25H (DPTR)= 5200H (SP)= 51H7、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART: MOV DPTR,#2100H ;#2100H->DPTR (DPTR)=2100HCLR A ;0->A (A)=00HMOV R1,#30H ;#30H->R1 (R1)=30HSETB C ;1->Cy (Cy)=1ADDC A,R1 ;(A)+(R1)+Cy->A (A)=31HMOV @R1,A ;(A)->((R1)) (30H)=31HPUSH ACC ;累加器A的内容压栈POP DPL ;堆栈内容弹出到DPL (DPL)=31HRR A ;累加器A的内容循环右移 (A)=98HMOV R0,A ;(A)->R0 (R0)=98HORL A,#24H ;(A) or 24H->A (A)=0BCHMOV P1,A ;(A)->P1 (P1)=0BCH第5页共57页SWAP A ;累加器A的内容高低四位交换 (A)=0CBHMOV DPH,A ;(A)->DPH (DPH)=0CBHMOV B,#02H ;#02H->B (B)=02HADD A,B ;(A)+(B)->A (A)=0CDHCLR ACC.3 ;0->ACC.3 (A)=0C5HSWAP A ;累加器A的内容高低四位交换 (A)=5CHEND(A)= 5CH (R0)= 98H (DPTR)= 0CB31H (P1)= 0BCH (30H)= 31H8、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART: MOV SP,#50H ;#50H->SP (SP)=50HMOV R3,#10H ;#10H->R3 (R3)=10HCLR A ;累加器A内容清零 (A)=00HMOV R0,#20H ;#20H->R0 (R0)=20HLOOP: MOV @R0,A ;(A)->((R0)) (20H)=00HINC R0 ;(R0)+1->R0 (20H)=01HDJNZ R3,LOOP ;(R3)-1->R3 若R3不等于零则跳转到LOOP处SETB 00H ;1->位地址00H位 (20H.0)=1 (20H)=01HSETB C ;1->Cy (Cy)=1SUBB A,#00H ;(A)-00H-Cy->A (A)=0FFHMOV DPL,A ;(A)->DPL (DPL)=0FFHPUSH ACC ;累加器A的内容压栈MOV A,R3 ;(R3)->A (A)=00HMOV DPH,A ;(A)->DPH (DPH)=00HPOP ACC ;堆栈内容弹出到A (A)=0FFHMOVX @DPTR,A ;(A)->(DPTR) (00FFH)=0FFHANL A,#55H ;(A) and 55H->A (A)=55HPUSH ACC ;累加器A的内容压栈 (SP)=51HCLR A ;累加器A内容清零 (A)=00HEND(A)= 00H (R3)= 00H (20H)= 01H (DPTR)= 00FFH (SP)= 51H第6页共57页9、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART: MOV R0,#30H ;#30H->R0 (R0)=30HMOV R1,#20H ; #20H->R1 (R1)=20HMOV A,R0 ;(R0)->A (A)=30HADD A,#37H ;(A)+#36H->A (A)=67HMOV P1,A ;(A)->P1 (P1)=67HINC R0 ;(R0)+1->R0 (R0)=31HINC R1 ;(R1)+1->R0 (R1)=21HANL A,R1 ;(A)&(R1)->A (A)=21HSWAP A ;累加器A的高低4位交换 (A)=12HPUSH ACC ;累加器A内容压栈MOV P1,A ;(A)->P1 (P1)=12HSWAP A ;累加器A的高低4位交换 (A)=21HPOP B ;堆栈内容出栈到B寄存器 (B)=12HMOV R0,A ;(A)->R0 (R0)=21HMOV DPTR,#2200H ;#2200H->DPTR (DPTR)=2200HSETB C ;1->Cy (Cy)=1ADDC A,B ;(A)+(B)+(Cy)->A (A)=34HMOVX @DPTR,A ;(A)->(DPTR) (2200H)=34HEND(R0)= 21H (R1)= 21H (P1)= 12H (B)= 12H (2200H)= 34H10、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART: MOV SP,#50H ;#50H->SP (SP)=50HMOV R2,#20H ;#20H->R2 (R2)=20HMOV DPTR,#3000H ;#3000H->DPTR (DPTR)=3000HCLR A ;0->A (A)=0LOOP: MOVX @DPTR,A ;(A)->(DPTR)INC DPTR ;(DPTR)+1->DPTRDJNZ R2,LOOP;(R2)-1->R2 若(R2)不等于零则转移到LOOP处INC DPH ;(DPH)+1->DPH (DPH)=31H (R2)=00H (DPL)=20H第7页共57页INC DPH ;(DPH)+1->DPH (DPH)=32HMOV 20H,#38H ;#36H->(20H) (20H)=38HSETB 01H ;位地址01H置1 20H.1=1 (20H)=3AHMOV A,20H ;(20H)->A (A)=3AHMOVX @DPTR,A ;(A)->(DPTR) (DPTR)=3220H (3220H)=3AHINC A ;(A)+1->A (A)=3BHINC A ;(A)+1->A (A)=3CHPUSH ACC ;累加器A内容压栈XCH A,R2 ;累加器A的内容与R2内容互换 (A)=00H (R2)=3CH POP DPH ;堆栈内容弹到DPH (DPH)=3CHADD A,#55H ;(A)+#55H->A (A)=55HPUSH ACC ;累加器A内容压栈,(SP)=51HEND(A)= 55H (R2)= 3CH (20H)= 3AH (DPTR)= 3C20H (SP)= 51H11、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART: MOV R0,#20H ;#20H->R0 (R0)=20HMOV A,#31H ;#31H->A (A)=31HSETB C ;(Cy)=1ADDC A,R0 ;(A)+(R0)+Cy->A (A)=52HMOV @R0,A ;(A)->(R0) (20H)=52HSWAP A ;累加器A高低4位交换 (A)=25HDEC A ;(A)-1->A (A)=24HMOV DPTR,#2000H ;#2000H->DPTR (DPTR)=2000HINC DPH ;(DPH)+1->DPH (DPH)=21HDEC DPL ;(DPL)-1->DPL (DPL)=0FFHMOV P1,A ;(A)->P1 (P1)=24HINC A ;(A)+1->A (A)=25HMOVX @DPTR,A ;(A)->(DPTR) (21FFH)=25HXCH A,R0 ; (A) R0 (A)=20H (R0)=25HRL A ;累加器A内容循环左移 (A)=40HPUSH ACC ;累加器A的内容入栈RL A ;累加器A内容循环左移 (A)=80H第8页共57页POP ACC ;堆栈内容弹出到累加器A (A)=40HEND(A)= 40H (R0)= 25H (DPTR)= 21FFH (P1)= 24H (20H)= 52H12、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART: MOV SP,#50H ;#50H->SP (SP)=50HMOV DPTR,#2000H ;#3000H->DPTR (DPTR)=2000HMOV 20H,#06H ;#06H->20H (20H)=06HMOV R0,#20H ;#20H->R0 (R0)=20HMOV A,#35H ;#35H->A (A)=35HMOV R2,#10H ;#10H->R2 (R2)=10HSETB 00H ;置位20H.0 (20H.0)=1 (20H)=07HSETB C ;置位Cy (Cy)=1ADDC A,@R0 ;(A)+((R0))+Cy->A (A)=3DHINC R0 ;(R0)+1->R0 (R0)=21HMOV @R0,A ;(A)->((R0)) (21H)=3DHLOOP: DJNZ R2, LOOP ;(R2)-1->R2 若R2内容不等于零则转移SWAP A ;累加器A内容的高低4位交换 (A)=0D3HPUSH ACC ;累加器A内容入栈INC DPH ;(DPH)+1->DPH (DPH)=21HMOVX @DPTR,A ;(A)->(DPTR) (2100H)=0D3HPOP B ;堆栈内容弹出到B (B)=0D3HRR A ;累加器A内容循环右移 (A)=0E9HADD A,B ;(A)+(B)->A (A)=0BCHMOV P1,A ;(A)->P1 (P1)=0BCHEND(21H)= 3DH (R2)= 00H (A)= 0BCH (B)= 0D3H (2100H)= 0D3H13、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART: MOV DPTR,#2000H ;#2000H->DPTR (DPTR)=2000HMOV A,#36H ;#36H->A (A)=36H第9页共57页MOV R0,#30H ;#30H->R0 (R0)=30HSETB C ;1->Cy (Cy)=1MOV @R0,A ;(A)->((R0)) (30H)=36HRLC A ;累加器A的内容带进位循环左移 (A)=6DHXCH A,@R0 ;累加器A的内容与20H单元的内容互换 (A)=36H (30H)=6DH PUSH ACC ;累加器A的内容入栈POP DPL ;堆栈内容弹出到DPL (DPL)=36HMOVX @DPTR,A ;(A)->(DPTR) (2036H)=36HDEC A ;(A)-1->A (A)=35HPUSH DPH ;DPH内容压栈POP B ;堆栈内容弹出到B (B)=20HADD A,B ;(A)+(B)->A (A)=55HMOV P1,A ;(A)->P1 (P1)=55HCLR A ;累加器A内容清零ADD A,B ;(A)+(B)->A (A)=20HEND(P1)= 55H (B)= 20H (30H)= 6DH (DPTR)= 2036H (R0)= 30H14、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART: MOV SP,#60H ;#60H->SP (SP)=60HMOV R0,#20H ;#20H->R0 (R0)=20HMOV R2,#10H ;#10H->R2 (R2)=10HMOV A,#24H ;#24H->A (A)=24HLOOP: MOV @R0,A ;(A)->((R0))INC R0 ;(R0)+1->R0DJNZ R2,LOOP ;(R2)-1->R2 若R2内容不等于0则跳转到LOOP处SETB 01H ;1->位地址为01H的位 (20H.1)=1 (20H)=26HSETB C ;1->Cy (Cy)=1ADDC A,20H ;(A)+(20H)+(Cy)->A (A)=4BHSWAP A ;累加器A内容高低四位互换 (A)=0B4HPUSH ACC ;累加器A内容压栈POP DPH ;堆栈内容弹出到DPH (DPH)=0B4HPUSH ACC ;累加器A内容压栈第10页共57页POP B ;堆栈内容弹出到B (B)=0B4HMOV A,R2 ;(R2)->A (A)=00HMOV DPL,A ;(A)->DPL (DPL)=00HADD A,B ;(A)+(B)->A (A)=0B4HPUSH ACC ;累加器A内容压栈 (SP)=61HEND(A)= 0B4H (R0)= 30H (20H)= 26H (DPTR)= 0B400H (SP)= 61H15、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART: MOV DPTR,#1100H ;#1100H->DPTR (DPTR)=1100HCLR A ;0->A (A)=00HMOV R1,#20H ;#20H->R1 (R1)=20HSETB C ;1->Cy (Cy)=1ADDC A,R1 ;(A)+(R1)+Cy->A (A)=21HMOV @R1,A ;(A)->((R1)) (20H)=21HINC A ;(A)+1->A (A)=22HINC A ;(A)+1->A (A)=23HPUSH ACC ;累加器A的内容压栈POP DPL ;堆栈内容弹出到DPL (DPL)=23HRR A ;累加器A的内容循环右移 (A)=91HMOV R0,A ;(A)->R0 (R0)=91HORL A,#24H ;(A) or #24H->A (A)=0B5HMOV P1,A ;(A)->P1 (P1)=0B5HSWAP A ;累加器A的内容高低四位交换 (A)=5BHMOV DPH,A ;(A)->DPH (DPH)=5BHMOV B,#02H ;#02H->B (B)=02HADD A,B ;(A)+(B)->A (A)=5DHCLR ACC.4 ;0->ACC.4 (A)=4DHSWAP A ;累加器A的内容高低四位交换 (A)=0D4HEND(A)= D4H (R0)= 91H (DPTR)= 5B23H (P1)= 0B5H (20H)= 21H第11页共57页16、 ORG 0LJMP START ;跳转到(PC)=0030H处ORG 30HSTART: MOV SP,#60H ;#60H->SP (SP)=60HMOV R3,#20H ;#20H->R3 (R3)=20HMOV A,#20H ;#20H->A (A)=20HMOV R0,#20H ;#20H->R0 (R0)=20HLOOP: MOV @R0,A ;(A)->((R0))INC R0 ;(R0)+1->R0DJNZ R3,LOOP ;(R3)-1->R3 若R3不等于零则跳转到LOOP处SETB 02H ;1->位地址02H位 (20H.2)=1 (20H)=24HSETB C ;1->Cy (Cy)=1SUBB A,20H ;(A)-(20H)-Cy->A (A)=0FBHMOV DPL,A ;(A)->DPL (DPL)=0FBHPUSH ACC ;累加器A的内容压栈MOV A,R3 ;(R3)->A (A)=00HMOV DPH,A ;(A)->DPH (DPH)=00HPOP ACC ;堆栈内容弹出到A (A)=0FBHMOVX @DPTR,A ;(A)->(DPTR) (00FBH)=0FBHANL A,#55H ;(A) and 55H->A (A)=51HPUSH ACC ;累加器A的内容压栈 (SP)=61HSWAP A ;累加器A内容高低4位交换 (A)=15HEND(A)= 15H (R3)= 00H (20H)= 24H (DPTR)= 00FBH (SP)= 61H17、O RG 0MOV R2,#8 ;#8->R2 (R2)=8HMOV R0,#30H ;#30H->R0 (R0)=30HCLR A ; #0->A (A)=0CPL A ; 累加器A的内容取反,(A)=0FFHLOOP: MOV @R0,A ; (A)-> (R0) (30H)~(37H)=0FFHINC R0 ; (R0)+1->R0DJNZ R2,LOOP ; (R2)-1 -> R2 , (R2)≠0则转移到LOOP处MOV B,R2 ; (R2) ->B (B)=(R2)=0INC B ; (B)+1 ->B (B)=1第12页共57页M OV A,R0 ; (R0) ->A (A)=(R0)=38HC LR C ; 0 -> Cy Cy=0ADDC A,B ; (A)+(B)+Cy -> A (A)=39HMOV R0,A ; (A) ->R0 (R0)=(A)=39HR LC A ; 累加器A的内容带进位左移,(A)=72HMOV DPTR,#1234H ; #1234H ->DPTR (DPTR)=1234HM OVX @DPTR,A ; (A) ->(DPTR) (1234H)=72HSWAP A ;累加器A的内容高低4位交换,(A)=27HPUSH ACC ; 累加器内容入栈POP DPH ; 堆栈内容弹出到DPH (DPH)=27HE ND(R0)= 39H (A)= 27H(33H)= 0FFH (DPTR)= 2734H (1234H)= 72H评分办法:指令注释占5分,对于程序段注释部分写对的学生可酌情给1-4分;程序段执行结果每空1分,共5分。
单片机考试题目及答案
单片机考试题目及答案一、选择题(每题2分,共20分)1. 单片机是一种集成了CPU、存储器、I/O接口等功能的微型计算机,其英文缩写是:A. CPUB. RAMC. ROMD. MCU答案:D2. 下列哪个是51系列单片机的特有寄存器?A. ACCB. PSWC. SPD. PC答案:B3. 在8051单片机中,以下哪个指令是用于将累加器A的内容与外部数据存储器中的数据进行交换?A. MOV A, @DPTRB. MOVX A, @DPTRC. MOV DPTR, #20HD. MOV A, #20H答案:B4. 8051单片机的定时器/计数器0和1,其定时器模式下的工作方式有:A. 1种B. 2种C. 3种D. 4种答案:C5. 下列哪个中断源在8051单片机中具有最高优先级?A. 定时器0中断B. 外部中断0C. 定时器1中断D. 串行中断答案:B二、填空题(每空2分,共20分)1. 单片机的最小系统通常包括________、________和________。
答案:时钟电路、复位电路、电源电路2. 8051单片机的P0口是________位的双向I/O口。
答案:83. 8051单片机的中断向量地址是固定的,其中外部中断0的中断向量地址是________。
答案:03H4. 8051单片机的定时器0和定时器1都可以被配置为________模式,用于计数外部事件。
答案:计数器5. 在8051单片机中,使用MOV指令可以实现寄存器之间的数据传输,例如MOV A, R0,表示将________的数据传送到________。
答案:R0寄存器;累加器A三、简答题(每题10分,共30分)1. 请简述单片机的中断系统的作用及其重要性。
答案:单片机的中断系统允许单片机在执行程序的过程中,对外部事件或内部条件做出快速响应。
中断系统的重要性在于它能够实现多任务处理,提高系统的实时性和效率。
2. 描述8051单片机的串行通信方式及其特点。
51单片机数码管编程题
51单片机数码管编程题一、概述51单片机是一种广泛应用于嵌入式系统的微控制器,它具有丰富的I/O端口和定时器资源,可以方便地与数码管等显示器件连接,实现数字和字符的显示。
数码管编程是51单片机应用开发中一项重要的技能,需要掌握基本的数字电路知识和单片机编程技巧。
二、编程要求本次编程任务是实现一个简单的数码管显示程序,要求能够控制数码管依次显示数字0-9,并且能够在数码管熄灭时进行清零操作。
同时,需要考虑到数码管的显示亮度、闪烁等问题,可以通过调整LED 的亮灭时间来实现。
三、编程思路1. 硬件连接:首先需要将数码管与单片机的I/O端口进行连接,可以使用7段数码管译码器芯片(如74LS379)来实现译码和驱动。
同时,需要为数码管和译码器芯片加上适当的电压和地线。
2. 程序设计:根据要求,程序需要包括显示数字、清零和调整亮度的功能。
可以使用定时器中断的方式来实现定时控制数码管的显示和熄灭。
具体来说,可以定义一个数组来存储数字的编码,然后在中断服务程序中依次取出数组中的数字编码,通过I/O端口输出到数码管上。
同时,可以使用另一个数组来存储清零和调整亮度的控制信号,通过I/O端口输出到数码管驱动芯片上。
3. 调试与优化:在程序编写完成后,需要进行调试和优化,确保数码管的显示效果和亮度达到要求。
可以使用调试器将程序下载到单片机中进行测试,也可以使用示波器和万用表等工具来测量数码管驱动芯片的输出信号和电压是否正常。
四、代码实现以下是一个简单的51单片机数码管显示程序示例:```c#include <reg52.h> //包含51单片机寄存器定义的头文件//定义数码管数字编码数组unsigned char code dongsu[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};void delay(unsigned int time) //延时函数{unsigned int i, j;for(i = 0; i < time; i++)for(j = 0; j < 1275; j++);}void display(unsigned char num) //数码管显示函数{P2 = dongsu[num]; //将数字编码输出到数码管上EA = 1; //开启全局中断ET0 = 1; //开启定时器0中断TF0 = 0; //清除定时器0溢出标志位while(!TF0); //等待定时器中断触发EA = 0; //关闭全局中断}void main() //主函数{while(1) //循环显示数字{display(0); //显示数字0delay(100); //延时一段时间display(1); //显示数字1delay(100); //延时一段时间display(2); //显示数字2delay(100); //延时一段时间display(3); //显示数字3delay(50); //短时间延时后熄灭数码管并清零P2 = 0xff; //清零操作,将所有I/O端口设置为高电平 while(P2 != 0xff); //等待I/O端口电平变化完成}}```以上代码实现了基本的数码管显示功能,可以根据实际需求进行修改和优化。
单片机编程题
1.阅读下列程序,并要求:1)说明程序的功能;2)写出涉及的寄存器及片内RAM单元(如图所示)的最后结果。
MOV R0,#40HMOV A,@R0INC R0ADD A,@R0INC R0MOV @R0,ACLR AADDC A,#00HINC R0MOV @R0,ASJMP $功能:结果:22、利用定时器T0产生定时脉冲。
每隔2ms产生宽度为2个机器周期的正脉冲,由P1.0输出此定时序列脉冲信号(设时钟频率为6MHZ)。
解:首先求出定时器T0初值。
由于时钟频率为6MHZ,所以,机器周期为2µs。
因为:t=(213-T0初值)⨯机器周期所以,当t=2ms时,则:(213-T0初值)⨯ 2⨯10-6=2⨯10-3解得:T0初值=7096=11011101 11000B,其中将高8位11011101 B=DDH赋给TH0,低5位11000B=18H赋给TL0。
方法一:采用查询工作方式,编程如下:ORG 0000HAJMP MAINORG 0100HMAIN: CLR P1.0MOV TMOD , #00H ;设定T0的工作方式MOV TH0 , #0DDH ;给定时器T0送初值MOV TL0 , #18HSETB TR0 ;启动T0工作LOOP: JNB TF0 , $ ;$为当前指令指针地址CLR TF0SETB P1.0 ;产生2µs正脉冲CLR P1.0MOV TH0 , #0DDH ;重装载TH0和TL0MOV TL0 , #18HSJMP LOOPEND方法二:采用中断工作方式,编程如下:ORG 0000HAJMP MAINORG 000BHAJMP T0INTORG 0100HMAIN: CLR P1.0MOV TH0 , #0DDH ;给定时器T0送初值MOV TL0 , #18HMOV IE , #82H ;允许T0中断SETB TR0 ;启动T0SJMP $中断服务程序:ORG 0300HT0INT: SETB P1.0CLR P1.0MOV TH0 , #0DDH ;重装载TH0和TL0MOV TL0 , #18HRETI23、单片机包含哪些主要的逻辑部件?一个8位CUP,片内RAM,片内ROM,四个P口,两个定时/计数器,5个中断源的中断系统,UART,片内振荡器。
单片机题库 (1)
单片机题库一:判断题您的姓名: [填空题] *_________________________________1、#define LED P2是宏定义,即用P2来代替LED。
[判断题] *对错(正确答案)2、X>>1表示将X中的各个位都向左移动1位,右边空出来的位用0补足。
[判断题] *对错(正确答案)3、在C语言中,函数体部分需要用{ }括起来。
() [单选题] *A、对(正确答案)B、错4、a==1表示将变量a赋值为1 [判断题] *对错(正确答案)5、51单片机的每个中断源都具有高低两个中断优先级。
[判断题] *对错(正确答案)4、int型数据和无符号int型数据的取值范围是一样的。
[判断题] *对错(正确答案)5、数组中的数据可以是不同类型的。
[判断题] *对错(正确答案)6、在C语言中,常量可以是数值型常量也可以是符号型常量 [判断题] *对(正确答案)错7、数组可以分为一维数组,二维数组和多维数组。
[判断题] *对(正确答案)错8、在LED闪烁方式控制的电路所用的发光二极管具有单向导通性。
[判断题] *对(正确答案)错9、#define LED P2是宏定义,即用P2来代替LED。
[判断题] *对错(正确答案)10、算数运算符%表示取余运算,10%3的结果是1。
[判断题] *对(正确答案)错11、C语言中一个分号可以作为一个执行语句。
[判断题] *错12、拉幕灯实验中使用到的LED灯是发光二极管,它具有单向导通性。
[判断题] *对(正确答案)错13、同级优先级不能相互断。
[判断题] *对(正确答案)错14、除法运算7/3的结果是1。
[判断题] *对错(正确答案)15、void delay_1ms(uint x)该函数有一个参数x [判断题] *对(正确答案)错16、陶瓷电容和电解电容在结构上是相同的,在硬件电路中可互换。
[判断题] *对错(正确答案)13、8段LED数码管显示器只有共阳极结构。
单片机作业1及答案
单片机作业1及答案(共5页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--单片机原理与应用形成性考核册学校名称:学生姓名:学生学号:班级:《单片机原理与应用》作业1 Array(第一、二章)一、选择题1.单片机芯片内提供了一定数量的工作寄存器,这样做的好处不应包括( D )。
A. 提高程序运行的可靠性B. 提高程序运行速度C. 为程序设计提供方便D. 减少程序长度2.内部RAM中的位寻址区定义的位是给( D )。
A. 位操作准备的B. 移位操作准备的C. 控制转移操作准备的D. 以上都对3.对程序计数器PC的操作( A )。
A. 是自动进行的B. 是通过传送进行的C. 是通过加1指令进行的D. 是通过减1指令进行的4. 单片机程序存储器的寻址范围是由程序计数器PC的位数决定的,MCS-51的PC为16位,因此其寻址范围是( B )。
A. 4KBB. 64KB5. 以下有关PC和DPTR的结论中错误的是( C )。
A. DPTR是可以访问的而PC不能访问B. 它们都是16位的寄存器C. 它们都具有自动加1功能可以分为两个8位的寄存器使用,而PC不能6. PC的值是( C )。
A.当前指令前一条指令的地址B.当前正在执行指令的地址C.下一条指令的地D.控制器中指令寄存器的地址7.假定设置堆栈指针SP的值为37H,在进行子程序调用时把断点地址进栈保护后,SP的值为( D )。
C. 38H8. 在80C51中,可使用的堆栈最大深度为( A )。
个单元 B. 32个单元个单元个单元9. 位处理器是单片机面向控制应用的重要体现,下列中不属于位处理器资源的是( B )。
A.位累加器CYB.通用寄存器的可寻址位C.专用寄存器的可寻址位D.位操作指令集10. 在MCS-51单片机的运算电路中,不能为ALU提供数据的是( D )。
A. 累加器AB.暂存器C.寄存器BD.状态寄存器PSW11. 在MCS-51中( C )。
单片机试题库(编程题)
编程题:2.编一个子程序,将寄存器R0中的内容*10(积<256)3.编程将片内RAM 30H单元开始的15B的数据送到片外RAM 3000H开始的单元中去.4.用查表法编一子程序,将40H单元中的BCD码转换成ASCII码.4.片内RAM50H、51H单元中有一个10B的二进制数,高位在前,低位在后,请编程将其求补,存回原单元中去。
5.片内RAM30H开始的单元中有10B的二进制数,请编程求它们的和。
6.R1中存有一BCD码,请编程将它转换成ASKII码,存入外RAM1000H单元中去。
7.编一个程序,将累加器中的一个字符从串行接口发送出去。
8.片外RAM2000H开始的单元中有5B的数据,编程将它们传送到片内RAM20H开始的单元中去。
9 用查表法编一子程序,将R3中的BCD码转换成ASKII码。
10.片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中。
11.编程将片外RAM3000H开始的20B的数据传送到片内RAM30H开始的单元中。
12.编程将R1、R2中的16位二进制数增1后送回原单元。
13.编程将片内RAM40H开始的单元存放的10B的二进制数传送到片外RAM4000H开始的单元中去。
14.编一子程序,从串行接口接受一个数据。
15.编写将30H和31H单元中2B二进制数乘2的子程序。
16.片外RAM2000H单元中有一BCD码,编程将其转换成ASKII码。
17.试编制单字节BCD码数的减法程序。
18.利用调子程序的方法,进行两个4B无符号数相加。
请编主程序及子程序。
19.若图11-2中数据为无符号数,求数据中最大值送A 。
编程并注释。
图11-2 片外 RAM中的数据块片外 RAM0001H┆20. 若图11-2中数据块是有符号数,求正数个数。
编程并注释。
21. 若图11-2中数据块为无符号数,求其累加和。
编程并注释。
22.已知20H单元有一位十进制数,通过查表找出与其对应的共阴极七段码,并存于30H单元。
单片机编程题练习
乙机发送,甲机接收。
请画出电路图并写出初始化发送(查询)和接收(中断方式)程序。
2、口线P1.0接一个发光二极管,由定时器0控制,用于演示1秒钟亮、1秒钟暗的效果。
3、给80C51单片机扩展一片6116,0809和8155,要求0809采用中断方式,8通道工作;采用138译码选择芯片。
请画出系统连接图,写出各芯片的地址范围并写出8155内各口及其内部的RAM地址范围。
4、已知系统的连接如图所示,试编写程序实现下列功能:(1).编写上电显示程序,显示“123456”。
(2).编写主程序,功能为:当有键按下(0~7号)时,都显示键号;无键按下,保持原有显示状态。
5、选用DAC0832芯片产生一个三角波,要求幅值为0~2.5V。
1200bps,甲机发送数据88H(查询方式),乙机接收(中断方式)。
请画出电路图并编程实现上述功能。
7、已知一单片机应用系统如下图所示。
试回答问题并编写显示程序,以1秒为间隔,亮暗相间,显示“88888888”。
(1).写出各口的地址和控制字A口地址:B口地址:C口地址:控制口地址:控制字:(2).显示程序8、已知ADC0809单片机的连接如下图所示,试写出启动0809第3通道A/D转换的程序段。
(1)、把外部2000H内容送到内部RAM的20H单元。
(2)、找出20H~22H三个单元中的最大数,放在A累加器中。
9、编写程序完成以下功能:每响应一次外部中断,发光二极管亮一秒钟。
六、简单编程题:(1)、用间接寻址方式,把外部20H内容送到内部RAM的20H单元。
(2)、依据第四题接线图,写出启动0809第3通道A/D转换的程序段。
(3)、编写串行口方式1串行发送初始化程序。
(省略波特率发生器初始化)。
10、假定甲乙机以方式1进行串行数据通信,晶振=6MHz,要求波特率为1200。
甲机发送,乙机接收。
请画出电路图并计算出波特率,写出初始化发送和接收程序。
11、当系统选用12MHz晶体振荡器时,由定时器0控制产生周期为4ms(脉冲宽度为2ms)的方波序列(采用中断方式),并由P1.0输出,请编写实验程序。
单片机编程习题
单片机编程习题张建荣江西应用技术职业学院1、某温度控制系统,采集的温度值(Ta)放在累加器A中。
此外,在内部RAM54H单元存放控制温度下限制(T54),在55H单元存放控制温度上限制(T55)。
若Ta >T55,程序转向JW(降温处理程序);若Ta<T54,则程序转向SW(升温处理程序);T55≥Ta≥T54,则程序转向FH(返回主程序)。
2、已知有10个单字节数,依次存放在内部RAM 40H单元开始的数据存储区中,求和并将结果存人寄存器R2、R3中(高位存R2,低位存R3)。
3、假设从内存RAM的50H单元,连续存放一串字符,以回车符(其ASCII码为0DH)作为结束标志,要求测出该字符串的长度。
测试方法可采用将该字符串的每一个字符与回车符依次相比,若不相等,则将统计字符串长度的计数器加l,继续比较;若比较相等,则表示该字符串结束,这时计数器中的值就是字节符串的长度。
4、编制用软件方法延时1S的程序5、假设在片内RAM中,起始地址为40H的10个单元中存放有10个无符号数。
试进行升序排序。
6、求两个无符号数据块中的最大值。
数据块的首地址分别为60H和70H,每个数据块的第一个字节都存放数据块的长度,结果存人5FH单元。
7、设变量x 以补码的形式存放在片内RAM的30H单元,变量y 与x 的关系是:当x 大于0时,y =x;当x =0时,y =20H;当x 小于0时,y =x+5。
编制程序,根据x 的大小求y并送回原单元。
8、根据R7的内容转向相应的处理程序。
设R7的内容为0~N,对应的处理程序的入口地址分别为PP0~PPN。
9、50ms延时程序。
若晶振频率为12MHz,则一个机器周期为1μs。
执行一条DJNZ指令需要2个机器周期,即2μs。
采用循环计数法实现延时,循环次数可以通过计算获得,并选择先执行后判断的循环结构。
10、将内部RAM中起始地址为data的数据串传送到外部RAM中起始地址为buffer的存储区域内,直到发现‘$ ’字符停止传送。
《单片机》编程题题库答案
《单片机原理及应用》编程题题库参考答案六、编程(每题10分)1、内部RAM 30H和31H单元中存放着2个0-9的ASCII码(高位字节在前),请将其转换为压缩BCD 码(高位在前)并存入外部RAM 2300H单元中。
解: ORG 0HLJMP STARTORG 30HSTART: MOV A,30HANL A,#0FHSWAP AMOV R0,AMOV A,31HANL A,#0FHORL A,R0MOV DPTR,#2300HMOVX @DPTR,AEND评分办法:不要求写出程序的注释。
程序设计思路正确可得5分,指令完全写对可得10分。
若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。
2、将存放在内部RAM 30H-35H单元的压缩型BCD码转换成相应的ASCII码,依次存放到外部RAM 2100H开始的单元区中。
ORG 0HLJMP STARTORG 30HSTART:MOV R0,#30HMOV R2,#06HMOV DPTR,#2100HLOOP:MOV A,@R0SWAP AANL A,#0FHORL A,#30HMOVX @DPTR,AINC DPTRMOV A,@R0ANL A,#0FHORL A,#30HMOVX @DPTR,AINC DPTRINC R0DJNZ R2,LOOPSJMP $END评分办法:不要求写出程序的注释。
程序设计思路正确可得5分,指令完全写对可得10分。
若仅写对少量指令,可酌情给1-3分;若仅有少量指令写错,可酌情扣1-3分。
3、内部RAM 20H和30H开始的单元分别存放着16个16进制数,请将对应单元的内容相加(不考虑溢出),并将和存入外部RAM 2000H开始的单元中。
解:ORG 0LJMP STARTORG 30HSTART: MOV R0,#20HMOV R1,#30HMOV DPTR,#2000HMOV R2,#08H ;每个单元存放2个16进制数,故16个16进制数占用8个单元 LOOP: MOV A,@R0ADD A,@R1MOVX @DPTR,AINC R0INC R1INC DPTRDJNZ R2,LOOPSJMP $END评分办法:不要求写出程序的注释。
单片机原理——习题1(答案)
2018单片机练习A(答案)一、填空题(每空1分,共15分)1、AT89S51的一个机器周期等于(4 )μs(设时钟振荡周期为3MHz)。
2、在AT89S51单片机复位后,PSW=(00 )H,这时当前的工作寄存器区是(0)区,R6所对应的存储单元地址为(06 )H。
3、在基址加变址寻址方式中,以(A )作为变址寄存器,以(PC)或(DPTR)作为基址寄存器。
(或者:累加器程序计数器数据指针)4、AT89S51的异步通信口为(全双工)(单工/半双工/全双工)。
5、AT89S51有( 2 )级中断,(5)个中断源。
6、若A中的内容为63H,那么,P标志位为(0 )。
7、82C55可以扩展(3 )个并行端口,其中(8 )条口线具有位操作功能。
8、如果(A)=82H,(R5)=0BDH,执行XCH A, R5;结果(A)=(0BDH)。
9、74LS138是具有3个输入的译码器芯片,其输出作为片选信号时,最多可以选中(8 )片芯片。
二、选择题(每小题2分,共10分)1、在家用电器中使用单片机应属于单片机的(B )。
A. 辅助设计应用B. 测量、控制应用C. 数值计算应用D. 数据处理应用2、对外部数据存储器的读操作,只能使用( C )。
A. MOV指令B. PUSH指令C. MOVX指令D. MOVC指令3、在AT89S51的中断请求源中,需要通过指令清除中断请求标志位的是( D )。
A.IE1的中断请求标志B.IT1的中断请求标志C.外部中断0的中断请求D.串行口中断请求标志T14、关于AT89S51并行输入/输出端口描述正确的是( D )。
A.四个并行输入/输出端口负载驱动能力相同B.四个并行输入/输出端口内部均具有上拉电阻C.四个并行输入/输出端口均是准双向口D.需要读并行输入/输出端口的引脚状态时,需要先向端口锁存器写入15、在程序运行中,PC的值是(C )。
A.当前正在执行指令的前一条指令的地址B.当前正在执行指令的地址C.当前正在执行指令的下一条指令的首地址D.控制器中指令寄存器的地址三、判断题(每小题2分,共20分)1、在AT89S51中,为使准双向的I/O口工作在输入方式,必须事先预置为0。
单片机编程题(经典)
单片机编程题(经典)一、编程题(每小题4分,共20分)1.已知在累加器A中存放一个BCD数(0~9),请编程实现一个查平方表的子程序。
2.请使用位操作指令实现下列逻辑操作:BIT=(10H∨P1.0)∧(11H∨CY)3.已知变量X存于VAR单元,函数值Y存于FUNC单元,按下式编程求Y值。
Y=10 01xxx> -=<?4.已知在R2中存放一个压缩的BCD码,请将它拆成二个BCD字节,结果存于SUM开始的单元中(低位在前)。
5.将存于外部RAM 8000H开始的50H数据传送0010H的区域,请编程实现。
编程题(每小题4分,共20分)1.SQR:1NC AMOVC A,@A+PCRETTAB:DB 0,1,4,9,16DB 25,36,49,64,812.ORL C,11HMOV 12H,CMOV C,P1.0ORL C,/10HANL C,12HMOV BIT,CRET3. MOV A,VARCJNE A,#0,COMPSJMP RES ;x=0,Y=0 COMP:JNC POSI ;x>0,Y=1 MOV A,#0FFH ;x<0,Y=-1 SJMP RESPOSI:MOV A,#01H RES:MOV FUNC,ARET4.MOV R0,#SUMMOV A,R2ANL A,#OFHMOV @R0,A ;存低字节BCD MOV A,R2ANL A,#0F0HSWAP A1NC R0MOV @R0,A ;存高字节BCD RET5. MOV DPTR,#8000H MOV R0,#10HMOV R2,#50HLOOP:MOVX A,@DPTR ;取数MOVX @R0,A ;存数1NC DPTR1NC R0DJNZ R2,LOOPRET二、编程题(10分)将内部RAM20H为首的16个单元的8位无符号数排序写出程序,并作适当注释SORT: MOV R0, #20HMOV R7,#07HCLR TR0 ;交换标志位复位LOOP: MOV A,@R0MOV 2BH, AINC R0MOV 2AH, @R0CLR CSUBB A, @R0;比较前后两个数JC NEXT ;MOV @R0, 2BHDEC R0MOV @R0, 2AHINC R0SETB TR0 ;置交换标志位有效NEXT: DJNZ R7, LOOPJB TR0, SORT;若交换标志位有效,继续进行HERE: SJMP $三、编程序***1.请使用位操作指令,实现下列逻辑操作:P1.5=ACC.2∧P2.7∨ACC.1∧P2.02.在外部RAM首地址为TABLE的数据表中有10个字节数据,请编程将每个字节的最高位无条件地置1。
单片机原理----C51编程及Proteus仿真 习题答案 (金宁治) 习题1答案
思考题及习题1一、填空1.微型计算机由CPU、存储器、I/O 口三个必要的功能部件组成,各个功能部件之间数据总线、地址总线、控制总线等三类总线连接成为整体。
2.单片机是将CPU、ROM、RAM、I/O 口和中断系统、定时/计数器等功能模块集成到一块硅片上的芯片级微型计算机系统。
3.当今国际上大都采用MCU或者EMCU来代替“单片机” 一词。
二、简答:1.单片机的编程语言总体上有哪三大类?它们各有什么特点?答:单片机的编程语言总体上可以分为三大种类:机器语言、汇编语言和高级语言。
(1)机器语言是一种直接面向机器、唯一能被计算机直接识别和执行的计算机语言。
它是一串由和“1”组成的二进制代码。
目标程序的执行速度快,占用内存少,运行效率高,但它不易理解和记忆,编写、阅读、修改和调试都很麻烦。
(2)汇编语言是用助记符表示指令的语言,目的是使指令便于书写、识别和记忆。
汇编语言实质上是机器语言的符号表示,即汇编指令和机器指令一一对应,故这种计算机语言也是面向机器的语言,用汇编语言编写的程序要比与其等效的高级语言程序,具有更高的目标代码转换效率,占用内存资源少,运行速度快;虽然引入了简单的指令助记符,但是汇编语言在使用上仍然比高级语言困难得多;汇编语言还缺乏良好的通用性和可移植性。
(3)C语言是当代应用最为广泛、影响最为深远的主流高级编程语言之一。
用C语言编写的C源程序(*.c)可读性强,易学易理解,编程效率高,尤其具备汇编源程序所不具备的良好通用性和可移植性;同时它还支持结构化程序设计及其自动化集成开发工具/环境,这使得程序员能够集中时间和精力去从事对于他们来说更为重要的创造性劳动,从而显著提高了程序的质量和工作的效率。
2.单片机的主要特点是什么?答:(1)集成度高,易于扩展;(2)面向应用,突出控制;(3)可靠性高,适应性强;(4) 性价比高,易于嵌入。
3.51内核的主流单片机产品有哪几种?它们各有什么特点?答:(DMCS-51系列单片机分为基本型和增强型两大子系列:51子系列和52子系列,以芯片型号的最末位数字作为标志。
单片机习题及答案1
一、选择题1、第一块单片机是由( A )公司设计的。
A、美国仙童公司B、摩托罗拉公司C、PHILIPS公司D、Intel公司2、单片机的核心部件称为(C )。
A、RAMB、ROMC、CPUD、I/O3、为了要寻址64KB数据存储器,设置数据指针DPTR为(B )位。
A、8B、16C、24 D、324、8031单片机有(C )个引脚,其中有( )个I/O口。
A、40 16B、32 24C、40 32 D、50 325、8031单片机的(A)口是一个漏极开路的8位准双向I/O口,驱动能力最强,能驱动8个LSTTL负载。
A、P0B、P1C、P2D、P36、8051有( D)个中断源,可编程为( )个优先级。
A、5 1B、6 2C、8 3 D、5 27、MCS-51指令系统的指令格式中,必不可少的部分为(B)。
A、标号B、操作码C、操作数D、注释8、下列指令中,影响标志位的指令为( BC)。
A、RLB、RLCC、DEC AD、AJMP9、设当前PC的值为0900H,则执行无条件转移指令AJMP 03FFH指令后,程序转移的目的地址为(D)。
A、02FFHB、03FFHC、04FFHD、0BFFH10、在程序设计过程中,若要在某个地址开始保留一定数量的存储区,使用的伪指令为(C)。
A、DWB、DBC、DS D、XDATA11、8051单片机的定时器/计数器的启动和停止是通过对下列的( A )寄存器编程设定的。
A、TCONB、TMODC、TH0D、SCON12、若要利用定时器T1产生串口通信的波特率,则T1工作在( C )方式下。
A、方式0B、方式1C、方式2D、方式313、若要用定时器T0设计一个时间长度为100ms的定时时间,则T0应选择的工作方式为( B )。
A、方式0B、方式1C、方式2D、方式314、若定时器T1受外部输入引脚电平(高电平起作用)的影响,则要启动定时器T1运行软件,必须满足( C )。
单片机习题一(1-4)
(31H)=5FH,(32H)=3CH,则执行下列指令后:
POP DPH;
POP
POP
DPL;
SP;
则:(DPH)=( 3CH);(DPL)=( 5FH); (SP)=( 50H ); 8. 如果(A)=58H,(R1)= 49H,(49H)= 79H,执行指
令XCH A, @R1后;
结果(A)=(79H) ,(49H)=( 58H )。
5
二、选择题
3. AT89S51单片机有五个中断源,外中断INT1的入 口地址是( C ) A. 0003H B. 000BH C. 0013H D. 001BH E. 0023H
4. AT89S51单片机内部低128B RAM包括( C ) A. 程序存储器 B. 中断入口地址区 C. 堆栈区、位寻址区、工作寄存器区 D. 工作寄存器及特殊功能区
3. LJMP的跳转范围是( 64KB ),AJMP的跳转范围
是(2KB ),SJMP的跳转范围是(256B )。
2
一、填空题
4. AT89S51单片机指令系统的寻址方式有( 寄存器寻址 方式 )、(直接寻址方式 )、( 立即寻址方式 )、 ( 寄存 器间接寻址方式 )、(位寻址方式)、( 基址寄存器加变
15
二、选择题
24. 完成下面子程序: SQR: PUSH DPH PUSH DPL MOV DPTR, #TABLE MOVC A, @A+DPTR ( A ) RET TABLE: DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81; END A. POP DPL POP DPH B. PUSH DPL PUSH DPH C. POP DPH POP DPL D. PUSH DPH PUSH DPL
单片机试题1及答案
unsigned char k,w;
while(1)
{
w=0x01;
For(k=0;k<8;k++)
{
P1=~w;
w<<=k;
delay();
}
}
2,设MCS-51单片机使用的晶振是12MHz,欲使用定时器/计数器0实现30ms定时中断,在P1.0在产生周期为60ms的方波。(1)计算TH0和TL0的值;(2)确定寄存器TMOD,TCON和IE的值(寄存器中跟本题无关位取值为0);(3)编写主程序和中断服务程序。(20分)
二、选择题(每空1分,共10分)
1,(1)一个C语言程序总是从(C)开始执行
A)书写顺序的第一个函数
B)书写顺序的第一条执行语句
C)主函数main()
D)不确定
2,在单片机C语言中用于结构化程序设计的三种基本结构是( A )
A)顺序结构、选择结构、循环结构B)if、switch、break C)for、while、do-while
3,当外部中断1和定时器1中断都设置为低优先级,若两个中断同时发生,则先响应哪个中断(A)
A,外部中断1 B,定时器1中断 C, 随机响应 D,两者同时响应
4,单片机输出信号为(C)电平
A,RS-485 B,RS-232 C,TTL D,RS-449
5,MS-51单片机工作在方式0,则计数器是(B)位
A,8位B,13位C,16位D,自动重装8位
6,MCS-51系列单片机的串口是(B)
A,全双工B,半双工C,单工D,并行口
7,串行口的控制寄存器为(B)。
A.SMOD B.SCON C.SBUF D.PCON
8,MCS-51系列单片机的定时器T0用做定时方式时,采用工作方式2,则初始化编程为(D)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编程题1、编写一段程序,把30H中的二进制数转换成用BCD码表示的十进制数,并把百、十、个位分别存放到53H、52H、51H单元中。
ORG 0000HAJMP MAINORG 0030HMAIN:MOV A,30H ;取二进制数MOV B,#100DIV AB ;除100MOV 51H,A ;百位送31HMOV A,#10XCH A,B ;余数和10交换DIV AB ;除10MOV 52H,A ;十位送32HMOV 53H,B ;个位送33HH:SJMP H2、编写一段程序,其功能为把内部RAM 40H~4FH单元的内容高4位清零、低4位取反后再存入50H~5FH单元中。
MOV R7,#16MOV R0,#40HMOV R1,#50HLOP:MOV A,@R0CPL AANL A,#0FHMOV @R1,AINC R0INC R1DJNZ R7,LOPSJMP $3、编写一段程序,把50H、51H、52H中用BCD码表示的十进制数,转换成二进制数,并存到43H、42H中,43H存高位。
MOV A,50HMOV B,#100MUL AB ;高位在A中,低位在B中MOV 43H,BMOV 42H,AMOV A,51HMOV B,#10MUL ABADD A,42HMOV 42H,ACLR AADDC A,43HMOV 43H,AMOV A,52HADD A,42HCLR AADDC A,43HMOV 43H,ASJMP $4、编写一段程序,其功能为把内部RAM 30H~3FH单元的内容分别进行高低4位互换后再存入40H~4FH单元中。
MOV R7,#16MOV R0,#30HMOV R1,#40HLOP:MOV A,@ROSWAP AMOV @R1,AINC R0INC R1DJNZ R7,LOPSJMP $5、写一段程序,其功能为把内部RAM 40H~4FH单元的内容高4位清零后再存入外部RAM 2050H~205FH单元中。
MOV R0,#40HMOV DPTR,#2050HMOV R7,#16LOP:MOV A,@R0ANL A,#0FHMOVX @DPTR,AINC R0INC DPTRDJNZ R7,LOPSJMP $6、试编写一段程序,其功能为将内部RAM中30H-32H的内容左移4位,即:30H 31H 32HMOV R7,#4LOP:CLR CMOV A,32HRLC AMOV 32H,AMOV A,32HRLC AMOV 31H,AMOV A,30HRLC AMOV 30H,ADJNZ R7,LOPSJMP $7、已知二字节乘数存在R2R3中,另一无符号数存在R7中,试编程实现:R2R3×R7→R4R5R6。
AAA:MOV A,R7MOV B,R3MUL ABMOV R0,AMOV R1,BMOV A,R7MOV B,R2MUL ABADD A,R1MOV R1,AMOV A,BADDC A,#00HMOV R4,AH:SJMP H8、编程求Y值。
设M、N存在30H和31H中,Y存在32H中,且M×N的积﹤255,M÷N的商是整数。
M×N (M<N)Y= { 0 (M=N)M÷N (M>N)MOV A,30HCLR CSUBB A,31HJNZ LOP1MOV 32H,#0SJMP SENDLOP1:JC LOP2MOV B,31HDIV ABMOV 32H,ASJMP SENDLOP2:MOV A,30HMOV B,31HMUL ABMOV 32H,ASEND:SJMP $9、试编写程序,统计内部RAM30H~50H单元中FFH的个数,并将统计结果存入51H。
MOV R7,#33MOV R0,#30MOV 51H,#0LOP:MOV A,@R0CJNE A,#0FF,LOP1INC 51HLOP1:INC R0DJNZ R7,LOPSJMP $10、试编写程序,找出内部RAM30H~30H单元中的最小值,并存入R2中。
MOV A,30HMOV R2,AMOV R0,#31HMOV R7,#15LOP:MOV A,@R0CLR CSUBB A,R2JNC LOP1MOV A,@R0LOP1:INC R0DJNZ R7,LOPSJMP $11、试编写统计数据区长度的程序,设数据区从内部RAM30H开始,该数据区以0结束,统计结果存入2FH中。
12、编写程序,对内部RAM30H~3FH中的数据进行奇偶校验,满足偶校验的数据,存到外部RAM8000H开始的数据区中,并把偶数据的个数存入R2中。
MOV R0,#30HMOV DPTR,#8000HMOV R7,#16MOV R2,#0LOP:MOV A,@R0JB PSW.0,LOP1MOVX @DPTR,AINC R2LOP1:INC R0INC DPTRDJNZ R7,LOPSJMP $17、试编写一段程序,其功能为将30H~37H单元内容取反后再下移一个单元,即:37H38HMOV R0,#37HMOV R1,#38HMOV R7,#8LOP:MOV A,@R0CPL AMOV @R1,ADEC R0DEC R1DJNZ R7,LOPSJMP $13、如图,在P1.0-P1.3分别接两个红灯和两个緑灯,编写一段程序,使红灯緑灯分别点亮1秒钟。
(fosc=6MHz)14、把(R2 R3)中的双字节原码左移一位,不改变符号位,不考虑溢出。
MOV A,R3CLR CRLC AMOV R3,AMOV A,R2RLC AMOV ACC.7,cyMOV R2,ASJMP $15、在内部RAM 30H~37H,存放8个无符号数,求这8个数的平均值,存入R2中。
MOV R0,#30HMOV R7,#8MOV R3,#0MOV R2,#0LOP:MOV A,@R0ADD A,R2MOV R2,ACLR AADDC A,R3MOV R3,AINC R0DJNZ R7,LOPMOV R7,#3LOP1:CLR CMOV A,R3RRC AMOV R3,AMOV A,R2RRC AMOV R2,ADJNZ R7,LOP1SJMP $16、把40H-43H的内容和50H-53H的内容相加,结果存入40H-43H中,并用R0记录结果的高位地址。
START:CLR CMOV R0,#40H ;指向加数最低位MOV R1,#50H ;指向另一加数最低位MOV R2,#04H ;字节数作计数初值LOP1:MOV A,@R0 ;取被加数ADDC A,@R1 ;两数相加,带进位MOV @R0,AINC R0 ;修改地址INC R1DJNZ R2,LOPl ;未加完转LOP1JNC LOP2 ;无进位转LOP2MOV @R0,#01HSJMP HLOP2:DEC R0 ;用R0记录地址H:SJMP H17、把40H-43H中的压缩BCD码和50H-53H中的压缩BCD码相加,结果存入40H-43H 中,并用R0记录结果的高位地址。
AA1:MOV R0,#40HAA1:MOV R1,#50HMOV R3,#4CLR CLOP0:MOV A,@R0 ;取被加数ADDC A,@R1 ;两数相加DA A ;十进制调整MOV @R0,AINC R0 ;指针加1INC R1DJNZ R3,LOP0 ;作完加法否JNC AA2 ;无进位MOV @ R0,#01HSJMP HAA2:DEC R0H:SJMP H18、如图,在P1.0-P1.3接4个LED指示灯, 在P1.4-P1.7接4个按键。
编写一段程序,每隔1秒钟检测一次按键状态,并用P1.0-P1.3的指示灯反应按键状态。
按下键后,对应的灯亮。
(fosc=6MHz)19、已知DAC0832的地址为7FFFH,编写一完整程序使得能用0832产生如图所示的波形。
ORG 2000HSTART:MOV R0,#0FEH ;DAC地址FEH→ R0MOV A,#00H ;数字量→ALOOP:MOVX @R0,A ;数字量→D/A转换器INC A ;数字量逐次加1SJMP LOOP。